Sei sulla pagina 1di 20

ESCUELA SUPERIOR POLITCNICA DEL LITORAL

Facultad de Ingeniera en Electricidad y Computacin


Laboratorio de Microprocesadores
Proyecto # 1
Semforo de 2 vas Unidireccionales
Alumno:
Kevin Hurtado Reyes

Paralelo # 6

Fecha de presentacin:
19 de Diciembre de 2014

2014 2 TRMINO

1.- Enunciado del proyecto


En este proyecto se utilizar la mquina virtual para realizar un programa en
base a mens donde se le da al usuario la oportunidad de elegir entre
varias opciones, entre ellas el de mostrar el nombre del alumno y el
paralelo, el nmero de matrcula, la ejecucin del proyecto y el retorno a
MS-DOS. El desarrollo del proyecto consiste en el despliegue visual de dos
semforos, que tiene dos funcionamientos, Modo Da y Modo Noche, el
primero muestra el funcionamiento normal ambos, donde se indica el
tiempo que deben permanecer encendidos cada una de las luces, el
segundo modo hace que la luz amarilla para el semforo principal, y la luz
roja del semforo transversal enciendan de manera intermitente a una
frecuencia dada.

2.- Diagrama de Bloques

3.- Diagrama de Flujo funcional del Programa principal y de las subrutinas


Programa Principal:

Subrutinas

4.- Descripcin del algoritmo o estrategia utilizada.


1. Se definen las variables que contienen cadenas de caracteres que se
imprimirn en pantalla por medio de funciones de MS-DOS, as como
variables numricas que servirn para los lazos de control.
2. Se define el modo de pantalla de texto donde se mostrar lo
requerido en el proyecto, por medio de la funcin 00H de ROMBIOS,
y se asigna el color azul para el fondo y blanco para caracteres (en
BH) as como los lmites de pantalla (CX,DX) con la funcin 06H de
ROMBIOS, para luego imprimir en pantalla el men, por medio de la
subrutina DISPLAY que usa en su estructura la funcin 09H de MSDOS, en la posicin del cursor
3. La instanciacin de la posicin del cursor se la realiza por medio de
la subrutina PCURSOR, que en su estructura tiene a la funcin 02H
de ROMBIOS, la cual posicionar en el lugar que deseemos
asignndole los valores que necesitemos en las variables FILA y
COLUMNA.
4. El programa esperar a ingreso por teclado por medio de la funcin
07H de MS-DOS, tal que si se ingresa el 1 el programa va a la
etiqueta MENU1, ingresa el 2 va al MENU2, ingresa 3 va al
MENU3, ingresa 4 va al MENU4, caso contrario vuelve a preguntar
por otro carcter.
5. En men uno, el programa cambia los atributos de la pantalla,
haciendo que tenga un fondo amarillo y letras negras, tal que
imprime en pantalla los Nombres y Apellidos, as como el Paralelo,
de forma centrada, con los valores indicados en FILA y COLUMNA,
espera por ingreso de la letra M para retornar al men Principal
6. En men dos, el programa nuevamente cambia el color del fondo a
blanco y a letras azules, en esta imprime el nmero de matrcula, y
as mismo espera por ingreso de la letra M para retornar al Men.
7. En men tres, es donde se desarrollar el programa del proyecto
asignado, donde inicialmente se presentar un nuevo men, donde
se podr seleccionar entre Modo Da, Modo Noche, y retornar al
men principal, para esto el programa, mediante la funcin 07H de
INT21, espera ingreso por teclado de los nmeros correspondientes
(1 o 2) y para retornar a men M o m.
8. Si se ingresa 1 se muestra en una pantalla de color negro, un marco
principal indicando la operacin en la que se encuentra el sistema,
tambin se muestran dos semforos, indicando que el de la izquierda

es el de la Av. Quito, mientras que el de la derecha es de la Av.


