新聞中心

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

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

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


         ?、?43H-16H=2DH
            0100 0011     0100 0011   條件碼設(shè)置:CF=0
          - 0001 0110    + 1110 1010         OF=0
         --------------    --------------
            0010 1101    1← 0010 1101


          說(shuō)明:機(jī)器作減法運(yùn)算時(shí),先將減數(shù)求補(bǔ),然后轉(zhuǎn)化為加法運(yùn)算,所以實(shí)際上機(jī)器設(shè)置CF的方法是:最高有效位不產(chǎn)生進(jìn)位時(shí),CF=1;最高有效位產(chǎn)生進(jìn)位時(shí),CF=0。這和做減法時(shí)有借位CF=1,無(wú)借位CF=0是一致的。
          本例參加運(yùn)算的數(shù)無(wú)論是看作帶符號(hào)數(shù)還是無(wú)符號(hào)數(shù),運(yùn)算結(jié)果均有效。


          ② 0C8H-66H=62H
            1100 1000     1100 1000   條件碼設(shè)置:CF=0
          - 0110 0110   + 1001 1010         OF=1
          --------------    ------------
            0110 0010    1← 0110 0010

          說(shuō)明:如果是無(wú)符號(hào)數(shù)的運(yùn)算,被減數(shù)夠減無(wú)借位,所以CF置0,表明結(jié)果有效。如果操作數(shù)是帶符號(hào)數(shù),且被減數(shù)與減數(shù)符號(hào)相反,而結(jié)果符號(hào)與減數(shù)符號(hào)相同,所以O(shè)F置1,表明結(jié)果無(wú)效。

           ③ 54H-76H=0DEH
            0101 0100    0101 0100    條件碼設(shè)置:CF=1
           - 0111 0110   + 1000 1010          OF=0
           -------------    -------------
            1101 1110      1101 1110


          說(shuō)明:如果是無(wú)符號(hào)數(shù)的運(yùn)算,本例中被減數(shù)<減數(shù),減運(yùn)算向高位有借位(或加運(yùn)算無(wú)進(jìn)位),則CF置0,表明結(jié)果無(wú)效。如果是帶符號(hào)數(shù)的運(yùn)算,同符號(hào)數(shù)相減,OF置0,結(jié)果有效。

           ④ 4BH-0B6H=0DEH
            0100 1011    0100 1011    條件碼設(shè)置:CF=1
           - 1011 0110   + 0100 1010          F=1
           ---------------    -----------
            1001 0101      1001 0101

          說(shuō)明:如果是無(wú)符號(hào)數(shù)的運(yùn)算,本例中被減數(shù)<減數(shù),減運(yùn)算向高位有借位(或加運(yùn)算無(wú)進(jìn)位),則CF置0,表明結(jié)果無(wú)效。如果是帶符號(hào)數(shù)的運(yùn)算,不同符號(hào)數(shù)相減,且結(jié)果符號(hào)與減數(shù)符號(hào)相同,OF置1,結(jié)果也是無(wú)效的。

          例分析下列程序的執(zhí)行情況:
          
                DATA_A   DD   62562FAH
                DATA_B   DD   412963BH
                RESULT   DD   ?
                 …    …   …
                MOV     AX, WORD PTR DATA_A   ; (AX)=62FAH
                SUB    AX, WORD PTR DATA_B   ; sub 963BH from AX
                MOV    WORD PTR RESULT, AX   ; save the result
                MOV    AX, WORD PTR DATA_A+2  ; (AX)=0625H
                SBB    AX, WORD PTR DATA_B+2  ; sub 0412H with borrow
                MOV    WORD PTR RESULT, AX   ; save the result

          答:SUB指令執(zhí)行后,(AX)= 62FAH-963BH=0CCBFH,CF=1(有借位)。執(zhí)行SBB指令后,(AX)= 625H-412H-1=212H,CF=0,OF=0,因此,保存于RESULT的結(jié)果數(shù)據(jù)為0212CCBFH。

         3 乘法指令

          MUL  src  無(wú)符號(hào)數(shù)乘法(unsigned multiple)
          IMUL src  帶符號(hào)數(shù)乘法(signed multiple)
          字節(jié)操作: (AX) ← (AL)×(src)
          字操作:  (DX, AX) ← (AX)×(src)

          MUL和IMUL指令的區(qū)別僅在于操作數(shù)是無(wú)符號(hào)數(shù)還是帶符號(hào)數(shù),它們的共同點(diǎn)是,指令中只給出源操作數(shù)src,它可以使用除立即數(shù)方式以外的任一種尋址方式。目的操作數(shù)是隱含的,它只能是累加器(字運(yùn)算為AX,字節(jié)運(yùn)算為AL)。隱含的乘積寄存器是AX或DX(高位)和AX(低位)。

          乘法指令只影響CF和OF,其它條件碼位無(wú)定義。無(wú)定義是指指令執(zhí)行后,條件碼位的狀態(tài)不確定,因此它們是無(wú)用的。

          MUL指令的條件碼設(shè)置為:
          CF OF= 0 0 乘積的高一半為0(字節(jié)操作的(AH)或字操作的(DX))
          CF OF= 1 1 乘積的高一半不為0

          這樣的條件碼設(shè)置可以指出字節(jié)相乘的結(jié)果是8位(CF=0)還是16位(CF=1),字相乘的結(jié)果是16位(CF=0)還是32位(CF=1)。

          IMUL指令的條件碼設(shè)置為:
          CF OF= 0 0 乘積的高一半為低一半的符號(hào)擴(kuò)展
          CF OF= 1 1 其他情況

          符號(hào)擴(kuò)展是指做字節(jié)乘法時(shí),乘積低8位的最高位為0,高8位也擴(kuò)展為0,或者低8位的最高位為1,高8位也擴(kuò)展為1的情況。對(duì)兩個(gè)字相乘,符號(hào)擴(kuò)展是指乘積的低16位的最高位為0,高16位也擴(kuò)展為0,或者低16位的最高位為1,高16位也擴(kuò)展為1的情況。

        本文引用地址:http://www.104case.com/article/201611/322192.htm

         例無(wú)符號(hào)數(shù)乘法 

            ; from the data segment
            DATA1  DB  25H
            DATA2  DB  65H
            RESULT DW ?
            ; from the code segment
              MOV   AL,DATA1
              MOV   BL,DATA2
              MUL   BL        ; register addressing mode
              MOV   RESULT,AX
            or
              MOV   AL,DATA1
              MUL   DATA2       ; direct addressing mode
              MOV   RESULT,AX
            or
              MOV   AL,DATA1
              MOV   SI,OFFSET DATA2
              MUL   BYTE PTR [SI]   ;register indirect addressing mode
              MOV   RESULT,AX

          本例25H×65H=0E99H,高16位不為0,所以CF=1,OF=1。
         
         
          例  

            DATA3  DW  2378H
            DATA4  DW  2F79H
            RESULT1 DW  2 DUP(?)
            …    …
              MOV   AX, DATA3   ; load first operand into AX
              IMUL   DATA4     ; multiply it by the second operand
              MOV   RESULT1, AX  ; store the lower word result
              MOV   RESULT1+2, DX ; store the higher word result

          本例2378H×2F79H=0693 CBB8H,即(DX)=0693H,(AX)=0CBB8H。因?yàn)楦?6位不是低16位的符號(hào)擴(kuò)展,所以條件碼設(shè)置為CF=1,OF=1。


        上一頁(yè) 1 2 下一頁(yè)

        關(guān)鍵詞: 8086指令系統(tǒng)算術(shù)指

        評(píng)論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 宁都县| 白朗县| 四川省| 依安县| 汝城县| 普宁市| 屏南县| 徐闻县| 介休市| 永丰县| 娄底市| 临澧县| 陆川县| 丹棱县| 宝鸡市| 大邑县| 万州区| 百色市| 万年县| 淳安县| 东丽区| 剑河县| 樟树市| 托克逊县| 六枝特区| 大庆市| 新营市| 井研县| 高尔夫| 钦州市| 合作市| 太和县| 岐山县| 资溪县| 新化县| 德钦县| 万荣县| 辽阳县| 闵行区| 澄迈县| 马龙县|