4

在 x86 汇编语言中,是否可以指定跳转到特定行号?在这里,我尝试使用第jmp3 行的指令。(我还不知道将标签作为参数传递给函数的方法,所以我尝试使用行号而不是在这种情况下标记。)

.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

4

2 回答 2

8

您可以在该行放置一个标签。根据您的汇编语言方言,您可能能够使用数字本地标签,或者您可能需要使用符号标签。下面是一个可能的例子。我这里只有 NASM 可以测试,所以我不确定这个例子是否能很好地映射到 MASM,但你应该明白:

start:
    jmp .line3
    mov ax, 0
.line3:
    mov bx, 0
    mov ah, 1

NASM 使用前导.来识别本地标签。

于 2013-04-16T04:27:11.170 回答
0

尝试这个:

s1:   add ax,1
      jmp $-3

这可以让你的程序跳转到 s1。注意,数字是代码的偏移量,而不是行数。(指令'add ax,1'是3个字节)如果你想进行间接跳转,试试这个:

jmp far [address]
address dw 0123h ;the ip
        dw 5678h ;the cs

更多信息,google间接跳转。

于 2013-04-16T06:05:45.533 回答