標籤:指標 連續 圖片 定址 指令 計算 進位 16px 程式碼片段
8086的定址方式
CPU訪問記憶體單元時,要給出記憶體單元的地址,所有的記憶體單元都有唯一的地址,叫做物理地址
8086有20位地址匯流排,可以傳送20位的地址,1M的定址能力
但它又是16位結構的CPU,它內部能夠一次性處理、傳輸、暫時儲存的地址為16位。如果將地址從內部簡單地發出,那麼它只能送出16位的地址,表現出來的定址能力只有64KB
8086採用一種在內部用2個16位地址合成的方法來產生1個20位的物理地址
image.png
image.png
image.png
image.png
記憶體分段管理
image.png
地址10000H~100FFH的記憶體單元組成一個段,該段的起始地址(基礎地址)為10000H,段地址為1000H,大小為100H
地址10000H1007FH、10080H100FFH的記憶體單元組成2個段,它們的起始地址(基礎地址)為:10000H和10080H,段地址為1000H和1008H,大小都為80H
在編程時可以根據需要,將若干連續地址的記憶體單元看做一個段,用段地址×16定為段的起始地址(基礎地址),用位移地址定位段中的記憶體單元
段地址×16必然是16的倍數,所以一個段的起始地址(基礎地址)也一定是16的倍數
位移地址為16位,16位地址的定址能力為64KB,所以一個段的長度最大為64KB
image.png
段寄存器
8086在訪問記憶體時要由相關組件提供記憶體單元的段地址和位移地址,送入地址加法器合成物理地址
是什麼組件提供段地址?段地址在8086的段寄存器中存放
8086有4個段寄存器:CS、DS、SS、ES,當CPU需要訪問記憶體時由這4個段寄存器提供記憶體單元的段地址
CS (Code Segment):程式碼片段寄存器
DS (Data Segment):資料區段寄存器
SS (Stack Segment):堆棧段寄存器
ES (Extra Segment):附加段寄存器
CS和IP
image.png
image.png
指令的執行過程
12
13
14
15
16
17
18
19
21
22
23
24
25
26
總結
指令和資料
image.png
jmp指令
CPU從何處執行指令是由CS、IP中的內容決定的,我們可以通過改變CS、IP的內容來控制CPU執行目標指令
8086提供了一個mov指令(傳送指令),可以用來修改大部分寄存器的值,比如
mov ax,10、mov bx,20、mov cx,30、mov dx,40
但是,mov指令不能用於設定CS、IP的值,8086沒有提供這樣的功能
8086提供了另外的指令來修改CS、IP的值,這些指令統稱為轉移指令,最簡單的是jmp指令
image.png
image.png
jmp指令 -- 練習
![image.png](http://upload-images.jianshu.io/upload_images/2990730-fde7c6e8497e3ffd.png?imageMogr 2/auto-orient/strip%7CimageView2/2/w/1240)
image.png
image.png
程式碼片段
image.png
image.png
image.png
image.png
本文hank
電腦原始語言——彙編