Loops 汇编语言MASM
我很难调整这个任务来满足这个条件:确保你向前跳到循环的底部,然后从那里跳回到顶部,这样每次跳到顶部都来自完全相同的位置Loops 汇编语言MASM,loops,assembly,x86,masm,Loops,Assembly,X86,Masm,我很难调整这个任务来满足这个条件:确保你向前跳到循环的底部,然后从那里跳回到顶部,这样每次跳到顶部都来自完全相同的位置 我已经完成了任务,但我似乎是从多个地方跳出来的。如何调整程序以满足条件 你需要改变你的代码,你有一个永远jmp。有了一个标签,你可以从几个地方跳到这个jmp,直到永远。我的建议是: .386 .MODEL FLAT ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD Include io.h cr equ
我已经完成了任务,但我似乎是从多个地方跳出来的。如何调整程序以满足条件 你需要改变你的代码,你有一个永远
jmp
。有了一个标签,你可以从几个地方跳到这个jmp,直到永远。我的建议是:
.386
.MODEL FLAT
ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD
Include io.h
cr equ 0DH
Lf equ 0AH
.STACK 4096
.DATA
string byte 40 Dup (?)
number dword ?
rejected byte cr, Lf, "Rejected", 0
.code
_start:
forever: input string, 40
atod string
mov number, eax
cmp number,0
jne processing
je finish
processing:
cmp number,10
jg message
cmp number,-10
jl message
jmp forever
message: output rejected
jmp forever
finish:
INVOKE ExitProcess, 0
PUBLIC _start
END
在消息
之后创建一个标签(即,对于jmp forever
),并使您以前的jmp forever
跳转到该标签。je finish
将跳转到finish
标签(如果数字为0)。否则,它将通过处理
。因此,jne处理
是不必要的。将jl消息
更改为jnl skipmsg
,您可以删除jmp skipmsg
指令。
processing:
cmp number,10
jg message
cmp number,-10
jl message
jmp skipmsg
message: output rejected
skipmsg: jmp forever