-
Notifications
You must be signed in to change notification settings - Fork 0
/
carro.asm
156 lines (122 loc) · 2.79 KB
/
carro.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
.model small
.stack 100h
.data
x dw "$"
y dw "$"
length dw "$"
color db "$"
grosor db "$"
fondo db "$"
.code
mov ax,@data
mov ds,ax
MOV AH,00
MOV AL,12H
INT 10H
;call readkey()
;Parametros basicos para dibujo
; mov x,01h
; mov y,01h
; mov length,000Fh
; mov color,00Fh
; mov grosor,03h
; mov fondo,04h
call setup()
dibujar_top_line:
mov length,0Fh ;Dibujo de la linea superior
mov x,70h
call draw_horizontal_top_line()
inc y
dec grosor
jnz dibujar_top_line
mov ah,4ch
int 21h
;Preparacion para dubujar la linea inferior
;mov grosor,03h
;mov x,00h
;mov y,01DFH
;dibujar_bot_line: ;Dibujo de la linea infierior
; mov x,00h
; mov length,0027Fh
; call draw_horizontal_bot_line()
; dec y
; dec grosor
; jnz dibujar_bot_line
;
; mov grosor,03h
;
;dibujar_right_line: ;Dibujo de la linea derecha
; mov y,01E0H
; mov length,1E0H
; call draw_vertical_right_line()
; dec x
; dec grosor
; jnz dibujar_right_line
;
; mov grosor,03h
; mov x,00h
;dibujar_left_line: ;Dibujo de la linea izquierda
; mov y,01E0H
; mov length,1E0H
; call draw_vertical_left_line()
; inc x
; dec grosor
; jnz dibujar_left_line
;
;**************** METODOS ****************
setup() proc
;Preparacion de la pantalla
MOV AH,00
MOV AL,12H
INT 10H
;call readkey()
;Parametros basicos para dibujo
mov x,70h
mov y,50h
mov length,0Fh
mov color,00Fh
mov grosor,0bh
; mov fondo,04h
; call setColor()
ret
endp
draw_horizontal_top_line() proc
loop_dibujo_top:
call drawpixel()
inc x
dec length
jnz loop_dibujo_top
ret
endp
draw_horizontal_bot_line() proc
loop_dibujo_bot:
call drawpixel()
inc x
dec length
jnz loop_dibujo_bot
ret
endp
draw_vertical_right_line() proc
loop_dibujo_right:
call drawpixel()
dec y ;Arriba
dec length
jnz loop_dibujo_right
ret
endp
draw_vertical_left_line() proc
loop_dibujo_left:
call drawpixel()
dec y ;Arriba
dec length
jnz loop_dibujo_left
ret
endp
drawpixel() proc
mov cx, x ; column
mov dx, y ; row
mov al, color ; white
mov ah, 0ch ; put pixel
int 10h
ret
endp