王爽《組合語言》第三版 第十二章 內中斷

2021-09-25 19:58:11 字數 3336 閱讀 9965

引言

中斷是cpu處理外部突發事件的乙個重要技術。

它能使cpu在執行過程中對外部事件發出的中斷請求及時地進行處理,處理完成後又立即返回斷點,繼續進行cpu原來的工作。

引起中斷的原因或者說發出中斷請求的**叫做中斷源。根據中斷源的不同,可以把中斷分為硬體中斷和軟體中斷兩大類,而硬體中斷又可以分為外部中斷和內部中斷兩類。

外部中斷一般是指由計算機外設發出的中斷請求,如:鍵盤中斷、印表機中斷、定時器中斷等。外部中斷是可以遮蔽的中斷,也就是說,利用中斷控制器可以遮蔽這些外部裝置 的中斷請求。

內部中斷是指因硬體出錯(如突然掉電、奇偶校驗錯等)或運算出錯(除數為零、運算 溢位、單步中斷等)所引起的中斷。內部中斷是不可遮蔽的中斷。 

軟體中斷其實並不是真正的中斷,它們只是可被呼叫執行的一般程式以及dos的系統功能呼叫(int 21h)等都是軟體中斷。 

cpu為了處理併發的中斷請求,規定了中斷的優先權,中斷優先權由高到低的順序是:(1)除法錯、溢位中斷、軟體中斷 (2)不可遮蔽中斷 (3)可遮蔽中斷 (4)單步中斷。

12.1 內中斷的產生

12.2 中斷處理程式

cpu的設計者必須在中斷資訊和其處理程式的入口位址之間建立某種聯絡,使得cpu根據中斷資訊可以找到要執行的處理程式。

中斷資訊中包含有標識中斷源的型別碼。根據cpu的設計,中斷型別碼的作用就是用來定位中斷處理程式。 

12.3 中斷向量表

cpu用8位的中斷型別碼通過中斷向量表找到相應的中斷處理程式的入口位址。

中斷向量表在記憶體中儲存,其中存放著 256個中斷源所對應的中斷處理程式的入口,如下圖所示:

中斷向量表在記憶體中存放,對於8086pc機,中斷向量表指定放在記憶體位址0處。從記憶體0000:0000到0000:03ff的1024個單元中存放著中斷向量表。

12.4 中斷過程

用中斷型別碼找到中斷向量,並用它設定cs和ip,這個工作是由cpu的硬體自動完成的。cpu 硬體完成這個工作的過程被稱為中斷過程。

8086cpu的中斷過程:

1.取得中斷型別碼;

2.標誌暫存器的值入棧(保護標誌位);

3.設定標誌暫存器的第8位tf和第9位if的值為0;

4.cs的內容入棧;

5.ip的內容入棧;

6.從記憶體位址為中斷型別碼*4和中斷型別碼*4+2的兩個字單元中讀取中斷處理程式的入口位址設定ip和cs。

12.5 中斷處理程式

常規的步驟:

1.儲存用到的暫存器。

2.處理中斷。

3.恢復用到的暫存器。

4.用iret指令返回。

iret指令的功能用彙編語法描述為:

pop ip

pop cs

popf

12.6 除法錯誤中斷的處理

12.7 程式設計處理0號中斷

12.8 安裝

12.9 do0

12.10 設定中斷向量

1 assume cs:

code23

code segment

4start:

5mov

ax, cs

6mov

ds, ax

7mov si, offset do0 ;

設定ds:si指向源位址

8mov ax, 0

9mov

es, ax

10mov di, 200h ;

設定es:di指向目的位址

11mov cx, offset do0end - offset do0 ;

設定cx為傳輸長度

12cld

;設定傳輸方向為正

13rep

movsb

1415

mov ax, 0

;設定中斷向量表

16mov

es, ax

17mov word ptr es:[0*4

], 200h

18mov word ptr es:[0*4+2], 0

1920

movax,4c00h

21int

21h22

23do0:

jmpshort do0start

24 db "

welcome to fishc.com!"25

26do0start:

27mov

ax, cs

28mov

ds, ax

29mov si, 202h ;

設定ds:si指向字串

3031

movax, 0b800h

32mov

es, ax

33mov di, 12*160+36*2

;設定es:di指向視訊記憶體空間的中間位置

3435

mov cx, 21

;設定cx為字串長度

36s:

moval, [si]

37mov

es:[di], al

38inc

si39

add di, 1

40mov al, 02h ;

設定顏色

41mov

es:[di], al

42add di, 1

43loop s

4445

movax, 4c00h

46int

21h47

do0end:

nop48

49code ends

50 end start

12.11 單步中斷cpu在執行完一條指令之後,如果檢測到標誌暫存器的tf位為1,則產生單步中斷,引發中斷過程。

單步中斷的中斷型別碼為1。

12.12 響應中斷的特殊情況

一般情況下,cpu在執行完當前指令後,如果檢測到中斷資訊,就響應中斷,引發中斷過程。可是,在有些情況下,cpu 在執行完當前指令後,即便是發生中斷,也不會響應。

cpu在執行完設定ss的指令後,不響應中斷。

王爽《組合語言》第三版 第十二章 內中斷

引言 中斷是cpu處理外部突發事件的乙個重要技術。它能使cpu在執行過程中對外部事件發出的中斷請求及時地進行處理,處理完成後又立即返回斷點,繼續進行cpu原來的工作。引起中斷的原因或者說發出中斷請求的 叫做中斷源。根據中斷源的不同,可以把中斷分為硬體中斷和軟體中斷兩大類,而硬體中斷又可以分為外部中斷...

《組合語言》王爽第三版 實驗9

datas segment 此處輸入資料段 db w 00000010b,e 00000010b,l 00000010b,c 00000010b,o 00000010b db m 00000010b,e 00000010b,0,t 00100100b,o 00100100b,0 db m 01110...

王爽 組合語言第三版實驗7

這個題目做了很久,使用了2中方法做出了結果,不過目前在單步除錯時還有點疑問。題目 power idea公司從1975成立一直到1995年的基本情況被定義到了datasg中,程式設計將datasg段中的資料寫入到table段中,並計算21年中的人均收入 取整 結果儲存到table段中 兩種方法我都使用...