Sunteți pe pagina 1din 23

ESCUELA SUPERIOR POLITCNICA DEL LITORAL FACULTAD DE INGENIERIA EN ELECTRICIDAD Y COMPUTACIN

[Fecha]

LABORATORIO DE MICROPROCESADORES
Prctica #4:

El Microprocesador Bsico 8086/8088 Arquitectura Interna


Profesor:

Ing. Hugo Villavicencio


REALIZADO POR:

Natalia Bonifaz Montaguano Maricela Elaje Acevedo


PARALELO: 5 Grupo: #2 Fecha de presentacin: 20/11/2013

Prctica #4
El microprocesador bsico 8086/8088 Arquitectura interna
OBJETIVOS Limpiar pantalla de texto. Posicionar cursor en pantalla de texto de la PC. Visualizar caracteres en pantalla. Interactuar con el teclado ASCII de la PC. Definir atributo de colores en pantalla de texto.

ENUNCIADO DE LA PRCTICA En esta prctica trabajamos con CODEVIEW (programa con el que ya hemos trabajado en la prctica pasada) as como con una pantalla ms dinmica del programa MSDOS la cual nos muestra color en su interfaz. En el primer ejercicio seguimos instrucciones para analizar resultados de lo que ejecutamos lnea a lnea, mientras que en los dos restantes tuvimos que analizar la forma en la que se poda editar detalles de los cdigos descritos en el ejercicio, as como editar los colores que se presentan en el interfaz de la pantalla o el texto que se presenta en la misma.

EJERCICIO 5:

Edite y ensamble P5. ;********************************************************************** ************ .MODEL SMALL .STACK 100H .DATA

MSJ ',13,10

DB 'Funcion 0EH de BIOS visualiza un solo caracter: se ejecuta con INT 10H

DB 'A continuacion usando la funcion 0EH de BIOS se imprimen diez caritas negras',13,10,'$' MSJ1 DB 10,13,'La funcion 10H de BIOS espera por tecla : se ejecuta con INT 16H ',13,10 DB 'Para salir presione cualquier tecla...',13,10,'$' .CODE inicio: MOV AX,@DATA MOV DS,AX LEA DX, MSJ

MOV AH, 09h;funcion 09h de la interrupcin 21h de MSDOS INT 21H

MOV CX,10 LZO: MOV AL,02H; ascii de carita negra MOV AH,0EH; exhibe en pantalla de texto un carcter INT 10H; ejecuta funcin 0EH de BIOS

LOOP LZO MOV AL,10; avance de lnea LF MOV AH,0EH INT 10H

MOV AL,13;retorno de cursor CR MOV AH,0EH INT LEA 10H DX, MSJ1

MOV AH,09h;funcion 09h de la interrupcin 21h de MSDOS INT 21h

MOV AH,10h ; espera por una tecla INT 16H

MOV AX,4C00h INT 21h

END Inicio

DIAGRAMA DE BLOQUES
DATOS DE ENTRADA: Instrucciones dadas en notepad++ DATOS DE SALIDA: CODEVIEW carga el archivo P5.EXE Presentacin de resultados en MSDOS

DIAGRAMA DE FLUJO INICIO

Crear archivo P5.ASM en notepad++

Definir variables e instrucciones en P5.ASM

Cargar el archivo P5.EXE en CODEVIEW

Cint21 0 Ejecutar con F10 la instruccin INT 21H Cint21 Cint21 + 1

Cint21 > 2

0 1

Cint21 =1

0
Ejecutar View Output Visualizar MSJ1 en MSDOS

1 Visualizar MSJ y MSJ1 en la pantalla MSDOS

Ejecutar View Output Visualizar MSJ en MSDOS

FIN

Visualizar CODEVIEW

DESCRIPCIN Empezamos copiando y guardando el cdigo descrito en el ejercicio en un documento del programa notepad++, lo guardamos con la extensin .ASM y despus desde el interfaz MSDOS mandamos a que se realice el documento con la extensin .LST. Una vez realizado esto ejecutamos el programa, el cual nos enva a una ventana del ya conocido interfaz de CODEVIEW, una vez dentro del programa presionamos F10 hasta llegar a la lnea deseada, en la cual debemos ver lo que ocurre con ella, segn lo que pida el ejercicio. Cabe recalcar que hay que irlo realizando paso a paso, en esta prctica trabajaremos a la par con el interfaz de MSDOS el cual nos mostrara en pantalla los mensajes que se ejecuten en el interfaz de CODEVIEW. Edite y ensamble P5. Ver ms abajo su tarea. ; Programa: P5.ASM ; Descripcin: Familiarizacin con algunas funciones de ROMBIOS y MSDOS. ; La funcin 09H de MSDOS visualiza cadena de caracteres. ; La funcin 0EH de ROMBIOS visualiza un solo carcter. ; Con funcin 0EH se imprimen diez caritas negras en lazo LOOP. ; La funcin 10H de ROMBIOS (se ejecuta con INT 16H) espera hasta que el usuario aprete una tecla.

