1、計算機是進行資料處理、運算的機器,那麼有兩個最基本的問題:1.處理的資料在什麼地方?2.要處理的資料有多長?
2、定義描述性符號:reg(register 暫存器)和sreg(segment register 段暫存器)。reg的集合包括:ax、bx、cx、dx、ah、al、bh、bl、ch、cl、dh、dl、sp、bp、si、di。sreg集合包括:ds、ss、cs、es(擴充套件段)。
3、1.在8086cpu只有這4個暫存器(bx、bp、si、di)可以用[ ]來進行記憶體單元定址;2.在[ ]中,這四個暫存器(bx、bp、si、di)可以單個出現,或只能以四種組合出現:bx和si、bx和di、bp和si、bp和di;3.只要在[ ]中使用暫存器bp,而指令中沒有顯性的給出段位址,段位址就預設在ss中。
4、絕大部分機器指令都是進行資料處理的指令,處理大致可以分為三類:讀取、寫入、運算。在機器指令這一層來講,並不關心資料的值是多少,而關心指令執行前一刻,它將要處理的資料所在的位置,指令在執行前所要處理的資料可以再三個地方:cpu內部、記憶體、埠。
5、組合語言中用三個概念來表達資料的位置:1.立即數(idata),執行前在cpu的指令緩衝器中,在彙編指令中直接給出;2.暫存器;3.段位址(sa,segment address)和偏移位址(ea,excursion address)。
6、8086cpu定址方式小結:
7、指令要處理的資料有多長?8086cpu可以處理兩種尺寸的資料,byte和word。1.通過暫存器名指明要處理資料的尺寸;2.在沒有暫存器名存在的情況下,用操作符x ptr指明記憶體單元的長度,x在彙編指令中可以為word或byte,例mov word ptr [bx],1。這個是很有必要的;3.其他方法,有些指令預設了訪問的是字單元還是位元組單元,比如push:sp = sp – 2,只進行字操作。
8、定址方式的綜合運用:(陣列、結構化資料的使用,接近高階語言)
通用:用bx定位整個結構體,用idata定位結構體中的某乙個資料項,用si定位陣列中的每個元素。如:[bx].idata、[bx].idata.[si]。
9、div指令(division)除法,被除數預設放在ax或dx和ax中,當除數8位時,被除數16位(ax),當除數16位,被除數32位(dx+ax)。cpu只認識0和1,用乘法模擬除法。商8位放在al中,16位放在ax中,餘數8位放在ah中,16位放在dx中。
10、偽指令dd(double word,雙字)型資料,32位。
11、dup,乙個操作符,由編譯器識別處理的偽指令,和db、dw、dd等資料定義偽指令配合使用,用來進行資料的重複操作,使用1:db 重複的次數 dup(重複的位元組型資料)。例1,db 3 dup(0),定義了2個位元組,他們的值都是0。
例2,stack segment db 200 dup(0) stack ends
view code
1mov ax,seg
2mov ds,ax
3mov bx,60h ;
記錄首址bx
4mov word ptr [bx].0ch,38
;類似結構體操作56
add word ptr [bx].0eh,70
7
8mov si,0
9mov byte ptr [bx].10h[si],'v'
10inc si ;
si++
11mov byte ptr [bx].10h[si],'a'
12inc si
13mov byte ptr [bx].10h[si],'x'
14
組合語言第八章 資料處理的兩個基本問題
處理的資料在哪個地方?要處理的資料有多長?我們首先對暫存器進行乙個分類 前面三個我們已經學習過了。把這幾個放在一起,顯然是為了說記憶體定位。這四個均可以單獨定位記憶體,也可以兩兩組合,但是需要注意以下的寫法是錯的 mov ax,bx bp mov ax,si di 也就是說bx可以和si di組合,...
彙編實驗之第八章資料處理的兩個基本問題
一 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這四個暫存器可以用在 來進行記憶...
組合語言學習第八章 資料處理的兩個基本問題
計算機cpu進行資料處理包括兩個基本的問題 1.資料在何處?2.資料有多大?本章作為乙個前面內容的總結性章節,主要來說明這兩個問題。我們定義兩個符號reg和sreg。其中reg為暫存器,sreg為段暫存器 reg包括 ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp...