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

彙編總結二

一、相關基礎知識總覽

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。