1. 程式人生 > >匯編語言程序設計第二章小結

匯編語言程序設計第二章小結

png 內存 指向 寬度 相關 col 2個 代碼段 空間

一、通用寄存器:AX、BX、CX和DX。(均為16位,可存放2個字節)。都可以分為兩個獨立的8位寄存器。(eg:AH和AL,其中AL為低8位,AH為高8位。)

技術分享圖片

二、字在寄存器中的存儲

1字節(byte)=8bit,1個字=2字節=高位字節+地位字節,分別對應存在高位寄存器和低位寄存器中。

三、匯編指令

註意:在寫一條匯編指令或一個寄存器名稱時不用區分大小寫。

引入:mov和add

溢出問題:AH和AL是兩個不相關到的寄存器,當操作AL中有進位時,AL不會向AH進位。

(eg: mov ax,00C5H

add al,93H

執行前al中的數據為C5H,相加後得到158H,但是al是8位寄存器,只能放兩位16進制的數據,所以最高位的1丟失。ax中的數據為:0058H。這裏的丟失指的是進位值不能在8位寄存器中保存,但是並不是CPU真的丟棄這個進位值。

進行數據的傳送或運輸時,兩個操作對象的位數需要相同。

(eg:錯誤指令:mov al,20000 8位寄存器最大可以存放的值為255的數據)

四、物理地址

所有的內存單元構成的存儲空間是一個一維的線性空間,每個內存空間在這個空間中都有的惟一的地址,成為物理地址。

五、16位結構的CPU

結構特性:

1、運算器一次最多可以處理16位的數據。

2、寄存器的最大寬度為16位。

3、寄存器和運算器之間的通路為16位。

六、8086CPU給出物理地址的方法
技術分享圖片

讀寫內存步驟:

1、CPU中的相關部件提供兩個16位的地址,一個稱為段地址,另一個稱為偏移地址。

2、段地址和偏移地址通過內部總線送入一個稱為地址加法器的部件。

3、地址加法器將兩個16位地址合成為一個20位的物理地址。

(物理地址=段地址*16+偏移地址)

4、地址加法器將通過內部總線將20位物理地址送入輸入輸出控制電路。

5、輸入輸出控制電路將20位物理地址送上地址總線。

6、20位物理地址被地址總線傳送到存儲器。

七、“段地址*16+偏移地址=物理地址”的本質含義

類比“基礎地址+偏移地址=物理地址”

八、段的概念

段地址*16必然是16的倍數,所以一個段的起始地址也一定是16的倍數;偏移地址為16位,16位地址的尋址能力為64KB,所以一個段的長度最大為64KB

同一個物理地址可以被CPU用不同的段地址和偏移地址形成。

給定段地址的情況下,僅用偏移地址來尋址,最多可以尋64KB個內存單元。


九、段寄存器

8086CPU有四個段寄存器:CS、DS、SS和ES。

十、CS和IP

CS為代碼段寄存器,IP為指令指針寄存器,任意時刻CPU將CS:IP指向的內容當作指令執行。

工作過程:

1、從CS:IP指向的內存單位讀取指令,讀取的指令進入指令緩沖器;

2、IP=IP+所讀取的指令的長度,從而指向下一條指令;

3、執行指令。轉到步驟1,重復改過程。

CS或IP值變化後,執行控制器執行上一條指令???

十一、修改CS、IP的指令

jmp指令:運用形式:jmp 段地址:偏移地址(CS:IP)

jmp 某一合法寄存器 jmp ax,=mov IP ,ax(僅僅修改IP的值)

十二、引入概念代碼段。(略)

本章主講了寄存器的功能,以及數據在其中的存放。引入了mov,add和jmp的作用和使用方法、物理地址,段地址和偏移地址的關系和8086CPU工作的本質過程。註意計算的細節,以及代碼段中jmp改變CS與IP的值的時間。

匯編語言程序設計第二章小結