Guía
Instrucciones Lógicas y Registro de Banderas
2
Facultad: Estudios Tecnologicos. Escuela: Electrónica Asignatura: Asignatu ra: Microprocesadores Microprocesadores
Objetivo General
Analizar la forma en que se ejecutan algunas instrucciones lógicas observando como éstas afectan al registro de estados.
Objetivos específcos
•
•
•
Examinar detenidamente la manera en que se ejecutan algunas instrucciones lógicas Analizar la manera en que se modifica el registro de banderas, dependiendo del tipo de operación y los datos que operen. dentificar las caracter!sticas caracter!sticas propias de las m"scaras m"scaras que se utilizan junto con las instrucciones lógicas.
Materiales y equipos
• •
#u!a de laboratorio $omputadora %$ con el programa E&'()(*
Procedimiento
1+ Ejecute el programa emulador de de microprocesadores microprocesadores E&'()(*, aciendo aciendo doble clic en el icono del escritorio. -+ $ree $ree un nuevo nuevo docu documen mento to tipo tipo $& /+ 0igite el %&E %#A&A, %#A&A, recuerde que el encabezado es necesario necesario para para crear un arcivo $&. En esta guía de laboratorio se declararán datos de diferentes maneras, no los pierda de vista.
1
PRIMER PROGRAMA O!A" en este programa se están usando la instrucci#n con registros de $ % &' bits, así como las directivas () % (*. INICIO
#make_COM# org 100h
2$3 L ! dato"
mov dl, dato1 4primera parte mov a, masca1
A# ! $ascara"
and dl, a
L !L % A#
mov cx, dato- 4 segunda parte mov bx, masca-
& ! dato' B& ! $ascara'
and cx, bx
C& !C& % B&
C& !C& % C&
FIN
dato1 datomascara 1 mascara
and cx, cx ret db 5A d6 )-$$- db )7) d6 )7)7
+ -ompile % eecute el programa paso a paso, monitoreando monitoreando el registro de estados /01AG2 luego de cada operaci#n A(. Anote los datos con los 3ue se opera, los resultados % las banderas 3ue se activan.
observamos el comportamiento comportamiento de los flags como el flag 7 tiene una valor lógico de 1
podemos observar en los flags que posterior al primer A20 en los flags se activan con 1 logico los siguientes flags3 87, %7, 7
podemos analizar el siguiente A20 y el comportamiento de los flags mantiene el mismo que el estado anterior En el
siguiente A20 observamos un cambio en los flags activando los siguientes3 7
7inalmente tenemos el comando E9 E9 posterior al :ltimo :ltimo And donde el flag no var!a a la instrucción anterior
4 Modifi3ue Modifi3u e las líneas 3ue contienen la instrucci#n instrucci# n A(, A(, sustitu%5ndola por la instrucci#n OR. Repita desde el paso +.
eemplazo de las instrucciones A20 por instrucciones
Analizando el primer observamos que la activación del :nico flag es 7 En la
instrucción siguiente al primer observamos la activación de los siguientes flags3 87, %7, 7. 7.
En el segundo podemos observar como los flags se mantienen como en el estado posterior al primer
%ara la ejecución del segundo observamos unos cambios en la activación de los siguientes flags, activ"ndose los siguientes3 %7, 7
En la
instrucción posterior al ultimo no observamos cambio alguno en los flags
' 2ustitu% 2ust itu%a a a6ora por la instrucc inst rucci#n i#n 7OR % repita repi ta el paso +.
8ustituyendo las instrucciones por instrucciones ;
Analizando el primer ; solo se activa el flag 7
En la
instrucción posterior al primer ; observamos un cambio en la activación de los flags los cuales pasan a estar activos los siguientes3 %7, 7 En el
segundo ; observamos que los flags no presentan cambios respecto a las instrucciones anteriores
En el
ultimo ; observamos como varia la activación de los flags a pasar a solamente activarse el flag 7
En la
instrucción posterior al ultimo ; observamos un cambio de activación en los flags los cuales estar"n activos :nicamente los siguientes3 <7, %7, 7
8 (igite el 2EG9(O PROGRAMA, 3ue está dividido en dos partes. $ Eecute Eecute paso a paso el primer primer blo3ue. Anote los datos con los 3ue se reali:an las operaciones operaciones % los resultados de las mismas, los registros 3ue intervienen en el proceso % el estado de las banderas en cada paso del proceso.
%rimera instrucción del primer bloque con solamente el flag 7 activado
8egunda instrucción del primer bloque manteniendo los mismos flags activados
Activacion del primer ; del primer bloque
'ltima instrucción del primer bloque donde también podemos observar la variación de los flags activados en esta instrucción
; Eecute a6ora el segundo blo3ue % anote los datos con los 3ue se opera, los resultados % las banderas 3ue se activan durante el proceso. proceso .
%rimera instrucción del segundo bloque activando los flag 87, %7, 7
8egunda instrucción del bloque manteniendo los mismos flags activos
%rimer ; de la segunda parte del programa Ejecución de la instrucción 29 y cambio de activación de los flags %7, 7
'ltima instrucción ejecutada en el segundo bloque del programa, manteniendo los mismos flags que la instrucción ejecutada anteriormente &<
Modifi3ue Modifi3 ue la tercera % s5ptima instrucci#n instrucci #n del programa escribiendo escribie ndo =or a6, dl
%rograma con el cambio de la instrucción indicada
&&
•
Repita Rep ita los pasos paso s $ % ; >3u5 diferen dif erencias cias notas? notas ?
%rimer bloque
%rimera instrucción del primer bloque solo activando el flag 7 8egunda instrucción del primer bloque manteniendo los mismos flags activos que la instrucción anteriormente ejecutada %rimero ; ejecutado del primer bloque manteniendo los mismos flags activos
'ltima instrucción ejecutada en el primer bloque, a su vez activa otros flags como son %7, %7, 7 2egundo )lo3ue
%rimera instrucción del segundo bloque activando los siguientes flags3 87, %7, 7
8egunda instrucción manteniendo los mismos flags activos
Ejecución de la instrucción ; sin presentar cambios en el flag nstrucción 29 la cual izo presentar un cambio en los flags desactivando el flag 87
-omo podemos observar la diferencia básica es 3ue el cambio de flags se 6ace mediante instrucciones predeterminadas predeterminadas en cada blo3ue anali:ado del programa
&@ -omo se 6a visto en los programas program as anteriores, algunas alg unas de las banderas se activ activan an del result resultad ado o de una una ins instru trucc cci#n i#n.. Pero Pero tambi tambi5n 5n alguna algunas s band bander eras as se pued pueden en acti activa varr o desa desact ctiv ivar ar medi median ante te inst instru rucc ccio ione nes s especí específic ficas, as, sin tomar tomar en cuenta cuenta el result resultad ado o de alguna alguna operac operaci#n i#n.. -omo -omo un eempl eemplo o ins insert erte e la siguie siguiente nte modifi modificac caci#n i#n en el 2E 2EG9 G9(O (O PROGRAMA"
mov dl, 1Ah mov ax, 02CC2h xor dl, ah xor dl, 0FFh stc std cli
;Activa la bandera bandera C ;Activa la bandera bandera D ;Desactiva la bandera I
mov dl, 1Ah mov ax, 2CC2 clc cld
;Desactiva la bandera C ;Desactiva la bandera D
1/+Ejecute paso a paso el programa monitoreando simult"neamente simult"neamente el estado de las banderas, note como se activan o desactivan. desactivan. =$u"les son sus conclusiones>
primera instrucción ejecutada
segunda instrucción ejecutada sin presentar ning:n cambio en los flags
tercera instrucción ejecutada sin cambio en los flags
$ambio de flag con la presente ejecución de la instrucción
Activación del flag 87 con la instrucción
Activación del flag $7 como se indico en la descripción de la instrucción
Activación del flag 07 como indica la descripción de la instrucción ejecutada
0esactivación 0esactivación del flag 7 con la instrucción $?
0esactivación 0esactivación del flag $7 con la instrucción $?$
0esactivación 0esactivación del flag 07 con la instrucción $?0 Activación del flag 7 con la instrucción 89
1@+0igite 1@+ 0igite el 9E$E %#A&A3
1+Ejecute solo las primeras dos instrucciones, monitoreando las banderas =$u"les se activ activar aron> on>,, =cu"l =cu"l fue el result resultado ado de la opera operació ción> n> =cómo =cómo interp interpret reta a el resultado>
!ER-ER PROGRAMA
INICIO A# ! (B)*
A# ! A# A# AN AN +(*
BmaCeD$&B
org 1)) 2$ 3 mov a, )54En binario 1)11D1 1)1 1D1))1 ))1 and and a, a, @) 4&asca 4&ascara ra
)1))D))))
AL ! AL OR OR ("
48i
0*F) or a, )1
4borra las
banderas activas A# ! A# A# TE,T +(*
mov a, )5
1*+Ejecute asta la instrucción 9E89 y conteste otra vez las preguntas del punto 1 del procedimiento.
1G+En las instrucciones -H y H cambie los dos datos @) por )( y repita los pasos del 1@ al 1*, =cómo se modificó el resultado del programa> Anote su respuesta.
En la presente instrucción vemos solamente un flag activo el cual es 7
0e manera similar mantenemos en los mismos estados los flags
?a instrucción nos permitio la activación del flag %7
&antenemos el estado de los flags por la instrucción ejecutada
Activación del flag <7 mediante 9E89
Análisis de resultados a+ %rim %rimer er pro progr gram ama. a. =Iué =Iué obje objeti tivo vos s se busc buscan an al usar usar la masc mascar ara a1 J7) J7)++ con con las las tres tres dife diferrente entes s instrucciones lógicas>
$uando se ejecuta la primera instrucción A20 el bit 0G termina en estado alto y se activa la bandera 8, en la segunda instrucción A20 también termina en alto, pero esta vez no se activa la bandera =por qué>
$uando $uando se ejecut ejecuta a la tercer tercera a instru instrucci cción ón lógica lógica,, ya sea A20 u , las bander banderas as reaccionan de forma similar. %ero cuando se ejecuta con la instrucción ; no =por qué ocurre eso> En el programa se declaran datos para acer las operaciones =dónde se guardan estos datos> b+ 8egu 8egund ndo o progr program ama. a. $uando se ejecutan el primer bloque del programa el resultado se almacena en 0?, lo mismo curre con el segundo bloque4 los dos resultados son idénticos, pero el estado de las banderas no lo es =por qué> Al modifi modificar car el progr program ama, a, tanto tanto los result resultado ados s como como las bander banderas as termin terminaro aron n en distintos estados =cu"les fueron los cambios espec!ficos que observo> c+ 9ercer rcer pro progr gram ama. a. =$u"l es la diferencia fundamental que noto a comparar las instrucciones A20 y 9E89> =Iué relación existe entre los bit que deseamos probar y el valor espec!fico de la mascara seleccionada>
Tarea T area complemen complementaria taria
En el programa se declaran algunos datos que ser"n operados =dónde se almacenan estos datos> nvestigue que son las directivas 0 y 0K Escriba un programa que dado un dato almacenado en A; invierta el estado de los bits impares desde el 0 asta el 01, borre los bits pares desde el 0* asta el 0- y coloque en 1 los bits 0G y 0)
Bibliograía
rey, . . Los Microprocesadores Intel. 8086 / 8088, 80186, 80286, 8086 ! 80"86. / Ar#$itect$ra, pro%ramaci&n pro%ramaci&n e inter'aces, inter'aces, %rentice Lall, &éxico 07, 155 iblioteca '0 ((".-+(+ B+/ "))/ %uede consultar consultar el material material en l!nea del E&'()(* E&'()(* sobre los temas de esta actividad. actividad. 8e recomiendan3 •
(Arit6metic and logic instructions ), ,ttp3MM666.emu()(*.co ,ttp3MM666 .emu()(*.comMassemblyDlanguag mMassemblyDlanguageDtutorialDassemblerD eDtutorialDassemblerDreferenceMa referenceMa
smDtutorialD)*.tml