8086最小模式原理總結

2021-06-02 04:32:42 字數 2103 閱讀 9179

一、8086晶元引腳定義

引腳功能簡單描述:

a16/s3-a19/s6:高四位位址線和狀態輸出復用

ale:位址鎖存使能

bhe:低為讀取乙個字,高為讀取乙個位元組

rd:匯流排讀操作控制線

wr:匯流排寫操作控制線

m/io:intel平台中,儲存器和io分開編址,此控制線來確定訪問的是儲存器還是io口

dt/dr:在讀寫操作時,控制資料的流向。

den:資料傳輸使能

nmi,intr:前者接不可遮蔽中斷源,後者接可遮蔽中斷源

inta:中斷響應

ready:指示外部裝置是否完成指定的操作

mn/max:最小最大模式選擇,本文只考慮最小模式

hold/holda:向cpu請求匯流排控制權和cpu響應控制線

clk:接時鐘訊號

reset:復位訊號輸入

gnd: 接地線

vcc:接5v電源

test:暫不考慮

二、最小系統簡略概述

2.1、簡略圖如下:

2.2、8086讀儲存器時序圖如下:

2.3、上圖讀時序解析

2.3.1、在t1階段將位址鎖存在8282中,為什麼要鎖存?因為在整個讀操作過程中,位址匯流排上都要保持cpu要訪問的位址資訊,而20條位址線在t1階段後要傳輸狀態和資料資訊,無法保持位址資訊,所以需要將位址資訊鎖存在8282中,bhe也被鎖存在了8282中,也可以認為bhe也是位址資訊的一部分。

2.3.2、t2到t4的過程中,位址中的資料被傳送到了8086中,若外部裝置較慢則需要加入幾個tw以等待外部裝置完成讀操作。

2.3.3、bhe和記憶體對齊的問題,bhe為低時表示讀取乙個字(16bit)為高時讀取乙個位元組,bhe和ad0的不同組合會導致cpu的不同行為。

2.3.3.1、當**從乙個偶位址(假設為100)讀取乙個字時,cpu可以通過讓bhe=0,然後直接讀取此位址的值就可以了。bhe=0,addr-100。

2.3.3.2、當**從乙個偶位址(假設為100)讀取乙個位元組時,同上例,bhe=1,addr=100。

2.3.3.3、當**從乙個奇位址(假設為101)讀取乙個位元組時,bhe=1,addr=101

2.3.3.4、當**從乙個奇位址(假設為101)讀取乙個字時,此時乙個匯流排訪問不能滿足要求,需要兩次操作,第一次 bhe=1,addr=101,第二次bhe=1,addr=102,然後再結合(可能不同cpu組合的方式不同,例如也可以讀取兩個字進行運算出最後結果)。這也就是變數儲存要進行記憶體對齊的原因。(具體記憶體對齊有另外文章詳解)

三、8086系統中的段

段的概念本身不複雜,可是由於歷史原因段被用在不同的場合,導致段的概念模糊容易混淆。

3.1、段的由來

在8086系統中,位址線是20根,所以能訪問的位址範圍是1mb,而8086cpu的字長是16bit(資料線是16bit,內部暫存器也是16bit),所以位址資訊無法直接cpu處理,所以就把乙個1mb的物理定址空間分成段,cpu用段位址和偏移量來訪問儲存器中的某一位址,段位址儲存在段暫存器中,偏移量可以有多種實現(可以是立即數,暫存器中具體間定址方式)

這種分段機制是由於字長和物理定址空間的不匹配產生的,只是cpu訪問儲存器的一種方式,這個段只存在與訪問過程中,對於儲存器來說是透明的,cpu內部有乙個加法器實現把段位址和偏移量來組成實際的20bit的實體地址。

3.2、**中的段

這也許是一種巧合,**也需要用段來分割,**由指令和資料組成,把指令和資料放到不同的段裡有很多好處,例如可以賦予不同的段不同的讀寫許可權(**段可以設定為唯讀),也可以把不同模組的**放在不同的段裡,方便維護和擴充套件(靜態鏈結,動態鏈結),例如資源也可以單獨放在乙個資料段裡供各個模組之間進行共享。

這種分段機制和3.1當中提到的cpu為了用16bit的字長去實現訪問1mb的儲存空間的分段機制不謀而合(但確實是兩種分段機制,不能混淆),我們可以把指令和資料分成若干段,然後用段暫存器去儲存這些段的首位址,就可以用各種偏移量的定址方式去訪問這些段了。

3.3、8086中提供的段暫存器有4個,cs,ds,es,ss,cs要儲存指令段的位址(因為cpu在reset以後會首先訪問cs段裡的資料,並把其當成指令執行),ss一般是棧段(也可以為資料段),ds,es為資料段,由此可見,cpu能同時處理的有四個段,如果**中有超過4個段,則需要在**中進行切換。

微機原理 8086的最小模式

一 8086cpu在最小模式下的基本配置 我們可以發現8086外接了兩片晶元,分別是8282位址鎖存器以及8286資料匯流排收發器。1 位址鎖存器 1.1 功能 8086的資料 位址 控制資訊都是由同一組引線a19 a16,ad15 ad0通過分時復用的方式輸出。在乙個匯流排週期開始的t1時鐘週期內...

微機原理 8086的定址方式

以mov指令為例,其格式為 mov 目的運算元,源運算元1.立即定址 可以是8位或16位,如 mov ax,1234h2.暫存器定址 運算元事先存放在暫存器中,如 mov ax,bx mov al,bl3.儲存器定址 我們將運算元的位址偏移量稱為有效位址 effective address,ea e...

8086彙編定址方式總結

1.運算元可以存在什麼地方?運算元存在於指令 中,處理器解碼時就立即獲得了這個運算元,這就是立即 數 定址方式。彙編指令中,這個立即數 運算元 以常量形式出現。運算元存在於處理器內部暫存器中,處理器從暫存器中獲得這個運算元,這就是暫存器定址方式。彙編指令中,這個暫存器運算元以暫存器名形式出現。運算元...