總結:這週講了指令的基本概念,指令格式,組合語言格式以及8086定址方式中的資料定址方式的各種方法。資料定址方式就是形成運算元位址的方法,包括立即定址(運算元直接給出),暫存器定址(運算元在cpu內部的通用暫存器中)和儲存器定址(運算元存放在記憶體儲器中)。到目前為止組合語言的帷幕算是正式拉開。
第四章 定址方式與指令系統
4.1.1 指令的基本概念
程式:能夠完成乙個完整任務的一系列有序的指令的集合。
指令:計算機進行某種操作的命令,使用者使用與控制計算機執行的最小功能單位。
指令系統:一台計算機所能執行的全部指令的集合。
系列計算機:基本指令系統相同,基本體系結構相同的一系列計算機。
機器指令/指令字:二進位制編碼的指令。
彙編指令:用助記符來代替二進位制指令。
匯程式設計序:將彙編指令翻譯成計算機能夠識別的機器指令。
4.1.2 指令格式
機器指令通常由操作碼欄位和運算元字段組成:
操作碼運算元
... ...
運算元操作碼:規定指令所執行的操作。
運算元/位址碼:可能直接給出參與運算的運算元,也可能是描述運算元位址的資訊。
指令字長度:乙個指令字中包含二進位制**的位數。
機器字長:計算機能直接處理的二進位制資料的位數。
單字長指令:指令字長度等於機器字長的指令。
半字長指令:指令字長度等於半個機器字長度的指令。
等長指令字結構:各種指令字長度是相等的。
變字長指令字結構:指令字長度隨指令功能而異。
4.1.3 8086組合語言格式
8086指令的一般格式為:
標號:操作碼 運算元;注釋
1.雙運算元指令
大多數指令需要兩個運算元,分別稱為源運算元和目標運算元。
操作碼 dst,src例如:add ax,bx; ==> ax+bx->ax
注意:對於雙運算元指令,必須有乙個運算元存在暫存器中,不能兩個數同為儲存器運算元。(除了串操作指令)
2.單運算元指令
指令中只給出乙個運算元。
操作碼 dst例如:inc ax; ==> ax+1->ax
mul
3.無運算元指令
指令中不給出運算元的位址。
操作碼例如:hlt; ==>停機指令
xlta
4.2 8086定址方式
4.2.1 資料定址方式
1.立即定址
立即數:上述運算元。
mov ax, 251;將十進位制數251送入暫存器ax,251是立即數
mov al, '5
' ;將『5』的ascii碼送入暫存器al,『5』是立即數
注意:立即定址不能用於單運算元指令;在雙運算元指令中,立即數只能用於源運算元(後面的),不能用於目標運算元(前面的)。
2.暫存器定址
暫存器定址:運算元在cpu內部的通用暫存器中,指令中指定暫存器名。
源運算元和目的運算元可使用以下暫存器:
16位通用暫存器:ax、bx、cx、dx、si、di、bx、bp
8位通用暫存器:ah、al、bh、bl、ch、cl、dh、dl
段暫存器:cs、ds、ss、es
flags標誌暫存器
注意:不能同時為段暫存器
目的運算元不能是**段暫存器
mov ax,cx ;將16位暫存器cx中的內容送入暫存器ax
3.儲存器定址
注意:既可用於源運算元,也可用於目的運算元,但兩者不能同時使用。
運算元存放在儲存器中時採用儲存器定址,段暫存器提供了段位址。
1)直接定址
運算元的有效位址由指令位址碼字段直接給出。
以下指令等效:
mov al,table ;用table表示1000hmov al,[table]
mov al, [1000h]
直接定址預設段暫存器為ds。
若要訪問其他段中的資料,必須在指令中用段跨越字首指出段暫存器名。
以下指令等效:
mov al,es:tablemov al,es:[table]
mov al,es:1000h
mov al,es:[1000h]
2)暫存器間接定址
注意:如果指令中指定的暫存器是bx、xi、di,則運算元預設在資料段中,取ds暫存器的值作為運算元的段基位址;如果指定暫存器是bp,則運算元預設在堆疊段中,取ss暫存器的值作為運算元的段基位址。
mov ax,[bx] ;實體地址=ds*10h+bxmov al,[bp] ;實體地址=ss*10h+bp
mov ax,es:[di] ;實體地址=es*10h+di
3)暫存器相對定址
mov ax,20h[si] ;實體地址=ds*10h+si+20hmov cl,[bp+2000h] ;實體地址=ss*10h+bp+2000h
mov ax,str[bx]
4)基址加變址定址
mov ax,[bx][si] ;實體地址=ds*10h +bx+simov ax,[bx+si] ;實體地址=ds*10h +bx+si
5)相對基址加變址定址
以下指令等價:
mov al,table[bx][si]mov al,table[bx+si]
mov al,[table+bx+si]
4.i/o埠定址
1)i/o埠直接定址
埠位址以8位立即數方式在指令中直接給出,它所定址的埠號範圍為0~255.
in al,n ;將8位立即數作為埠號定址,將該埠位址的位元組運算元輸入到al暫存器
2)間接埠定址
將16位的i/o埠位址放在dx暫存器中,即通過dx間接定址,故可定址埠號範圍為0~65535。
out dx,al ;將al的位元組內容輸出到由dx指定的埠中。
Flask原理學習筆記
知識點 配置檔案 路由系統 檢視模板渲染 ses def ses session 1 session yyy 2del session yyy return session 請求結束時,flask會讀取記憶體中字典的值,進行序列化並加密,寫入到cookie中 flash session衍生出來的,一...
編譯原理學習筆記 語法
高階程式語言可分為 1.強制性語言 2.作用時語言 3.基於規則的語言 4.物件導向的語言 程式語言主要由語法,語義,語用 語用 有關程式設計和語言成分的使用方法,它使語言的基本概念與外界的語言 如數學概念或計算機的物件和操作 聯絡起來。語法 語法是指這樣的一組規則,用它可以形成和產生乙個合式的程式...
zigbee 原理學習筆記(1)
pan personal area network 個人區域網路 wpan personal area network 無線個人區域網路 wapan網路為近距離返回內的裝置建立無線連線,把幾公尺範圍內的多個裝置 通過無線方式連線在一起使他們可以互相通訊甚至介入區域網或者網際網路。ieee 802.1...