您好,并提前致谢!
我正在处理一个程序集项目,我需要将程序代码移到堆栈中,然后从那里继续流程。
这意味着程序将在代码段中启动并在运行时移动到堆栈段。在那里它将执行给它的任务(现在,让它在那里循环地循环)。
我尝试了一些想法:
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。
感谢所有帮助者。
答案 0 :(得分:0)
我假设您正在使用默认的bin输出格式编译代码以生成.COM文件。如果是这样,您需要知道.COM文件在内存中以100h的偏移量加载。您需要通过在代码的开头添加ORG指令来使汇编程序意识到这一点。
ORG 100h
完成后,您的代码应按预期工作。如果没有ORG指令,汇编器会假定起始地址为0,因此 jump 内存引用将关闭100h字节。
有关详细信息,请参阅NASM documentation。