先看一段代碼:
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