新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 8086指令系統(tǒng)---控制轉(zhuǎn)移指令(二)

8086指令系統(tǒng)---控制轉(zhuǎn)移指令(二)

作者: 時間:2016-11-27 來源:網(wǎng)絡(luò) 收藏


  執(zhí)行RET 4指令時,先使返回地址出棧:(IP)←000B,(SP)←0FFC+2=0FFD,然后,(SP)+4=0FFD+4=1000,結(jié)果使SP跳過了堆棧數(shù)據(jù)而回到了原始位置。

本文引用地址:http://m.butianyuan.cn/article/201611/322187.htm

  5 中斷及中斷返回指令

 INT n中斷指令(interrupt),n為中斷類型號

 IRET 中斷返回指令(return from interrupt)

 INTO 溢出則中斷(中斷類型為4)

  INTn 中斷指令(interrupt),n為中斷類型號
  執(zhí)行操作:① 入棧保存FLAGS:(SP) ← (SP)-2,((SP)) ← (FLAGS)
      ?、?入棧保存返回地址:(SP) ← (SP)-2,((SP)) ← (CS)
                  (SP) ← (SP)-2,((SP)) ← (IP)
      ?、?轉(zhuǎn)中斷處理程序:(IP) ← (n×4)
                 (CS) ← (n×4+2)

 IRET中斷返回指令(return from interrupt)
  執(zhí)行操作:① 返回地址出棧:(IP) ← ((SP)),(SP) ← (SP)+2
                (CS) ← ((SP)),(SP) ← (SP)+2
      ?、?FLAGS出棧:(FLAGS) ← ((SP)),(SP) ← (SP)+2

  INTO溢出則中斷(中斷類型為4)
  執(zhí)行操作:若OF=1(有溢出),則:
      ?、?入棧保存FLAGS:(SP) ← (SP)-2,((SP)) ← (FLAGS)
      ?、?入棧保存返回地址:(SP) ← (SP)-2,((SP)) ← (CS)
                  (SP) ← (SP)-2,((SP)) ← (IP)
      ?、?轉(zhuǎn)中斷處理程序:(IP) ← (4×4)= (10H)
                 (CS) ← (4×4+2)= (12H)

  中斷指令用于調(diào)用中斷例行程序(又稱中斷服務(wù)程序),這是一種遠調(diào)用。完成各種功能的中斷例行程序都有一個編號,稱為中斷類型號。各種中斷例行程序的入口地址按中斷類型號的順序存儲在一個表中,這個表稱為中斷向量表。每個中斷例行程序的入口地址占用4個字節(jié),因此,它在中斷向量表中的地址可用中斷類型號乘4來求得。執(zhí)行中斷指令時,首先要入棧保存調(diào)用程序執(zhí)行的現(xiàn)場,即當時的標志寄存器的值和斷點的地址,然后,根據(jù)中斷類型號(n×4)到中斷向量表中取得中斷例行程序的入口地址,分別送給IP和CS,以實現(xiàn)調(diào)用中斷例行程序的功能。

  中斷返回指令I(lǐng)RET的操作和INT指令相反,即從堆棧中取出返回地址和標志位,然后返回到被中斷的程序。
