有人能给我一个关于ORG指令的全面描述吗? 何时以及为何在汇编编写的应用程序中使用它?
在x86或AMD64上使用Nasm。
答案 0 :(得分:33)
ORG用于设置汇编程序位置计数器。这可能会或可能不会转换为链接时的加载地址。它可用于定义绝对地址,例如在定义类似中断向量的东西时,可能需要在固定地址,或者它可以用于引入填充或为以下代码生成特定的对齐。
答案 1 :(得分:8)
ORG仅仅是指示下一段与当前段相关的下一段代码/数据的指示。
将它用于固定地址是没有用的,因为最终地址取决于在汇编时未知的段。
答案 2 :(得分:3)
During the assemble time ORG directive resets the MLC (memory location counter) to the address specified in the ORG directive.
语法:ORG 注意:可以是无符号绝对值或任何符号或符号+。
示例: - 要观察此指令,您需要任何使用ORG指令的汇编列表。
位置
0000A4 00 89 TAB DC 256AL1(* - TAB)
0001A4 00000194 90 ORG TAB + 240
000194 F0F1F2F3F4F5F6F7 91 DC C' 1234567'
在上文中,TAB符号被分配给MLC地址0A4。在下一条指令中,ORG将MLC设置为TAB + 240地址位置,即xÂ' (~x' A4' + 240十进制)。 基本上这个设置是设置一个长度为256的表,从第240个位置设置一些字符常量,以便我可以将它用于TR指令。
答案 3 :(得分:0)
ORG表示来源 ORG用于微处理器和微控制器编程中的特定寻址。
例如:
.org 0000H
这意味着我们要从0000H
地址启动程序。
答案 4 :(得分:-1)
它在内存中你想要加载二进制程序的位置,如果有的话。
我不想使用org,只是向硬件发出直接操作码/值。 您始终可以将值存储在ax中并在bx,cx,dx之间传输。
我正在编写自己的汇编程序来识别操作码/值,而不必担心在执行之前先将其发送到内存,
它只是在读取时在现场执行操作码的速度快得多,而不是试图将它们缓存到内存中,从而有可能使堆栈过载,这可能会烧坏你的cpu
答案 5 :(得分:-1)
ORG设置程序预期加载的位置。通过将此程序加载到不同的位置将引用不正确的内存地址并将导致问题。