1
3
当你有这个数据块时:
它位于执行路径上。此数据将作为代码由处理器执行,作为之后的下一个指令
您还需要在执行该指令后添加一个无限循环,以防止执行落到后面的垃圾中(如果您把它放在GDT表中的话)。 始终记住,组装是非常低级的。无论你在代码中坚持什么,无论是否是真正有意义的指令,如果处理器能够处理,都将被视为代码。它不会跳过数据,也不会在你写的最后一条指令后停止。 至于指令反汇编错误的原因,反汇编程序不知道何时切换到32位模式。它只是一个反汇编程序,而不是模拟器,所以它看不到让CPU在32位模式下执行该部分的远jmp的效果。 你可以在32位模式下反汇编整个东西,然后(在反汇编发生之前的一些混乱之后,重新与实际的指令边界同步)它反汇编成你想要的样子:
|
asn · NASM 64位编程中遵循的Endianness 6 年前 |
asn · 用于将数字相乘的Shift和add方法给出垃圾输出 6 年前 |
asn · 64位NASM编程中的汇编编程基础 6 年前 |
Programmer · 操作系统开发:切换到32位模式会破坏我的代码 6 年前 |
RTC222 · CTypes返回值错误 6 年前 |
ivaa14 · nasm程序打印的参数过多 6 年前 |