Cargue P5.EXE en Codeview, con F10 ejecute paso a paso y conteste las preguntas siguientes:

1. Avance paso a paso hasta la primera INT 21H. Ejecute INT 21H. Haga un clic en pestaa Windows, luego un clic en View Output. Tome foto al primer mensaje (MSJ) en pantalla de texto.

Para regresar a CODEVIEW aprete barra de espacio. 2. Visualice la ventana memory1 (segmento de datos del programa), apunte al primer carcter de la cadena MSJ y escriba en su reporte sus 8 primeros caracteres ASCII. 46 75 6E 63 69 6F 6E 20H 3. Ejecute LZO paso a paso hasta salir con CX=0, nuevamente clic en Windows, clic en View Output. 4. Confirme el trabajo de la funcin 0Eh de BIOS y tome foto a la pantalla. Regrese a codeview.

5. Avance paso a paso hasta la segunda INT 21H. Ejecute INT 21H. Haga un clic en pestaa Windows, luego un clic en View Output. Tome foto de mensaje (MSJ1) en pantalla de texto. Regrese a codeview con barra de espacio.

6. Siga paso a paso hasta la ejecucin de la ltima INT 21H. Observe que devuelve el control a MSDOS. El programa termina exitosamente.

7. Salga de CODEVIEW. 8. Ejecute P5.exe y no se olvide de apretar cualquier tecla, tomar foto a la pantalla.

EJERCICIO 6: Edite, ensamble y corra P6. Ver ms abajo su tarea. ;********************************************************************** TITLE Movimiento del Cursor en Pantalla de Texto ;--------------------------------------------------------------------------------------------------------; Definicin de macro SALIR SALIR MACRO MOV AX, 4C00H INT 21H ENDM ;--------------------------------------------------------------------------------------------------------.MODEL SMALL .STACK 32H .DATA FILA DB 12 ; coordenadas COL DB 40 ; del centro de la pantalla MSJ DB 'Se sale con tecla ESC. $' .CODE PP PROC FAR MOV AX, @DATA MOV DS, AX CALL MTXT25X80; modo texto 25x80 CALL LPANT; limpia pantalla fija atributo CALL MENSAJE CALL PCURSOR; posicin inicial del cursor LAZO1: MOV AH, 7 ; funcin 7 de MSDOS INT 21H ; espera hasta que usuario aprete una teclado CMP AL,'N' ; luego compara .... JNE SALTO1

CALL NORTE CALL PCURSOR JMP LAZO1 SALTO1: CMP AL,'S' JNE SALTO2 CALL SUR CALL PCURSOR JMP LAZO1 SALTO2: CMP AL,'O' JNE SALTO3 CALL OESTE CALL PCURSOR JMP LAZO1 SALTO3: CMP AL,'E' JNE SALTO4 CALL ESTE CALL PCURSOR JMP LAZO1 SALTO4: CMP AL,1BH; para salir verifica por tecla ESC. JNE LAZO1 SALIR RET PP ENDP; Fin de PP (Programa Principal) ;********************************************************************* ; LISTADO DE PROCEDIMIENTOS (SUBRUTINAS) ;********************************************************************* MENSAJE PROC NEAR MOV AH, 09H; imprime cadena de caracteres LEA DX, MSJ; direccin inicial de la cadena INT 21H RET MENSAJE ENDP ;********************************************************************* MTXT25X80 PROC NEAR; Modo Texto 25x80 MOV AH, 0; funcin 0 de BIOS MOV AL, 3; el cdigo 3 define modo texto 25 filas 80 columnas INT 10H RET MTXT25X80 ENDP ;********************************************************************** LPANT PROC NEAR; limpia pantalla de texto MOV AX, 0600H; AH=06 funcin de BIOS, AL=00(borra ventana)

