DATA SEGMENT
RESULT DB ?
SIGN DB ?
TJ EQU $-SIGN
SCALE DB ?
DIVD DB -16
DATA ENDS
STACK SEGMENT STACK
STANB DB 100 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV SCALE,02H
MOV AL,DIVD
AND AL,80H
JNS NEXT1
MOV SIGN,0
JMP NEXT2
NEXT1: MOV SIGN,1
NEXT2:CALL DIVID
JMP NEXT
DIVID:CMP SIGN,1
JNZ S1
MOV BL,00H
JMP NEXT3
S1:
NOP
MOV BX,01H
NEXT3:IF BX GT 00H ;34行
IDIV SCALE
MOV RESULT,AL
ELSE
DIV SCALE
MOV RESULT,AL
ENDIF
RET
NEXT: MOV AH,4CH
INT 21H
CODE ENDS
END START
RESULT DB ?
SIGN DB ?
TJ EQU $-SIGN
SCALE DB ?
DIVD DB -16
DATA ENDS
STACK SEGMENT STACK
STANB DB 100 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV SCALE,02H
MOV AL,DIVD
AND AL,80H
JNS NEXT1
MOV SIGN,0
JMP NEXT2
NEXT1: MOV SIGN,1
NEXT2:CALL DIVID
JMP NEXT
DIVID:CMP SIGN,1
JNZ S1
MOV BL,00H
JMP NEXT3
S1:
NOP
MOV BX,01H
NEXT3:IF BX GT 00H ;34行
IDIV SCALE
MOV RESULT,AL
ELSE
DIV SCALE
MOV RESULT,AL
ENDIF
RET
NEXT: MOV AH,4CH
INT 21H
CODE ENDS
END START