INTO指令隱含的中斷類型號為4,因此保存斷點地址和標志位后,從中斷向量表的10H和12H兩個字中取出中斷例行程序的入口地址,從而轉(zhuǎn)去運行中斷例行程序。

  INT指令(包括INTO)執(zhí)行后,把IF和TF置0,但不影響其它標志位。

 6 處理機控制指令

  處理機控制指令包括一組置0或置1標志位的指令,還有一些控制處理機狀態(tài)的指令。

 6.1 標志位處理指令

  這一組指令分別對標志位CF、DF、IF執(zhí)行置0、置1或求反的操作,如,CLD指令執(zhí)行的操作是:DF←0;STD執(zhí)行的操作是:DF←1。

  標志位處理指令只影響本指令指定的標志,而不影響其它標志位。

   ?、?標志位處理指令    ?、?處理機控制指令
      CLC CF置0          NOP 無操作
      STC CF置1          HLT 停機
      CMC CF求反          WAIT 等待
      CLD DF置0          ESC 轉(zhuǎn)義
      STD DF置1          LOCK 封鎖
      CLI IF置0
      STI IF置1

 6.2 處理機控制指令

  NOP 無操作指令(no operation)

  HLT 停機指令(halt)

  WAIT 等待指令(wait)

  ESC mem 轉(zhuǎn)義指令(escape)

  LOCK前綴封鎖(lock)

  NOP 無操作指令(no operation)
  執(zhí)行操作:不執(zhí)行任何操作,其機器碼占用1個字節(jié)單元,執(zhí)行時間為3個時鐘周期,因此,該指令的作用表現(xiàn)在時間和空間上。時間上它可使上下兩條指令的執(zhí)行有一點間隔,這使某些指令的執(zhí)行,特別是控制硬件接口的指令因為有一點延時而增加可靠性??臻g上它的位置可在調(diào)試指令時用其它指令來代替。

  HLT 停機指令(halt)
  執(zhí)行操作:使處理機停止軟件的執(zhí)行并等待一次外部中斷的到來,中斷結(jié)束后處理機繼續(xù)執(zhí)行下面的程序。使用該指令的目的通常是為了保持外部硬件中斷與軟件系統(tǒng)的同步。

  WAIT 等待指令(wait)
  執(zhí)行操作:測試微處理器的BUSY/TEST管腳,如果執(zhí)行WAIT指令時,BUSY/TEST=1(指示不忙),則繼續(xù)執(zhí)行下一條指令。如果執(zhí)行WAIT指令時,BUSY/TEST=0(指示忙),則微處理器等待直到BUSY/TEST管腳變?yōu)?。
  
  ESC mem 轉(zhuǎn)義指令(escape)
  執(zhí)行操作:mem指定存儲單元,執(zhí)行ESC指令時,從存儲器取得指令或操作數(shù)通過總線送給8087~80387數(shù)值協(xié)處理器。協(xié)處理器能處理算術(shù)運算、函數(shù)運算、對數(shù)運算等數(shù)值運算,其運算速度比使用常規(guī)指令寫的軟件快的多。

  LOCK前綴 封鎖(lock)
  執(zhí)行操作:指令前加LOCK,使得在鎖定指令期間保持鎖存信號LOCK=0,以禁止外部總線上的主控制器或系統(tǒng)其它部件。例如,LOCK MOV AL,[SI]執(zhí)行時,總線封鎖直至MOV指令執(zhí)行完畢。

  【小結(jié)】

   1、8086尋址方式

  尋址方式
    操作數(shù)地址(PA)
   指令格式舉例
  立即尋址
操作數(shù)在指令中給出
MOV DX,100H ; (DX)←100H
  寄存器尋址
操作數(shù)在寄存器中
ADD AX,BX ; (AX)←(AX)+(BX)
  直接尋址
操作數(shù)的有效地址由指令直接給出
MOV AX,[100] ; (AX)←(100)
MOV AX,VAR ; (AX)←(VAR)
  寄存器
  間接尋址
PA=(DS)×16+(BX)或(SI)或(DI)
PA=(SS) ×16+(BP)
MOV AX,[BX] ;
(AX)←((DS)×16+(BX))
  寄存器
  相對尋址
PA=(DS)×16+(BX)或(SI)或(DI)+位移量
PA=(SS) ×16+(BP)+位移量
MOV AL,MESS[SI];
(AL)←((DS)×16+(SI)+OFFSET MESS)
  基址變址
  尋址
PA=(DS)×16+(BX)+(SI)或(DI)
PA=(SS) ×16+(BP) +(SI)或(DI)
MOV AX,[BX+DI];
(AX)←((DS)×16+(BX)+(DI))
  相對基址
  變址尋址
PA=(DS)×16+(BX)+(SI)或(DI)+位移量
PA=(SS) ×16+(BP) +(SI)或(DI)+位移量
MOV AX,BUFF(BX+DI);
(AX)←((DS)×16+(BX)+(DI)+OFFSET BUFF)

  2、8086指令系統(tǒng)
   學習一條指令時,要注意以下幾個方面:
  ?。?) 指令功能--該指令能實現(xiàn)何種操作,通常指令助記符就是指令功能的英文縮寫詞。
  ?。?) 指令支持的尋址方式--指令中的源操作數(shù)和目的操作數(shù)字段允許采用的尋址方式。
  ?。?) 指令對標志位的影響--該指令執(zhí)行后對各個標志位的影響。
  ?。?) 指令的特殊要求--該指令隱含使用或限定使用的寄存器以及需要預(yù)置的參數(shù)。

上一頁 1 2 下一頁

關(guān)鍵詞: 8086指令系統(tǒng)控制轉(zhuǎn)移指

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