日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊]

當(dāng)前位置:電子發(fā)燒友網(wǎng) > 圖書頻道 > 電子 > 《微計算機(jī)原理》 > 第3章 8086指令系統(tǒng)

第4節(jié) 中斷指令

 

  §3.3.7 中斷指令

  中斷指令的一般格式為:

  INT n 其中,n稱為"中斷類型碼",n=0~255。

  中斷指令"INT n"調(diào)用n號中斷處理程序,在中斷處理程序中,用中斷返回指令I(lǐng)RET指令使CPU返回主程序斷點(diǎn)繼續(xù)執(zhí)行。 中斷指令(INT n)和調(diào)用程序指令(CALL)很相似,它們均轉(zhuǎn)入內(nèi)存中其它程序段執(zhí)行,執(zhí)行完后再轉(zhuǎn)回。

  主程序用"CALL 目標(biāo)地址"調(diào)用子程序,如圖3-25所示。主程序用"INT n"調(diào)用中斷處理程序,如圖3-26所示。數(shù)值n是中斷處理程序的編號,它代表了中斷處理程序的地址。中斷處理程序的地址稱為"中斷矢量"或"中斷向量",它是一個4字節(jié)值,2字節(jié)段地址,2字節(jié)偏移量。在8086處理器中,用"中斷矢量表"或稱"中斷向量表"來管理256個中斷處理程序的地址。

  中斷向量表存放在內(nèi)存地址最低區(qū)域上(0段0000H~03FFH),共1024字節(jié)(256×4),其內(nèi)存放256個中斷處理程序的地址。

  例如,設(shè)在中斷向量表中,0000:0084H~0000:0087H四個單元存放的值依此為00H、20H、00H、30H,則21H號中斷處理程序的地址為3000H:2000H。 中斷指令I(lǐng)NT和中斷返回指令I(lǐng)RET的執(zhí)行過程是:

  INT n:

 ?、?SP減2,把標(biāo)志寄存器的值(記為FLAGS)推入堆棧。

  ② 標(biāo)志位TF和IF清0,以禁止跟蹤方式(單步方式)和屏蔽INTR中斷。

 ?、?SP減2,把返回地址的段值(CS)推入堆棧。

 ?、?SP減2,把返回地址的偏移量(IP)推入堆棧。

  ⑤ 根據(jù)中斷類型碼n,從中斷矢量表中取得中斷處理程序地址,取得的段地址送給CS,偏移量送給IP。從而使CPU轉(zhuǎn)入中斷處理程序運(yùn)行。

  IRET:

  中斷處理程序中最后被執(zhí)行的指令是IRET。其操作是:

 ?、?從堆棧中取出一字(INT指令保存的返回地址偏移量),送給 IP,然后使SP加2。

  ② 從堆棧中取出一字(INT指令保存的返回地址段值),送給 CS,然后使SP加2。

 ?、?從堆棧中取出一字(INT指令保存的標(biāo)志寄存器的值),送給 標(biāo)志寄存器,然后使SP加2。 IRET執(zhí)行后,CPU返回到INT指令后面的一條指令。

  幾個特殊的中斷處理程序:

  (1) 0號中斷處理程序

  0號中斷處理程序用于處理除法運(yùn)算溢出,稱為"除數(shù)為0中斷"。當(dāng)CPU檢測到除法運(yùn)算溢出,自動調(diào)用0號中斷處理程序,無"INT 0"指令。

  (2) 1號中斷處理程序

  當(dāng)CPU的TF標(biāo)志置1時,CPU每執(zhí)行一條指令,就調(diào)用1號中斷處理程序,因此,它稱為"單步中斷"。 當(dāng)CPU檢測到TF=1時,自動進(jìn)入單步方式,無"INT 1"指令。 該中斷處理程序用于調(diào)試程序。

  (3) 2號中斷處理程序

  用于處理NMI非屏蔽硬件中斷請求,無"INT 2"指令。

  (4) 3號中斷處理程序 用"INT 3"指令調(diào)用。稱為"斷點(diǎn)中斷"。用于調(diào)試程序。

  (5) 4號中斷處理程序 用"INTO"指令調(diào)用。該中斷處理程序用于處理有符號數(shù)運(yùn)算溢出(OF=1)。稱為"溢出中斷"。

  中斷處理程序的應(yīng)用:

  (1) BIOS和操作系統(tǒng)(如DOS、Windows)的常用功能程序,一般設(shè)計為中斷處理程序的形式,用"INT n"指令調(diào)用。例如,DOS功能設(shè)計為21H號中斷處理程序,用"INT 21H"指令調(diào)用。

  (2) 硬件中斷處理。當(dāng)外部設(shè)備希望CPU處理某事件時,它向中斷控制器8259發(fā)出一個INTR中斷請求,8259再向CPU發(fā)出中斷請求。

  當(dāng)CPU響應(yīng)中斷時(發(fā)出中斷響應(yīng)信號 ),8259向CPU提供中斷類型碼,CPU就轉(zhuǎn)入對應(yīng)的中斷處理程序,處理該事件。

  (3) 程序員編寫程序時,也可以把常用的功能程序,設(shè)計為中斷處理程序的形式,用"INT n"指令調(diào)用。

  §3.3.8 處理器控制指令

  1、 標(biāo)志位操作指令

  2、 暫停指令HLT CPU暫停,不執(zhí)行任何操作。當(dāng)出現(xiàn)下述情況時,CPU脫離暫停狀態(tài)。

  (1) 復(fù)位。

  (2) 在NMI信號線上有請求。

  (3) 當(dāng)IF=1時,INTR信號線上有請求。 該指令用于等待硬件中斷的發(fā)生。

  3、 處理器交權(quán)指令ESC和等待指令WAIT

  ESC指令用于調(diào)用數(shù)學(xué)協(xié)處理器8087。

  WAIT指令用于等待協(xié)處理器完成運(yùn)算。

  這兩條指令配合使用,它們由CPU硬件信號TEST來協(xié)調(diào)。8087在被初始化后,使TEST信號為"1"。 CPU執(zhí)行部件(EU)從指令隊(duì)列中取得指令的機(jī)器碼,如為ESC指令(數(shù)學(xué)協(xié)處理器指令),則交8087執(zhí)行。在8087執(zhí)行指令期間,使TEST信號為"1"。在8087執(zhí)行指令期間,CPU可執(zhí)行其他指令(8086與8087并行工作)。8087執(zhí)行完其操作后,使TEST信號為"0"。

  當(dāng)8086需要使用8087的操作結(jié)果時,首先執(zhí)行WAIT指令以檢查TEST信號是否為"0",若TEST=1(8087未執(zhí)行完),8086進(jìn)入空轉(zhuǎn)等待;若TEST=0(8087已執(zhí)行完),8086執(zhí)行WAIT后面的指令(這些指令需要8087的操作結(jié)果)。

  4、 總線鎖定指令LOCK

  該指令是總線鎖定前綴,放在其他指令之前。某指令被執(zhí)行時,如果不希望其他總線主設(shè)備占用總線而使該指令被暫停,則在該指令前加前綴指令LOCK,例如:

  LOCK XCHG AL,Varible

  CPU在執(zhí)行上面的指令時,輸出總線鎖定信號 ,此時,即使有總線主設(shè)備請求總線,CPU要等到該指令執(zhí)行完后,才允許總線主設(shè)備使用總線。

  5、 空操作指令NOP

  CPU執(zhí)行該指令時,沒有實(shí)際動作,僅使IP加1(NOP指令的機(jī)器碼是90H,1字節(jié))。該指令主要用于程序調(diào)試。

?
饶河县| 仁化县| 宜川县| 华阴市| 凯里市| 民丰县| 子长县| 罗甸县| 丹凤县| 高州市| 永胜县| 安吉县| 五指山市| 长海县| 通道| 隆安县| 舟山市| 兴义市| 荥阳市| 明星| 宁国市| 永定县| 改则县| 棋牌| 包头市| 鹤壁市| 岳西县| 沭阳县| 加查县| 囊谦县| 铜鼓县| 南木林县| 伊吾县| 江源县| 邯郸市| 天气| 吉木萨尔县| 天峻县| 沾化县| 景宁| 卢龙县|