有人能给我一个关于ORG指令的全面描述吗?
在编写汇编语言应用程序时,何时以及为什么要使用它?
在x86或AMD64上使用Nasm。
ORG用于设置汇编程序的地址计数器。这可能或可能不会在链接时转换为加载地址。它可以用于定义绝对地址,例如在定义诸如中断向量之类需要位于固定地址的内容时,或者可以用于引入填充或生成以下代码的特定对齐。
ORG
指令的含义可能因汇编器而异。例如,像 Paul 所述使用它来生成填充在 MASM 上是可行的,但在 NASM 上则不行。 - bcatORG只是指示下一段代码/数据应该放置在哪里,与当前段相关。
它不能用于固定地址,因为最终的地址取决于在汇编时不知道的段。
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'194'(约为x'A4'+240的十进制数)。 基本上,这个设置是为了设置一个长度为256的表,并从240个位置开始存储一些字符常量,以便我可以将其用于TR指令。
-f bin
输出格式中,您可以使用多个节(section),并使用 start=
和 follows=
来控制它们的布局,还可以设置要计算的节(section)以支持通过使用 vstart=
或 vfollows=
进行重定位。 - ecmORG的意思是原点。
在微处理器和微控制器编程中,使用ORG进行特定寻址。
例如:
.org 0000H
0000H
开始运行程序。ORG xxxx
ORG 不是汇编语言指令,而是汇编器指令。它告诉汇编器从这里开始的指令应该放置在位置 xxxx。ORG(ORiGin的缩写)是一种汇编指令,而不是指令。它定义了机器码(翻译后的汇编程序)在内存中的位置。至于ORG 100H
,这涉及到80x86 COM程序格式(COMMAND),它只包含一个最大为64k字节的段。此外,它可以用于定义绝对地址,引入填充或生成特定的对齐方式...
它是二进制程序在内存中加载的位置,如果有需要。
我不喜欢使用org,而是直接将操作码/值输出到硬件。 你可以始终将值存储在ax中,并在bx、cx、dx之间传输。
我正在编写自己的汇编器,无需担心在执行前先将操作码/值发送到内存中。
当读取时,直接在现场执行操作码要快得多,而不是尝试将它们缓存到内存中,存在过载栈的风险,可能会烧毁您的CPU。