TAREA 1 “ARITMETICA PARA BCD Y ASCII”.

Anuncio
Microprocesadores. Tarea 1
1
Facultad: Ingeniería.
Escuela: Electrónica.
Asignatura: Microprocesadores.
TAREA 1 “ARITMETICA PARA BCD Y ASCII”.
Objetivos específicos
•
•
Conocer el manejo de los caracteres ASCII para la presentación en pantalla de los resultados.
Practicar el uso de ajustes para las operaciones aritméticas en modo decimal.
Materiales y equipo
•
1 Computadora con el programa EMU8086.
Procedimiento
1) Abra el emu8086.
2) Revise la sintaxis de las instrucciones AAA, AAS y DAA en el simulador pulsando la tecla F1 y dando
clic en el título “8086 Instruction set”.
3) Minimice la ventana y regrese al emulador, en la barra de menú seleccione “ascii codes” e identifique
en la tabla de caracteres ASCII los números en ASCII hexadecimal que les corresponde a los números
del 0 al 9 y anótelos a continuación (al dar clic en cualquier parte de la ventana puede intercambiar
entre ver los datos ASCII en su correspondiente decimal o hexadecimal):
____________________________________________________________________________________
____________________________________________________________________________________
4) Digite el PROGRAMA 1 en el simulador: este es un ejemplo de uso de AAA
2
Microprocesadores. Tarea 1
PROGRAMA 1
.model small
.stack
.data
operando1 db 39h ; 39h codigo ascii del 9 decimal
operando2 db 39h
resultadoascii db 2 dup (?) ;reserva dos byte para el resultado
.code
mov ax, @DATA ;indica donde estan los datos que se van a operar
mov ds, ax
mov ax,0
mov al,operando1
add al,operando2
aaa ;ajuste ascii despues de sumar 2 bytes ascii
add ax,3030h
mov resultadoascii, ah
mov resultadoascii+1,al
mov ax,4c00h
int 21h
end
5) Dé clic sobre EMULATE y abra la ventana de variables (en el botón “vars”), debería visualizar 3
elementos: “operando1”, “operando2” y “resultadoascii”, seleccione en las opciones de “Show as” de
cada variable, la visualización “ASCII”, en la variable “resultadoascii” también cambie “elements” a
2.
6) Corra el programa paso a paso hasta antes de ejecutar la operación AAA, observe el estado del
acumulador y de las banderas, especialmente AF ____________________
7) Ejecute la instrucción de ajuste y observe el estado del acumulador (AX) y las banderas en este
momento especialmente CF y AF ____________________
8) Ejecute todo el programa
9) Observe el contenido de la variable “resultadoascii”
10) Modifique el programa anterior poniendo como operandos los números 34h y 32h
11) Repita el procedimiento de los pasos 5 al 9 y describa las diferencias en los estados del acumulador y
las banderas AF y CF
12) Copie el PROGRAMA 2 que es una aplicación del ajuste AAS
Microprocesadores. Tarea 1
3
PROGRAMA 2
.model small
.stack
.data
operando1 db 36h
; 36h codigo ascii del 6 decimal
operando2 db 32h
resultadoascii db 2 dup (?) ;reserva dos byte para el resultado
.code
mov ax, @DATA ;indica donde estan los datos que se van a operar
mov ds, ax
mov ax,0
mov al,operando1
sub al,operando2
aas
add ax,3030h
mov resultadoascii, ah
mov resultadoascii +1, al
mov ax,4c00h
int 21h
end
13) Repita el paso 5.
14) Corra el programa paso a paso hasta antes de ejecutar la operación AAS, observe el estado del
acumulador y de las banderas, especialmente AF y CF _________________________________
15) Ejecute la instrucción de ajuste y observe el estado del acumulador y las banderas en este momento
especialmente CF y AF ____________________
16) Ejecute todo el programa
17) Observe el contenido de la variable “resultadoascii”
18) Cambie los operandos de modo que el operando2 sea mayor que operando1 y ejecute el programa
¿por qué se da este resultado?
19) Copie el PROGRAMA 3 que es una aplicación de ajuste DAA
PROGRAMA 3
.model small
.stack
.data
operando1 db 99h
operando2 db 98h
resultadoBCD dw 0
.code
mov ax, @DATA ;indica donde estan los datos que se van a operar
4
Microprocesadores. Tarea 1
mov ds, ax
mov ah,00
mov al,operando1
mov bl,operando2
add al,bl
daa
adc ah,00
mov resultadoBCD, AX
mov ax,4c00h
int 21h
end
20) Dé clic sobre EMULATE y abra la ventana de variables (en el botón “vars”), debería visualizar 3
variables: “operando1”, “operando2” y “resultadoBCD”, seleccione en las opciones de “Show as” la
visualización “HEXA” para las tres variables y que solo se muestre un elemento.
21) Corra el programa paso a paso hasta antes de ejecutar la operación DAA, observe el estado del
acumulador y de las banderas, especialmente AF y CF.
22) Ejecute la instrucción de ajuste y observe el estado del acumulador y las banderas en este momento
especialmente CF y AF ____________________
23) ¿Cuál es el propósito de la suma del acumulador AH con 00h? (ADC AH, 00H) ___________________
_______________________________________________________________________________________
24) Ejecute todo el programa
25) Observe el contenido de la variable “resultadoBCD”
26) Cambie los operandos por cualquier dato comprendido entre 01h y 99h y compruebe los resultados
Análisis de Resultados
PROGRAMA 1
1- ¿Para qué se realiza la instrucción ADD AX, 3030h?
2- ¿En qué formato de decimal (empaquetado o no empaquetado) se da el resultado, después del ajuste,
en AAA?
3- Cree un programa en ensamblador que haga el ajuste a ASCII sin utilizar la instrucción AAA
4- Hacer un programa que sume tres números de tres bytes que se recibieron por el teclado (ASCII) y
quedaron almacenados a partir de la localidad 0800h, guarde el resultado en ASCII a partir de la
dirección 0820h (Tenga en cuenta que los máximos números a sumar son 393939+393939+393939)
Microprocesadores. Tarea 1
5
PROGRAMA 2
1- ¿En qué formato de decimal (empaquetado o no empaquetado) se da el resultado, después del ajuste,
en AX?
2- ¿Cómo puede arreglarse el hecho de tener un resultado negativo en el programa y que no me afecte
la presentación del resultado en pantalla? (Haga un programa de la solución).
PROGRAMA 3
1- ¿En qué formato de decimal (empaquetado o no empaquetado) se da el resultado después del ajuste
DAA?
2- ¿Cuál es el propósito de la suma del acumulador AH con 00h? (ADC AH, 00H)
3- Hacer un programa que sume tres números decimales de tres bytes almacenados a partir de la
localidad 0900h, guarde el resultado en decimal a partir de la dirección 0920h (Tenga en cuenta que
los máximos números a sumar son 999999+999999+999999)
Presente las respuestas a las preguntas que se le realizaron en el procedimiento.
Investigación Complementaria
•
Investigue Sobre las otras instrucciones de ajuste que tiene el microprocesador 8086: DAS, AAD y
AAM
•
Investigue cómo convertir un número de decimal a hexadecimal y trate de hacer un programa de
conversión con números ASCII como entrada para este programa, pueden ser de 8 bits.
•
Haga un programa que permita multiplicar números de 3 dígitos decimales y que brinde la
respuesta en decimal.
Bibliografía
• Ayuda del EMU8086 (Instrucciones del 8086).
• Alfredo Rojas Ponce. Ensamblador Básico. Editorial Computec. Primera edición. 1993. Cap. 6 , pags.
177 – 191 Clasificación UDB: 001.6404 R471 1993.
• Barry B. Brey. Los microprocesadores Intel, Arquitectura, programación e interfaces. Editorial Prentice
Hall, Tercera Edición. Clasificación UDB: 001.6404 B847 1997.
Descargar