¡¡
Àý3.23
ÎÞ·ûºÅÊý³Ë·¨¡¡
¡¡¡¡¡¡¡¡; 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¡£
¡¡
¡¡
¡¡¡¡Àý3.24¡¡
¡¡¡¡¡¡¡¡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¡£