<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

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


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


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


 ?、?0C8H-66H=62H
    1100 1000     1100 1000   條件碼設置:CF=0
 ?。?0110 0110   + 1001 1010         OF=1
  --------------    ------------
    0110 0010    1← 0110 0010

  說(shuō)明:如果是無(wú)符號數的運算,被減數夠減無(wú)借位,所以CF置0,表明結果有效。如果操作數是帶符號數,且被減數與減數符號相反,而結果符號與減數符號相同,所以OF置1,表明結果無(wú)效。

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


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

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

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

  例分析下列程序的執行情況:
  
        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指令執行后,(AX)= 62FAH-963BH=0CCBFH,CF=1(有借位)。執行SBB指令后,(AX)= 625H-412H-1=212H,CF=0,OF=0,因此,保存于RESULT的結果數據為0212CCBFH。

 3 乘法指令

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

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

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

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

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

  IMUL指令的條件碼設置為:
  CF OF= 0 0 乘積的高一半為低一半的符號擴展
  CF OF= 1 1 其他情況

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

本文引用地址:http://dyxdggzs.com/article/201611/322192.htm

 例無(wú)符號數乘法 

    ; 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。因為高16位不是低16位的符號擴展,所以條件碼設置為CF=1,OF=1。


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

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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>