MOV BH, 0E8H; atributo-fondo amarillo-caracteres negros MOV CX, 0; fila 0, columna 0 MOV DX, 184FH; fila 18h, columna 4Fh INT 10H RET LPANT ENDP ;********************************************************************* PCURSOR PROC NEAR MOV AH, 2; funcin 2 de BIOS posiciona cursor MOV DH, FILA MOV DL, COL MOV BH, 0 INT 10H RET PCURSOR ENDP ;**************************************************************** NORTE PROC NEAR DEC FILA CMP [FILA],0FFH JNZ SALIRN MOV [FILA],24 SALIRN: RET NORTE ENDP ;********************************************************************* SUR PROC NEAR INC FILA CMP [FILA],25 JNZ SALIRS MOV [FILA],0 SALIRS: RET SUR ENDP ;********************************************************************* ESTE PROC NEAR INC COL NOP NOP NOP RET ESTE ENDP ;********************************************************************* OESTE PROC NEAR DEC COL NOP NOP

NOP RET OESTE ENDP ;********************************************************************** * END PP

DIAGRAMA DE BLOQUES

DATOS DE ENTRADA: Procesando P6.EXE Instrucciones dadas en notepad++

DATOS DE SALIDA: Visualizacin de los resultados

DIAGRAMA DE FLUJO

INICIO

Crear archivo P6.ASM en notepad++

Definir variables e instrucciones en P6.ASM

Cargar el archivo P6.EXE

dir 0; DEC Pcursor; INC Pcursor

dir=NORTE

DEC = DEC-1

DEC < 0H

1
Pcursor= 24H 2

dir=SUR

INC = INC+1

0 0
INC >24H

1
Pcursor = 0H 2

1
dir=ESTE

INC = INC+1

0 1

INC >79H

Pcursor = 0H

1
dir=OESTE

DEC = DEC-1

0
DEC < 0H

FIN

1
Pcursor = 79H 2

DESCRIPCIN En este ejercicio vemos un aspecto diferente del que estamos acostumbrados a trabajar, despus de copiar nuestro cdigo dado en el ejercicio en un documento del programa notepad++, lo guardamos con la extensin .ASM y despus mandamos a que se realice el documento .LST desde el interfaz de MSDOS como hemos realizado en la prctica pasada. Una vez que ejecutamos el programa desde la interfaz de MSDOS vemos que nos aparece un recuadro de color amarillo de fondo con un cursor que se desliza hacia arriba y abajo o hacia la derecha e izquierda segn el comando que enviemos (N=ARRIBA, S=ABAJO, E=DERECHA y O=IZQUIERDA). Al realizar estas instrucciones nos fijamos que cuando el cursor llega al final de la lnea (cuando la movemos de derecha a izquierda o viceversa) regresa al otro extremo de la lnea pero desfasado una lnea ms, lo cual tuvimos que corregir en la prctica, para ellos fuimos al documento del programa notepad++ y editamos lneas de cdigos, las cuales son descritas en una captura de pantalla que se muestra ms adelante.

1. Ejecute P6.EXE y verifique su funcionamiento.

2. Aprete tecla N y observe el movimiento del cursor, aprete S y observe movimiento. 3. Aprete tecla E y observe movimiento, aprete O y observe movimiento. Hay

problemas con el movimiento horizontal del cursor. Verdad? S hay problemas, el cursor cuando est al inicio de la pantalla y se presiona E, el cursor sube a la lnea anterior y si el cursor est al otro extremo del men y a su vez se presiona O, el cursor baja a la siguiente lnea y esto no debera pasar. Al empezar o terminar la pantalla el cursor debe aparecer en la misa lnea. 4. Modifique el programa para que el cursor en su movimiento horizontal de la vuelta la pantalla de manera correcta, por ejemplo, si el cursor se sale del borde derecho ste debe aparecer de inmediato en el borde izquierdo sobre la misma fila, cosa similar

cuando se sale del borde izquierdo debe aparecer de inmediato en borde derecho sobre la misma fila.

5. En su reporte incluya listado de P6.ASM modificado. La modificacin se realiz solo en esta parte ;********************************************************************* ; LISTADO DE PROCEDIMIENTOS (SUBRUTINAS) ;********************************************************************* MENSAJE PROC NEAR MOV AH, 09H; imprime cadena de caracteres LEA DX, MSJ; direccin inicial de la cadena INT 21H RET MENSAJE ENDP ;********************************************************************* MTXT25X80 PROC NEAR; Modo Texto 25x80 MOV AH, 0; funcin 0 de BIOS MOV AL, 3; el cdigo 3 define modo texto 25 filas 80 columnas INT 10H RET MTXT25X80 ENDP ;********************************************************************** LPANT PROC NEAR; limpia pantalla de texto MOV AX, 0600H; AH=06 funcin de BIOS, AL=00(borra ventana) MOV BH, 0E8H; atributo-fondo amarillo-caracteres negros MOV CX, 0; fila 0, columna 0 MOV DX, 184FH; fila 18h, columna 4Fh INT 10H RET LPANT ENDP ;********************************************************************* PCURSOR PROC NEAR MOV AH, 2; funcin 2 de BIOS posiciona cursor MOV DH, FILA MOV DL, COL MOV BH, 0 INT 10H RET PCURSOR ENDP ;****************************************************************

