EQU在题目中的问题

来源:百度知道 编辑:UC知道 时间:2024/06/18 09:43:26
DATA SEGMENT
ORG 0020H
DA1 DW 12H,23H
DA2 EQU 1234H
DA3 EQU $-DA2
DATE ENDS
该程序段已占字节数是多少? DA2和DA3也在该程序段中,为什么其中的内容没计算在内?
初学汇编~请高手解答下
谢谢楼下的回答,还想问下,DW也是伪指令,那为什么DA1的内容占了程序段字节呢? 哪位大侠帮下啊~

首先,这是你对汇编不太了解。EQU不是指令集,而是伪指令,一般我们常使用的MASM5。0以上都常用这个伪指令。它不是80X86的指令集合。而汇编在第一次扫描时只扫描了指令,而将伪指令中的东西作为“动态内容”作了标记而已。所以在第一次扫描所得到的清单中是没有看到它占用内存的。所以不会计算其中的数据的。而第二次扫描才能得到。

你可以这样理解,指令集是属于机器CPU的,因有的,一个类型CPU就有这样一个指令集。而伪指令则是由汇编软件提供的,比如MASM5。0中提供了EQU的伪指令,那么汇编时是由于MASM5。0进行运算的。而计算空间时所得到的清单文件是关于指令的,所以伪指令并没有计算在内。

也就是说不同类型的CPU会有不同的指令集,不管你使用什么样的汇编软件,同一个类型 的CPU指令集是不会变的!而伪指令是由汇编软件提供,不同的汇编软件有不同的伪指令集。

其实CPU的发展和软件的发展都有一个基础,这就是为什么出现了向下兼容的现象。80386与80286相比,只在80286指令集的基础上增加了几个指令而成的。而软件也是,MASM6。0只是在5。0部分伪指令集的基础上增加了几条伪指令而已。但6。0却还有一大进步就是将5。0中的两次扫描一次完成。也就是说6。0只有一次扫描。而5。0却是两次扫描!

所以看一下指令与伪指令的区别就能明白了!