第二章 寄存器
(1) 字數據在寄存器中的存放
一個字由兩個字節組成,可以存在一個16位寄存器中。
字的高8位 → 存放于通用寄存器的高8位寄存器
字的低8位 → 存放于通用寄存器的低8位寄存器。
例:十進制數據:? ? ? ?20000? → AX
? ? ? ?對應的二進制:? ? 100? 1110? 0010? 0000 B
? ? ? ?對應的十六進制: 4E20 H
?
(2) 8086CPU給出物理地址的方法
8086在內部用兩個16位地址 通過計算合成得到一個20位的物理地址。 計算合成由CPU內部的地址加法器實現。
段地址? × 16? + 偏移地址? =? 物理地址
?
(3) 段的概念
「段」是8086為解決用16位寄存器表示20位的物理地址而引入的一個邏輯上的概念。 可以根據需要,將地址連續、起始物理地址為16倍數的一組內存單元(不超過64KB)當作一個「段」使用。
?段的劃分是靈活的,一個物理地址可以用不同的「段地址: 偏移地址」表示。只要滿足段的起始物理地址是16的倍數。
?在寫法上,地址通常用十六進制表示。表示十六進制的H在「段地址: 偏移地址」中可省略不寫。
?
(4) 寄存器CS和IP的作用、指令執行過程
CS: 代碼段段寄存器,用于存放代碼段的「段地址」
IP: 指令指針寄存器,用于存放CPU將要讀取的指令在代碼段中的偏移地址。
CS:IP對應的物理地址存放的是CPU將要讀取的指令。
(CS) × 16 + (IP)? → 指令的物理地址
計算機工作過程:第1步: CPU基于CS:IP,計算出物理地址,然后到相應的內存單元讀取指令,送到指令緩沖區。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?第2步: CPU自動修改IP的值,IP = IP + 所讀取指令的長度,從而為下一條指令讀取做準備;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?第3步: 執行指令。 轉第1步,重復此過程。
?
(5) 指令move, add, jmp的基本用法
?在mov和add指令中,兩個操作對象的位數應一致。
jump:(1) 同時修改CS、IP的內容:jmp? ?段地址: 偏移地址
? ? ? ? ? ?(2) 只修改IP的內容:jmp? ?某一合法寄存器