Assembly 汇编程序如何处理;“组织100小时”;指令?

Assembly 汇编程序如何处理;“组织100小时”;指令?,assembly,Assembly,我知道,这个指令是做什么的。正如我所知,程序加载器并没有看到这个指令,所以,汇编程序如何处理它呢 它将组装期间的当前地址设置为100小时。仅此而已。简单的作业 阐述: 该指令不控制以下指令在结果映像中的位置,而是控制指令加载到内存后的位置。“org”使用待运行时信息指示编译器计算地址,因为二进制映像将加载偏移量(以及在您的上下文中可能用于PSP等的前100个字节) 这可以访问同一段中的任何数据(通常是当DS=CS时,尤其是当“除了CS之外你什么都不知道”的com文件时),或者在极少数情况下对绝对

我知道,这个指令是做什么的。正如我所知,程序加载器并没有看到这个指令,所以,汇编程序如何处理它呢

它将组装期间的当前地址设置为100小时。仅此而已。简单的作业

阐述:

该指令不控制以下指令在结果映像中的位置,而是控制指令加载到内存后的位置。

“org”使用待运行时信息指示编译器计算地址,因为二进制映像将加载偏移量(以及在您的上下文中可能用于PSP等的前100个字节)

这可以访问同一段中的任何数据(通常是当DS=CS时,尤其是当“除了CS之外你什么都不知道”的com文件时),或者在极少数情况下对绝对偏移量执行JMP时


换句话说,它使一个段中的所有其他标签从特定偏移量开始计算:仅此而已。

大多数程序在Windows中加载时,通常从100开始 所以,当我们编写Org100h时,它会在运行时告诉编译器从100开始存储数据
编译器将产生数据错误,可能出现在60或您给定的位置

据我所知,这只是为程序中的第一个命令分配100h地址?如果是在程序的开头,则它后面的第一条指令/数据和/或标签将被视为驻留在地址100h。其后的任何指令/数据和/或标签将直接驻留在地址100h之后以此类推。
jcc
和near
jmp
指令是一个糟糕的例子;它们总是相对的(和位置无关)。更好的例子是
mov ax,[my_word]
,其中寻址模式将使用带有绝对地址(相对于DS段基)的disp16但是第一段是正确的。这取决于你的汇编程序(NASM vs.MASM),这就是
ORG100H
所做的。(NASM不允许你使用org返回并覆盖一些以前汇编的输出。)谢谢@PeterCordes——编辑以澄清该语句并删除错误的示例。“持续警惕”事实上是这样的)不,仅加载DOS
.com
程序(相对于DS段基的偏移量)。Windows程序以更高的地址加载。不,
org100h
不会告诉汇编程序在哪里存储数据,它会告诉汇编程序将在哪个地址加载数据,因此它可以发出正确的绝对地址。