<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 8086指令系統(tǒng)---算術(shù)指令(一)

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

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

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

            
           ?、?符號(hào)擴(kuò)展指令         ⑹ 十進(jìn)制調(diào)整指令
              CBW  字節(jié)轉(zhuǎn)換為字          DAA  加法的十進(jìn)制調(diào)整
              CWD  字轉(zhuǎn)換為雙字          DAS  減法的十進(jìn)制調(diào)整
                                 AAA  加法的ASCII調(diào)整
                                  AAS  減法的ASCII調(diào)整      
                                 AAM  乘法的ASCII調(diào)整
                                 AAD  除法的ASCII調(diào)整
            1 加法指令

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

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

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

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

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

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

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

           例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

            條件碼設(shè)置: SF=0  最高有效位(D15)為0
                   ZF=1  結(jié)果為0
                   CF=1  最高有效位向高位有進(jìn)位
                   OF=0  不同符號(hào)數(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

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

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

            條件碼設(shè)置: SF=1  最高有效位(D31)為1,對(duì)帶符號(hào)數(shù)運(yùn)算表示結(jié)果為負(fù)
                   ZF=0  結(jié)果不為0
                   CF=0  最高有效位向高位無進(jìn)位
                   OF=0  結(jié)果符號(hào)與操作數(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ù)相減結(jié)果設(shè)置條件碼,但不回送結(jié)果

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

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

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

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

          評(píng)論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();