Gmez Rendn, por medio de impresin en pantalla de cadenas.
9. Los semforos consisten en un rectngulo blanco que contiene
rectngulos ms pequeos, de colores Rojo, Amarillo y Verde
respectivamente, que representarn los colores de las luces del
semforo. Por medio de las subrutinas, blanco, verde, amarillo y rojo,
tal que si el valor de AL es 00H los colores mostrados son oscuros
(apagados) caso contrario se muestran colores claros (encendidos).
10. Inicialmente en el semforo principal (Av. Quito) est activada la luz
verde, mientras que en el secundario (Av. Gmez Rendn) est
activa la luz Roja, esto permanecer durante 15s, lo que es posible
mediante el uso de retardos anidados, implementados en la funcin
DELAY que produce una demora de 1s, y por medio de un lazo que
se repite 15 veces, se tiene aprox. 15s.
11. Luego de esto se apagar la luz verde, y encender la luz amarilla en
el semforo primario durante 2 segundos, que se los obtiene como
se mencion en el prrafo anterior.
12. Despus se encender la luz roja en el semforo principal, y la luz
roja del semforo secundario se apagar y encender la luz verde.
Esto suceder durante 15s, para luego mostrar solamente la luz
amarilla en el semforo secundario durante 2s.
13. En el Modo Noche, se imprimen de manera similar al Modo Da los
semforos y sus respetivos indicadores, varia la forma de operacin,
donde se encendern de manera intermitente las luces amarilla y
roja para los semforos en Av. Quito y Av. Gmez Rendn
respectivamente.
14. En el tercer punto de este men secundario da la opcin de
presionar m o M para retornar al men principal, estos e lo logra
usando la funcin 07H de MS-DOS como se ha mencionado antes.
15. En el cuarto punto del men principal, al presionar la tecla 4 se
termina el programa y se devuelve el control al MS-DOS.

5.- Listado del programa fuente en lenguaje ensamblador con comentarios


en las lneas de cdigo que considere fundamentales
TITLE SEMAFORO
.MODEL SMALL
.STACK 100H
;Creacion de las variables a usarse
.DATA
MENU

DB
DB
DB
DB
DB
DB
DB

NOMBRE
MATRIC
SUBMENU

DIA_MSJ
NOCHE_MSJ
AV_1
AV_2

DB
DB
DB
DB
DB
DB
DB
DB
DB

;Titulo del proyecto

'MICROPROCESADORES',10,13,10,13
'MENU PRINCIPAL',10,13,10,13
'1. Nombre del Estudiante y Paralelo.',10,13,10,13
'2. Numero de Matricula.',10,13,10,13
'3. Proyecto #01 (SEMAFORO).',10,13,10,13
'4. Regresar a MSDOS.',10,13,10,13
'Selecciona una opcion: $'
DB
'Nombre: Kevin Hurtado Reyes',10,13,10,13
'
Paralelo: 6 $'
'Matricula: 201113851 $'
'SEMAFORO',10,10,13
'(1)---> DIA ',10,10,13
'(2)---> NOCHE ',10,13,10,13
'Seleccione el modo: $'
DB
'MODO DIA$'
'MODO NOCHE$'
'AV. QUITO$'
'AV. G.RENDON$'

.CODE
;Definicion de macros a utilizar durante la ejecucion del programa
LPANT MACRO FIL_0, COL_0, FIL_F, COL_F, COLOR
MOV AH,06H ;funcion de la interrrupcion del BIOS que activa el recorrido
MOV AL,00H
;desplazamiento por toda la pantalla
MOV BH,COLOR
;selecciona color
MOV CH,FIL_0 ;indica fila superior
MOV CL,COL_0 ;indica columna izquierda
MOV DH,FIL_F ;indica fila inferior
MOV DL,COL_f ;indica columna derecha
INT 10H
;interrupcion del BIOS
ENDM
;fin de la macro lpant
; -------------------------------------------------------CURSOR
MACRO
FILA,COL
MOV
AH,2
;fija posicion cursor
MOV
BH,0
;pgina 0
MOV
DH,FILA
;se escoje la fila
MOV
DL,COL
;se escoje la columna
INT
10H
;interrupcion del BIOS
ENDM
; -------------------------------------------------------DISPLAY
MACRO CADENA
MOV
AH,9
;peticion para desplegar en pantalla
LEA
DX, CADENA
;se carga la direccion efectiva de la cadena
INT
21H
;se llama a la interrupcion del DOS
END

