處理的資料在哪個地方?
要處理的資料有多長?
我們首先對暫存器進行乙個分類:
前面三個我們已經學習過了。
把這幾個放在一起,顯然是為了說記憶體定位。
這四個均可以單獨定位記憶體,也可以兩兩組合,但是需要注意以下的寫法是錯的:
mov ax,
[bx+bp]
mov ax,
[si+di]
也就是說bx可以和si、di組合,bp也可以和si、di組合,但是bx和bp不能組合,si和di也不能組合。
那麼bp是幹什麼的呢?
它對應的段位址是ss,而不是ds。
也可以看成棧的呼叫。
一共有三種:
即直接在彙編指令中的資料,也就是idata。
比如:
mov ax,1023h
這裡的1023h就是乙個立即數。
這些資料,在被執行前,是和指令一起放在指令緩衝器中。
這兩個是之前講了很多的了,此處不再贅述。
這個我們之前說了很多,此處做一下總結:
前面我們相當於回答了第乙個問題。
此處我們回答一下第二個問題。
我們知道,在我們之前的學習中,我們處理的基本資料有兩種型別:word和byte
那麼我們是如何通過指令來體現要處理的資料有多長呢?
這個很好理解了。
如果是整個暫存器,如ax,bx,那麼我們要處理的資料就是word。
那麼如果是一半,比如:ah,al,bh,bl,那麼我們要處理的資料就是byte
這裡的x可以是byte或word,可以用於在沒用暫存器情況下指定大小。
舉個例子:
mov byte ptr [bx]
,2
有些指令是有預設的運算元據大小,比如push只操作word
div就是除法的意思。
那麼,我們在使用div時,有三個值得注意的地方:
除數:有8位和16位兩種,在乙個reg或記憶體單元中
被除數:預設時ax或ax和dx。如果除數是8位,則被除數字16位,存放在ax;如果除數是16位,被除數是32位,存放在ax和dx中,高位在dx中,低位在ax中
結果:如果除數是8位,則al儲存商,ah儲存餘數;如果除數是16位,ax儲存商,dx儲存餘數
使用的格式如下:
div reg
div 記憶體單元
dd的意思是define dword(double word),也就是定義雙字,和之前db、dw類似。
雙字也就是兩個字的大小。
這也是乙個偽指令,是配合dw、db、dd使用的,用來重複填充。
使用方法如下:
db 重複次數 dup (重複的位元組資料)
dw 重複次數 dup (重複的字資料)
dd 重複次數 dup (重複的雙字資料)
我們舉個例子:
db 3 dup (0,1,2)
db 0,1,2,0,1,2,0,1,2
這上面兩個語句是等價的。
第八章是對前面的總結,到這裡也就告一段落了。
組合語言學習第八章 資料處理的兩個基本問題
計算機cpu進行資料處理包括兩個基本的問題 1.資料在何處?2.資料有多大?本章作為乙個前面內容的總結性章節,主要來說明這兩個問題。我們定義兩個符號reg和sreg。其中reg為暫存器,sreg為段暫存器 reg包括 ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp...
第八章 資料處理的兩個基本問題
1 計算機是進行資料處理 運算的機器,那麼有兩個最基本的問題 1.處理的資料在什麼地方?2.要處理的資料有多長?2 定義描述性符號 reg register 暫存器 和sreg segment register 段暫存器 reg的集合包括 ax bx cx dx ah al bh bl ch cl ...
彙編實驗之第八章資料處理的兩個基本問題
一 reg來表示乙個暫存器,用sreg來表示乙個段暫存器。reg的集合包括 ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di serg集合包括 ds,ss,cs,es 二 1 在8086cpu中,只有bx,si,di,bp這四個暫存器可以用在 來進行記憶...