已知下面两个定义:
count1 EQU 16H ;count1是常量
count2 DW 16H ;count2是变量
下面的两条指令:
MOV AX,count1 ;立即数寻址,count1表示16H
MOV AX,count2 ;直接寻址, count2表示DS:offset count2逻辑地址表示的物理内存中的值
MOV count1,AX ;错误!常量不可以被赋值
MOV count2,AX ;正确!变量可以被赋值
编译器在编译过程中会把源程序中的所有count1都用16H来代替。
如此看来,EQU仅仅在源代码中存在,它在代码中就是一个立即数,不占用额外的内存。代码经过编译以后也根本不会存在这一行,计算偏移量的时候(比如计算count2相对于段首的偏移量时),它就是那位传说中被忽略不计的大侠。
阅读(2384) | 评论(0) | 转发(0) |