mul32b.asm
来自「两个32位无符号整数的乘积的汇编程序 注意乘法的错位相加」· 汇编 代码 · 共 50 行
ASM
50 行
STACK SEGMENT PARA STACK 'STACK'
DW 100 DUP (?)
STACK ENDS
DATA SEGMENT
ORG 0100H
MCD1_HI DW 1234H ;被乘数
MCD1_LO DW 5678H
MCD2_HI DW 0ABCDH ;乘数
MCD2_LO DW 0EF12H
RESULT DB 8 DUP(0) ;结果区(低位字节在前)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MUL32B_S PROC FAR
PUSH DS ;保存返回地址
MOV AX, 0
PUSH AX
MOV AX,DATA ;初始化DS,ES
MOV DS,AX
MOV DX,MCD1_HI ;DX存储被乘数的高8位
MOV AX,MCD1_LO ;AX存储被乘数的低8位
MOV CX,MCD2_HI ;CX存储乘数的高8位
MOV BX,MCD2_LO ;DX存储乘数的低8位
MOV DI,OFFSET RESULT
MOV MCD1_HI,DX
MOV MCD1_LO,AX
MUL BX ;产生部分积1
ADD [DI],AX
ADC [DI+2],DX
MOV AX,MCD1_HI
MUL BX ;产生部分积2
ADD [DI+2],AX
ADC [DI+4],DX
MOV AX,MCD1_LO
MUL CX ;产生部分积3
ADD [DI+2],AX
ADC [DI+4],DX
MOV AX,MCD1_HI
MUL CX ;产生部分积4
ADD [DI+4],AX
ADC [DI+6],DX
RET
MUL32B_S ENDP
CODE ENDS
END MUL32B_S ;汇编结束
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?