Assembly X86中的绝对远跳操作数是什么

Assembly X86中的绝对远跳操作数是什么,assembly,x86,machine-instruction,Assembly,X86,Machine Instruction,执行绝对远Jmp的操作数是什么 我认为它应该如下所示: EA XX XX XX XX 我试着让XX变成一个4字节的地址,我想跳转到这个地址,但没有按预期的那样工作。这将是一个绝对的跳转 例如,对于16位代码,字节0xEA、0x12、0x34、0x56、0x78 wll是指令jmp far 0x7856:0x3412(其中CPU将尝试将CS设置为0x6745,并将IP设置为0x3412) 对于32位代码,大小需要更大。例如,字节0xEA、0x12、0x34、0x56、0x78、0x9A、0xBC将

执行绝对远Jmp的操作数是什么

我认为它应该如下所示:

EA XX XX XX XX


我试着让XX变成一个4字节的地址,我想跳转到这个地址,但没有按预期的那样工作。

这将是一个绝对的跳转

例如,对于16位代码,字节0xEA、0x12、0x34、0x56、0x78 wll是指令
jmp far 0x7856:0x3412
(其中CPU将尝试将CS设置为0x6745,并将IP设置为0x3412)

对于32位代码,大小需要更大。例如,字节0xEA、0x12、0x34、0x56、0x78、0x9A、0xBC将是指令
jmp far 0xBC9A:0x78563412
(其中CPU将尝试将CS设置为0xBC9A,并将EIP设置为0x78563412)


换句话说,操作数是目标16位IP(或32位EIP),后跟目标代码段;这两个部分都是以小尾端顺序排列的。

您在
XX XX XX
中使用了什么地址?请记住,它是little endian Too如果您谈论的是16位代码,那么远JMP(直接寻址)将类似于:
JMP字0x5678:0x1234
(段:偏移量)。它们以little endian格式存储在指令中。先偏移,后偏移
jmp字0x5678:0x1234
将是
EA 34 12 78 56
。允许使用前缀将段:偏移对转换为物理地址段或带有32位操作数的16位代码(对于i386+系统)。NASM语法将是
jmp dword 0xBC9A:0x78563412
,它将是以0x66操作数前缀作为前缀的指令编码