1.兩個基本問題:
(1)處理的資料在什麼地方?
(2)處理的資料有多長?
2.暫存器集合(reg):ax,bx,cx,dx,al,ah,bl,bh,cl,ch,dl,dh,sp,bp,di,si;
段暫存器集合(sreg):cs,ds,ss,es;
3.幾種錯誤的指令:
(1)mov ax,[cx]
(2)mov ax,[dx]
(3)mov ax,[dx]
(4)mov ax,[ds]
(5)mov ax,[bp+bx]
(6)mov ax,[si+di]
4.處理可分為:讀取、運算、寫入,在及其指令這一層來講,它並不關心所要處理的資料是多少,而關心指令執行前的那一刻,它將要處理資料所在的位置。
5.立即數:對於直接包含著機器指令中的資料,比如:mov ax,1,1就是乙個立即數,執行前在cpu指令緩衝器中。
6.通過暫存器名指明要處理的資料的尺寸。如:ax是16bit=2byte,al是8bit=1byte
7.可以用操作符x ptr指明記憶體單元長度,x在彙編指令中可以是word或byte。比如:mov word ptr ds:[0],1
8.div是除法指令:
(1)除數:有8位和16位兩種,在乙個暫存器(reg)或記憶體單元中。
(2)被除數:預設放在ax或ax和dx中。如果除數是8位,被除數則為16位,預設在ax中存放;如果除數是16位,被除數則為32位,低16位放在ax中,高16位放在dx中。
(3)結果:如果除數是8位,則商存在al中,餘數存在ah中;如果除數是16位,則商存在ax中,餘數存在dx中
(4)格式如下:
div reg
div 記憶體單元
(5)舉例:
div byte ptr ds:[0]
含義:(al)=(ax)/((ds)*16+0))的商
(ah)=(ax)/((ds)*16+0)的餘數
div word ptr es:[0]
含義: (ax)=[(dx)*100000h+(ax)]/((es)*16+0)的商
(dx)=[(dx)*100000h+(ax)]/((es)*16+0)的餘數
div byte ptr [bx+si+8]
含義:(al)=(ax)/((ds)*16+(bx)+(si)+8)的商
(ah)=(ax)/((ds)*16+(bx)+(si)+8)的餘數
div word ptr [bx+si+8]
含義: (ax)=[(dx)*10000h+(ax)]/((ds)*16+(bx)+(si)+8)的商
(dx)=[(dx)*10000h+(ax)]/((ds)*16+(bx)+(si)+8)的餘數
9.db、dw、dd分別定義位元組行資料、字行資料和雙字資料。
10.dup是乙個操作符,它是和db、dw、dd等資料定義偽指令配合使用的,用來進行資料重複。
格式如下:
db 重複的次數 dup (重複的位元組型資料)
舉例如下:
db 3 dup (0,1)
定義了6個位元組,他們是0、1、0、1、0、1,相當於db 0,1,0,1,0,1
8 資料處理的兩個基本問題
1.兩個基本問題 1 處理的資料在什麼地方?2 處理的資料有多長?2.暫存器集合 reg ax,bx,cx,dx,al,ah,bl,bh,cl,ch,dl,dh,sp,bp,di,si 段暫存器集合 sreg cs,ds,ss,es 3.幾種錯誤的指令 1 mov ax,cx 2 mov ax,dx...
資料處理的兩個基本問題
計算機是進行資料處理,運算的機器,所以存在兩個問題 處理的資料的位置 處理的資料的長度 這兩個問題,必須在機器指令中給出說明 有時候是明確的,有時候是隱式的 否者計算器就無法工作。定義的描述性符號 總結 在8086中,只有這四個暫存器可以用在 中進行記憶體定址。在 中,他們可以單個出現,或者以組合形...
彙編 資料處理的兩個基本問題
只有這四個暫存器可以用來進行暫存器間接定址 暫存器 其中,bp隨機訪問,沒有規則 四個暫存器可以單個出現,亦可以以以下組合出現 bx與si di,bp與si di bp預設段位址在ss中 1 由暫存器名指明 2 由x ptr給出 mov word ptr ds 0 1 move byte ptr d...