【发布时间】:2016-03-08 17:11:53
【问题描述】:
所以我的任务是“编写一个程序,读取数字直到输入 -999,然后显示输入的最大和最小数字”
我自己构建了大约 75% 的代码,我在代码的最后一直遇到一个错误它一直显示 0 作为我最大的输入。我认为这与我的计数器的设置方式有关。我认为它试图从我推送之前存在的堆栈中的内存中提取。
这项作业的第二部分我完全不知道如何解决。如果我有一个 sceond 堆栈可以访问,我可以毫无问题地解决它,但我并没有尝试弄清楚如何使用像堆栈这样的数组。我真的不记得细节,但我知道可以做到。
INCLUDE Irvine32.inc
.data
input byte 50 DUP(0)
counter Dword 50 dup (0)
counter2 byte 50 dup (0)
array Word 50 dup(0)
sentinal dword (0)
statement byte "PLease enter a number" ,0
statement2 byte "To exit enter the number '-999'" ,0
statement3 byte "your biggest number was " ,0
.code
main proc
mov ecx ,1
L1:
mov ecx ,2
mov edx , OFFSET statement ; puts statement into register
call WriteString
call CRLF
mov edx , offset statement2
Call writestring
Call CRLF
call Readdec
.if (EAX==sentinal ) ;tests agaisnt breakout
sub ecx , 1
.endif
push EAX
inc counter
loop L1
mov ecx ,0
mov ecx , counter
pop EDX ;pulls initial inputs
Pop EBX
L2:
.if (EDX > EBX) ;test for largest input
pop EbX
.Elseif (EDX<EBX)
pop EDX
.Endif
loop L2
mov EDX ,offset statement3
call writestring ;displays largest input(BUG)
.if (EDX>EBX)
mov edx , eax
CAll writeDec
.elseif (EBX>EDX)
mov eBx , EAX
CAll Writedec
call crlf
.endif
Exit
main endp
end main
【问题讨论】:
标签: assembly x86 masm 32-bit irvine32