使用循环的x86 MASM正方形

时间:2018-09-30 20:36:46

标签: assembly x86 masm

我目前正在尝试制作一个程序,该程序不使用乘法操作数就将1到25的每个数字平方。我有以下内容:

; 
; Calculate the first 25 squares
; print out the difference between successive squares
; 

include Irvine32.inc

.data
oCount DWORD 1
iCount DWORD ?
.code
main PROC
mov eax,1
mov ecx,25
L1:
    mov oCount, ecx ;oCount = 25    oCount = 1
    mov ecx, eax    ;ecx = 1        ecx = 2
    mov iCount, eax ;iCount = 1     iCount = 2
    L2:
        add iCount,eax  ;iCount = 1+1 ; iCount = 2+2
        Loop L2         
    mov eax, iCount     ;eax = 2    ;eax = 4
    call WriteDec
    call Crlf
    mov eax, ecx    ;eax = 1        ;eax = 2
    inc eax         ;eax = 2        ;eax = 3
    Loop L1

call WaitMsg
invoke ExitProcess,0            ; 'bye
main ENDP
END main

请注意,我已经评论了在循环中应该发生的事情。现在,它只是无休止地打印出2。我想我理解为什么会发生无限循环,但是我不确定为什么会保持在2。

任何关于为什么2不变的指针都很棒。

0 个答案:

没有答案