将程序移动到堆栈[Assembly 80x86]

时间:2013-07-07 17:36:27

标签: assembly stack

您好,并提前致谢!

我正在处理一个程序集项目,我需要将程序代码移到堆栈中,然后从那里继续流程。

这意味着程序将在代码段中启动并在运行时移动到堆栈段。在那里它将执行给它的任务(现在,让它在那里循环地循环)。

我尝试了一些想法:

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

这个编译,但不起作用。

汇编语言是英特尔针对80x86的16位汇编语言。 汇编程序是nasm。

感谢所有帮助者。

1 个答案:

答案 0 :(得分:0)

我假设您正在使用默认的bin输出格式编译代码以生成.COM文件。如果是这样,您需要知道.COM文件在内存中以100h的偏移量加载。您需要通过在代码的开头添加ORG指令来使汇编程序意识到这一点。

ORG 100h

完成后,您的代码应按预期工作。如果没有ORG指令,汇编器会假定起始地址为0,因此 jump 内存引用将关闭100h字节。

有关详细信息,请参阅NASM documentation