匯編語言程序設計第二章小結
一、通用寄存器: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的值的時間。
匯編語言程序設計第二章小結