8086 CPU有14個寄存器(均爲16位):AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW
1、通用寄存器:
AX、BX、CX、DX
16位,可存儲的數據的最大值爲2^16-1
每個寄存器可分爲兩個獨立使用的8位寄存器,eg. AX可分爲AH、AL
2、字在寄存器中的存儲:
8086中一個字=2B(高位字節、低位字節)
3、幾條彙編指令(不區分大小寫):
ADD AL,93H ;若產生進位,不會修改AH
指令的兩個操作對象的位數應當一致
4、物理地址(CPU內部形成)
5、16位結構的CPU(8086內部能夠一次處理、傳輸、暫存的信息的最大長度爲16位)
6、8086給出物理地址的方法
8086CPU有20位地址總線,1MB的尋址能力,但是隻能送出16位地址,因此——>段地址、偏移地址
段地址、偏移地址——> 地址加法器——> 物理地址=段地址*16+偏移地址(相當於段地址左移4位)
7、“段地址*16+偏移地址=物理地址”的本質含義(“基礎地址+偏移地址=物理地址”的思想)
8、段的概念
段的起始地址一定是16的倍數;偏移地址爲16位,變化範圍0~FFFFH,因此一個段的長度最大爲64KB
CPU可以用不同的段地址和偏移地址形成同一個物理地址
9、段寄存器(CS、DS、SS、ES)
10、CS和IP
代碼段寄存器(CS)、指令指針寄存器(IP)
8086中任意時刻,CPU 總是將CS:IP指向的內容當作指令執行
8086CPU工作過程:
1)從CS:IP指向內存單元讀取指令,放入指令緩衝器
2)IP=IP+所讀取的指令的長度,從而指向下一條指令
3)執行指令。轉到1),重複。
11、修改CS、IP的指令
在CPU中程序員能夠用指令讀寫的部件只有寄存器
MOV指令——傳送指令,不能用於修改CS、IP的值
JMP指令——轉移指令(能夠修改CS:IP)
1)JMP 段地址:偏移地址
2)JMP 某一合法寄存器(僅修改IP)
12、代碼段
編程時,根據需要,將一組內存單元定義爲一個段
可以長度<=64KB的一組代碼存放在一組地址連續,起始地址爲16倍數的內存單元中
實驗 查看CPU、內存,用機器指令和彙編指令編程
Debug
R(查看、改變CPU寄存器的內容)
D(查看內存中的內容;d 段地址 :偏移地址,會顯示128B內容)
E(改寫內存中的內容)
U(查看內存中的機器碼的含義)
T(執行一條指令)
A(以彙編指令形式在內存中寫入機器指令)