7.1. NORTON exdiv.asm -:
.286
TITLE EXDIV (COM) DIV IDIV
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 16H
WORD1 DW 2000H
WORD2 DW 0010H
WORD3 DW 1000H
;--------------------------------------------------------
MAIN PROC NEAR;
CALL D10DIV; / DIV
CALL E10IDIV; / IDIV
CALL F10SHR; / SHR
RET
MAIN ENDP
; DIV
; ----------------------
D10DIV PROC
MOV AX,WORD1; /
DIV BYTE1;: AH:AL
MOV AL,BYTE1; /
SUB AH,AH;.
DIV BYTE2;: AH:AL
MOV DX,WORD2; /
MOV AX,WORD3; DX:AX
DIV WORD1;: DX:AX
MOV AX,WORD1; /
SUB DX,DX;. DX
DIV WORD3;: DX:AX
RET
D10DIV ENDP
; IDIV
; ----------------------
E10IDIV PROC
MOV AX,WORD1; /
IDIV BYTE1;: AH:AL
MOV AL,BYTE1; /
CBW;.
IDIV BYTE2;: AH:AL
MOV DX,WORD2; /
MOV AX,WORD3; DX:AX
IDIV WORD1;: DX:AX
MOV AX,WORD1; /
CWD;. DX
IDIV WORD3;: DX:AX
RET
E10IDIV ENDP
;
; -------------------------
F10SHR PROC
MOV AX,256
SHR AX,1; 2
MOV CL,3
SHR AX,CL; 8
RET
F10SHR ENDP
CODESG ENDS
END BEGIN
D10DIV : , , . DIV 2000 (8092) 80 (128). 00 , 40 (64) - AL.
DIV BYTE1 . , . - 12 , 05 - AL.
DIV 1000 DX 0080 .
DIV WORD1 DX:AX. 0000 DX, 0002 .
E10IDIV , D10DIV, DIV IDIV. IDIV 2000 ( ) 80 ( ). 00 , - 0 (-64) - AL.
:
IDIV
2 (-18) FB (-5)
3 1000 (4096) 0080 (128)
4 0000 0002
F10SHR 2 (2,4 ..).
7.2. . . DEBUG .
7.3. AX DX. .