1. 程式人生 > >彙編學習記錄之七

彙編學習記錄之七

資料來源:組合語言第二版-王爽

1.[bx]和loop指令

[bx]表示一個記憶體單元,它的偏移地址在bx中

我們要完整地描述一個記憶體單元,需要兩種資訊:(1)記憶體單元的地址;(2)記憶體單元的長度(型別)。

loop指令的格式是:loop 標號

CPU執行loop指令的時候,要進行兩步操作:(1)inc cx 即通用暫存器中的值-1;(2)判斷通用暫存器cx中的值,不為零則轉到標號處執行程式,如果為零則向下執行。

從上面的描述中,我們可以看到,通用暫存器cx中的值影響著loop指令的執行結果。通常我們使用loop指令來實現迴圈功能,通用暫存器cx中存放迴圈次數。

2.段字首

出現在訪問記憶體單元的指令中,用於顯式地指明記憶體單元的段地址的"ds:"、"cs:"、"ss:"或者"es:",在組合語言中稱為段字首。

3.and和or指令

(3.1)and指令:邏輯與指令,按位進行與運算。

(3.2)or指令,邏輯或指令,按位進行或運算。

4.si暫存器和di暫存器

si和di是8086CPU中和bx功能相近的暫存器,si和di不能夠分成兩個8位暫存器來使用,只能按照16位的暫存器進行使用。

5.不同定址方式的靈活應用

定址方式有以下幾種:

(1)[idata] 用一個常量來表示地址,可用於直接定位一個記憶體單元;

(2)[bx] 用一個變數來表示記憶體地址,可用於間接定位一個記憶體單元;

(3)[bx+idata] 用一個變數和常量表示地址,可在一個起始地址的基礎上用變數間接定位一個記憶體單元;

(4)[bx+si] 用兩個變數來表示記憶體地址;

(5)[bx+si+idata] 用兩個變數和一個常量來表示地址。

6.bx,si,di,bp

(6.1)在8086CPU中,只有bx,si,di,bp這四個暫存器可以用在"[···]"中來進行記憶體單元的定址。

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

(6.3)只要在[···]中使用暫存器bp,而指令中沒有顯性地給出段地址,段地址就預設在ss中

 

 

 

有錯誤請指正,謝謝!