處理的數據在什么地方:
立即數(idata)1,3,10,3F
寄存器AX,AL,BX
內存單元,可用尋址方式給出DS:[idata],ds:[0]
處理的數據有多長:
MOV AX,1 ;字操作
MOV AL,1 ;字節操作
MOV BYTE PTR DS:[0],1 ;字節操作
MOV WORD PTR DS:[0],1 ;字操作
PUSH/POP 進行的是字操作
數據的定義:
data segment db 1H ;定義字節數據 每一個字節數據項占一個內存單元
dw 2H ;定義字數據 每一個字數據項占連續2個內存單元
dd 3H ;定義雙字數據 每一個雙字數據項占連續4個內存單元
dw 1E2FH ;定義一個字 高(8位)字節1EH,低(8位)字節2FH 存儲在內存中 如下表
dw ? ;不對數據項分配初始值,僅分配內存單元 10009H,1000AH為預置空間
data ends
下表為以上數據在存儲單元中的初始狀態,內存中一個存儲單元存放一個字節,一個字為兩個字節,這個字的高位存放在高地址空間中,低位存放在低地址空間中:
起始地址1000:001H | ?10000H(DB定義的數據1占1內存單元空間)? |
00H | ?10001H(DW定義的數據占2個內存單元空間)? |
02H | ?10002H? |
00H | ?10003H(DD定義的數據占4個內存單元地址)? |
00H | ?10004H |
00H | ?10005H |
03H | ?10006H |
2FH | ?10007H(低位存放在低空間10007H單元中)? |
1EH | ?10008H(高位存放在低空間10008H單元中)? |
? | ?10009H |
? | ?1000AH |
尋址
MOV AX,1000H
MOV DS,AX
MOV BX,0
MOV AL,DS:[BX] ;AL中保存地址10000H中的數據 即我們用db定義的數據"1H"
MOV AX,DS:[BX+1];一個字占連續的兩個內存單元,低地址10001H高地址10002H可以讀作10001H地址字單元,表示為DS:[10001H]
MOV AX,DS:[BX+3];雙字的低16位存放在AX寄存器中
MOV DX,DS:[BX+5]; 高16為存放在DX寄存器中 AX,DX保存了DD定義的雙字數據