彙編學習記錄之七
資料來源:組合語言第二版-王爽
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中
有錯誤請指正,謝謝!