循环显示带有简单 y/n 问题的消息以重复循环或结束程序
Loop to display a message with simple y/n question to repeat the loop or end the program
我的目标是显示一条消息 10 次,然后询问用户是否继续。如果是,return 再次执行上面的循环。如果没有,退出程序。
我的代码的第一部分工作正常;它显示“再见”消息 10 次。但是,第二部分要求用户继续或不继续,这是问题所在。当我输入“y”时,它会重复消息“您要继续 (Y/N) 吗?”没完没了
这是我的代码:
INCLUDE Irvine32.inc
.data
Msg BYTE "Goodbye",0
again byte "Do you want to continue (Y/N)? ",0
.code
main proc
mov edx,offset Msg
mov ecx,10
l1:
call writestring
call crlf
loop l1
mov edx, offset again
call writeString
call readChar
call crlf
cmp al, 'y'
je l1
call ReadInt
invoke ExitProcess,0
main endp
end main
当响应 y 与 cmp al, 'y'
进行正比较时,您跳转到 l1
但您忘记将循环计数器 ecx
初始化为再次 10。前一个循环将 ecx
保留为零,因此 loop l1
实际上重复 0xFFFFFFFF 次写入任何 edx
指向 (offset again
).
而不是跳转到 l1
跳转到 main
。并省略最后的call ReadInt
。当你对那个数字不做任何事情时,为什么要从用户那里读取一个整数?
我的目标是显示一条消息 10 次,然后询问用户是否继续。如果是,return 再次执行上面的循环。如果没有,退出程序。
我的代码的第一部分工作正常;它显示“再见”消息 10 次。但是,第二部分要求用户继续或不继续,这是问题所在。当我输入“y”时,它会重复消息“您要继续 (Y/N) 吗?”没完没了
这是我的代码:
INCLUDE Irvine32.inc
.data
Msg BYTE "Goodbye",0
again byte "Do you want to continue (Y/N)? ",0
.code
main proc
mov edx,offset Msg
mov ecx,10
l1:
call writestring
call crlf
loop l1
mov edx, offset again
call writeString
call readChar
call crlf
cmp al, 'y'
je l1
call ReadInt
invoke ExitProcess,0
main endp
end main
当响应 y 与 cmp al, 'y'
进行正比较时,您跳转到 l1
但您忘记将循环计数器 ecx
初始化为再次 10。前一个循环将 ecx
保留为零,因此 loop l1
实际上重复 0xFFFFFFFF 次写入任何 edx
指向 (offset again
).
而不是跳转到 l1
跳转到 main
。并省略最后的call ReadInt
。当你对那个数字不做任何事情时,为什么要从用户那里读取一个整数?