NORTE

PROC NEAR DEC FILA CMP [FILA],0FFH JNZ SALIRN MOV [FILA],24 SALIRN: RET NORTE ENDP ;********************************************************************* SUR PROC NEAR INC FILA CMP [FILA],25 JNZ SALIRS MOV [FILA],0 SALIRS: RET SUR ENDP ;********************************************************************* ESTE PROC NEAR INC COL CMP [COL],80 JNZ SALIRE; Natalia Bonifaz, Maricela Elaje MOV [COL],0 SALIRE: RET ESTE ENDP ;********************************************************************* OESTE PROC NEAR DEC COL CMP [COL],0FFH JNZ SALIRO; Natalia Bonifaz, Maricela Elaje MOV [COL],79 SALIRO: RET OESTE ENDP ;********************************************************************** * END PP

EJERCICIO 7:

Edite y ensamble P7.ASM. ; ********************************************************************** TITLE Parpadeo de un mensaje en centro de pantalla de texto .MODEL SMALL .STACK 50 .DATA LF EQU 10 CR EQU 13 MSJINI DB 'Para iniciar aprete la tecla 1',LF,CR,'$' MSJFIN DB 'Para salir aprete cualquier tecla','$' BDIA DB 'BUENOS DIAZ$' BNOCHE DB 'BUENAS NOCHES$' .CODE INCLUDE LABMICP.INC; LABMICP.INC contiene los macros y las subrutinas ; que demanda el PP (Programa Principal) ;--------------------------------------------------------------------------------------------------------; INICIO PROGRAMA PRINCIPAL PRINCIPAL PROC FAR MOV AX,@DATA MOV DS,AX LPANT 0000H,184FH CURSOR 5,25 DISPLAY MSJINI ESPERAT; apretar tecla 1 para iniciar CURSOR 5,25 DISPLAY MSJFIN LAZO: LVENT 0C21H,0E2DH CURSOR 13,34 DISPLAY BDIA MOV CX,33146 CALL DELAY1 LVENT 0C21H,0E2DH MOV CX,33146 CALL DELAY1 SALIRCT ; aprete cualquier tecla para salir JZ LAZO LPANT 0000H,184FH CALL SALIR NOP

RET PRINCIPAL ENDP ; FIN PROGRAMA PRINCIPAL END PRINCIPAL ; ********************************************************************** ; Listado de Macros LPANT MACRO M, N MOV AX,0600H MOV BH,1FH MOV CX,M MOV DX,N INT 10H ENDM ; ---------------------------------------------------LVENT MACRO M,N MOV AX,0600H MOV BH,4FH MOV CX,M MOV DX,N INT 10H ENDM ; -------------------------------------------------------CURSOR MACRO FILA,COL MOV AH,2;fija pos cursor MOV BH,0;pgina 0 MOV DH,FILA MOV DL,COL INT 10H ENDM ; -------------------------------------------------------DISPLAY MACRO CADENA MOV AH,9; LEA DX, CADENA INT 21H ENDM ; -------------------------------------------------------ESPERAT MACRO LAZOT: MOV DL,0FFH MOV AH,06H INT 21H JZ LAZOT CMP AL,31H JNZ LAZOT

NOP ENDM ; ---------------------------------------------------------SALIRCT MACRO MOV DL,0FFH MOV AH,06H INT 21H NOP NOP ENDM ;--------------------------------------------------------------------------------------------------------; Listado de Subrutinas ; Subrutina DELAY ; La patita PB4 de puerto 61H cambia de estado cada 15.085 microsegundos ; Subrutina DELAY cuenta CX veces 15.085 microsegundos DELAY PROC NEAR PUSH AX BUCLE: IN AL,61H AND AL,10H CMP AL,AH JZ BUCLE; espera por cambio en PB4 MOV AH,AL; guarda nuevo estad0 de PB4 LOOP BUCLE; la instruccin LOOP primero ejecuta CX <--- CX - 1 luego ... POP AX RET DELAY ENDP ;--------------------------------------------------------------------------------------------------------; Subrutina DELAY1 implementa un retardo de 100 milisegundos con CX=6629 (base 10) DELAY1 PROC NEAR MOV BL,10 DD1: CALL DELAY DEC BL JNZ DD1 RET DELAY1 ENDP ;--------------------------------------------------------------------------------------------------------; Subrutina SALIR SALIR PROC NEAR MOV AX,4C00H INT 21H RET SALIR ENDP

