Está en la página 1de 2

Pintar_Pixel macro color, posX, posY

;guarda el valor actual de cx y dx en la pila


push cx
push dx

;Pinta el pixel
mov ch, 0h
mov cl, posX
mov dh, 0h
mov dl, posY
mov ah, 0ch
mov al, color
int 10h

;recupera los valores de cx y dx de la pila


pop dx
pop cx
endm

Pintar_Cuadrado macro x_inicial, y_inicial, color


;guarda el valor actual de cx y dx en la pila
push cx
push dx

mov ch, 0h
mov cl, x_inicial
mov dh, 0h
mov dl, y_inicial

ciclo:

Pintar_Pixel color, cl, dl


inc cl

cmp cl, 25
jne ciclo

mov cl, x_inicial


inc dl
cmp dl, 25
jne ciclo

;recupera los valores de cx y dx de la pila


pop dx
pop cx
endm

.model small
.stack 128
.data

;Definicion de variables

col db 0
x0 db 0
y0 db 0

.code
.startup
main proc
;Configuracion de modo video
mov ax,0013h
int 10h

;Pinta un cuadrado con origen en (x0,y0) de color 125


mov x0, 0h
mov y0, 0h
mov col, 125
Pintar_Cuadrado x0, y0, col

;presiona una tecla para salir


mov ah,10h
int 16h

;regresar a modo texto


mov ax,0003h
int 10h

;salir del programa


mov ax,4c00h
int 21h
ret
main endp

end