3.1. NORTON exmult1.asm -:
.286
TITLE EXMULT1 (COM)
CODESG SEGMENT PARA 'Code'
ASSUME CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG
ORG 100H; PSP
BEGIN: JMP SHORT MAIN;
;-------------------------------------------------------
BYTE1 DB 80H;
BYTE2 DB 40H
WORD1 DW 8000H
WORD2 DW 4000H
;--------------------------------------------------------
MAIN PROC NEAR;
CALL C10MUL; . MUL
CALL D10IMUL; . IMUL
RET
MAIN ENDP
; MUL
; --------------------
C10MUL PROC
MOV AL,BYTE1; *
MUL BYTE2;
MOV AX,WORD1; *
MUL WORD2; DX:AX
MOV AL,BYTE1; *
SUB AH,AH;. .
MUL WORD1; DX:AX
RET
C10MUL ENDP
; IMUL
; ---------------------
D10IMUL PROC
MOV AL,BYTE1; *
IMUL BYTE2;
MOV AX,WORD1; *
IMUL WORD2; DX:AX
MOV AL,BYTE1; *
CBW;. .
IMUL WORD1;. DX:AX
RET
D10IMUL ENDP
CODESG ENDS
END BEGIN
C10MUL : , . MUL 80 (128) 40 (64). 2000 (8192) .
MUL 2000 0000 DX:AX.
MUL BYTE1 . SUB, . 0040 0000 DX:AX.
D10IMUL , C10MUL, MUL IMUL.
IMUL 80 ( ) 40 ( ). 000 . IMUL 80 -128. -128 +64 -8192 000.
IMUL 8000 ( ) 2000 ( ). 000 0000 DX:AX .
IMUL BYTE1 . , CBW : 80 AL FF80 . WORD1 ,
.
3.2. . . DEBUG .
3.3. D CS:100 . , .