在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

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

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


              注意:如果是兩個ASCII碼數(shù)相乘,要先將它們轉(zhuǎn)換成非壓縮BCD碼。

              AAD的調(diào)整方法為:
              執(zhí)行除法指令之前,對AX中的非壓縮BCD碼(被除數(shù))執(zhí)行:
              ?。ˋL)←(AH)×10+(AL)
              ?。ˋH)← 0

              與其它調(diào)整指令不同的是,AAD用在DIV指令之前,即先將AX中的被除數(shù)調(diào)整成二進(jìn)制數(shù),并存放在AL中,再用DIV指令作二進(jìn)制數(shù)的除法。AX中的被除數(shù)是二位非壓縮BCD碼,AH中的十位數(shù)乘10,再加上AL中的個位數(shù),即轉(zhuǎn)換為二進(jìn)制數(shù)。

            本文引用地址:http://www.biyoush.com/article/201611/322191.htm

                         表3.3 ASCII和BCD碼

            十進(jìn)制數(shù)字
            ASCII碼
            壓縮BCD碼
            非壓縮BCD碼
            0
            0011 0000
            0000
            0000 0000
            1
            0011 0001
            0001
            0000 0001
            2
            0011 0010
            0010
            0000 0010
            3
            0011 0011
            0011
            0000 0011
            4
            0011 0100
            0100
            0000 0100
            5
            0011 0101
            0101
            0000 0101
            6
            0011 0110
            0110
            0000 0110
            7
            0011 0111
            0111
            0000 0111
            8
            0011 1000
            1000
            0000 1000
            9
            0011 1001
            1001
            0000 1001

             例ASCII碼轉(zhuǎn)換為BCD碼。
                 
                ASC   DB 9562481273 ; ASCII string
                    ORG   0010H
                    UNPACK DB  10 DUP(?) ; store BCD number
                …    …
                MOV   CX,10   ; load the counter
                SUB   BX,BX   ; clear BX
            AGAIN: MOV   AL,ASC[BX]; move to AL content of mem [BX+ASC]
                AND   AL,0FH   ; mask the upper nibble
                MOV   UNPACK[BX],AL  ; move to mem [BX+UNPACK] the AL
                NC    BX     ; make the pointer to point at next ASCII number
                LOOP   AGAIN   ; loop until finished

              上例中的AND指令完成邏輯與操作,AL寄存器的內(nèi)容和0FH相與,結(jié)果使ASCII碼的高4位清零,低4位保持不變,于是一個ASCII碼數(shù)就轉(zhuǎn)換成了BCD碼。


             例編寫程序,實現(xiàn)BCD數(shù)據(jù)的加法和減法。

               ?、?BCD3←BCD1+BCD2  ; BCD3=2784+1839=4623
                 ② BCD3←BCD1-BCD2  ; BCD3=2784-1839=0945

                編寫程序如下:
                 DATA SEGEMENT
                 BCD1 DB 84H,27H ; BCD format of 2784
                 BCD2 DB 39H,18H ; BCD format of 1839
                 BCD3 DB 2 DUP(?)
                 DATA ENDS

               ?、?MOV  AL,BCD1   ; AL←84H
                  ADD  AL,BCD2   ; AL←84H+39H=0BDH (B>9,D>9)
                  DAA        ; AL←0BDH+06+60H=23H, AF=1,CF=1
                  MOV  BCD3,AL   ; BCD3←23H
                  MOV  AL,BCD1+1  ; AL←27H
                  ADC  AL,BCD2+1  ; AL←27H+18H+1=40H, AF=1,CF=0
                  DAA        ; AL←40H+06=46H, because AF=1
                  MOV  BCD3+1,AL  ; BCD3+1←46H

                ② MOV  AL,BCD1   ; AL←84H
                  SUB  AL,BCD2   ; AL←84H-39H=4BH (4≯9,B>9)
                  DAS        ; AL←4BH-06=45H, AF=1, CF=0
                  MOV  BCD3,AL   ; BCD3←45H
                  MOV  AL,BCD1+1  ; AL←27H
                  SBB  AL,BCD2+1  ; AL←27H-18H=0FH
                  DAS        ; AL←0FH-06=09H, because F>9
                  MOV  BCD3+1,AL  ; BCD3+1←09H

               使用DAA和DAS指令,注意:
               ·被調(diào)整的數(shù)必須在AL寄存器中;
               ·影響除OF外的其它條件碼標(biāo)志;
               ·DAA必須緊接在加指令之后,DAS必須緊接在減指令之后。

              例兩個ASCII碼數(shù)5和2相加,要求結(jié)果也為ASCII碼。
                 
                 MOV  AL,5    ; AL←35H
                 ADD  AL,2    ; AL←35H+32H=67H, AF=0
                 AAA         ; changes 67H to 07H,
                 OR   AL,30     ; OR AL with 30H to get ASCII

             例編寫15和7的非壓縮BCD碼的減法程序,要求結(jié)果也為非壓縮BCD碼。

                 MOV  AX,0105H   ; unpacked BCD for 15
                 MOV  CL,07
                 SUB  AL,CL     ; (AL)←05-07 =-2 (FEH)
                 AAS         ; adjusted: 0FE-06=0F8→08→(AL),
                           ; 01-1=00→(AH), leaving (AX)=0008

             例兩個ASCII碼數(shù)7和8相乘,要求結(jié)果也為ASCII碼。

                 MOV  AL,7    ; (AL)=37H
                 AND  AL,0FH    ; (AL)=07 unpacked BCD
                 MOV  DL,6    ; (DL)=36H
                 AND  DL,0FH    ; (DL)=06 unpacked BCD
                 MUL  DL      ; (AX)=07×06=002AH=42
                 AAM         ; (AX)=0402 (7×6=42 unpacked BCD)
                 OR   AX,3030H   ; (AX)=3432 result in ASCII

             例編寫ASCII碼數(shù)的除法程序。

                 MOV  AX,3539H   ; (AX)=3539, ASCII for 59
                 AND  AX,0F0FH   ; (AH)=05,(AL)=09,unpacked BCD data
                 AAD         ; (AX)=003BH=59
                 MOV  BH,08H    ; divide by 08
                 DIV  BH      ; 3BH/8 gives (AL)=07,(AH)=03
                 OR   AX,3030H   ; (AL)=37H (quotient), (AH)=33H (remainder)


            上一頁 1 2 下一頁

            評論


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

            關(guān)閉