-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patha.asm
227 lines (213 loc) · 3.04 KB
/
a.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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
org 0x7c00
jmp 0x0000:start
data:
lcyan db 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11
dblue db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
fase db '00101100111',0
start:
call reset_registers
call iniciar_video
mov si, fase
.for:
lodsb
loop .for
push si
pop si
cmp al,'0'
jne l11
mov si, lcyan
jmp l11f
l11:
mov si, dblue
l11f:
call drawImg1
;lodsb
;cmp al,'0'
;jne l12
; mov si, lcyan
; jmp l12f
;l12:
;mov si, dblue
;l12f:
;call drawImg2
;pop cx
;inc cx
jmp end
reset_registers:
xor ax, ax
mov ds, ax
mov cx, 1
mov dx, ax
mov si, dblue
ret
iniciar_video:
mov ah, 4FH
mov al, 02H
mov bx, 10H
int 10h
ret
start_vivi:
mov al, 13h
mov ah, 0
int 10h
ret
writePixel:
mov ah, 0ch
int 10h
ret
drawImg1: ;antes de usar, precisamos dizer quem s1 vai pegar
;call start_vivi
mov dx, 0
.for1:
cmp dl, 8
je .endfor1
mov cx, 0
.for2:
cmp cl, 8
je .endfor2
lodsb
call writePixel
inc cx
jmp .for2
.endfor2:
inc dx
jmp .for1
.endfor1:
ret
drawImg2: ;antes de usar, precisamos dizer quem s1 vai pegar
call start_vivi
mov dx, 0
.for1:
cmp dl, 4
je .endfor1
mov cx, 4
.for2:
cmp cl, 8
je .endfor2
lodsb
call writePixel
inc cx
jmp .for2
.endfor2:
inc dx
jmp .for1
.endfor1:
ret
drawImg3: ;antes de usar, precisamos dizer quem s1 vai pegar
call start_vivi
mov dx, 4
.for1:
cmp dl, 8
je .endfor1
mov cx, 4
.for2:
cmp cl, 8
je .endfor2
lodsb
call writePixel
inc cx
jmp .for2
.endfor2:
inc dx
jmp .for1
.endfor1:
ret
drawImg4: ;antes de usar, precisamos dizer quem s1 vai pegar
call start_vivi
mov dx, 4
.for1:
cmp dl, 8
je .endfor1
mov cx, 4
.for2:
cmp cl, 8
je .endfor2
lodsb
call writePixel
inc cx
jmp .for2
.endfor2:
inc dx
jmp .for1
.endfor1:
ret
drawImg5: ;antes de usar, precisamos dizer quem s1 vai pegar
call start_vivi
mov dx, 4
.for1:
cmp dl, 8
je .endfor1
mov cx, 4
.for2:
cmp cl, 8
je .endfor2
lodsb
call writePixel
inc cx
jmp .for2
.endfor2:
inc dx
jmp .for1
.endfor1:
ret
drawImg6: ;antes de usar, precisamos dizer quem s1 vai pegar
call start_vivi
mov dx, 4
.for1:
cmp dl, 8
je .endfor1
mov cx, 4
.for2:
cmp cl, 8
je .endfor2
lodsb
call writePixel
inc cx
jmp .for2
.endfor2:
inc dx
jmp .for1
.endfor1:
ret
drawImg7: ;antes de usar, precisamos dizer quem s1 vai pegar
call start_vivi
mov dx, 4
.for1:
cmp dl, 8
je .endfor1
mov cx, 4
.for2:
cmp cl, 8
je .endfor2
lodsb
call writePixel
inc cx
jmp .for2
.endfor2:
inc dx
jmp .for1
.endfor1:
ret
drawImg8: ;antes de usar, precisamos dizer quem s1 vai pegar
call start_vivi
mov dx, 4
.for1:
cmp dl, 8
je .endfor1
mov cx, 4
.for2:
cmp cl, 8
je .endfor2
lodsb
call writePixel
inc cx
jmp .for2
.endfor2:
inc dx
jmp .for1
.endfor1:
ret
end:
jmp $
times 510 - ($ - $$) db 0
dw 0xaa55