在x86汇编语言中,是否可以指定跳转到特定的行号?在这里,我正在尝试将jmp
指令用于第3行。(我还不知道将标签作为参数传递给函数的方法,所以我试图使用在这种情况下,行号而不是标签。)
.686p
.model flat,stdcall
.stack 2048
.data
ExitProcess proto, exitcode:dword
.code
start:
jmp 3; this produces the error shown below
mov ax, 0
mov bx, 0
mov ah, 1
invoke ExitProcess, 0
end start
上面的代码会产生错误1>p4.asm(11): error A2076: jump destination must specify a label
。
答案 0 :(得分:4)
您可以在该行添加标签。根据您的汇编语言方言,您可能可以使用数字本地标签,或者您可能需要使用符号标签。一个可能的例子如下。我这里只有NASM进行测试,所以我不确定这个例子能很好地映射到MASM,但是你应该明白这个想法:
start:
jmp .line3
mov ax, 0
.line3:
mov bx, 0
mov ah, 1
NASM使用前导.
来识别本地标签。
答案 1 :(得分:0)
试试这个:
s1: add ax,1
jmp $-3
这可以让你的程序跳转到s1。注意,数字是代码的偏移量,而不是行数。(指令'add ax,1'是3个字节) 如果你想进行间接跳转,试试这个:
jmp far [address]
address dw 0123h ;the ip
dw 5678h ;the cs
更多信息,谷歌间接跳跃。