国产亚洲精品AA片在线观看,丰满熟妇HD,亚洲成色www成人网站妖精,丁香五月天婷婷五月天男人天堂

新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 8086指令系統(tǒng)---算術指令(一)

8086指令系統(tǒng)---算術指令(一)

作者: 時間:2016-11-27 來源:網(wǎng)絡 收藏
  算術指令包括加、減、乘、除指令,它包括對二進制數(shù)進行的算術運算的指令,以及對十進制數(shù)(用BCD碼表示)運算進行調整的指令。執(zhí)行算術指令都會影響條件標志位,條件標志位包括CF、PF、AF、ZF、SF和OF,它們標志算術運算結果的特征。
?、?加法指令           ⑵ 減法指令
    ADD  加法              SUB  減法
    ADC  帶進位加            DEC  減1
    INC  加1               NEG  求補
                       CMP  比較
     

 ?、?乘法指令          ?、?除法指令
    MUL  無符號數(shù)乘法          DIV  無符號數(shù)除法
    IMUL 帶符號數(shù)乘法          IDIV 帶符號數(shù)除法

  
 ?、?符號擴展指令        ?、?十進制調整指令
    CBW  字節(jié)轉換為字          DAA  加法的十進制調整
    CWD  字轉換為雙字          DAS  減法的十進制調整
                       AAA  加法的ASCII調整
                        AAS  減法的ASCII調整      
                       AAM  乘法的ASCII調整
                       AAD  除法的ASCII調整
  1 加法指令

  ADD dst,src加法指令(addition)
  執(zhí)行操作: (dst) ← (src)+(dst)

  ADC dst,src帶進位加指令(add with carry)
  執(zhí)行操作: (dst) ← (src)+(dst)+CF

  INC opr加1指令(increment)
  執(zhí)行操作: (opr) ← (opr)+1

  ADD和ADC指令是雙操作數(shù)指令,它們的兩個操作數(shù)不能同時為存儲器尋址方式,也就是說,除源操作數(shù)為立即數(shù)的情況外,源和目的操作數(shù)必須有一個是寄存器尋址方式。INC指令是單操作數(shù)指令,它可以使用除立即數(shù)方式外的任何尋址方式。

  ADD和ADC指令影響條件標志位(也稱條件碼),INC指令影響除CF外的其它條件碼。條件碼中最主要的是SF、ZF、CF和OF,加法運算對這四個條件碼的設置方法如下:
  SF=1 加法結果為負數(shù)(符號位為1)
  SF=0 加法結果為正數(shù)(符號位為0)
  ZF=1 加法結果為零
  ZF=0 加法結果不為零
  CF=1 最高有效位向高位有進位
  CF=0 最高有效位向高位無進位
  OF=1 兩個同符號數(shù)相加(正數(shù)+正數(shù),或負數(shù)加負數(shù)),結果符號與其相反
  OF=0 不同符號數(shù)相加時,或同符號數(shù)相加,結果符號與其相同

  計算機在執(zhí)行運算時,并不區(qū)別操作數(shù)是帶符號數(shù)還是無符號數(shù),一律按上述規(guī)則設置條件碼,因此,程序員要清楚當時處理的是什么類型的數(shù)據(jù)。例如,當加法運算結果的最高有效位為1時,機器將SF置1。如果參加運算的是兩個帶符號數(shù),那么和的最高有效位是符號位,SF置1說明結果是一個負數(shù)。如果參加運算的是兩個無符號數(shù),那么和的最高有效位也是數(shù)值位,此時SF置0或置1都失去了表示正負數(shù)的意義。

  對帶符號數(shù)和無符號數(shù),它們表示結果溢出的條件標志位也是不同的。上述OF位的設置條件顯然只符合帶符號數(shù)的溢出情況,OF=1表示運算結果是錯誤的。而無符號數(shù)溢出(運算結果超出了有限位的表示范圍)時,表現(xiàn)為最高有效位產(chǎn)生進位,因此,CF=1是無符號數(shù)溢出的標志。另外,在雙字長數(shù)運算時,低位字相加設置的CF,說明低位字向高位字有無進位的情況。

 例MOV  BX,9B8CH  ; (BX)=9B8CH
         ADD  BX,6478H  ; now (BX)=0000H
         9B8A     1001 1011 1000 1010
        + 6476     + 0110 0100 0111 0110
       -----------  --------------------------
       1← 0000    1← 0000 0000 0000 0000

  條件碼設置: SF=0  最高有效位(D15)為0
         ZF=1  結果為0
         CF=1  最高有效位向高位有進位
         OF=0  不同符號數(shù)相加,不產(chǎn)生溢出

  例編寫執(zhí)行雙精度數(shù)(DX,CX)和(BX,AX)相加的指令序列,DX是目的操作數(shù)的高位字,BX是源操作數(shù)的高位字。指令執(zhí)行前:
     ?。―X,CX)= A248 2AC0H,(BX,AX)= 088A E25BH。

   指令序列:  ADD  CX, AX  ;(CX)= 0D1BH
         ADC  DX, BX  ; now,(DX)=0AAD3H

   執(zhí)行ADD指令:
         2AC0     0010 1010 1100 0000
        + E25B    + 1110 0010 0101 1011
       ---------   ------------------------
       1← 0D1B   1← 0000 1101 0001 1011

  條件碼設置: SF=0  最高有效位(D15)為0,無符號位意義
         F=0  結果不為0
         CF=1  最高有效位向高位有進位
         OF=0  加數(shù)最高位分別為0、1,溢出位置0,OF對低位字無溢出意義

  執(zhí)行ADC指令:
         A248     1010 0010 0100 1000
         088A     0000 1000 1000 1011
        +   1     +          1←CF
       ----------  ----------------------------
         AAD3     1010 1010 1101 0011

  條件碼設置: SF=1  最高有效位(D31)為1,對帶符號數(shù)運算表示結果為負
         ZF=0  結果不為0
         CF=0  最高有效位向高位無進位
         OF=0  結果符號與操作數(shù)相同,未產(chǎn)生溢出

  2 減法指令

  SUB dst,src減法指令(subtract)
  執(zhí)行操作: (dst) ← (dst)-(src)

  SBB dst,src帶借位減法指令(subtract with borrow)
  執(zhí)行操作: (dst) ← (dst)-(src)-CF

  DEC opr減1指令(decrement)
  執(zhí)行操作: (opr) ← (opr)-1

  CMP opr1,opr2比較指令(compare)
  執(zhí)行操作: (opr1)-(opr2),根據(jù)相減結果設置條件碼,但不回送結果

  以上指令除DEC指令不影響CF外,其他都影響條件碼。與加法類似,SF和ZF分別表示減法結果的符號以及為零的情況;CF表明無符號數(shù)相減結果溢出與否;OF表明帶符號數(shù)相減結果溢出與否。但在對CF和OF位的設置方法上減法和加法有所不同,下面對此做進一步說明:
  CF=1   二進制減法運算中最高有效位向高位有借位(被減數(shù)<減數(shù),不夠減的情況)
  CF=0   二進制減法運算中最高有效位向高位無借位(被減數(shù)≥減數(shù),夠減的情況)
  OF=1   兩數(shù)符號相反(正數(shù)-負數(shù),或負數(shù)-正數(shù)),而結果符號與減數(shù)相同
  OF=0   同符號數(shù)相減時,或不同符號數(shù)相減,其結果符號與減數(shù)不同

  NEG opr求補指令(negate)
  執(zhí)行操作: (opr) ← -(opr),
                        
  求補操作即把操作數(shù)變?yōu)榕c其符號相反的數(shù):。
  機器在執(zhí)行求補指令時,把操作數(shù)各位求反后末位加1,因此執(zhí)行的操作也可表示為:
  (opr) ← 0FFFFH-(opr)+1

  NEG指令的條件碼設置方法為:
   CF=1  不為0的操作數(shù)求補時
   CF=0  為0的操作數(shù)求補時
   OF=1  當求補運算的操作數(shù)為-128(字節(jié))或-32768(字)時
   OF=0  當求補運算的操作數(shù)不為-128(字節(jié))或-32768(字)時

本文引用地址:http://www.ljygm.com/article/201611/322192.htm
 例字長為8位的兩數(shù)相減,其可表示數(shù)的范圍為:帶符號數(shù) -128~127(80H~7FH),無符號數(shù)0~255(0~FFH)。運算結果超出可表示數(shù)范圍即為溢出,說明結果錯誤。
上一頁 1 2 下一頁

評論


技術專區(qū)

關閉