📄 mul32b.asm
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -