5.1. NORTON exmult2.asm -:
.286
TITLE EXMULT2 (COM)
CODESG SEGMENT PARA 'Code'
ASSUME CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG
ORG 100H; PSP
BEGIN: JMP SHORT MAIN;
;-------------------------------------------------------
MULTCND DW 3206H;
DW 2521H
MULTPLR DW 6400H
DW 0A26H
PRODUCT DW 0
DW 0
DW 0
DW 0
;--------------------------------------------------------
MAIN PROC NEAR;
CALL E10XMUL; 1 4- 0
CALL Z10ZERO;
CALL F10XMUL; 2 4- 0
RET
MAIN ENDP
; .
; ----------------------------
E10XMUL PROC
MOV AX,MULTCND+2;. . .
MUL MULTPLR;
MOV PRODUCT+4,AX; .
MOV PRODUCT+2,DX
MOV AX,MULTCND; . .
MUL MULTPLR;
ADD PRODUCT+2,AX;
ADC PRODUCT,DX
RET
E10XMUL ENDP
;
; ------------------------------
F10XMUL PROC
MOV AX,MULTCND+2;-2
MUL MULTPLR;* -2
MOV PRODUCT+6,AX; .
MOV PRODUCT+4,DX
MOV AX,MULTCND+2;-2
MUL MULTPLR;* -1
ADD PRODUCT+4,AX; .
ADC PRODUCT+2,DX
ADC PRODUCT,00;
MOV AX,MULTCND;-1
MUL MULTPLR+2;* -2
ADD PRODUCT+4,AX; .
ADC PRODUCT+2,DX
ADC PRODUCT,00;
MOV AX,MULTCND;-1
MUL MULTPLR;* -1
ADD PRODUCT+2,AX; .
ADC PRODUCT,DX
RET
F10XMUL ENDP
;
; --------------------------
Z10ZERO PROC
MOV PRODUCT,0000
MOV PRODUCT+2,0000
MOV PRODUCT+4,0000
MOV PRODUCT+6,0000
RET
Z10ZERO ENDP
CODESG ENDS
END BEGIN
E10XMUL . MULTCND , 3206 2521. (DW) (DD) MOV, . MULTPLR 6400. PRODUCT . MUL MULTPLR MULTCND; 080 400 PRODUCT+2 PRODUCT+4. MUL MULTPLR MULTCND, 138 5800. :
PRODUCT PRODUCT+2 PRODUCT+4
1: 0000 0E80 E400
DX AX
2: 138A 5800
-----------------------------
PRODUCT PRODUCT+2 PRODUCT+4
: 138A 6680 E400
ADD , ADC. ADD , ADC ADD. ADD , ADC 1.
F10XMUL :