¡¡ Àý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¡£