彙編--7 數據處理

7.1彙編語言中數據位置的表達

7.1.1 idata立即數
對於直接包含在機器指令中的數據(執行前在cpu指令緩衝器中),在彙編語言中成爲立即數,在彙編指令中直接給出。比如:mov ax,1

7.1.2寄存器
指令要處理的數據存在寄存器中,彙編指令給出相應的寄存器名稱

7.1.3段地址(SA)和偏移地址(EA)
指令要處理的數據在內存中,在彙編指令中可用[X]的格式給出EA,SA在 段寄存器中
存放段地址的寄存器可以是默認的也可以是顯性給出的(es:[si])

7.2處理數據的長度
(1)通過寄存器名指定處理數據的長度
(2)在沒有寄存器名的情況下,用操作符X ptr指明內存單元的長度,X在彙編指令中可以爲word和byte
例如 mov byte ptr [1000H],1 這時候的1就是01H 而不是 00001H

8.1[…]內存尋址方向
只有 bx,si,di,bp四個寄存器可以用【….】的方式進行內存單元的尋址,但這四個寄存器只能以4中方式出現
(1)bx si
(2)bx di
(3)bp si
(4)bp di
另外這4中組合方式都能和立即數idata組合。
只要在寄存器bp,如果指令中沒有顯示的給出段地址,段地址默認在ss中。

8.2指令處理的數據有多長
指令mov [bx],1 我們無法得知1是一字節還是兩個字節 ,所以我們要知道[bx]代表一個字節大小的內存還以一個字大小的內存 ,我們用X ptr指明內存單元長度
mov word ptr ds:[0],1 這時1是兩個字節大小
mov byte ptr ds:[0],1 這時1是一字節大小
inc byte ptr[bx],

8.3div指令
div指令要注意兩個問題
(1) 除數:有8位和16位兩種,在一個reg或內存單元中
(2)被除數:默認放在AX或AX和DX中,如果除數爲8位,被除數則爲16位,默認存在AX中;如果除數爲16位,被除數則爲32位,在DX和AX中存放,DX存放高16位,AX存放低16位。
(3)結果:如果除數爲8位,則AL存儲除法操作的商,AH存儲除法操作的餘數;如果除數爲16位,則AX存儲除法操作的商,DX存儲除法操作的餘數。
格式:
div reg
div 內存單元

8.4僞指令dd
dd用來定義雙字型數據 dd 1,這個1佔兩個字

8.5dup
db 3 dup (0)相當於定義了3個字節型數據0
bd 3 dup(0,1,2)定義了0,1,3三個字節型數據
db 重複的次數 dup(重複的字節型數據)
dw 重複的次數 dup(重複的字型數據)
dd 重複的次數 dup(重複的雙字型數據)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章