mul32.asm

来自「random.zip 随机数产生器的汇编源代码 cmdsrc.zip 一个文本编」· 汇编 代码 · 共 45 行

ASM
45
字号
MUL32    PROC     NEAR
;***************************************************************
;                       32 bit multiplication routine
;                       multiplies DX:AX x CX:BX
;                       returns 64 bit product in DX:AX:CX:BX
;***************************************************************
         PUSH     SI  
         PUSH     DI
         MOV      SI,DX       ;save OP1HI in SI
         MOV      DI,AX       ;save OP1LO in DI
         MUL      BX          ;OP1L0 x OP2LO
         PUSH     AX          ;save 1st (32 bit) pp. on stack
         PUSH     DX
;
         MOV      AX,SI       ;OP1HI in AX
         MUL      BX          ;OP1HI x OP2L0
         POP      BX          ;add 2nd (48 bit) pp. to pp1
         ADD      AX,BX
         ADC      DX,0
         PUSH     AX
         MOV      BX,DX       ;pp1 + pp2 in BX:TOS:TOS+2
;
         MOV      AX,DI       ;OP1LO in AX
         MUL      CX          ;OP1LO x OP2HI
         POP      DI          ;add 3rd (48 bit) pp. to pp1 + pp2
         ADD      DI,AX
         PUSH     DI
         MOV      DI,0
         ADC      BX,DX
         ADC      DI,0        ;pp1+pp2+pp3 in DI:BX:TOS:TOS+2
;
         MOV      AX,SI       ;OP1HI in AX
         MUL      CX          ;OP1HI x OP2HI
         ADD      AX,BX       ;add 4th (64 bit) pp. to pp1+pp2+pp3
         ADC      DX,DI
         POP      CX
         POP      BX          ;final product in DX:AX:CX:BX
;
         POP      DI
         POP      SI
         RET
MUL32    ENDP


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?