汇编伪指令ORG是干什么用的

汇编伪指令ORG是干什么用的,第1张

汇编伪指令ORG作用是定义程序或数据块的起始地址。 指示此语句后面的程序或数据块以 nn 为起始地址连续存放在程序存储器中。

在汇编语言源程序的开始,通常都用一条ORG伪指令来实现规定程序的起始地址。ORG 伪指令规定了程序的起始地址从 2000H 开始,即该程序的第一条指令“MOVA, 20H”从地址 2000H 开始存放。如果不用ORG规定则汇编得到的目标程序将从0000H开始。

扩展资料:

一般指令是在执行阶段发挥作用的,由CPU(Intel、AMD等)来执行。而汇编伪指令ORG在编译阶段发挥作用的,由汇编器(MASM、TASM等)来解释。

汇编语言源程序中若没有ORG伪指令,则程序执行时,指令代码被放到自由内存空间的CS:0处;

若有ORG伪指令,编译器则把其后的指令代码放到ORG伪指令指定的偏移地址。

两个ORG伪指令之间,除了指令代码,若有自由空间,则用0填充。

伪指令是用来告诉编译器如何编译源程序的

宏指令是由用户按照宏定义格式编写的一段程序,其中语句可以是指令、伪指令,甚至是已定义的宏指令。

伪指令和指令的区别在于,每一条指令必须生成机器代码,然后在程序运行期间由CPU来执行其操作;而伪指令是在汇编期间由汇编程序执行的操作命令,除了数据定义及存储器分配伪指令分配存储器空间外,其它伪指令不生成目标码。和各种指令一样,伪指令也是程序设计不可缺少的工具。

宏是伪指令,宏的作用是把一个复杂的或者是不直观的语句或是组合用一个简单的、易记的形式表示,当编译器遇到源程序中的宏时,就把它定义的内容原封不动的copy过来。如果程序中使用100次宏,这段代码就被复制100次。因此,使用多次调用能使源程序变短,而不能使运行代码变短(子程序调用可以,但也增大系统开销)。

我们编写的各种指令,都是写给“编译软件”看的,

要由“编译软件”翻译成计算机可以识别的机器语言,即机器码。

通俗地讲:

就好像召开新闻发布会,主持人用中文讲话,由一个翻译,现场翻译成英文,讲给外国记者听。

主持人说的中文,大部分都是要翻译成英文的;少数几句,是说给翻译听的,告诉他如何翻译。

我们写的指令,由“编译软件”翻译成机器码的,称为指令语句;

有一些是写给“编译软件”看的,不翻译成机器码,这样的就是“伪指令”。

一条条计算机的指令,一般来说,功能都是极为简单,我们可以把几条、几十条指令,编写成一个“宏指令”,来完成一个比较复杂的任务。

在这样“一批指令”的前面,要用“伪指令”来命名这个“宏指令”;

在后面,要用一条“伪指令”说明结尾。

以后,这个“宏指令”,就可以当成

正式指令

来使用了。

10 dup(1)重复定义了10个字元素,初始值为1,占用102=20个字节。

5 dup(?)重复定义了5个字元素(其初始值实际为0),占用52=10个字节

因此总共占用30个字节。

具体分析:在汇编定义变量的时候会用到dup,变量名 、类型 、初值表,Dup用于把一个相同值赋值若干次,重复次数 dup(数据项),具体比如s db 30 dup(0),定义一个字节型变量,该变量占用30个字节,所有字节被初始化成0,equ是一个代码替换指令。

扩展资料

在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。

比如:用“ADD”代表数字逻辑上的加减,“ MOV”代表数据传递等等,通过这种方法,人们很容易去阅读已经完成的程序或者理解程序正在执行的功能,对现有程序的bug修复以及运营维护都变得更加简单方便。

写个例子吧-你可能理解的有些模糊

dseg segment ;定义数据段。segment是定义段的伪指令,当然dseg是随意定义的你可以随意定义名字

dseg ends ;数据段结束,ends是结束段的伪指令,这里结束前面的数据段名字必须跟开始定义数据段时成对出现。

cseg segment;定义代码段。。segment是定义段的伪指令,当然dseg是随意定义的你可以随意定义名字

cseg ends;代码段结束,ends是结束段的伪指令,这里结束前面的代码段名字必须跟开始定义代码段时成对出现。

eseg segment;定义代码段。。segment是定义段的伪指令,当然eseg是随意定义的你可以随意定义名字

eseg ends;代码段结束,ends是结束段的伪指令,这里结束前面的附加段名字必须跟开始定义附加段时成对出现。

assume cs:cseg,ds:dseg,es:eseg;assume也是伪指令用途关联 各段寄存器,这里只是让机器知道没有实际用途

可能你对这里的概念比较模糊,

名字是可以随意起的,但必须成对出现,

用assume关联哪个段就是哪个段而不是你定义dseg自动就是代码段。需要用assume关联

汇编语言爱好者为您回答,请选我

以上就是关于汇编伪指令ORG是干什么用的全部的内容,包括:汇编伪指令ORG是干什么用的、87. 宏指令与伪指令的区别是什么、指令语句,伪指令,宏指令的区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:聚客百科

原文地址: https://juke.outofmemory.cn/life/3699010.html

()
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存