Ensamblador Porgrama
Enviado por esaul161 • 4 de Diciembre de 2013 • 373 Palabras (2 Páginas) • 269 Visitas
Lean este programa:
-Realice un programa en lenguaje ensamblador que dibuje en modo gráfico una línea vertical de
2 píxel de grosor (2 colores diferentes) y la desplace hacia la izquierda o a la derecha, 1
píxel, una vez pulsado el cursor correspondiente (S
ó U). Debe considerar que al llegar a los extremos de la pantalla, por ejemplo al extremo
izquierdo, si se pulsa el cursor que implique mover la línea hacia la izquierda (S),
aparecerá una línea vertical de 1 píxel en el extremo derecho
(color más a la izquierda) y la otra del mismo grosor en el extremo izquierdo
(color más a la derecha) y si se pulsa ese mismo cursor nuevamente aparecerá
la línea de 2 píxeles (colores originales) de grosor en el extremo derecho. El programa
termina si se pulsa la tecla ESC.
He intentado hacerlo de varias formas pero me he enredado a la hora de simular el
desplazamiento de la linea que dibujo, un pixel a la derecha o a la izquierda. Uso la instrucción
'shr' para rotar bits pero igual me enredo; pues hay que hacer varias validaciones las cuales me
pierden por completo. Me pregunto si alguno de ustedes conoce una manera mas facil de darle
solucion al problema.
.model small
.stack
.data
y1 dw 180
x01 dw 320 ;coordenadas línea 1
y01 dw ?
x02 dw 322 ;coordenadas linea 2
y02 dw ?
color1 db 0ch
color2 db 0ah
negro db 00h
.code
.startup
mov ax,@data
mov ds,ax
push ds
pop es
mov ax,0600h
mov bh,00h
mov cx,0000h
mov dx,314fh
int 10h
mov ah,0h
mov al,12h
int 10h
call dpixel
key:
mov ah,08h
int 21h
cmp al,27
je salir
cmp al,100 ;'d' minúscula
je der
cmp al,105 ;'i' minúscula
je izq
jmp key
der: call derecha
jmp key
izq: call izquierda
jmp key
salir: call termina
;.................................................................
borrow proc
mov ax,y1
mov y01,ax
mov y02,ax
pix1:
mov ah,0ch
mov al,negro
mov cx,x01
mov dx,y01
int 10h
cmp dx,280
je pix2
inc y01
jmp pix1
pix2:
mov ah,0ch
mov al,negro
mov cx,x02
mov dx,y02
int 10h
cmp dx,280
je s1
inc y02
jmp pix2
...