0

I have to create a program using masm for windows. The program should read data from a file and store it into a 2d array, then display the column sum. I have successfully opened the file and calculated the sum but how do I display it? I am new to the language and I tried multiple ways to display my output, one of them attached below. However, my output is a register dump and not the sum.

    ; Convert ascii to int and store in ary
    call        zeroOut
    lea     esi,    OFFSET buffer
    lea     edi,    OFFSET ary
    mov edx, cry

    L1:
    call convertasciitoint
    mov [edi],  eax
    inc edi
    inc esi
    dec edx
    call DumpRegs
    cmp edx, 0
    jne L1
    call    zeroOut

    ; Convert int to ascii for printing
    lea     esi,    OFFSET ary
    lea     edi,    OFFSET bry
    mov ebx,    cry

    L2:
    call    convertinttoascii
    mov [edi],  eax
    inc esi
    inc edi
    dec ebx
    cmp ebx,    0
    jne L2

    ; Print output
    lea     esi, OFFSET bry
    call        myLine

exit
main ENDP


convertasciitoint PROC
    mov ecx,    0
    mov eax,    0
    nextDigit:
        mov bl, [esi]
        cmp bl, '0'
        jl  outOfHere
        cmp bl, '9'
        jg  outOfHere
        add bl, -30h
        imul    eax,    10
        add eax,    ebx
        mov    [esi], eax
        mov    [edi], eax
        inc ecx
        inc esi
        inc    edi
        jmp nextDigit
    outOfHere:
        mov cnt,    ecx
    ret
convertasciitoint ENDP


convertinttoascii PROC
    mov ecx,    cnt
    nextDigit:
        mov al, [esi]
        div TEN
        mov eax,    0
        mov al, dl
        add al, 30h
        mov    [edi], dl
        mov    dl, [esi]
        inc    esi
        inc    edi
    call    DumpRegs
    dec ecx
    cmp ecx,    0
    jne nextDigit
    ret
convertinttoascii ENDP

myLine PROC
    nextChar:
        mov al, [esi]
        inc esi
        call    WriteChar
        cmp al, NULL
        jne nextChar
    ret
myLine ENDP

zeroOut PROC
    mov eax,    0
    mov ebx,    0
    mov ecx,    0
    mov edx,    0
    ret
zeroOut ENDP

END main

0 Answers0