8086CPU全部一共有14個寄存器分別是:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW,全部的寄存器都是16位的,能夠存放兩個字節(一個字)。spa
AX、BX、CX、DX一般用來存放通常性數據被稱爲通用寄存器。翻譯
AX通用寄存器存儲二進制方式爲:3d
爲了保證兼容性,這四個寄存器均可以分爲兩個獨立的8位寄存器使用。指針
1)AX能夠分爲AH和AL,分別是高8位和低8位blog
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位寄存器。如何不能獨立使用那麼就不能兼容。
彙編指令不分大小寫
下面是幾條簡單的彙編指令:
這裏須要注意的是,彙編的指令須要從後往前看,例如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位的物理地址。
物理地址=段地址*16=偏移地址
段地址*16就是向左移一位,若是是二進制數則就是向左移四位
雖然「段地址」這個名詞中包含了「段」這個字,可是並非說將內存分爲一個個的段。
兩點須要注意:
(1)段地址*16必然是16的倍數,因此一個段的起始地址也必定是16的倍數;
(2)偏移地址爲16位,16位地址的尋址能力爲64KB,因此一個段的長度最大爲64KB。
從這個圖中能夠得出結論:CPU能夠經過不一樣的段地址和偏移地址造成同一個物理地址。
段寄存器顧名思義就是提供段地址的寄存器,8086CPU有4個段寄存器,分別是CS、DS、SS、ES。
CS和IP是8086CPU中最關鍵的寄存器,它們指示了CPU當前要讀取指令的地址。
CS爲代碼段寄存器,IP爲指令指針寄存器(偏移地址寄存器)
當8086CPU啓動時或者復位時,CS=FFFFH,IP=0000H
傳送指令mov不能修改CS和IP寄存器裏的值,可是8086CPU提供的一個轉移指令jmp指令來修改CS與IP寄存器的值。
R命令查看、改變CPU寄存器的內容;
D命令查看內存中的內容;
E命令改寫內存中的內容;
U命令將內存中的機器指令翻譯成彙編指令;
T命令執行一條機器指令;
A命令以彙編指令的格式在內存中寫入一條機器指令;