DIAGRAMA DE BLOQUES

DATOS DE ENTRADA: Procesando P7.EXE Instrucciones dadas en notepad++

DATOS DE SALIDA: Visualizacin de atributos de colores y MSJ

DIAGRAMA DE FLUJO

INICIO

Crear archivo P7.ASM en notepad++

Definir variables e instrucciones en P7.ASM

Cargar el archivo P7.EXE

Modificamos cadena BUENAS NOCHES

Ejecutamos PB4 para cambiar de estado cada 15.085 ms

Asignamos el tributo de color

Visualizacin del msj BUENAS NOCHES con su respectivo atributo de color

FIN

DESCRIPCIN Empezamos copiando y guardando el cdigo descrito en el ejercicio en un documento del programa notepad++ (Recordar que hay que guardar con la extensin .ASM) una vez realizado esto mandamos a correr el programa desde la plataforma de MSDOS y nos aparece una ventana con un fondo de color y un texto que se encuentra dentro de un recuadro de color diferente, el ejercicio consiste en cambiar el color del recuadro y la letra del mismo as como el mensaje que nos muestra este en pantalla. Para realizar esto, tenemos que ir al documento de notepad++ el texto que nos muestra en pantalla, el mismo que editamos en la cadena que se encuentra almacenada, para cambiar el color del recuadro nos , averiguamos el cdigo de color que nos pida el ejercicio, yendo a la tabla que se presenta antes de la prctica, cabe recalcar que se puede colocar en formato binario o hexadecimal.

1. En reporte incluya FOTO A COLOR de ventana con resultados.

2. Modifique el programa para que parpadee BUENAS NOCHES (ver variable BNOCHE en segmento de datos) en una ventana con fondo amarillo y los caracteres (BUENAS NOCHES solamente) en negro. Consulte BYTE ATRIBUTO.

3. Tome foto a color de los nuevos resultados, incluya en reporte listado de P7.ASM modificado.

CONCLUSIONES Pudimos familiarizar con algunas funciones de ROMBIOS y MSDOS; donde usamos la funcin 09H de MSDOS que visualiza cadena de caracteres con funcin 0EH que imprimen diez caritas negras en lazo LOOP; y la funcin 10H de ROMBIOS que se ejecuta junto con INT 16H, a la espera que el usuario aprete cualquier tecla; regresando de esta manera al CODEVIEW.

Logramos posicionar el cursor en pantalla sin que ocurra el desfase una lnea para lo cual tuvimos que modificar el cdigo; en ESTE incrementa hasta que compara con la posicin 80 y es ah cuando regresa a la posicin 0; por el OESTE hay un decremento que si llega a 0FF, inmediatamente el cursor se traslada a la posicin 79, evitando as salirse de la misma columna y del margen de la pantalla.

Aprendimos a utilizar el cdigo de colores y a su vez definimos atributo de colores en la pantalla de texto tal que podemos modificar el cdigo en el notepad++; tomando muy en cuenta que funciones tiles como: 09H de MSDOS que sirve para visualizar cadenas de caracteres; y la funcin 06H de ROMBIOS que nos permite limpiar la pantalla con atributo de color.

RECOMENDACIONES Verificar que los datos ingresados en las instrucciones sean los correctos, teniendo muy en cuenta que la mquina solo trabaja basndose en el sistema hexadecimal, por lo tanto no puede excederse de la letra F ni del nmero 9.

En el momento que se crea el archivo en notepad++ con las instrucciones requeridas, guardar este archivo con la extensin .ASM, solo de esta forma notepad++ puede generar otro archivo con extensin .lst til para el desarrollo del programa en CODEVIEW.

No intente ejecutar las instrucciones con la tecla F5 porque esta, ejecuta las instrucciones hasta que haya una interrupcin y si no la encuentra se encerrara en un bucle sin fin, daando de esta manera el equipo.

S-ar putea să vă placă și