Guia 2
Guia 2
Guia 2
Flor Gutiérrez
Diego Oviedo
GUIA 1
a) Primer programa.
En el encabezado del programa ¿por qué se incluye la línea “org 100h”?
Al introducir datos en los registros del microprocesador se usan diferentes formatos
(bases de numeración) ¿cuántos y cuáles son?
La sintaxis de la instrucción MOV define tres campos: instrucción, dato1 y dato2. Al
moverse los datos ¿cuál es la fuente y cual el destino?
Al observar la tabla1 se nota que a la misma instrucción MOV se le asignan diferentes
códigos hexadecimales ¿a qué se debe esto?
¿Cuál es la función que cumple el registro IP dentro del PRIMER PROGRAMA?
En la columna OFFSET de la tabla1, éstos no se incrementan a una razón constante
¿por qué?
b) Segundo programa.
Al comparar las dos primeras instrucciones ¿qué diferencias hay al ejecutarlas, siendo
que las dos son MOV?
En las últimas tres instrucciones se incluyeron corchetes (paréntesis cuadrados) en las
instrucciones ¿Qué diferencias observó en su ejecución respecto a las primeras dos
instrucciones?
¿Por qué al ejecutar la séptima instrucción los datos se almacenan en CX en ese orden
específico?
c) Tercer programa.
Al ejecutar el programa, a medida que hacía las modificaciones ¿qué efecto concreto
logra el cambio en el registro BX?
Al modificar CH ¿qué bits específicos se modificaron para lograr cambios en el fondo y
color de los caracteres?
GUIA 2
Segundo AND
CX=2CC2 BX=0F0F
Respuesta: 0C02 (cx)
BANDERAS: Se desactivaron las banderas SF y PF.
Tercer AND
CX=0C02 CX=0C02
Respuesta: 0C02 (cx)
BANDERAS: No hubo cambios
Segundo OR
CX=2CC2 BX=0F0F
Respuesta: 2FAF (cx)
BANDERAS: Se desactivo la bandera SF.
Tercer OR
CX=2FAF CX=2FAF
Respuesta: 2FAF (cx)
BANDERAS: No hubo cambios
Primer XOR
dl=9A ah=F0
Respuesta: 6A (dl)
BANDERAS: Se activa la bandera PF.
Segundo XOR
CX=2CC2 BX=0F0F
Respuesta: 23CD (cx)
BANDERAS: Se desactivo la bandera PF.
Tercer XOR
CX=23CD CX=23CD
Respuesta: 0000(cx)
BANDERAS: Se activaron ZF y PF
Segundo XOR
Dl=36 00FF
Respuesta: C9 (cx)
BANDERAS: Se activa la bandera SF.
9) Ejecute ahora el segundo bloque y anote los datos con los que se opera, los
resultados y las banderas que se activan durante el proceso.
Tercer XOR
dl=1A AX=2CC2
Respuesta: 36 (dl)
BANDERAS: Se desactivo la bandera SF.
NOT
Dl=36
Respuesta: C9 (cx)
Primer XOR
ax=2CC2 dl=1A
Respuesta: 36 (ah)
BANDERAS: Se activa la bandera PF.
Segundo XOR
Dl=1A 00FF
Respuesta: E5 (dl)
BANDERAS: Se activa la bandera SF y se desactiva la PF.
Tercer XOR
AX=2CC2 dl=1A
Respuesta: 36 (al)
BANDERAS: Se desactivo la bandera SF y se activó PF.
NOT
Dl=1A
Respuesta: Se activaron y desactivaron las mismas banderas pero en diferente orden.
12) Como se ha visto en los programas anteriores, algunas de las banderas se activan
del resultado de una instrucción. Pero también algunas banderas se pueden activar o
desactivar mediante instrucciones específicas, sin tomar en cuenta el resultado de
alguna operación. Como un ejemplo inserte la siguiente modificación en el SEGUNDO
PROGRAMA:
16) Ejecute hasta la instrucción TEST y conteste otra vez las preguntas del punto 15
del procedimiento.
OR
AH=B9 01
RESULTADO =00
TEST
AH=B9 40h
RESULTADO =40
17) En las instrucciones 2ª y 5ª cambie los dos datos 40h por 08h y repita los pasos
del 14 al 16, ¿cómo se modificó el resultado del programa? Anote su respuesta.
AND
AH=B9 08h
RESULTADO =00
OR
AH=B9 01
RESULTADO =00
TEST
AH=B9 08h
RESULTADO =40
Análisis de resultados
a) Primer programa.
¿Qué objetivos se buscan al usar la mascara1 (F0h) con las tres diferentes
instrucciones lógicas?
-Hacer notar la notable diferencia que tiene los tres tipos de puertas lógicas.
Cuando se ejecuta la tercera instrucción lógica, ya sea AND u OR, las banderas
reaccionan de forma similar. Pero cuando se ejecuta con la instrucción XOR no ¿por
qué ocurre eso?
-Porque XOR realiza una comparación de similitud.
En el programa se declaran datos para hacer las operaciones ¿dónde se guardan estos
datos?
-Estos datos se almacenan en la memoria principal.
b) Segundo programa.
c) Tercer programa.
¿Cuál es la diferencia fundamental que noto a comparar las instrucciones AND y TEST?
-AND realiza una comparación la cual modifica y almacena el resultado en un registro,
también la bandera respectiva se activa o desactiva.
-TEST realiza la operación lógica "AND" de dos operando, pero NO afecta a ninguno de
ellos, SÓLO afecta al registro de estado.
Afecta a todos los bits del registro de estado, de la misma manera que la instrucción
AND.
¿Qué relación existe entre los bit que deseamos probar y el valor específico de la
máscara seleccionada?
-La máscara nos permite cambiar varias instrucciones; en cambio el bit lo asignamos
por cada instrucción.
TAREA COMPLEMENTARIA
Escriba un programa que dado un dato almacenado en AX invierta el estado de los bits
impares desde el D5 hasta el D1, borre los bits pares desde el D6 hasta el D2 y
coloque en 1 los bits D7 y D0.
GUIA 3
1) Ejecute el programa emulador de microprocesadores EMU8086, haciendo doble clic
en el icono del escritorio.
10) Modifique el código fuente sustituyendo las instrucciones ADD por ADC y emule
nuevamente el programa.
MOMENTO DIRECCIONES BANDERAS
011Eh 011Fh 0120h O S Z A P C
Inicio 90 90 90 0 0 0 0 0 0
Después de 1ª suma 90 90 90 0 0 0 1 0 1
Antes de la 2ª suma 13 90 90 0 0 0 1 0 1
Después de la 2ª suma 13 90 90 0 0 0 0 0 0
Después del último MOV 13 DB 79 0 0 0 0 0 0
¿Qué resultados se modificaron?, ¿qué parte no?, ¿por qué cree que se dieron esos
cambios específicos en los resultados?
Cambia el resultado de 011E ya que activamos la bandera de acarreo llevando un 1 de
más. También se activa media ejecución la bandera P
12) Modifique el programa para que funcione como al inicio, pero cambie los datos con
los siguientes valores:
¿Cuál fue el resultado de las operaciones?, ¿Cómo reaccionaron las banderas? y ¿por
qué así y no de otra manera?
El espacio [011Eh] esta con 20
Los espacios [011Fh] [0120h] se encuentras vacíos (NULL)
Luego de la segunda ADD se activa la bandera Z lo cual significa que el resultado es
cero.
15) Digite y emule el programa tomando nota del valor de los minuendos y
sustraendos (en formato hexadecimal) con que se realizarán las operaciones en la
TABLA 2.
16) Ejecute paso a paso el programa, observando los resultados de las operaciones y
el estado de las banderas. Anote estos valores en la TABLA 2.
17) Modifique el programa para que se invierta el orden de la operación, de forma que
el minuendo pasa a ser sustraendo y viceversa. Repita el paso anterior tomando nota
en la segunda fila de la TABLA 2.
18) Repita los pasos 16 y 17, pero esta vez active manualmente el acarreo antes de
cada resta ¿observa cambios en las operaciones?
19) Cambie el programa para que funcione como al principio.
20) Sustituya las instrucciones SUB por SBB y repita los pasos anteriores. Complete la
TABLA2
¿Qué diferencias nota entre la ejecución de la instrucción SUB y SBB?
Cuando se cambia acarreo con sbb cambio el resultado. SBB cambia con el acarreo
Instrucción Prueba Minuendo Sustraendo Diferencia O S Z A P C
50 45 0B 0 0 0 1 0 0
1º
45 50 F5 0 1 0 0 1 1
SUB
50 45 0B 0 0 0 1 0 0
2º
45 50 F5 0 1 0 0 1 1
50 45 0B 0 0 0 1 0 0
3º
45 50 F5 0 1 0 1 1 1
SBB
50 45 0A 0 0 0 0 1 0
4º
45 50 F4 0 1 0 0 0 1
23) Ejecute paso a paso, analizando el proceso. Anote los resultados en la primera fila
de la TABLA 3
25) Cambien la instrucción MUL por IMUL y el dato -06 por 06.
27) Cambie el dato por -06, ejecute nuevamente y anote los resultados
Multiplicando
Instrucción Dato Multiplicador Producto
06 FF 06 05 FA
MUL
-06 FF FA F9 06
06 FF 06 FF FA
IMUL
-06 FF FA 00 06
29) Realice el mismo procedimiento del TRECER PROGRAMA, pero ahora el dato que
será cambiado es 05 y la operación DIV por IDIV. Anote sus resultados en la TABLA 4.
05 7B 05 18 03
IDIV
-05 7B FB E8 03
Análisis de resultados
a) Primer programa
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.
Z = Zero flag: El resultado es cero.
N = Negative flag: El resultado es negativo.
V = Overflow flag: El resultado supera el número de bits que puede manejar la ALU.
P = Parity flag: Paridad del número de 1 en los datos.
I = Interrupt flag: Se ha producido una interrupción.
C = Carry flag: Acarreo de la operación realizada.
Explique porque los resultados de las operaciones cambiaron al usar ADC en lugar de
ADD. Utilice cálculos para fundamentar su explicación.
En el primer problema al usar ADC generamos que se acumule un acarreo de 1 desde
un inicio . Siendo puesto en la primera ADC
ADD=125+150=13
ADC=125+150=13+1=14
b) Segundo programa
Explique porque los resultados de las operaciones cambiaron al usar IDIV en lugar de
DIV. Utilice cálculos para fundamentar su explicación.
Investigación complementaria
Compare el funcionamiento de la directiva EQU con DB.
EQU
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 flujo-gramas 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.