-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpgms13_4.asm
88 lines (73 loc) · 871 Bytes
/
pgms13_4.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
.model small
.stack 100h
.DATA
new db 0ah,0dh,'$'
.code
main proc
mov ax,@data
mov ds,ax
;mov ah,0
;mov al,3
;int 10h
; get cusor position
xor ax,ax
mov ah,3
xor bh,bh
int 10h
XOR DH,DH
MOV AX,DX
call OUTDEC
mov ah,9
lea dx,new
int 21h
MOV AH,3
XOR BH,BH
INT 10H
XOR DL,DL
MOV AL,DH
XOR AH,AH
CALL OUTDEC
mov ah,4ch
int 21h
main endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
OUTDEC PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
OR AX,AX ;ax<0
JGE END_IF1
PUSH AX
MOV DL,'-'
MOV AH,2
INT 21H
POP AX
NEG AX
END_IF1:
;GET DECIMAL DIGITS
XOR CX,CX
MOV BX,10D
REPEA:
XOR DX,DX
DIV BX
PUSH DX;remainder
INC CX
;UNTIL
OR AX,AX
JNE REPEA
; CONVERT DIGIT TO CHARACTER AND PRINT
MOV AH,2
PRINT_LOOP:
POP DX
ADD DL,30H
INT 21H
LOOP PRINT_LOOP
POP AX
POP BX
POP CX
POP DX
RET
OUTDEC ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
end main