1. 程式人生 > >匯編總結二

匯編總結二

不能 程序 其中 mov指令 其它 總線 存在 jmp 分段

一、相關基礎知識總覽

1.CPU概述

一個典型的CPU由運算器、控制器、寄存器等器件組成。
內部總線實現CPU內部各個器件之間的聯系。
外部總線實現CPU和主板上其它器件的聯系。

2.相關術語

(1) x位CPU
(2) ISA (Instruction-set Architecture)
(3) x86

二、通用寄存器

8086CPU中,寄存器AX, BX, CX, DX通常用於存放一般性數據,稱為通用寄存器。每個寄存器均為16位。

AX分為AH和AL
BX分為BH和BL
CX分為CH和CL
DX分為DH和DL

技術分享圖片

三、字在寄存器中的存放

字節 內存劃分的基本單位
字 兩個字節
雙字 四個字節
四字 八個字節

一個字由兩個字節組成,可以存在一個16位寄存器中。字的高8位 → 存放於通用寄存器的高8位寄存器
字的低8位 → 存放於通用寄存器的低8位寄存器。

技術分享圖片

四、匯編指令: mov, add

1.引例

技術分享圖片

2.指令使用註意事項

技術分享圖片

技術分享圖片

五、8086給出物理地址的方法

1.內存單元的物理地址

CPU訪問內存單元時要給出內存單元的地址。
所有的內存單元構成的存儲空間是一個一維的線性空間。每一個內存單元在這個空間中都有唯一的地址,這個唯一的地址稱為物理地址。

2.相關說明

(1) 8086中,通過段地址: 偏移地址來間接描述內存單元的物理地址。CPU根據如下公式計算得到物理地址:技術分享圖片

其中:
① 「段地址: 偏移地址」 也稱「邏輯地址」
② 「段地址 × 16 」 構成段的起始物理地址,故根據需要劃分段使用時,段的起始物理地址必須是16的倍數。

(2) 段的劃分是靈活的,一個物理地址可以用不同的「段地址: 偏移地址」表示。只要滿足段的起始物理地址是16的倍數。
(3) 在寫法上,地址通常用十六進制表示。表示十六進制的H在「段地址: 偏移地址」中可省略不寫。

六、CS和IP

1.CS和IP是什麽?做什麽用?

CS: 代碼段段寄存器,用於存放代碼段的「段地址」
IP: 指令指針寄存器,用於存放CPU將要讀取的指令在代碼段中的偏移地址。

CS:IP對應的物理地址存放的是CPU將要讀取的指令。

技術分享圖片

2.相關註意事項

(1) CPU從何處執行指令是由CS和IP中的內容決定的。
(2) 程序員可以通過改變CS、IP中的內容來控制CPU執行目標指令。
(3) IP和CS值的修改不能通過mov指令實現,需借助轉移指令 (如jmp, call等)。

3.修改CS和IP的指令jmp

(1) 同時修改CS、IP的內容:

技術分享圖片

用指令中給出的段地址修改CS,偏移地址修改IP。

(2) 只修改IP的內容:

技術分享圖片

用指令中寄存器的值修改IP。

匯編總結二