ORG伪指令的作用是什么?
来源:百度文库 编辑:神马文学网 时间:2024/04/29 09:38:50
ORG伪指令的作用是什么?
JerKii (JERKII SHANG) 2005-11-16 16:03:51 在 其他开发语言 / 汇编语言 提问对于COM文件,我们通常会在程序中添加ORG 100H的指令,如果不加的话,使用ML /AT ...就会产生警告!
对于一些特殊的程序,如引导程序,在程序中就会有ORG 7C00H,我想知道这些指令究竟有什么用?似乎在最终生成的二进制文件也看不出任何变化啊?
问题点数:20、回复次数:4 1楼 JerKii (JERKII SHANG) 回复于 2005-11-16 16:48:20 得分 0 =========================================================================================================
哎,自己琢磨了一下,终于弄清楚了,唉!白费了20啊!:(
下面是我的总结:
简单说来,该指令用来修正该指令以后出现的(变量/标志的)内存地址,也就是说如果有ORG 0x12345h,那么在该指令以后的变量的地址将被修正为0x12345+old_addr。
对于DOS中的COM文件,在被DOS装载进内存后,系统会在内存的CS:0000 – CS:0100区域创建一个PSP,这里存放了一些系统所需的信息,比如通过命令行所传递的参数等,COM文件的代码将被装载到CS:0100 – CS:XXXX的内存区域,所以说如果COM代码中不通过使用ORG 100h来进行修正的话,该段中的变量将不能被正确访问,这时,对改变量的访问将导致PSP中的数据被访问了,从而得不到预期的结果。对于EXE文件,其所采用的方式可能就不一样了,具体是怎样的,目前还不知道。。。
对于一些引导程序,这些程序将被BIOS装载到内存中的指定地方,通常为0000:7C00,这跟DOS装载COM文件的机制是一样的,只不过DOS是将COM文件的代码装载到CS:0100处。所以在,引导程序的汇编代码中,需要指定ORG 7C00H来对代码中的变量的内存地址进行修正。
如:
ORG 7C00H
msg db ‘HELLO WORLD’,0
MOV DX, OFFSET msg
在有ORG 7C00H的情况下,MOV DX, OFFSET msg对应的指令为MOV DX,7C4B(这里4B为msg在当前数据段中的偏移位置)如果没有ORG 7C00H,那么真正被执行的指令将为MOV SI,004B,试想,BIOS已经将该代码装载到0000:7C00处,0000:0000 – 0000:7C00之间的数据可能为其他更重要的数据,如果使用004B就得不到我们所要访问字符串msg,因为我们的字符串被BIOS放在7C4B这里了,所以我们的程序(最终由编译器来完成)就必须迎合BIOS的这种规定了。
====================== 这样说来,.COM文件的执行还是要DOS操作系统之下才行啊?至少加载时是这样的,那么也就是说.com文件并不是可以在无操作系统时执行的。 ======================不过仔细想想,如果无操作系统,也无所谓什么文件格式了。纯粹的裸机只能执行机器代码而已。
ORG伪指令的作用是什么?
ORG伪指令的作用是什么?
ARM汇编语言伪指令
ARM汇编语言伪指令
踢脚线的作用是什么?
活性炭的作用是什么?
交换机的作用是什么 ????
volatile的作用是什么
刮痧的作用是什么?!
电抗器的作用是什么?
布林线的神奇作用是什么?
三元催化剂的作用是什么
makefile文件的作用是什么
请问显卡的作用是什么
FASM 第二章 - 2.1 x86 体系指令 - xuyibo.org
韭菜的价值和作用是什么?
南桥、北桥的作用是什么?
大众传播者的地位和作用是什么?
网站优化中标题的作用是什么
windows桌面“刷新”的作用是什么?
FTP是什么?他的作用是什么?如何使用FTP?
FTP是什么?他的作用是什么?如何使用FTP?2
FTP11是什么?他的作用是什么?如何使用FTP?
FTP是什么?他的作用是什么?如何使用FTP?!