程序集x86到机器代码

程序集x86到机器代码,x86,x86-16,X86,X86 16,我需要这3个关于asm和机器代码的命令: 我对语法没有把握 mov ebp, 11707336 ; move 11707336hex to register ebp sal ebp, 8 ; shift left 8 bits (I need 70733600 at ebp) jmp 66661149 ; I guess that in machine code it will be offset and not a direct

我需要这3个关于asm和机器代码的命令:

我对语法没有把握

mov ebp, 11707336    ; move 11707336hex to register ebp

sal ebp, 8           ; shift left 8 bits (I need 70733600 at ebp)

jmp 66661149         ; I guess that in machine code it will be offset and not a direct
                     ; address, so this command is at 0012ED1C

谢谢。

我认为您必须在代码中使用带有
标签的
jmp
。 如果要移动到
地址66661149
必须将其加载到寄存器中 然后将其加载到
程序计数器或堆栈指针中。
如果要加载十六进制常量,请使用0x a.e.0xFFFFF

我不知道你的问题是什么,但我想你想知道你的asm代码是否正确


指令集:

我认为您必须在代码中使用带有
标签的
jmp
。 如果要移动到
地址66661149
必须将其加载到寄存器中 然后将其加载到
程序计数器或堆栈指针中。
如果要加载十六进制常量,请使用0x a.e.0xFFFFF

我不知道你的问题是什么,但我想你想知道你的asm代码是否正确


指令集:

我建议您也采用与以前相同的反向工程来找到这些(?)来修补它。你知道有绝对标签地址是很奇怪的,我能想到的唯一目标是软件保护删除如果你想加载一个十六进制数,你必须指定它是十六进制。例如,
1170736h
。这是一个“伪代码”,我需要二进制。翻译它有这么大的意义?我建议你也用你以前用的反向工程来修补它。你知道有绝对标签地址是很奇怪的,我能想到的唯一目标是软件保护删除如果你想加载一个十六进制数,你必须指定它是十六进制。例如,
1170736h
。这是一个“伪代码”,我需要二进制。翻译它有什么大不了的?它不是一个程序。它是函数的一个输入,所以我在机器代码中需要它,而在asm中根本不需要它。我没有可能添加标签或类似的东西。我所知道的唯一的事情是地址,而不是搜索指令的操作码,或者编译它并查看它的二进制输出。好建议。。。我认为,在这里询问smb会稍微快一点,因为他们记住了这些东西,而没有学习体系结构和搜索操作码。。当我在pdp11上写的时候,把代码翻译成二进制对我来说不是问题……但也许你可以把它写成f.e.C代码中的内联asm,它不是一个程序。它是函数的一个输入,所以我在机器代码中需要它,而在asm中根本不需要它。我没有可能添加标签或类似的东西。我所知道的唯一的事情是地址,而不是搜索指令的操作码,或者编译它并查看它的二进制输出。好建议。。。我认为,在这里询问smb会稍微快一点,因为他们记住了这些东西,而没有学习体系结构和搜索操作码。。当我在pdp11上写的时候,把代码翻译成二进制代码对我来说并不是一个问题……但也许你可以把它写成f.e.C代码中的内联asm