int指令(軟體中斷指令)

2021-08-14 02:34:37 字數 971 閱讀 4509

int(軟體中斷指令)是call指令的一種特殊形式。call指令呼叫呼叫的子程式是使用者程式的一部分,而int指令呼叫的作業系統提供的子程式或者其他特殊的子程式。

中斷服務子程式和標準過程的最大區別是 匯程式設計序可以有任意個過程,中斷服務子程式最多有256個過程、

int指令共有四中不同的格式:

《1》  int n

n是中斷號,這就允許使用者程式呼叫256個中斷服務子程式。

該指令2位元組長度,第一位元組是int機器碼,第二位元組是8位立即數,表示中斷號。

cpu在執行到int指令時,通過中斷描述符表找到中斷號對應的中斷服務子程式的位址,(本質上就是乙個異常處理程式的軟體呼叫)

《2》 int 3

int 3 是中斷指令的一種特殊形式,僅有乙個位元組長。

偵錯程式將該指令當作軟體中斷指令來用。除錯的時候,當程式中的某一位置加斷點的時候,偵錯程式會把斷點處指令編碼的第乙個位元組替換為int 3指令的編碼。

當程式執行到int 3,回向偵錯程式申請系統呼叫,偵錯程式因此獲得cpu控制權。之後,再用原先的編碼替換int 3 編碼。

《3》into    中斷號4

如果溢位標誌位為1,則into指令會產生乙個軟體中斷,利用這個指令可以快速測試算術運算指令之後是否有溢位產生。

《4》bound  中斷號5

bound reg,mem

其執行演算法為:if(reg<[mem])or(reg>[mem+sizeof(reg)]) then int 5

判斷陣列下表是否在合理範圍內,不合理觸發int 5 中斷,返回位址仍是bound

不管是哪種,都會發生

(1)標誌暫存器入棧

(2)cs:eip 暫存器入棧,

(3)通過中斷號在中斷描述符表中找到對應的描述符,並將對應的資料放入cs:eip中、

cs入棧和出棧都是乙個32位值,只有低16位有效。擴充的高16位無定義,目的是使堆疊保持與4位元組邊界對齊。這對80386的效能來說很重要。。。麼。。。。。

int指令理解

以下是王爽老師的 組合語言 中第十五章中的一段程式 其功能是增加9號中斷的功能,當按下esc鍵時螢幕中顯示的字母改變顏色 assume cs codesg,ss stack,ds data data segment dw 0,0 data ends stack segment db 128 dup ...

微機原理 指令判斷 判斷指令是否正確。

1 mov 1000h bx 指令錯誤,原因 立即數不能作為目標運算元。2 mov bx cl 指令錯誤,原因 字長不一致。3 inc bx 指令錯誤,原因 需指定運算元儲存器操作字。4 mov bx 6014h 指令錯誤,原因 不能同時為儲存器操作字。5 rol al,2 指令錯誤,原因 迴圈次數...

中斷隱指令

中斷隱指令指cpu響應中斷之後,經過某些操作,轉去執行中斷服務程式的一種操作。中斷隱指令並不是指令系統中的一條真正的指令,它沒有操作碼,所以中斷隱指令是一種不允許 也不可能為使用者使用的特殊指令。其所完成的操作主要有 1 儲存斷點 為了保證在中斷服務程式執行完畢能正確返回原來的程式,必須將原來程式的...