1樓:匿名使用者
cpu在響應中斷前會
bai保護主程式當前指du令下面的一條指令的zhi位址dao
。就是將當前的ip和cs的內內容入堆疊。
cpu響應中容斷之後,將指令位址從堆疊中取出即可找到中斷服務子程式入口位址。
cpu響應中斷做如下動作:
①將中斷型別碼放入暫存器儲存;
②將標誌暫存器內容壓入堆疊,以保護中斷時的狀態;
③將if和tf標誌清0,目的是防止在中斷響應的同時又來別的中斷,而將tf清0是為了防止cpu以單步方式執行中斷處理子程式。
這時要特別提醒,因為cpu在中斷響應時自動關閉了if標誌,因此使用者如要進行中斷巢狀時,必須在自己的中斷處理子程式中用開中斷指令來重新設定if;
④保護斷點,斷點指的是在響應中斷時,主程式當前指令下面的一條指令的位址。
因此保護斷點的動作就是將當前的ip和cs的內容入棧,保護斷點是為了以後正確地返回主程式;
⑤根據取到的中斷型別碼,在中斷向量表中找出相應的中斷向量,將其裝入ip和cs,即呆自動轉向中斷服務子程式。
我想問個關於中斷向量表的問題
2樓:匿名使用者
1為啥要搞個dos中斷向量表,為什麼bai不是其他系統的
du?因為你的程zhi序是執行在
daodos環境下,早起回的8086cpu是執行dos的,所以你只有呼叫dos中斷才能實現功能。dos就是乙個作業系統,它是給你的程式服務的。
2硬中斷向量表是rom實體地址,比如記憶體的0x0000-0x0004是乙個中答斷位址,04-08,……等,產生中斷時ip指標會子總指向對應的中斷位址。我只是舉個例子,不同cpu設計時指定的中斷位址是不一樣的,具體可以查它的userguide。對電腦來說,該中斷由bios處理。
bios是寫在cmos裡的固化程式
軟中斷向量表是由軟體管理的,你呼叫中斷,作業系統根據向量號查詢響應的中斷服務程式並執行。windows系統的硬體中斷,使用者是不可以使用的,也就是你不可以在windows下直接操作物理埠,是一種保護機制,早期的dos是可以的。
電腦的中斷由bios管理,並向上面的作業系統傳遞中斷訊號,允許作業系統處理這些中斷,作業系統處理中斷,不再向使用者程式傳遞。
3樓:匿名使用者
8086中斷
bai向量表,就是實模式下的中斷du向量zhi
表,dos是工作在實模式下的dao
。其回他系統如果也工作在答實模式下,中斷向量表也是相同的。
386以後的機器,多了保護模式,在保護模式下中斷向量變成了中斷呼叫門,結構發生了變化。
中斷向量表是存放記憶體的最低端。確實掉電資料丟失。重新啟動的時候bios初始化過程中填充中斷向量表,寫入前存放在bios rom中。
dos的啟動過程也修改中斷向量表。
windows,linux工作在保護模式下,中斷向量變成了中斷呼叫門。
windows啟動前的一段時間,bios工作在實模式下,也需要中斷向量表。
4樓:做而論道
中斷向量表來,和 dos 等操作系源統無關,只是和 cpu 有關bai。
80x86 cpu 是 intel 公司設計的。
它支du持這樣一種指令:int xxh, zhi
這些指令,稱為中dao斷呼叫指令。
當 cpu 執行中斷呼叫指令的時候,cpu 會到記憶體 00000h ~ 003ffh 中去找對應的入口位址。
這些,都是 intel 公司設計好的。
我們(或微軟公司)編寫程式的時候,可以編寫 256 個子程式。
這些子程式,可以放在 1m 的記憶體中的其它位址,
但是要把它們的入口位址,寫入 00000h ~ 003ffh 中,便於 cpu 去找。
子程式,也可以用 call 指令呼叫,但是不如用 int xxh 快捷、規範。
早年,曾有人用 8086 製作控制板,完全不用 dos,但是,其中也有中斷向量表,因為這是 80x86 cpu 特有的方法。
5樓:匿名使用者
不編譯asm.2只編譯asm.1的時候,asm.1裡頭mov p0,a顯示數碼管的程式實現正常,但是2個一起編譯的時候,a好像就不能用了,p0無法正確輸出。
6樓:匿名使用者
中斷向量表是放在記憶體中的,當電源啟動的時候記憶體重新定義為ffff:ffff,中斷向量在0:200裡面。
組合語言的中斷服務的中斷服務程式是什麼?
7樓:天池血崩
嗯,我猜你問的是pc的,不是微控制器
一、組合語言的中斷分以下幾種:
1.bios中斷,這是固化到bios程式中的,每次開機bios會自動載入到指定記憶體
2.186下的dos中斷,在dos系統被載入後,系統會延用bios的中斷向量,並向裡面新增一些新的向量,這些功能便是dos系統自帶的中斷服務程式
3.286及以上的系統中斷,pc會進入保護模式,在os被載入後,中斷由idt控制,這一機制類似於中斷向量表,只不過中斷向量換成了選擇子。這樣的中斷機制對不同型號的cpu有略微的差別,這裡不細說了,我自己也沒全弄明白。
二、中斷實現的方式(8086下的普通中斷)
聽說過「優先順序編碼器」沒?——如果同時有兩個訊號被接收,會指定某乙個訊號的優先順序高,先執行它。中斷就是類似的處理方法。
當cpu獲取到某一高操作優先順序的訊號時(比如時鐘,每固定時間就會觸發一次;比如鍵盤響應,使用者希望通過ctrl+c來退出任何正在執行的dos程式),cpu會將當前正在執行的程式掛起來,轉而去處理該訊號(類似於call,但略有不同,你看的書應該會講到)。
處理中斷時,系統會將其解釋為乙個標號,比如int 9h、int 21h等等。這個標號是乙個序號,在記憶體某處存放著連續的乙個**,這個標號便是**中的「行號」,只不過,每一行是兩列,包括了該中斷的處理程式的段基址和偏移量。中斷向量表是從0000:
0000開始的,每4位元組為乙個表項。中斷標號x4就是對應的中斷向量表項所存的位址,高位址是基位址,低位址是偏移。
這麼說不知道你懂不懂。。。
反正總結一下你的問題吧,中斷服務程式是載入到記憶體中的,它在載入前可能是存在bios晶元上,也可能是存在硬碟裡的;中斷向量表裡只能寫上中斷處理程式的入口位址,要知道每個表項只有4位元組;具體的中斷服務程式,我不信你學彙編的書上不講,我大概講一下:cpu的intr引腳獲得了中斷訊號,得到了標號,比方說是5號,中斷向量表項為0000:000a,讀取這個記憶體,得到中斷程式入口位址比方說是aaaa:
bbbb,那麼它會將當前的cs/ip、flags暫存器入棧,然後轉到aaaa:bbbb處去執行一直到iret指令返回原任務(或許該中斷結束了這個任務,就不會返回了)。
至於保護模式的中斷,相信你暫時還沒遇到。到後面還有操控8259a晶元來實現高階中斷的,這個就不是一般需要學的了。
8086/8088cpu一共可處理多少級中斷?中斷向量和中斷向量表的含義是什麼
8樓:匿名使用者
8086/8088的內部中斷
主要有5種。
(1) 除法錯中斷內
請問在計算機作業系統中,中斷號,中斷向量和中斷向量表的概念各是什麼? 10
9樓:暴血長空
中斷向量和異常向量通常放在同乙個表中,在8086cpu中並沒有區分中斷和異常,也就是在8086cpu中兩者的概念是一樣的,在80386以後的cpu中兩者在概念上有所區別,但處理的方式差不多,異常是由內部事件引起的,比如,在進行除法運算時,除數為零,就會引發乙個除法錯誤異常.異常有幾種型別:故障,陷阱,中止
而中斷是外部事件引發的,常常由硬體用於通知cpu乙個操作的完成.中斷又分為可遮蔽中斷和不可遮蔽中斷.不可遮蔽中斷的向量號固定為2.
10樓:匿名使用者
四曲面陶瓷機身,驍龍835處理器,配備6gb/8gb ram+64gb/128gb/256gb rom,拍照方面後置1200w畫素的雙攝像頭,支援光學抖動,3400毫安大容量的電池,配合miui9系統,整體效能還是非常強悍的。整機採用unibody全陶瓷工藝一體式打造,機身中框和後殼得以無縫過渡,兼具顏值與觸感。此外,背部的鏡頭和指紋模組都用18k鍍金裝飾小公尺mix2作為全面屏概念的推動者,也作為博物館收藏手機的續作,小公尺mix2不僅在設計上可圈可點,更加克服了量產的
什麼叫中斷,中斷向量,中斷向量表
你說得這個和操作bai系統有關du系,具體的入口位址,如zhi 果在實模式下,dao直接按照中回斷字長,從答 首位址往下數到20個應該就是他的入口位址了。如果在保護模式下,就得看idt表中的指向是多少了,不管幾號,都可以由idt指定。8086系統中,中斷型別碼 中斷向量 中斷向量表的關係是什麼?中斷...
中斷向量表的中斷向量,中斷向量表的功能是什麼?簡述CPU利用中斷向量表轉入中斷服務的過程。
是指中斷服務程式入口位址的偏移量與段基值,乙個中斷向量佔據4位元組空間。中斷向量表是8088系統記憶體中最低端1k位元組空間,它的作用就是按照中斷型別號從小到大的順序儲存對應的中斷向量,總共儲存256個中斷向量。在中斷響應過程中,cpu通過從介面電路獲取的中斷型別號 中斷向量號 計算對應中斷向量在表...
8088中斷向量表的作用是什麼,中斷向量表的作用是什麼如何設定中斷向量表
中斷向量是中斷服務程式的入口位址.將所有中斷向量集中放在一起,形成中斷向量表.8086系統有256個型別的中斷源.每個型別對應乙個中斷向量,乙個中斷向量由四個位元組組成 2個高位址位元組 存放中斷服務程式的 段的段值 2個低位址位元組 存放中斷服務程式的偏移位址.中斷向量表放在記憶體的地段位址0單元...