miércoles, 22 de noviembre de 2017
programa que mueve dos lineas:
Autores:
Aylin Salazar Alvares
Guillermo Sanchez Castillo
Jose Roberto Jimenez Flores
Alberto Sanchez Fonseca
Jose Luis Vanoye Bocanegra
(mueve la linea con la tecla I (izquierda), D (derecha)
.model small ;Se define el modelo de la memoria.
;===========================================================================
; DECLARACION DEL SEGMENTO DE PILA
;===========================================================================
.stack 100 ;Se define el tama?o de la pila
;===========================================================================
; DECLARACION DEL SEGMENTO DE DATOS
;===========================================================================
.data ;define variables
y1 dw 180 ;Coordenadas l?nea 1, Variable de tipo write
x01 dw 320 ;Coordenadas l?nea 1, Variable de tipo write
y01 dw ? ;Coordenadas linea 1, Variable de tipo write
x02 dw 350 ;Coordenadas linea 2, Variable de tipo write
y02 dw ? ;Coordenadas linea 2, Variable de tipo write
color1 db 0ch ;Color de linea 1, Variable de tipo byte
color2 db 0ah ;Color de linea 2, Variable de tipo byte
negro db 00h ;Color de fondo
;===========================================================================
; DECLARACION DEL SEGMENTO DE CODIGO
;===========================================================================
.code ;Codigo
.startup ;Inicio
mov ax,@data ;Direccionamiento segmento de datos
mov ds,ax ;Se guarda lo que esta en ax en el segmento datos
push ds ;Coloca el contenido en la pila
pop es ;Llama el contenido de la pila
mov ax,0600h ;Direccionamiento segmento de datos
mov bh,00h ;BH:Registro de base
mov cx,0000h ;Registro en el mensaje
mov dx,314fh ;Registro de base
int 10h ;Interrupcion del BIOS
mov ah,0h ;Mostrar el numero digitado.
mov al,12h
int 10h
call dpixel
;===========================================================================
; DECLARACION DEL PROCEDIMIENTO KEY
;===========================================================================
key:
mov ah,08h ;AH:Acumulador
int 21h ;Interrupcion del DOS
cmp al,27 ;CMP:Comparacion entre dos operandos, funciona como una resta con la diferencia de que no afecta el destino unicamente los indicadores.
je salir ;Je:Salta si es igual a el procedimiento salir.
cmp al,100 ;'d' minuscula
je der ;Salta a derecha
cmp al,105 ;'i' minuscula
je izq ;Salta a izquierda
jmp key ;Salta al procedimiento key
;===========================================================================
; DECLARACION DEL PROCEDIMIENTO DERECHA
;===========================================================================
der:
call derecha ;Manda a llamar el procedimiento derecha
jmp key ;Salta al procedimiento key
;===========================================================================
; DECLARACION DEL PROCEDIMIENTO IZQUIERDA
;===========================================================================
izq:
call izquierda ;Manda a llamar el procedimiento izquierda.
jmp key ;Salta al procedimiento key
;===========================================================================
; DECLARACION DEL PROCEDIMIENTO SALIR
;===========================================================================
salir:
call termina ;Manda a llamar el procedimiento terminar.
;===========================================================================
borrow proc ;Pide las coordenadas en y.
mov ax,y1 ;Se guarda lo que esta en ax en la coordenada y1.
mov y01,ax ;Se guarda lo que esta en ax en la coordenada y01.
mov y02,ax ;Se guarda lo que esta en ax en la coordenada y02.
pix1:
mov ah,0ch ;Mostrar el numero digitado.
mov al,negro ;Linea de separacion color negra.
mov cx,x01 ;Registro en el mensaje en la coordenada de la primera linea x01
mov dx,y01 ;Registro de la base en la coordenada de la primera linea y01
int 10h ;Interrupcion del BIOS.
cmp dx,280 ;Coordenadas de movimiento ya sea derecha o izquierda.
je pix2 ;Salta a pedir las coordenadas de linea 2.
inc y01
jmp pix1
pix2:
mov ah,0ch
mov al,negro
mov cx,x02
mov dx,y02
int 10h ;Interrupcion del BIOS
cmp dx,280
je s1
inc y02
jmp pix2
s1:
ret
borrow endp ;Fin del procedimiento borrow.
;===========================================================================
dpixel proc
mov ax,y1
mov y01,ax
mov y02,ax
pixel1:
mov ah,0ch
mov al,color1
mov cx,x01
mov dx,y01
int 10h ;Interrupcion del BIOS
cmp dx,280
je pixel2
inc y01
jmp pixel1
pixel2:
mov ah,0ch
mov al,color2
mov cx,x02
mov dx,y02
int 10h ;Interrupcion del BIOS
cmp dx,280
je sales
inc y02
jmp pixel2
sales:
ret
dpixel endp
;===========================================================================
derecha proc
call borrow
mov ax,y1
mov y01,ax
mov y02,ax
inc x01
inc x02
cmp x02,639
je l1
jmp brinco1
l1:
mov ah,0ch
mov al,color2
mov cx,639
mov dx,y01
int 10h ;Interrupcion del BIOS
cmp dx,280
je l2
inc y01
jmp l1
l2:
mov ah,0ch
mov al,color1
mov cx,0000
mov dx,y02
int 10h
cmp dx,280
je s2
inc y02
jmp l2
brinco1:
call dpixel
s2:
ret
derecha endp
;===========================================================================
izquierda proc
call borrow
mov ax,y1
mov y01,ax
mov y02,ax
dec x01
dec x02
cmp x01,0000
je l3
jmp brinco2
l3:
mov ah,0ch
mov al,color2
mov cx,000
mov dx,y01
int 10h
cmp dx,280
je l4
inc y01
jmp l3
l4:
mov ah,0ch
mov al,color1
mov cx,639
mov dx,y02
int 10h ;Interrupcion del BIOS
cmp dx,280
je s3
inc y02
jmp l4
brinco2:
call dpixel
s3:
ret
izquierda endp
;===========================================================================
termina proc
mov ah,00h ;le regresa el control a MS-DOS
mov al,03h
int 10h ;Interrupcion del BIOS
.exit ;fin de procedimiento
termina endp
end ;fin del programa
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario