无法弄清楚代码有什么问题

时间:2015-10-23 14:25:48

标签: 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

1 个答案:

答案 0 :(得分:1)

您正在单独显示第一个数字,然后显示一个显示20个数字的循环。总共显示21个数字,这个数字太多了! 只需从程序中删除3行(在此解决方案中保留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