汇编这段代码什么意思?EQU宏定义?

DATA_1 BYTE 2,3,4,‘567’
DATA_2 BYTE 8,9,10
LT2 EQU DATA_2 – DATA_1 //LT2被宏定义为?
ORG 4 //设起始地址为4?
DATA_3 BYTE 0AH,0BH,0CH,0DH
LT1 EQU $-DATA_1 //什么意思?
答案:LT1 = (8) LT2 = (6) DATA_2+ 1 单元的内容= (0DH)我的解释:

第1个回答  2012-12-15
DATA_1 为一个数组 按字节定义 元素是2,3,4,35H,36H,37H
DATA_2 也为一个数组 按字节定义 元素是8,9,10
EQU 为等价伪指令
LT2 EQU DATA_2 – DATA_1 表示LT2等价于 DATA_2 – DATA_1
DATA_2 – DATA_1就是DATA_1数组起始地址与DATA_2数组起始地址的距离
即DATA_1 数组中字节的个数=6
所以 LT2=6
ORG 4 为定位伪指令 指明一下开始定义的变量数组的起始地址从0004H开始
DATA_3 BYTE 0AH,0BH,0CH,0DH 按字节定义一个数组(包含4个字节)
LT1 EQU $-DATA_3 等价伪指令 表示LT1=$-DATA_3
$表示LT1 EQU $-DATA_3该条伪指令的地址(应该比数组大4个字节)
所以LT1=$-DATA_3 =4你的最后一条指令LT1 EQU $-DATA_1 写错了
应该是LT1 EQU $-DATA_3
否则LT1=$-DATA_1 将无解。

哈哈 满意就选满意回答啊本回答被网友采纳
第2个回答  2012-12-15
DATA_1 偏移地址是0 由于有 2 3 4 35H 36H 37H 六个元素所以
DATA_2偏移地址是6
LT2为DATA_2 – DATA_1偏移地址相减6-0=6
ORG设现在地址为4 就是又加了4 到这句偏移地址=6+2+4=12
所以DATA_3偏移地址是12
LT1等于当前偏移址是再减DATA_1就是12+3-0=15追问

答案是(解释是我自己解释的)
LT1 = (8) ;$为当前偏移地址,为08H,$-DATA_1表示整段数据段的长度,我自己的解释
LT2= (6) ;[04H] – [00H] = 6
DATA_2+ 1 单元的内容= (0DH)

相似回答