我目前正在尝试制作一个程序,该程序不使用乘法操作数就将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不变的指针都很棒。