;Listado de Subrutinas
;Subrutina DELAY de 500ms
DELAY PROC NEAR
MOV CX,10000
LT1:
MOV BH,255
LT2:
MOV BL,255
LT3:
NOP
;se realiza un lazo 255 veces
NOP
DEC BL
CMP BL,0
JNZ LT3
;si BL llego a cero, continua a la siguiente linea, caso contrario repite el
lazo LT3
DEC BH
CMP BH,0
JNZ LT2
LOOP LT1
;decrementa CX en 1 y repite el lazo LT1 hasta que CX=0
RET
DELAY ENDP
;----------------------------------------------------------------------------------------------------------------------;Subrutina SALIR
SALIR
PROC NEAR
MOV
AX,4C00H
INT
21H
RET
SALIR
ENDP
;-----------------------------------------------------------------------------------------------------------------------------;Programa Principal
MAIN
PROC
FAR
MOV
AX, @DATA
;migracion de datos a AX
MOV
DS, AX
MOV
ES, AX
INICIO:
LPANT 0,0,24,79,0EH
;limpia toda la pantalla
CURSOR 6,20
;coloca el cursor
DISPLAY MENU
PIDEOP:
INT
CMP
JNZ

MOV
21h
AL,'1'
OP2

AH,7

;espera el ingreso de caracter, no lo muestra


;se compara si se presiono '1'
;si el caracter ingresado es diferente a 1, se verifica si es

la opcion 2
LPANT 0,0,24,79,01EH
CURSOR
5,15
DISPLAY NOMBRE
;se muestra el autor
REG1:
CMP
JZ
CMP
JZ
JMP

MOV
AH,7
INT
21H
AL,'M'

INICIO
AL,'m'
INICIO
REG1

OP2:
CMP
JNZ
OP3
LPANT 0,0,24,79,01EH
CURSOR
DISPLAY MATRIC

AL,'2'
12,30

;espera el ingreso de caracter, no lo muestra


;se verifica si se desea regresar al menu principal

REG2:
CMP
JZ
CMP
JZ
JMP

INICIO
AL,'m'
INICIO
REG1

JZ
CMP
JZ

OP3:
PROYECTO
AL,'4'
FIN

MOV
AH,7
INT
21H
AL,'M'

CMP

;espera el ingreso de caracter, no lo muestra


;se verifica si se desea regresar al menu principal

AL,'3'
;SALIR

JMP
PIDEOP
vuelve a solicitar el ingreso
PROYECTO:
CURSOR
8,30
DISPLAY SUBMENU
MOV
AH,7
INT
21h
CMP
AL,'1'
JZ
DIA
CMP
AL,'2'
JZ
NOCHE
CMP
AL,'M'
JZ
INICIO
JMP
PROYECTO

;PROYECTO

;si se presion un botn diferente a los establecidos se

LPANT 0,0,24,79,01EH
;se muestra el submen
;Ingreso de caracter
;DIA
;NOCHE
;MENU PRINCIPAL
;vuelve a solicitar

