我的程序接受4个整数,并假设将它们显示给用户。打印这些值时,我没有得到预期的结果。我使用MASM与硖的Irvine32 library使用带有Irvine32库的MASM打印阵列
我的代码是:
include irvine32.inc
.data
msg byte "Enter a number",0
arr dword 4 dup(?)
len=($-arr)/4
.code
main PROC
mov edx,offset msg
call writestring
call crlf
mov eax,0
mov ecx,0
.while(ecx<len)
call readdec
mov arr[ecx],eax
inc ecx
.endw
mov ebx,0
mov ecx,0
.while(ecx<len)
mov ebx,arr[ecx]
call writedec
call crlf
inc ecx
.endw
exit
main ENDP
END main
我的程序的运行示例:
Enter a number
1
2
3
4
4
4
4
4
输入数字1,2,3之后,和4程序应该将这些数字显示给用户。我期望的输出是:
mov eax,arr[ecx]
call writedec
:
Enter a number
1
2
3
4
1
2
3
4
如果我修改输出数字回路,使我把价值在EAX而不是EBX这个代码打印我结束了像这样荒谬的输出值:
Enter a number
1
2
3
4
67305985
262914
1027
4
为什么我的程序如此行事,我怎么能修改它以获得预期的结果?
是什么让你认为'writedec'需要在'ebx'中输入? – Michael
@Micheal我在第二个循环中使用了eax,但它打印了一些非常长的值。所以我用ebx代替。 –