-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathP210y.asm
132 lines (109 loc) · 2.15 KB
/
P210y.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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
assume cs:code, ds:data
datar segment
dd 1,22,333,4444,55555,6,7,8,9
datar ends
data segment
db 20 dup (0)
data ends
code segment
start: mov bx,data
mov ds,bx
mov bx,datar
mov es,bx
mov di,0
mov si,0
mov cx,5
mov dl,1
mov dh,1
s: push dx
mov ax,es:[di]
mov dx,es:[di+2]
add di,4
call dtoc
pop dx
push cx
mov cl,2
call show_str
pop cx
add dl,10
loop s
mov ax,4c00h
int 21h
dtoc: push cx
push di
push si
mov cx,0
mov di,0
dtoc1: mov bx,10
call divdw
add bx,30h
push bx
inc di
mov cx,dx
jcxz dxz
jx: jmp dtoc1
dxz: mov cx,ax
jcxz allz
jmp jx
allz: mov cx,di
zl: pop bx
mov ds:[si],bl
inc si
loop zl
mov ds:[si],0
pop si
pop di
pop cx
ret
divdw: push cx
mov cx,ax
mov ax,dx
mov dx,0
div bx
push ax
mov ax,cx
div bx
mov bx,dx
pop dx
pop cx
ret
show_str: push es
push dx
push cx
push ax
push bx
push si
push di
mov si,0
mov di,0
mov ax,0b800h
mov es,ax
mov al,0A0h
inc dh
mul dh
mov bx,ax
mov al,2
inc dh
mul dl
add ax,bx
mov bx,ax
mov ah,cl
l: mov al,ds:[si]
mov es:[bx+di],al
mov es:[bx+di+1],ah
add si,1
add di,2
mov cl,ds:[si]
mov ch,0
jcxz r
jmp l
r: pop di
pop si
pop bx
pop ax
pop cx
pop dx
pop es
ret
code ends
end start