第二章 寄存器小結
- 存儲器從功能和連接上分為:隨機存儲器:用於存放CPU的絕大部分程序和數據;裝有BIOS的ROM:用於存儲設備的基本輸入輸出系統;接口卡上的RAM:接口卡需要對大批量輸入、輸出數據進行暫存時使用,如顯存。CPU在操作它們的時候,把它們都當做內存來對待,把它們總的看做一個由若幹存儲單元組成的邏輯存儲器,這個邏輯存儲器就是我們所說的內存地址空間。
- 2.在8086機中,任意時刻,CPU將CS:IP指向的內容當做指令執行,在加電或復位後CS和IP被設置為CS=FFFFH,IP=0000H,即FFFF0H單元的指令是8086pc機開機後執行的第一條指令。
- 3.8086CPU中有一個DS寄存器,通常用來存放要訪問數據的段地址,8086不支持將數據直接送入段寄存器,只能有一個寄存器來進行中轉。
- 4.8086CPU提供入棧和出棧指令,入棧和出棧操作都是以字為單位進行的,棧地址為SS:SP
- 5.可執行文件由描述信息和程序組成,程序來自於源程序中的匯編指令和定義的數據;描述信息則主要是編譯、連接程序對源程序中偽指令進行處理做得到的信息。如CPU從何處開始執行程序,只要在源程序中用“end 標號”指明就可以了。
- 6.寄存器:reg包含:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,disreg包含:ds,ss,cs,es關於bx,si,di和bp:只有這四個寄存器可以用於[]中進行內存單元的尋址只要使用寄存器bp,且沒有顯性給出段地址,段地址默認在ss中
- 7.絕大多數機器指令都是進行數據處理的指令,處理大致分為:讀取、寫入、運算。所要處理的數據可以在三個地方:cpu 內部(寄存器)、內存、端口。匯編語言用三個概念來表達數據的位置:立即數、寄存器、段地址+偏移地址。
- 8.匯編指令舉例
匯編指令 |
控制CPU完成的操作 |
用高級語言的語法描述 |
mov ax,18 |
將18送入寄存器AX |
AX=18 |
mov ah,78 |
將78送入寄存器AH |
AH=78 |
add ax,8 |
將寄存器AX中的數值加上8 |
AX=AX+8 |
mov ax,bx |
將寄存器BX中的數據送入寄存器AX |
AX=BX |
add ax,bx |
將AX和BX的數值相加,結果存在AX中 |
AX=AX+BX |
9.16位結構的cpu
運算器一次最多可以處理16位的數據
寄存器的最大寬度為16位
寄存器和運算器之間的通路為16位
10.8086CPU給出物理地址的方法
11.段地址×16+偏移地址=物理地址的本質含義
CPU在訪問內存時,用一個基礎地址(段地址*16)和一個相對於基礎地址的偏移地址相加,給出內存單元的物理地址。
12.修改CS、IP的指令
在CPU中,程序員能夠用指令讀寫的部件只有寄存器,程序員可以通過改變寄存器中的內容實現對CPU的控制。CPU從何處執行指令是由CS、IP中的內容決定的,程序員可以通過改變CS、IP中的內容來控制CPU執行目標指令。
我們如何改變CS、IP的值呢?顯然,8086CPU必須提供相應的指令。我們如何修改AX中的值?可以用mov指令,如mov ax,123將ax中的值設為123,顯然,我們也可以用同樣的方法設置其他寄存器的值,如mov bx,123,mov cx,123,mov dx,123等。其實,8086CPU大部分寄存器的值,都可以用mov指令來改變,mov指令被稱為傳送指令。
但是,mov指令不能用於設置CS、IP的值,原因很簡單,因為8086CPU沒有提供這樣的功能。8086CPU為CS、IP提供了另外的指令來 改變它們的值。能夠改變CS、IP的內容的指令被統稱為轉移指令(我們以後會深入研究)。我們現在介紹一個最簡單的可以修改CS、IP的指令:jmp指 令。
若想同時修改CS、IP的內容,可用形如"jmp段地址:偏移地址"的指令完成,如
jmp 2AE3:3,執行後:CS=2AE3H,IP=0003H,CPU將從2AE33H處讀取指令。
jmp 3:0B16,執行後:CS=0003H,IP=0B16H,CPU將從00B46H處讀取指令。
"jmp 段地址:偏移地址"指令的功能為:用指令中給出的段地址修改CS,偏移地址修改IP。
若想僅修改IP的內容,可用形如"jmp 某一合法寄存器"的指令完成,如
jmp ax,指令執行前:ax=1000H,CS=2000H,IP=0003H |
段地址在8086CPU的段寄存器中存放。當8086CPU要訪問內存時,由段寄存器提供內存單元的段地址。8086CPU有4個段寄存器,其中CS用來存放指令的段地址。
CS存放指令的段地址,IP存放指令的偏移地址。
8086機中,任意時刻,CPU將CS:IP指向的內容當作指令執行。
8086CPU的工作過程:
從CS:IP指向的內存單元讀取指令,讀取的指令進入指令緩沖器;
IP指向下一條指令;
執行指令。(轉到步驟1,重復這個過程)
8086COU提供轉移指令修改CS、IP的內容。
第二章 寄存器小結