谁能给予我一个关于ORG指令的全面描述?何时以及为什么在汇编编写的应用程序中使用它?在x86或AMD64上使用Nasm。
5tmbdcev1#
ORG用于设置汇编程序 * 位置计数器 *。这可能会也可能不会在链接时转换为加载地址。它可用于定义绝对地址,例如,在定义可能需要位于固定地址的中断向量时,或者它可用于为以下代码引入填充或生成特定对齐。
az31mfrm2#
ORG仅仅是关于在哪里放置与当前段相关的下一段代码/数据的指示。对于固定的地址使用它是没有用的,因为最终的地址取决于在汇编时不知道的段。
gk7wooem3#
During the assemble time ORG directive resets the MLC (memory location counter) to the address specified in the ORG directive.
语法:ORG备注:可以是无符号绝对值或任何符号或符号+。例如:-要观察这个指令的工作,你需要任何使用ORG指令的汇编清单。位置0000 A4 00 89接头直流256 AL 1(*-接头)0001 A4 00000194 90组织标签+240000194 F0 F1 F2 F3 F4 F5 F6 F7 91直流编码1234567以上TAB符号分配给MLC地址0A 4。在下一条指令中,ORG将MLC设置为TAB+240地址位置,即x '194'(十进制中的~ x 'A4' + 240)。基本上,此设置是设置一个长度为256的表,从第240个位置开始存储一些字符常量,以便我可以将其用于TR指令。
hgb9j2n64#
ORG表示原点ORG用于微处理器和微控制器编程中的特定寻址。例如:
.org 0000H
这意味着我们要从0000H地址开始程序。
0000H
h43kikqp5#
ORG xxxx ORG不是汇编语言指令;这是一条汇编程序定向指令,它告诉汇编程序从这里开始的指令应该放在从xxxx开始的位置
ctehm74n6#
组织(缩写为ORiGin)是汇编指令,而不是指令。它定义了机器码(翻译后的汇编程序)放在内存中。至于ORG 100H,这是处理80x86 COM程序格式(COMMAND)命令,它只由一个最大为64K字节的段组成。它还可用来定义绝对地址,引入填充符,或者产生一个特定的排列...
ORG 100H
6mw9ycah7#
它是内存中您希望加载二进制程序的位置(如果有)。我不喜欢使用org,而只是直接向硬件发出操作码/值。您总是可以将值存储在ax中,并在bx、cx、dx之间传输。我正在编写自己的汇编程序来输出操作码/值,而不必担心在执行之前先将其发送到内存,在读取操作码时当场执行操作码要快得多,而不是尝试将它们缓存到内存中,这会冒着堆栈过载的风险,从而可能会烧坏CPU
7条答案
按热度按时间5tmbdcev1#
ORG用于设置汇编程序 * 位置计数器 *。这可能会也可能不会在链接时转换为加载地址。它可用于定义绝对地址,例如,在定义可能需要位于固定地址的中断向量时,或者它可用于为以下代码引入填充或生成特定对齐。
az31mfrm2#
ORG仅仅是关于在哪里放置与当前段相关的下一段代码/数据的指示。
对于固定的地址使用它是没有用的,因为最终的地址取决于在汇编时不知道的段。
gk7wooem3#
语法:ORG备注:可以是无符号绝对值或任何符号或符号+。
例如:-要观察这个指令的工作,你需要任何使用ORG指令的汇编清单。
位置
0000 A4 00 89接头直流256 AL 1(*-接头)
0001 A4 00000194 90组织标签+240
000194 F0 F1 F2 F3 F4 F5 F6 F7 91直流编码1234567
以上TAB符号分配给MLC地址0A 4。在下一条指令中,ORG将MLC设置为TAB+240地址位置,即x '194'(十进制中的~ x 'A4' + 240)。基本上,此设置是设置一个长度为256的表,从第240个位置开始存储一些字符常量,以便我可以将其用于TR指令。
hgb9j2n64#
ORG表示原点ORG用于微处理器和微控制器编程中的特定寻址。
例如:
这意味着我们要从
0000H
地址开始程序。h43kikqp5#
ORG xxxx ORG不是汇编语言指令;这是一条汇编程序定向指令,它告诉汇编程序从这里开始的指令应该放在从xxxx开始的位置
ctehm74n6#
组织(缩写为ORiGin)是汇编指令,而不是指令。它定义了机器码(翻译后的汇编程序)放在内存中。至于
ORG 100H
,这是处理80x86 COM程序格式(COMMAND)命令,它只由一个最大为64K字节的段组成。它还可用来定义绝对地址,引入填充符,或者产生一个特定的排列...6mw9ycah7#
它是内存中您希望加载二进制程序的位置(如果有)。
我不喜欢使用org,而只是直接向硬件发出操作码/值。您总是可以将值存储在ax中,并在bx、cx、dx之间传输。
我正在编写自己的汇编程序来输出操作码/值,而不必担心在执行之前先将其发送到内存,
在读取操作码时当场执行操作码要快得多,而不是尝试将它们缓存到内存中,这会冒着堆栈过载的风险,从而可能会烧坏CPU