1.通用寄存器
8086CPU所有一共有14個寄存器分別是:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW,所有的寄存器都是16位的,可以存放兩個字節(一個字)。
AX、BX、CX、DX通常用來存放一般性數據被稱為通用寄存器。
AX通用寄存器存儲二進制方式為:

為了保證兼容性,這四個寄存器都可以分為兩個獨立的8位寄存器使用。
1)AX可以分為AH和AL,分別是高8位和低8位
2)BX可以分為BH和BL
3)CX可以分為CH和CL
4)DX可以分為DH和DL

那如何向下兼容8位寄存器呢?就是將AH全部填0,只用AL部分。
AX的低8位(0~7位)構成了AL寄存器,高8位(8~15位)構成了AH寄存器。
AH和AL寄存器是可以獨立使用的8位寄存器。如何不能獨立使用那么就不能兼容。
2.幾條簡單的匯編指令
匯編指令不分大小寫
下面是幾條簡單的匯編指令:

這里需要注意的是,匯編的指令需要從后往前看,例如mov ax,18正確的順序是將18送入ax中。
兩道例題:
(1)
mov ax,8226H
mov bx,8226H
add ax,bx
結果ax中存放的數是044CH
因為即使8226H+8226H=1044CH但是ax為16位寄存器,只能存放044CH,多出的1這里不做講解。以后的博客中會說。
(2)
mov al,00C5H
add al,93H
那么結果al中存放的數據不是0158H而是0058H,因為這里用的是al寄存器,ax的低8位寄存器,所以高8位為0,至於多出的那個1這里先不做講解。以后的博客中會說。
8086CPU給出物理地址的方法:
將16位的段地址和16位的偏移地址通過地址加法器給出20位的物理地址。

3.地址加法器合成物理地址的方法
物理地址=段地址*16=偏移地址

段地址*16就是向左移一位,如果是二進制數則就是向左移四位
雖然“段地址”這個名詞中包含了“段”這個字,但是並不是說將內存分為一個個的段。
兩點需要注意:
(1)段地址*16必然是16的倍數,所以一個段的起始地址也一定是16的倍數;
(2)偏移地址為16位,16位地址的尋址能力為64KB,所以一個段的長度最大為64KB。

從這個圖中可以得出結論:CPU可以通過不同的段地址和偏移地址形成同一個物理地址。
4.段寄存器
段寄存器顧名思義就是提供段地址的寄存器,8086CPU有4個段寄存器,分別是CS、DS、SS、ES。
CS和IP是8086CPU中最關鍵的寄存器,它們指示了CPU當前要讀取指令的地址。
CS為代碼段寄存器,IP為指令指針寄存器(偏移地址寄存器)

當8086CPU啟動時或者復位時,CS=FFFFH,IP=0000H
傳送指令mov不能修改CS和IP寄存器里的值,但是8086CPU提供的一個轉移指令jmp指令來修改CS與IP寄存器的值。
5.DEBUG中常用指令
R命令查看、改變CPU寄存器的內容;
D命令查看內存中的內容;
E命令改寫內存中的內容;
U命令將內存中的機器指令翻譯成匯編指令;
T命令執行一條機器指令;
A命令以匯編指令的格式在內存中寫入一條機器指令;
