长汇编代码问题

Posted

技术标签:

【中文标题】长汇编代码问题【英文标题】:long assembly code problem 【发布时间】:2010-12-17 12:45:27 【问题描述】:

我有一个汇编程序,但是当我添加一些代码行时,它会变得混乱。 例如,当我在此程序工作时添加一个新程序时,整个程序会卡在某个点,就像它没有完成程序但停留在特定点一样。当我添加一些不影响程序的命令时也会发生同样的情况,就像代码开头的一些 mov [300h],00h。

知道如何解决这个问题吗? 我读过 jmp 命令只能跳转 128 个地址范围。真的吗?我可以绕过这个吗? 我已经看到一些程序有一个“接近”的扩展。喜欢

测试过程接近 mov al,[0300h] ... 回复 测试结束

那是怎么回事?这可以帮助我吗?谢谢!

【问题讨论】:

【参考方案1】:

首先,mov [300h],00h 不会影响程序。它可以很好地修改你的代码,所以不要这样做!

其次,只有条件跳转(Jcc)对-128..+127地址范围有这个限制,所以如果你认为分支太远,那么就不要

JE some_far_label

使用

JNE skip1
jmp some_far_label
skip1:

如果您还有其他问题,请发布一些代码。

编辑:mov byte [300h], 0 可能会覆盖您的代码。如果您使用的是汇编程序,则为变量分配空间:

var1 db 0

【讨论】:

非常感谢。有什么参考资料可以让我阅读有关此类场合的更多信息吗?例如 mov [300h],00h 如何影响我的代码?

以上是关于长汇编代码问题的主要内容,如果未能解决你的问题,请参考以下文章

AArch64 - 并行运行 ARM 和 ASIMD 指令

8086汇编语言基础学习——8086微机基础

本机代码、机器代码和汇编代码有啥区别?

从 C# 代码生成汇编代码?

汇编数据段地址问题 看我的源代码,从反汇编的代码中可以看到段地址DS应该为075A 但是D命令查看的结果不是

关于warning no stack segment的问题 - 16位汇编语言代码问题