8086學習(四)中斷

2021-10-06 07:13:06 字數 3045 閱讀 5241

為什麼要用io介面?

答:四個不匹配:速平格時,就這樣記了,沒法記的。針對這幾個不匹配,用不同的方法,例如設定緩衝以匹配速度,設定電平轉換電路,設定格式轉換電路,設定時序控制電路等

緩衝器與鎖存器各用在什麼地方?

很顯然了,緩衝器用於匯流排上,起到緩衝作用,提高匯流排驅動能力(電平匹配)

鎖存器具有暫存資料的能力,

快取器74l245的工作原理大致是就好像僅僅給匯流排設定了乙個開關,當然,他有提高電平(匯流排驅動能力的作用)

大致就是如此了。1g和2g各分一半,三態門被描述為三態緩衝單元。這是74l244,74l245支援雙態傳送:

問:什麼是io埠?

答:傳送資訊時,要傳送三大資訊:資料資訊,狀態資訊和控制資訊,會送入不同暫存器中,通常叫這些暫存器和它們的控制電路統稱為i/o埠。這就是io,主要就是暫存器。一般介面電路可設定資料埠,狀態埠,命令埠,這些都是埠。

兩種編址方法:儲存器影像定址方式,在8086cpu中一般採用i/o單獨編址方式。

匯流排的知識點比較少,cpu與外設的傳輸方式主要有三種:程式控制方式,中斷方式,dma方式。

這是鎖存器示意圖:

問:什麼是匯流排?

將各個部件之間傳送資訊的公共通路稱為匯流排。匯流排分三類:片級匯流排(由晶元腳引出的匯流排),系統匯流排(各個板卡之間的插槽,線),外部匯流排(通訊匯流排,例如usb線)。

簡要介紹一下各匯流排吧,

pc匯流排,最開始的匯流排,也是超多的介面不必說,isa匯流排,pc公升級相容線,isa匯流排傳輸率仍然也就是4**平,pci匯流排來了,5**準,拉線夠長。

問:給中斷乙個簡單定義吧,一直沒有什麼定義。

答:由於微處理器內部事件或外部請求,引起cpu暫停正在執行的程式,轉而執行請求中斷的外設(或內部

的中斷服務子程式,中斷服務程式執行完畢,再返回被中止的程式,這一過程稱為中斷。

可遮蔽中斷有intr引入,在未響應之前一直處於高電平。可由inta#遮蔽。

不可遮蔽中斷由nmi引入,上公升沿之後維持兩個時鐘週期的高電平有效。

cli,清除中斷標誌位,sti,設定中斷標誌位

int n,立即觸發中斷型別號代表的指令。

對於外部硬體可遮蔽中斷而言cpu在每條指令的最後乙個t週期去檢測intr引腳。

中斷入口位址也就是程式位址,中斷向量就是中斷序號,記憶體中專門開闢的乙個區域。

cpu相應中斷有三個條件:外設提出中斷申請,本中斷位未遮蔽,中斷允許。

可遮蔽中斷處理過程可分為以下:

中斷請求,中斷響應,保護現場,轉入執行中斷服務子程式,恢復現場中斷返回。

cpu在響應外部中斷,到轉入中斷服務子程式這一過程中先從資料匯流排上讀取中斷型別號,存入內部暫存器,將標誌暫存器psw入棧並清空if,遮蔽其他中斷,保護斷點,入棧ip和cs,找到中斷向量表,執行程式,這裡它沒有保護普通暫存器。需要自己存入普通暫存器,其實當引數用的話,根本不用存。中斷服務結束後,彈出psw,ip和cs,繼續主程式的執行。

這裡有乙個問題是,進入中斷後,cpu自動遮蔽中斷,如果實現中斷巢狀,就要自己開中斷sti。

8086中斷源分為中斷和異常,外部叫中斷(外中斷,硬中斷),內部叫異常(內中斷,軟中斷),中斷是由硬體引起的。

中斷分為可遮蔽中斷和不可遮蔽中斷

異常分為故障(除0),陷阱(int n),中止(嚴重故障,多程式設計出錯)

intr型別碼從20h到0ffh,內中斷是從0開始的一部分。

8086在主存最低段存有1k位元組的中斷向量表,保持256個中斷服務入口位址。

門描述符是用來描述控制轉移的入口點,任務內特權級的改變和任務間的切換都是通過門描述符實現的。

任務門用於任務之間切換,中斷門和陷阱門是用來描述中斷和異常的入口。門描述符用於高階cpu了,8086直接獲得位址。

idt中獲取對應的門描述符,看來是存在idt中。保護模式中斷的話,也是一樣的。。。

中斷表每個型別號佔4位元組,高2位元組存放中斷入口位址的段位址,低2位元組存放段內偏移位址。

建立中斷向量表

push es

mov ax, 0

mov es, ax 

mov di, 54h ;15*4

mov ax, offset pout15

cldstosw ;把ax儲存的東西存入di的位址中

mov ax, seg rout15 ; 哇真巧

stosw 

pop es

不可遮蔽中斷自動獲得中斷型別號2

除0獲得0,溢位獲得4

單步中斷獲得1,斷點中斷獲得3

可遮蔽中斷是資料匯流排往裡邊送。當然了,cpu先發出兩個inta#訊號。

收到第二個訊號後,才通過資料線開送。

每天乙個小知識點:

loop彙編指令由cx指定迴圈多少次。

in al,21h;表示從21h埠讀取一位元組資料到al

jz表示零標誌為1就跳轉

test命令將兩個運算元進行邏輯與運算,並根據運算結果設定相關的標誌位。但是,test命令的兩個運算元不會被改變。運算結果在設定過相關標記位後會被丟棄。

inc 指令功能 目標運算元+1 inc指令只有1個運算元,它將指定的運算元的內容加1,再將結果送回到該運算元。inc指令將影響sf,af,zf,pf,of標誌

cld相對應的指令是std,二者均是用來操作方向標誌位df(direction flag)。cld使df 復位,即是讓df=0,std使df置位,即df=1.這兩個指令用於串操作指令中。通過執行cld或std指令可以控制方向標誌df,決定記憶體位址是增大(df=0,向高位址增加)還是減小(df=1,向地位址減小)。

stosb、stosw和stosd指令:把al/ax/eax的內容儲存到edi指向的記憶體單元中

(四)中斷系統

好了,將按鍵寫完輸入輸出就都完了,我們來看看微控制器內部那些東西,首先說說中斷。中斷系統是為使cpu具有對外界緊急事件的實時處理能力而設定的。當 處理器cpu正在處理某件事的時候外界發生了緊急事件請求,要求cpu暫停當前的工作,轉而去處理這個緊急事件,處理完以後,再回到原來被中斷的地方,繼續原來的工...

Linux裝置樹 四 中斷

中斷一般包括中斷產生裝置和中斷處理裝置。中斷控制器負責處理中斷,每乙個中斷都有對應的中斷號及觸發條件。中斷產生裝置可能有多個中斷源,有時多個中斷源對應中斷控制器中的乙個中斷,這種情況中斷產生裝置的中斷源稱之為中斷控制器中對應中斷的子中斷。一般情況中斷產生裝置數量要多於中斷控制器,多個中斷產生裝置的中...

作業系統筆記(四)中斷

ctime 2020 04 30 13 33 34 0900 1588221214 標籤 空格分隔 技術 作業系統 8086 80386 的中斷向量表並不像arm的中斷向量表放在位址0處,而是位置可變。當建好中斷向量表之後,通過lidt指令,將中斷向量表的位址給idtr暫存器,這樣當cpu發生中斷時...