NOCHE:
LPANT 0,0,25,80,00H ; NEGRO, fondo negro
LPANT 4,16,22,32,010H ; AZUL, fondo azul
LPANT 4,48,22,64,010H ; AZUL ,fondo azul
;SEMAFORO_1
LPANT 5,17,9,31,000H ; ROJO APAGADO, todo negro
LPANT 11,17,15,31,0E0H ; AMARILLO PRENDIDO, fondo amarillo
LPANT 17,17,21,31,000H ; VERDE APAGADO, todo negro
;SEMAFORO_2
LPANT 5,49,9,63,040H ; ROJO PRENDIDO, fondo rojo
LPANT 11,49,15,63,000H ; AMARILLO APAGADO, todo negro
LPANT 17,49,21,63,000H ; VERDE APAGADO, todo negro
;SE MUESTRA EL TITULO
LPANT 0,31,0,49,0F4H
CURSOR 0,36
DISPLAY NOCHE_MSJ
;se rotula las calles
LPANT 2,17,2,31,0F0H
CURSOR 2,20
DISPLAY AV_1
LPANT 2,48,2,64,0F0H
CURSOR 2,50
DISPLAY AV_2
CALL DELAY
;SEMAFORO_1
LPANT 5,17,9,31,00H ; ROJO APAGADO
LPANT 11,17,15,31,00H ; AMARILLO APAGADO
LPANT 17,17,21,31,00H ; VERDE APAGADO

;SEMAFORO_2
LPANT 5,49,9,63,00H ; ROJO APAGADO
LPANT 11,49,15,63,00H ; AMARILLO APAGADO
LPANT 17,49,21,63,00H ; VERDE APAGADO
CALL DELAY
MOV AH, 6
MOV DL, 0FFH
tecla
INT 21H
CMP AL,'d'
JZ DIA
CMP AL,'M'
JZ INICIO
CMP
AL,'m'
JZ
INICIO
JMP NOCHE

; Espera por tecla sin interferencia del DOS


;se selecciona entrada por teclado, ZF=1 si no aprieta

;cambiar a modo DIA

;continua simulacion de semaforo

DIA:
LPANT 0,0,25,80,0B0H ; CELESTE(DIA)
LPANT 4,16,22,32,010H ; AZUL
LPANT 4,48,22,64,010H ; AZUL
;SEMAFORO_1
LPANT 5,17,9,31,040H ; ROJO PRENDIDO
LPANT 11,17,15,31,00H ; AMARILLO APAGADO
LPANT 17,17,21,31,00H ; VERDE APAGADO
;SEMAFORO_2
LPANT 5,49,9,63,00H ; ROJO APAGADO
LPANT 11,49,15,63,00H ; AMARILLO APAGADO
LPANT 17,49,21,63,020H ; VERDE PRENDIDO
;SE MUESTRA EL TITULO
LPANT 0,31,0,49,0F4H
CURSOR 0,36
DISPLAY DIA_MSJ
;se rotula las calles
LPANT 2,17,2,31,0F0H
CURSOR 2,20
DISPLAY AV_1
LPANT 2,48,2,64,0F0H
CURSOR 2,50
DISPLAY AV_2
;retardo de 15 segundos
MOV AH,30
LAZO1:
CALL DELAY
DEC
AH
CMP AH,0
JNZ
LAZO1
MOV AH, 6
; Espera por tecla
MOV DL, 0FFH; ZF=1 si no apreta tecla
INT 21H
CMP AL,'n'
JZ NOCHE
CMP AL,'M'
JZ INICIO
CMP AL,'m'

JZ

INICIO

LPANT 5,17,9,31,040H ; ROJO PRENDIDO


LPANT 11,17,15,31,00H ; AMARILLO APAGADO
LPANT 17,17,21,31,00H; VERDE APAGADO
LPANT 5,49,9,63,00H ; ROJO APAGADO
LPANT 11,49,15,63,0E0H ; AMARILLO PRENDIDO
LPANT 17,49,21,63,00H; VERDEAPAGADO
;2 segundos de duracion
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
MOV AH, 6
; Espera por tecla
MOV DL, 0FFH; ZF=1 si no apreta tecla
INT 21H
CMP AL,'n'
JZ NOCHE
CMP AL,'M'
JZ INICIO
CMP AL,'m'
JZ INICIO
LPANT 5,17,9,31,00H ; ROJO APAGADO
LPANT 11,17,15,31,00H ; AMARILLO APAGADO
LPANT 17,17,21,31,020H; VERDE PRENDIDO
LPANT 5,49,9,63,040H ; ROJO PRENDIDO
LPANT 11,49,15,63,00H ; AMARILLO APAGADO
LPANT 17,49,21,63,00H; VERDE APAGADO
;retardo de 15 segundos
MOV AH,30
LAZO2:
CALL DELAY
DEC
AH
CMP AH,0
JNZ
LAZO2
MOV AH, 6
MOV DL, 0FFH
INT 21H
CMP AL,'n'
JZ NOCHE
CMP AL,'M'
JZ INICIO
CMP
AL,'m'
JZ
INICIO

