Assembly 无法找出代码的错误
我应该显示数字1到20,但我不知道出了什么问题。一开始它是正确的,但是它将是21而不是20Assembly 无法找出代码的错误,assembly,masm,irvine32,Assembly,Masm,Irvine32,我应该显示数字1到20,但我不知道出了什么问题。一开始它是正确的,但是它将是21而不是20 INCLUDE Irvine32.inc TITLE 1through20 .data .code main proc sub eax, eax mov eax, 1 call writeDec call crlf mov ecx, 20 L1: add eax, 1 call writeDec call crlf loop L1 exit main EndP END main 您正在单独显示
INCLUDE Irvine32.inc
TITLE 1through20
.data
.code
main proc
sub eax, eax
mov eax, 1
call writeDec
call crlf
mov ecx, 20
L1:
add eax, 1
call writeDec
call crlf
loop L1
exit
main EndP
END main
您正在单独显示第一个数字,然后是显示20个数字的循环。因此,您总共显示21个数字,这太多了
只需从程序中删除3行代码(将
子eax,eax
保留在此解决方案中):
你正在做
20,19,…,3,2,1,0
。尝试使用mov-ecx,19
代替。注意:不需要mov-eax,1
之前的sub-eax,eax
。
sub eax, eax
;;;;;;;;;;;;;;;;mov eax, 1
;;;;;;;;;;;;;;;;call writeDec
;;;;;;;;;;;;;;;;call crlf
mov ecx, 20
L1:
add eax, 1
call writeDec
call crlf
loop L1