2015-10-23 208 views
2

我应该显示数字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

你做'20,19,...,3,2,1,0'。试试'mov ecx,19'。 –

+1

注意:'mov eax,1'之前的'sub eax,eax'是不必要的。 – Michael

回答

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 
相关问题