; Espera por tecla


; ZF=1 si no apreta tecla

LPANT 5,17,9,31,00H ; ROJO APAGADO


LPANT 11,17,15,31,0E0H ; AMARILLO ENCENDIDO
LPANT 17,17,21,31,00H; VERDE APAGADO
LPANT 5,49,9,63,040H ; ROJO PRENDIDO
LPANT 11,49,15,63,00H ; AMARILLO APAGADO

LPANT 17,49,21,63,00H; VERDE APAGADO


;2 segundos de duracion
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
MOV AH, 6
MOV DL, 0FFH
INT 21H
CMP AL,'n'
JZ NOCHE
CMP AL,'M'
JZ INICIO
CMP AL,'m'
JZ INICIO
JMP DIA

; Espera por tecla


; ZF=1 si no apreta tecla

;continua simulacion de semaforo

FIN:
MAIN
END

CALL
ENDP

SALIR

MAIN

6.-Conclusiones

Se pudo aplicar las funciones de ROMBIOS para la asignacin de atributos


de color para el fondo de pantalla y para letras, lo que permiti que la
manera de mostrar los datos sea ms amigable al usuario, y en base a esto
se pudo tambin construir los semforos que ilustran el funcionamiento de
este proyecto, usando colores claros y oscuros para simular encendido o
apagado de sus luces.
Se logr comprender la manera de recibir datos ingresados teclado, que
permiti el control del programa, para ingreso y salidas de los mens, as
como confirmaciones de estas operaciones, considerando las diferencias
de letras minsculas y maysculas, tambin se pudo diferenciar las
instrucciones que esperan por ingreso por teclado y las que solo
comprueban estado.
Fue posible la generacin de retardos de tiempo en base a lazos anidados,
que por medio de las instrucciones de saltos condicionales, se logr el
control de las variables decrementadas durante esta operacin, estos
retardos fueron importantes para esperar durante 15s y 2s tiempos
fundamentales del encendido de las luces del semforo.
Se comprendi y utilizaron los punteros del programa para lograr imprimir
cadenas de caracteres por medio de la funcin 09H de MS-DOS, as como

para la modificacin de variables en memoria, dado que usando la


instruccin MOV directamente, esto no es posible.

7.- Recomendaciones

Se debe tener en cuenta el offset de las variables a fin de trabajar


correctamente con los punteros del microprocesador, en especial con los
punteros SI y DI, los cuales permiten hacer el almacenamiento o
transferencia de informacin de memoria a memoria.
Se debe tener cuidado cuando se desea colocar colores a los atributos, ya
sea para fondos de pantallas o caracteres o dems, ya que para dicho
objetivo existe un byte para lograrlo, basado en los colores rojo azul y verde
e implementando combinaciones entre s para lograr algn otro color,
adems existe el negro que viene dado por default.
ROMBIOS Y MSDOS permiten la impresin en pantalla de caracteres
dados por sus cdigos ASCII almacenados en memoria, los mismos que se
puede acceder por teclado y utilizando las directivas o funciones
apropiadas, recordando que para realizar una misma accin no
necesariamente utilizan la misma funcin, as que se debe conocer las
mismas para utilizarlas de forma correcta.

9.- Pantallazos del programa en ejecucin


Men:

Opcin 1:

Opcin 2:

Opcin 3:

Potrebbero piacerti anche