EQU只是一个伪令义.
EQU介绍:
1)在某些时候程序中多次出现同一个表达式,为方便起见,可以用赋值伪操作给表达式赋予一个名字。就叫做EQU。
2)Expression_name EQU Expression;此后程序中凡需要用到该表达式指出,就可以用表达式名来代替了。可见,EQU的引入提高了程序的可读性,也使其容易修改。
3)上式中的表达式可以是任何有效的操作数格式,可以是任何可求出常数值的表达式,也可以是任何有效的助记符。
4)EQU不是指令集,而是伪指令,一般我们常使用的MASM5.0以上都常用这个伪指令。它不是80X86的指令集合。而汇编在第一次扫描时只扫描了指令,而将伪指令中的东西作为“动态内容”作了标记而已。所以在第一次扫描所得到的清单中是没有看到它占用内存的。所以不会计算其中的数据的。而第二次扫描才能得到。
5)指令集是属于机器CPU的,因有的,一个类型CPU就有这样一个指令集。而伪指令则是由汇编软件提供的,比如MASM5.0中提供了EQU的伪指令,那么汇编时是由于MASM5.0进行运算的。而计算空间时所得到的清单文件是关于指令的,所以伪指令并没有计算在内。
6)不同类型的CPU会有不同的指令集,不管你使用什么样的汇编软件,同一个类型 的CPU指令集是不会变的!而伪指令是由汇编软件提供,不同的汇编软件有不同的伪指令集。
7)CPU的发展和软件的发展都有一个基础,因此出现了向下兼容的现象。80386与80286相比,只在80286指令集的基础上增加了几个指令而成的。而软件也是,MASM6.0只是在5.0部分伪指令集的基础上增加了几条伪指令而已。但6.0却还有一大进步就是将5.0中的两次扫描一次完成。也就是说6.0只有一次扫描。而5.0却是两次扫描。
编译器中的伪指令,代换内容
如果在程序一开始声明了M1 equ 010h
那么这一句movf m1,0的作用就是将010h地址中的内容传送到ACC寄存器(PIC)
很简单的东西,楼主看书便会,何必问呢
EQU只是一个伪令义,就是换一个名字而已
比如说P0口为数据口,你可以 shuju EQU P0
你需要用到30H, 可以 count EQU 30H
SHUJU, COUNT 这几个随便你写的
EQU跟C中的#define指令相似,例如#define MAX_PATH 256
意思是将256替换成MAX_PATH,在以后使用MAX_PATH的地方编译的时候会自动换成256,这种方法的好处是便于维护常数,因为单纯的常数让人不能明白所代表的含义所以通过,MAX_PATH代表路径字符最大长度,同样如需修改只修改这个地方的值就OK了
汇编中使用EQU来实现同样功能如 MAX_PATH EQU 256,含义同上
EQU只是一个伪令义,就是换一个名字而已