組合語言之暫存器使用bx si di bp

2022-01-19 09:54:06 字數 1888 閱讀 1293

**自:

如果你看到這篇部落格時正在做第七章問題,強烈建議先去把8.1~8.4看了,因為你在這章寫**踩的有關[...]的坑,在8.1~8.4都有說明, 下面都是8.1的內容

暫存器的分類

暫存器主 要 用 途通用

暫存器資料

暫存器ax

乘、除運算,字的輸入輸出,中間結果的快取

al位元組的乘、除運算,位元組的輸入輸出,十進位制算術運算

ah位元組的乘、除運算,存放中斷的功能號

bx儲存器指標

cx串操作、迴圈控制的計數器

cl移位操作的計數器

dx字的乘、除運算,間接的輸入輸出

變址暫存器

si儲存器指標、串指令中的源運算元指標

di儲存器指標、串指令中的目的運算元指標

變址暫存器

bp儲存器指標、訪問堆疊的指標

sp堆疊的棧頂指標

指令指標

ip/eip

標誌位暫存器

flag/eflag

32位cpu的

段暫存器

16位cpu的

段暫存器

es附加段暫存器

cs**段暫存器

ss堆疊段暫存器

ds資料段暫存器

新增加的

段暫存器

fs附加段暫存器

gs附加段暫存器

這張表用來參照。

(1)在8086cpu中只有這四個暫存器可以在[...]中進行記憶體單元的定址。

比如,下面的指令都是正確的:

mov ax,[bx]

mov ax,[bx+si]

mov ax,[bx+di]

mov ax,[bp]

mov ax,[bp+si]

mov ax,[bp+di]

而下面都是錯誤的:

mov ax,[cx]

mov ax,[ax]

mov ax,[dx]

mov ax,[ds]

(2).在[...]中,這四個暫存器可以單獨出現,或者只能以四種組合出現:bx和si、bx和di、bp和si、bp和di。

比如下面都是正確的

mov ax,[bx]

mov ax,[si]

mov ax,[di]

mov ax,[bp]

mov ax,[bx+si]

mov ax,[bx+di]

mov ax,[bp+si]

mpv ax,[bp+di]

mov ax,[bx+si+idata]

mov ax,[bx+si+idata]

mov ax,[bp+si+idata]

mov ax,[bp+di+idata]

下面就是錯誤的

mov ax,[bx+bp]

mov ax,[si+di]

(3)只要在[....]中使用暫存器bp,而指令彙總沒有顯示給出段位址,段位址就預設在ss中。 比如下面的指令。

mov ax,[bp] 含義:(ax)=((ss)*16+(bp))

mov ax,[bp+idata] 含義:(ax)=((ss)*16+(bp)+idata)

mov ax,[bp+si] 含義:(ax)=((ss)*16+(bp)+(si))

mov ax,[bp+si+idata] 含義:(ax)=((ss)*16+(bp)+(si)+idata)

組合語言之暫存器

8086cpu有14個暫存器,ax,bx,cx,dx,si,di,sp,bp,ip,cs,ss,ds,es,psw。我有可能不一次性介紹,等我接下來用到哪個就講哪個。8086cpu所有暫存器都是16位的。我們先來看一下通用暫存器 ax,bx,cx,dx。它的前8位ah和後8位al又可以分開使用,主要...

組合語言 使用暫存器

本書已經講到對於我們為什麼要使用變數 因為我們在程式設計時要儲存資料。我們也已經學了,在組合語言中,我們將資料儲存在暫存器和記憶體空間中。1 首先在c minic 目錄下的tc.exe編寫乙個ur1.c程式 編譯 鏈結成ur1.exe 2 用debug載入ur1.exe,用u命令檢視ur1.c編譯後...

組合語言 暫存器

乙個典型的cpu由運算器 控制器 暫存器等器件組成,這些器件靠內部匯流排相連。通用暫存器 ax bx cx dx 段位址暫存器 cs ds es ss 專用暫存器 bp sp si di 指令指標暫存器 ip 標誌暫存器 psw ah al ax accumulator 累加暫存器 bh bl bx...