先看一段代码:
DATE SEGMENT
DA1 DW 1234H
DA2 DB 56H,78H
DATA ENDS
。
。
。
MOV AX,DATA
MOV DS,AX
MOV DI,OFFSET DA1
MOV BX,OFFSET DA2
MOV AL,[DI]
ADD AL,[DI+2]
再看解释与结果:(by cnzdgs@csdn)
MOV AX,DATA
MOV DS,AX
; 初始化DS,使其指向DATA段
MOV DI,OFFSET DA1
MOV BX,OFFSET DA2
; 让DI指向DA1,BX指向DA2,DI=0,BX=2
MOV AL,[DI]
; 将DI指向的内存中的1字节数据传给AL,也就是把DA1的低字节给AL,因为低位在前,所以是34H
ADD AL,[DI+2]
; 将DI+2指向的内存中的1字节数据与AL向加,结果放在AL里面,34H+56H=8AH
再看我的图示:
内存地址: 内存内容:
0x00000000 0x34 (dword的地位)
0x00000001 0x12 (dword的高位)
0x00000002 0x56
0x00000003 0x78