📄 49_dwordmul_2.asm
字号:
.model small
stack segment para stack
DW 100 DUP(?)
stack ends
data segment para
x1 WORD 0Ffffh
WORD 0Ffffh
x2 WORD 0Ffffh
WORD 0Ffffh
x3 WORD 4 DUP(0)
result BYTE 5 dup(?),'$'
data ends
code segment para
assume CS:code,DS:data,SS:stack
;----------------------------------------------------
main PROC FAR
mov ax,data
mov ds,ax
mov ax,x1 ;低字乘*低字
mul x2
mov x3,ax
mov x3+2,dx
mov ax,x1 ;低字乘*高字
mul x2+2
add x3+2,ax
adc x3+4,dx
adc x3+6,0 ;加进位
mov ax,x1+2 ;高字乘*低字
mul x2
add x3+2,ax
adc x3+4,dx
adc x3+6,0 ;加进位
mov ax,x1+2 ;高字乘*高字
mul x2+2
add x3+4,ax
adc x3+6,dx
call display16
mov DL,0AH
MOV AH,2
INT 21H
CALL DISPLAY10
mov ax,4c00h
INT 21H
main ENDP
;----------------------------------------------------
display16 PROC NEAR
mov CX,4
LEA SI,X3+6
LP:
PUSH CX
MOV BX,[SI]
MOV CX,4
LP1:
PUSH CX
MOV CL,4
ROL BX,CL
MOV AL,BL
AND AL,0FH
or AL,30H
CMP AL,39H
JBE DISP
ADD AL,'A'-'9'-1
DISP:
MOV DL,AL
MOV AH,2
INT 21H
POP CX
LOOP LP1
DEC SI
DEC SI
POP CX
LOOP LP
RET
display16 ENDP
;----------------------------------------------------
display10 PROC NEAR
mov CX,4
LEA SI,X3+6
LP:
PUSH CX
MOV CX,5
MOV AX,[SI]
MOV BX,10
MOV DI,OFFSET RESULT+4
LP1: XOR DX,DX
DIV BX
OR DL,30H
MOV BYTE PTR [DI],DL
DEC DI
LOOP LP1
MOV DX,OFFSET RESULT
MOV AH,9
INT 21H
DEC SI
DEC SI
POP CX
LOOP LP
RET
display10 ENDP
;------------------------------------------------------
code ENDS
END main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -