組合語言學習筆記(八)資料處理的兩個基本問題

2021-06-22 19:27:56 字數 1282 閱讀 9539

1.bx,si,di,bp

以後用:reg來表示暫存器,sreg來表示段暫存器

reg:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,cl,sp,bp,si,di

sreg:ds,ss,cs,es

8086中只有四個暫存器可以放在中間作為記憶體單元的定址

bp和bx、si和di是不能組合的,剩下都可以

bp:只要在中使用bp,而沒用顯示的給出段位址,段位址就預設在ss中

ds->bx(預設)

ss->bp(預設)不過可以強制顯示的給出

組合語言表達資料位置:

1.立即數idata        mov ax,1

2.暫存器        mov ax,bx

3.段位址和偏移位址    mov ax,[bx]/[bp]

2.指令處理的資料有多長

在機器指令中要指明,指令進行的是字操作還是位元組操作。

1.通過暫存器名指明要處理的資料尺寸:ax:16;al:8位

2.沒有暫存器名字存在的情況下,使用:word ptr或者byte ptr

3.其他方法:某些指令預設了訪問的是自己單元還是自己單元

push、pop:只對字進行操作

3.div指令:除法。

除數:8位或者16位,在暫存器或者記憶體單元

被除數:預設放在ax或者dx和ax中

除數為8位的時候,被除數為16位(ax)

除數為16位的時候,被除數為32位(dx+ax)

結果:運算8位,商在al,餘數在ah

運算16位,商在ax,餘數在dx

div byte ptr ds:[0]

含義:(a1)=(ax)/((ds)*16+0)的商

(ah)=(ax)/((ds)*16+0)的餘數

div word prt es:[0]

含義:*10000h是表示乘以乙個16位,四個0000表示乙個16位

(ax)=[(dx)*10000h+(ax)]//((ds)*16+0)的商

(dx)=[(dx)*10000h+(ax)]//((ds)*16+0)的餘數

4.偽指令:dd:dword

double word 雙字型資料

dbdw 只要沒超過2^16多就可以用乙個dw容納

dd5.dup操作符:在組合語言中通db、dw、dd等一樣,也是有編譯器識別處理的符合

dup重複

db 3 dup(0):定義了3個位元組,他們的值都是0,相當於db0,0,0

db 3 dup(0,1):定義了6個位元組,相當於db 0,1,0,1

組合語言學習筆記 八

1.兩個描述性的符號 reg和sreg reg來表示乙個暫存器 ax bx cx dx ah al bh bl ch cl dh dl sp bp si di sreg表示乙個段暫存器 ds ss cs es 2.只有這4個暫存器 bx bp si di 可以用在 中來進行記憶體單元的定址 只要在 ...

組合語言學習筆記(8) 資料處理的基本問題

1 僅僅有 bx si di bp 四個暫存器能夠用在 中來進行記憶體單元的定址 2 這四個暫存器能夠單個出現也能夠以 by zi 形式出現,當中y x或p,z s或d 其它格式均為錯誤的。3 當使用bp時。假設沒有顯性地給出段位址。則段位址預設在ss段暫存器中。4 組合語言中用三個概念來表達資料的...

組合語言學習筆記

學習參考資料 大灰狼 講彙編 資料匯流排,位址匯流排,控制匯流排。位址匯流排有多少條就決定了cpu最大的記憶體使用量。80386有32位位址匯流排,所以它的定址能力就是4g.暫存器 通用暫存器,段暫存器,ax暫存器 通用暫存器,存放資料。高位位元組ah,低位位元組al。實體地址表示方法 位址加法器,...