您好,提前谢谢!
我正在处理一个汇编项目,我需要将我的程序的代码移到堆栈中,并从那里继续程序的流程。
这意味着程序将从代码段开始,并在运行自身的同时移动到堆栈段。在那里,它将执行指定给它的任务(目前,让它在那里无限循环)。
我尝试了一些想法:
PUSH word [cs:jump]
MOV cx, sp
PUSH SS
PUSH SP
MOV BP, SP
ADD word [word BP], 2
JMP FAR [BP]
jump:
JMP cx这会编译,但不起作用。
汇编语言是Intel针对80x86的16位汇编语言。汇编程序是nasm。
感谢所有的帮手。
发布于 2013-07-08 06:24:06
我假设您正在使用默认的bin输出格式编译代码,以生成一个.COM文件。如果是这样,您需要注意.COM文件在内存中的偏移量为100小时。您需要通过在代码开头添加ORG指令来使汇编程序意识到这一点。
ORG 100h一旦你这样做了,你的代码应该会像预期的那样工作。如果没有ORG指令,汇编程序假定起始地址为0,因此跳转内存引用将关闭100h字节。
有关详细信息,请参阅NASM documentation。
https://stackoverflow.com/questions/17514518
复制相似问题