INSTRUCCIONES ARITMÉTICAS.

Anuncio
Microprocesadores. Guía 4
1
Facultad: Ingeniería.
Escuela: Electrónica.
Asignatura: Microprocesadores.
Lugar de ejecución: Microprocesadores (Edificio 3, 2da
planta).
INSTRUCCIONES ARITMÉTICAS.
Objetivos específicos
•
•
•
Observar el uso de algunas instrucciones aritméticas y las banderas que son afectadas.
Utilizar correctamente los registros del microprocesador al realizar operaciones aritméticas, tanto
de 8 bits como de 16 bits.
Utilizar el dispositivo virtual Led_Display del EMU8086 para ver mejor los resultados de las
operaciones.
Materiales y equipo
•
1 Computadora con el programa EMU8086.
Procedimiento
1) Abra el EMU8086
2) Analice el PRIMER PROGRAMA, note que al inicio se declaran los datos.
¿Con qué datos se realizarán las operaciones y cuáles serán los resultados, tanto en decimal
como en hexadecimal? ¿Dónde se almacena el resultado al final de las operaciones?
_________________________________________________________________________________
_________________________________________________________________________________
2
Microprocesadores. Guía 4
PRIMER PROGRAMA
.model small
.stack
.data
byte1 equ 125
byte2 equ 150
word1 equ 20A3h
word2 equ 5938h
.code
mov ax,@data
mov ds,ax
;---------primer bloque---------------;-------------------------------------------mov dx,199 ;carga la dirección del puerto donde está el display
mov ax,0 ; sacamos un 0 por el puerto para limpiarlo
out dx,ax
mov al, byte1 ;suma de 2 números de 1 byte
add al, byte2
mov [011Eh], al ;guarda el resultado
out dx,al; saca el resultado por el puerto para verlo en el display
;en formato decimal
;-----Fin del primer bloque---------;-------------------------------------------;------Segundo bloque---------------mov ax, word1 ;suma de 2 numeros de 2 byte
add ax, word2
mov [011Fh], ax ; guarda el resultado
mov dx,199 ;carga la direccion del puerto donde está el display
out dx,ax; saca el resultado por el puerto para verlo en el display
; en formato decimal
;--------Fin del segundo bloque-----------mov ax,4c00H ;termina el programa
int 21h
End
3) Digite y emule el programa.
4) Ejecute las primeras dos instrucciones.
5) Antes de ejecutar las otras instrucciones tome nota del contenido almacenado en las
direcciones 011Eh, 011Fh y 0120h, para ello en la ventana “emulator” presione el botón
“aux” y ahí selecciones la opción “memory”, en el espacio de dirección escriba el valor
que indica el registro data segment (DS) seguido de dos puntos y la dirección 011Eh anote
ese valor en la Tabla 1, haga lo mismo para las otras direcciones que pide la tabla.
6) Anote tambien el estado de las banderas y seleccione del menú “VIRTUAL DEVICES” la
opción “LED_DISPLAY.EXE” para ver el valor del display al inicio.
Microprocesadores. Guía 4
3
7) Ejecute paso a paso el programa, anotando la información solicitada en la Tabla 1,
observando el resultado de las operaciones y el estado de las banderas
DIRECCIONES 0720:Desplazamiento
011Eh
011Fh
0120h
Display
MOMENTO
BANDERAS
O S Z A P
C
Inicio
Al final del primer bloque
Al final del segundo bloque
Tabla 1
¿Concuerdan los resultados con lo que usted esperaba? _______
8) Cambie los datos con los siguientes valores:
byte1
byte2
word1
word2
equ
9Dh
equ 83h
equ 5938
equ -5938
9)
Corra a pasos el programa observando la ejecución de cada instrucción y el estado de las
banderas.
¿Cuál fue el resultado de las operaciones?, ¿Cómo reaccionaron las banderas? y ¿por qué así y no
de otra manera?
____________________________________________________________________________________
____________________________________________________________________________________
10) Analice el SEGUNDO PROGRAMA¿qué registros están involucrados en el proceso? ¿qué
datos se van a operar? ¿dónde se almacenará el resultado? (vea el flujograma)
4
Microprocesadores. Guía 4
SEGUNDO PROGRAMA
.model small
.stack
.data
.code
mov ax,@data
mov ds,ax
mov ax,0
mov dx,199
out dx,ax
mov ah, 0AAh ;multiplica 2 números de 1 byte
mov al, 0FFh
mov cl, 06 ;dato a modificar
mul cl
mov [011Eh],ax
mov dx,199
out dx,ax
mov ax,4c00H ;termina el programa
int 21h
End
11) Digite y emule el SEGUNDO PROGRAMA
12) Ejecute paso a paso, analizando el proceso. Anote los resultados en la primera fila de la
Tabla 3.
¿Coinciden los resultados con lo que esperaba?
____________________________________________________________________________________
Instrucción
MUL
Dato
Multiplicando
Multiplicador
Producto
06
-06
IMUL
06
-06
Tabla3
13) Modifique el dato de CL colocando -06 y ejecute nuevamente el programa. Anote los
resultados en la Tabla 3.
14) Cambien la instrucción MUL por IMUL y el dato -06 por 06.
Microprocesadores. Guía 4
5
15) Ejecute el programa y anote los resultados.
16) Cambie el dato por -06, ejecute nuevamente y anote los resultados
17) Analice el TERCER PROGRAMA¿qué registros están involucrados en el proceso? ¿qué
datos se van a operar? ¿dónde se almacenará el resultado? (vea el flujograma)
18) Al igual que hizo en el segundo programa vaya cambiando el dato y la operación como
se pide en la Tabla 4.
TERCER PROGRAMA
.model small
.stack
.data
.code
mov ax,@data
mov ds,ax
mov ax,0
mov al,123 ;divide 2 numeros de 1 byte
mov cl, 05 ;dato a modificar
div cl
mov [011Eh],al
mov ax,0
mov dx,199
out dx,ax
mov al,[011Eh]
out dx,al
mov ax,4c00H ;termina el programa
int 21h
End
Instrucción
DIV
Dato
Dividendo
Divisor
Cociente
05
-05
IDIV
05
-05
Tabla 4
19) Cambie el dato por 00h y ejecute el programa ¿qué ocurrió? ______
Residuo
6
Microprocesadores. Guía 4
Análisis de Resultados
a) Primer programa
1. Tomando en cuenta los datos particulares de cada operación explique el porqué de la activación
o desactivación de las banderas O, S, Z, C y A.
2. Modifique el código fuente sustituyendo las instrucciones ADD por ADC y emule nuevamente el
programa, repita los pasos del 3 al 7 y compare con los resultados obtenidos con los obtenidos
con ADD ¿Qué resultados se modificaron?, ¿qué parte no?, ¿por qué cree que se dieron esos
cambios específicos en los resultados?
b) Segundo programa
1. ¿En general cómo se especifica en una instrucción de multiplicación que se desea trabajar con
números de un byte?
2. ¿En qué registros se almacenan los datos y el resultado de una multiplicación de un byte?
3. Explique porque los resultados de las operaciones cambiaron al usar IMUL en lugar de MUL.
Utilice cálculos para fundamentar su explicación.
c) Tercer programa
1. ¿En general cómo se especifica en una instrucción de división que se desea trabajar con números
de un byte?
2. ¿En qué registros se almacenan los datos y el resultado de una división de un byte?
3. Explique porque los resultados de las operaciones cambiaron al usar IDIV en lugar de DIV. Utilice
cálculos para fundamentar su explicación.
4. ¿Por qué la última modificación del programa generó un error en la ejecución?
Microprocesadores. Guía 4
7
Investigación Complementaria
•
•
•
•
•
Investigue las instrucciones para la resta SUB y SBB
Compare el funcionamiento de la directiva EQU con DB.
Investigue como se puede realizar una multiplicación de dos números de dos bytes cada
uno.
Investigue como se puede realizar una división de dos números de dos bytes cada uno.
Diseñe dos flujogramas que representen el proceso para sumar dos números de 4 bytes
cada uno, en el primero se trabajará con registros de 16 bits y en el segundo de 8 bits.
Bibliografía
•
Brey, B. B. Los Microprocesadores Intel. 8086 / 8088, 80186, 80286, 80386 y 80486.
Arquitectura, programación e interfaces, tercera Edición Prentice Hall, México DF, 1997.
Biblioteca UDB 001.6404 B847 1997
•
Godfrey, T. Lenguaje Ensamblador para Microcomputadoras IBM : Para Principiantes y Avanzados,
Primera edición Prentice Hall, México DF, 1991
Biblioteca UDB 005.136 G577 1991
•
Puede consultar el material en línea del EMU8086 sobre los temas de esta actividad. Se
recomiendan:
“Arithmetic
and
logic
instructions
”,
http://www.emu8086.com/assembly_language_tutorial_assembler_reference/asm_tutorial_06.html
8
Microprocesadores. Guía 4
Hoja de cotejo:
4
Guía 4: INSTRUCCIONES ARITMÉTICAS.
Puesto No:
Alumno:
GL:
Docente:
Fecha:
EVALUACION
%
CONOCIMIENTO
35
APLICACIÓN
DEL
CONOCIMIENTO
60
ACTITUD
5
TOTAL
100
1-4
Conocimiento deficiente de
los siguientes fundamentos
teóricos:
-Instrucciones para realizar
las operaciones de suma,
multiplicación y división.
-Registros del
microprocesador con los que
trabajan las instrucciones
aritméticas.
Cumple sólo con uno o
ninguno de los siguientes
criterios:
-Sabe que banderas se
activaran según la
instrucción a ejecutarse
-Interpreta los resultados de
las instrucciones aritméticas.
-Utiliza las instrucciones
aritméticas tanto para 8 como
16 bits.
-Es ordenado pero no hace
uso adecuado de los
recursos.
5-7
8-10
Conocimiento y
explicación
incompleta de los
fundamentos
teóricos.
Conocimiento
completo y
explicación clara de
los fundamentos
teóricos.
Cumple sólo con
dos de los
criterios.
Cumple con los tres
criterios.
-Hace uso
adecuado de los
recursos de
manera segura,
pero es
desordenado.
-Hace un manejo
responsable y
adecuado de los
recursos de acuerdo a
pautas de seguridad e
higiene.
Nota
Descargar