8086CPU的所有寄存器都是16位的,可以存放兩個字節。AX、BX、CX、DX這4個寄存器通常用來存放一般性的數據,被稱爲通用寄存器。
以AX爲例,寄存器的邏輯結構如下圖:
16位寄存器的邏輯結構
一個16位寄存器可以存儲一個16位的數據,數據在寄存器中的情況如下圖所示:
16位數據在寄存器中存放的情況
想一想,一個16位的寄存器所能存儲的數據的最大值爲多少?
8086CPU的上一代CPU中的寄存器都是8位,爲了保證兼容性,使原來基於上代CPU編寫的程序稍加修改就可以運行在8086之上。8086CPU的AX、BX、CX、DX這4個寄存器都可分爲兩個獨立使用的8位寄存器來用:
(1)AX可分爲AH和AL;
(2)BX可分爲BH和BL;
(3)CX可分爲CH和CL;
(4)DX可分爲DH和DL。
數據:18
二進制表示10010
在寄存器AX中的存儲:
數據:20000
二進制表示100111000100000
在寄存器AX中的存儲:
以AX爲例,8086CPU的16位寄存器分爲兩個8位寄存器的情況如下圖:
16位寄存器分爲兩個8位寄存器
AX的低8位(0位~7位)構成了AL寄存器,高8位(8位~15位)構成了AH寄存器。AH和AL寄存器是可以獨立使用的8位寄存器。下圖展示了16位寄存器及它所分成的兩個8位寄存器的數據存放的情況:
16位寄存器及所分成的兩個8位寄存器的數據存儲情況
想一想,一個8位寄存器所能存儲的數據的最大值爲多少?
問:一個16位寄存器所能存儲的數據的最大值爲多少?
答:2^16=65536 準確來說是65535,因爲0~65536,總共是65536。
問:一個8位寄存器所能存儲的數據的最大值爲多少?
答:2^8=256 準確來說是255,因爲0~255,總共是256。
問:爲什麼一個16位的寄存器要分爲兩個8位寄存器?
答:因爲,爲了兼容上代CPU編寫的程序,稍加修改就可以運行。
問:爲什麼AX寄存器,要分爲低8位和高8位?
答:這個與設計者的命名有關。一個16位寄存器分爲兩個8位寄存器,第一個8位寄存器,你可以叫做X8位寄存器。第二個8位寄存器,你可以叫做Y8位寄存器。簡單地說,你可以任意命名。
問:爲什麼AX、BX、CX、DX只能存放一般性的數據?
答:在你的辦公抽屜裏。一般有重要的文件和不重要的文件,以及其他的文件。