Documentos de Académico
Documentos de Profesional
Documentos de Cultura
p15 PDF
p15 PDF
15
ANÁLISIS DE SISTEMAS DIGITALES
1
1. TEORIA DE ANALIZADORES LÓGICOS
1.1. Introducción 1
1.2. ¿Osciloscopios o analizadores lógicos? 2
1.3. El Analizador lógico 3
1.4. El Analizador de estados 6
1.5. El disparo de los analizadores lógicos 6
8
2. EL ANALIZADOR LÓGICO HP-1662A
2.1. General 8
2.2. El menú configuration 8
2.3. Etiquetas y símbolos 9
2.4. Cambiar de menú 9
2.5. El menú format 10
2.6. Crear la etiqueta del reloj del sistema 10
2.7. Crear la etiqueta del bus de datos 11
2.8. El menú waveform 11
2.9. Borrar la lista de etiquetas 11
2.10. Añadir etiquetas 11
2.11. Los markers 12
2.12. Secuencia de disparo o trigger 13
2.13. Menú trigger 13
2.14. Borrar una secuencia de disparo 13
Capítulo 15 Análisis de sistemas digitales Indice
3. LA UNIDAD DE PRUEBAS 16
4.1. Descripción 21
4.2. Los registros de la eu del 8088 22
4.3. Los registros de la biu del 8088 36
4.4. Unidad aritmética/lógica. alu 23
4.5. Buses 23
4.6. MMU 23
4.7. El patillaje de la cpu intel 8088 24
4.8. Timings de la CPU 8088 29
4.9. Ciclos de reposo 30
4.10. La arquitectura pipeline 31
5. REALIZACIÓN DE LA PRÁCTICA 35
1.1- INTRODUCCIÓN
Cuando hay que analizar un sistema digital, mucha gente elige un osciloscopio,
porque le resulta más familiar; hay uno en casi todos los laboratorios y son
relativamente fáciles de utilizar. Es el instrumento electrónico de propósito general por
excelencia. Pero un analizador lógico es el más adecuado en el análisis de sistemas
digitales.
Un analizador lógico reacciona igual que un circuito lógico; cuando una señal
supere o no un cierto umbral de tensión, reconocerá esta señal como un nivel alto o bajo
respectivamente.
- Cuando se desee interpretar las señales de un sistema de la misma forma que lo hace el
hardware.
Recordemos que cada muestra utiliza una posición de memoria. Así pues,
una mayor resolución (mayor velocidad de muestreo), implica una menor ventana
de observación, para una misma capacidad de memoria; por lo tanto se requiere
un compromiso entre resolución y tiempo total de adquisición .
b. - Muestreo transicional
c. - Captura de glitches
Uno de los principales problemas en un sistema digital son los glitches. Los glitches
tienen el antipático hábito de aparecer en los momentos más inoportunos y de provocar
los más desastrosos resultados. ¿ Cómo podemos capturar un glitch que aparece una vez
cada 36 horas y nos vuelve loco el sistema ? Los analizadores lógicos, tienen un sistema
de captura de glitches y unas posibilidades de disparo que hacen más posible localizar los
problemas provocados por los glitches..
Un glitch puede ser causado por: un acoplamiento capacitivo entre pistas, el rizado de la
alimentación, elementos que piden grandes picos de corriente, retardos entre señales,
etc. El analizador de tiempos después de muestrear la señal de entrada, puede seguir el
rastro de cualquier transición que suceda entre dos muestras, por lo tanto podrá
reconocer fácilmente un glitch.
Capítulo 15. Análisis de sistemas digitales Página 6
Otro término que resulta familiar para todo aquel que ha utilizado un osciloscopio
es el de trigger o disparo. Pero en los analizadores lógicos se llama secuencia de disparo.
Una secuencia de disparo está formada por un conjunto de niveles y términos (Ver
apartado 2-13).
El disparo por patrón puede utilizarse para disparar cualquier tipo de analizador
lógico. Siendo el único método posible para disparar un " analizador de estados".
Nota: Con mucha frecuencia se utiliza un disparo compuesto por flanco y por
patrón.
Capítulo 15 Análisis de sistemas digitales Página 8
2.1- GENERAL
Hay que configurar el analizador cada vez que se enciende. Ver apartado 5.3 pág
35 En la práctica asignaremos las dos pares de sondas al primer analizador.
Para darle un nombre el primer analizador primero hay que borrar el que tiene,
para ello pulsar sobre el campo Name, a continuación pulsar Clear para borrar el
anterior, y luego escribir 8088. Pulsar Done para finalizar.
El campo "Type" del primer analizador debe estar en "Timing" si se desea realizar
un análisis de tiempos ; y en "State" si se desea realizar un análisis de estados. De
momento dejarlo en "Timing."
Junto al nombre de las sondas, hay unos símbolos que indican el estado de las
señales que tienen conectadas. El símbolo Ú indica que tiene conectada una señal
variante en el tiempo. El símbolo ¯ indica que tiene un nivel alto. El símbolo _ indica que
tiene un nivel bajo.
Una "etiqueta" sirve para asignar un nombre a una "señal" del circuito o a un
conjunto de señales. Por ejemplo, si físicamente hemos conectado el reloj del sistema al
reloj del pod 4, en el Analizador indicaremos, a través de una etiqueta, que el Clock M
de la sonda A4 se llama CLOCK.
Símbolo :Cuando una etiqueta está formada por varias señales se llama
"símbolo" a cada combinación posible de dichas señales Así podemos asignar la etiqueta
"ciclo" al conjunto de señales :! SSO, IO/!M y DT/!R. Por otra parte a cada una de las
combinaciones posibles la llamaremos "símbolo" . Ej. si las tres son cero tendremos el
símbolo FETCH . ( Ver tabla pág. 28 )
Para cambiar de menú pulsar sobre el nombre del menú actual, en este caso
Configuration. Aparecerá la lista de menús del grupo. Pulsar sobre el menú deseado, en
nuestro caso Format 8088.
Capítulo 15 Análisis de sistemas digitales Página 10
El campo TTL define el umbral lógico. La práctica funciona con niveles TTL.
Dejarlo como está.
Los campos Pods y Labels nos permiten seleccionar los Pods y Labels que
interesen con el mando giratorio. Si el icono está sobre el campo Pods, el
desplazamiento con el botón giratorio del Analizador será horizontal a través de las
sondas del Analizador. Si el icono está sobre Labels, el desplazamiento será vertical
a través de las etiquetas.
El reloj del sistema está conectado al Clock M. del analizador Para activarlo:
El "bus de datos" está conectado a los ocho bits de menor peso del pod A1.Para ello:
Una vez creadas las etiquetas, debemos elegir las señales que deseamos
visualizar. Entrar en el menú Waveform 8088.
Cuando tengamos una etiqueta que esté formada por más de una señal (bus),
podemos elegir visualizar todas las señales o sólo algunas determinadas. Así:
Bit n. Dónde n es un número. En este caso sólo visualizamos la señal n del bus.
Por ejemplo, Bit 3 de DATOS significa DATO 3.
Las etiquetas formadas por una sola señal, por ejemplo CLOCK, siempre deberán
insertarse como Bit 0.
Bus. Inserta un bus, de forma que sólo se observa el valor del bus en cada
instante y no su evolución temporal. Ejemplo: Si queremos visualizar las señales que
representan las etiquetas Clock y Datos seguiremos la secuencia siguiente:
5. Pulsar Insert
6. Pulsar DATOS. Pulsar Bus
7. Poner la base de tiempos a 200 ns
8. Pulsar RUN.
Observar que encima de la señal de CLOCK existen unas rayitas que indican las
divisiones del tiempo. Cada separación equivale al tiempo fijado en la base de tiempos.
En el centro de la pantalla hay una línea más gruesa , es la referencia.
Pulsando sobre Delay o sobre la base de tiempos y girando el botón podemos ver sus
efectos.
A modo de ejemplo sólo se explicarán los Markers de tiempo del menú Waveform. Los
pasos a seguir son:
Para definir una secuencia de disparo, deberá entrarse en el menú Trigger 8088.
Una "secuencia" de disparo está formada por uno o más niveles. Definidos en
la mitad superior de la pantalla con números en un recuadro.
Cada "nivel" está formado por una combinación de términos. Las condiciones de
un mismo nivel se han de cumplir al mismo tiempo, mientras que cuando hay varios
niveles las condiciones de cada nivel se han de cumplir sucesivamente en el orden de los
niveles
La "secuencia de disparo" más sencilla estará formada por un sólo nivel que
contenga un único término.
NOTA: Cuando se quiera modificar las condiciones de disparo hay que parar e iniciar de
nuevo la adquisición. Esto es debido a que cuando está activa la adquisición no permite
modificar nada.
3. Pulsar DATOS.
4. Pulsar sobre el campo que está debajo de la etiqueta DATOS y a la derecha
- del término a. En el cuadro que aparece escribir 00 y Done.
5. En la mitad superior de la pantalla pulsar sobre el nº 1.
6. Pulsar >. En el cuadro que aparece pulsar Occurs. El número de veces debe - -
dejarse en uno.
7. Done para finalizar.
8. Pulsar RUN. Observamos que aunque no siempre dispara en el mismo - - - .
. instante, el valor del bus de datos es siempre el mismo.
Vamos a definir ahora una secuencia de disparo de un nivel compuesto por una
combinación de dos términos. Por ejemplo: cuando el flanco de bajada del CLOCK
coincida con un valor 00 hexadecimal en el bus de DATOS. Proceso:
NOTAS:
1ª Cada vez que se apaga el analizador se pierden las configuraciones y el
contenido de la memoria. Al encenderlo de nuevo hay que volver a seguir todo el
proceso.
2ª Para la realización de la práctica, el alumno deberá traer un disco vacío, si
quiere grabar las configuraciones del analizador, para no perder el tiempo realizándolas
cada vez.
Capítulo 15. Análisis de sistemas digitales página 15
3- LA UNIDAD DE PRUEBAS
3.1- EL "INTERPRETE" DE COMANDOS
Cuando aparece el prompt en la esquina superior izquierda del display significará que el
sistema está preparado (Prompt, significa listo,preparado, inmediato) para recibir una orden, la
cual deberá ir seguida de la tecla return. El sistema está formado por tres indicadores o prompts
diferentes, que indican el tipo de aplicación que se está ejecutando. Así:
El símbolo "→", indica el prompt del interprete de comandos. Significa que el sistema
está preparado para recibir un nuevo comando.
El símbolo "?", significa que el sistema está esperando una entrada de datos por teclado.
El dato puede ser un número, un nombre de fichero o el tipo de error que se desea generar,
dependiendo de la aplicación que se esté ejecutando.
El símbolo ":", significa que el editor de programas está esperando la siguiente orden a
ejecutar. Por ejemplo añadir una instrucción de programa, borrar una instrucción, borrar el
programa, etc.
El programa ejecutará el editor de programas. Esta orden está especialmente pensada para
que el alumno aprenda a programar en código máquina. Al ser una aplicación con sus propias
ordenes, se explicará su funcionamiento más adelante.
15
Capítulo 15. Análisis de sistemas digitales página 16
Esta orden forzará al programa a provocar un error de hardware. Se pueden generar hasta
cinco errores diferentes. Generado el error, el sistema dejará de funcionar. La única manera de
recuperar las condiciones de funcionamiento normal, es pulsar el botón de reset del Aparato.
Al escribir la orden ERROR, la pantalla se borrará para dejar paso al mensaje "Numero
de error". En la línea inferior aparecerá el prompt conforme el programa está esperando un
número entre 1 y 5. Cualquier otro valor provocará un mensaje de error. El número de error sólo
puede escribirse en decimal.
Esta orden configura el analizador para poder crear las 35 etiquetas, y realizar la práctica.
Esta orden ejecuta un programa escrito por el alumno. El programa habrá sido escrito con
el editor de programas, el cual se explicará más adelante.
Esta orden envía un carácter por el puerto A de la PIO. De esta manera el alumno puede
realizar el estudio completo de un acceso a periférico.
Al escribir la orden "PIO", la pantalla se borrará para dejar paso al mensaje "Dona'm el
valor". En la línea inferior aparecerá el "prompt" conforme el programa está esperando un
número entre 0 y 255. Cualquier otro valor provocará un mensaje de error.
16
Capítulo 15. Análisis de sistemas digitales página 17
Esta orden hace un volcado de la pantalla actual del Analizador en disco. La imagen de la
pantalla se grabará en formato PCX de 16 tonos de grises. Si se desea cualquier otro formato
tendrá que realizarse a través de los menús internos del Analizador.
Al escribir el comando PCX, la pantalla se borrará para dejar paso al mensaje "Nom del
fitxer". En la línea inferior aparecerá el prompt conforme el programa está esperando el nombre
del fichero sin extensión. Un nombre de fichero incorrecto producirá un mensaje de error.
El programa entra en un bucle infinito sin refrescar el WatchDog del sistema. Esto
provocará que al cabo de unos 500 ms actúe el WatchDog e inicialice de nuevo el sistema. Esta
orden está especialmente pensada para que el alumno pueda estudiar el funcionamiento del
WatchDog.
Esta orden envía un conjunto de mensajes al Analizador para que el alumno pueda
estudiar una comunicación serie y el protocolo XON/XOFF. Hay que tener en cuenta que éste es
el único comando que puede utilizarse para estudiar una comunicación serie. Cualquier otro
comando, que configure el Analizador o que capture pantallas, no sirve, ya que aborta la
adquisición de datos que estuviese realizando el Analizador.
Esta orden está especialmente pensada para simplificar el trabajo al alumno a la hora de
insertar las señales que se desea visualizar en el menú Waveform. En la línea superior aparecerá
el siguiente mensaje "Quin senyal", a partir de este momento pueden escribirse los nombres de
las etiquetas que desee y hayan sido creadas e irán insertándose una detrás de la otra.
17
Capítulo 15. Análisis de sistemas digitales página 18
Dentro del editor, el "prompt" será el símbolo ":", esto significa que está esperando una
orden. Cuando el prompt sea el símbolo "?", significará que está esperando la entrada de datos.
Después de ejecutar una orden, se borrará la pantalla y aparecerá el prompt del editor de
programas a la espera de una nueva orden.
18
Capítulo 15. Análisis de sistemas digitales página 19
I nnn. Insertar. Permite insertar un byte de código entre la posición nnn-1 y nnn. En la
línea superior de la pantalla aparecerá el mensaje "Posicio: nnn", donde nnn es el número de la
posición actual. En la línea inferior aparecerá el símbolo "?" a la espera que se introduzca el byte
de código.
19
Capítulo 15. Análisis de sistemas digitales Página 21
4- EL MICROPROPROCESADOR 8088
4.1- DESCRIPCIÓN
El microprocesador 8088 tiene una arquitectura interna de 16 bits (ALU, registros, buses
internos, etc.), pero externamente dispone de un bus de datos de 8 bits y un bus de direcciones
de 20 bits. Este microprocesador aporta, como estructura compleja, los nuevos conceptos de
pipeline y MMU.
Unidad de Interficie de Bus (BIU). Tiene la misión de realizar el ciclo de fetch, o sea, buscar en
la memoria la siguiente instrucción y cargarla en la cola y comunicar la CPU con el exterior.
Unidad de Ejecución (EU). Se encarga de ejecutar las instrucciones que le suministra la BIU.
Como los dos bloques son independientes, mientras la EU no necesite el bus de direcciones y de
datos, la BIU va cargando instrucciones adicionales y la EU va ejecutando las ya cargadas
anteriormente. A este proceso se le llama pipeline. De esta forma cuando la EU acaba de ejecutar
una instrucción, ya tiene preparada la siguiente.
Capítulo 15. Análisis de sistemas digitales Página 22
El 8088 tiene una cola de 4 bytes, donde se almacenan las instrucciones pendientes de ejecución.
Con este sistema el 8088 reduce el tiempo de carga y ejecución de una instrucción.
NOTA: El único problema que presenta este método viene cuando ha de ejecutarse una
instrucción de salto o ruptura de secuencia. En estos casos las instrucciones que había
almacenadas en la cola no son correctas, y hay que cargar de nuevo las instrucciones desde la
nueva posición.
- Registros de segmento.
- Cola de instrucciones.
- Puntero de instrucción
- MMU.
Registros de índice y puntero. Los dos registros de índice son SI y DI. Funcionan
normalmente manipulando cadenas, construcción de estructuras complejas de datos, etc. Los dos
registros de puntero son el BP, que es de uso general, y el SP que es el puntero al stack.
Registro de control. Es el registro que contiene los flags. El contenido de este registro se
actualiza cada vez que la EU ejecuta una instrucción
Registros de segmento. En total hay cuatro registros de segmento. Estos registros son la
base de la dirección de los segmentos de código (CS), datos (DS), stack (SS) y extra (ES).
4.5- BUSES
El 8088 posee un bus de datos interno de 16 bits. No obstante, externamente dispone
de un bus de datos de 8 bits multiplexado con los 8 bits de menor peso del bus de direcciones.
En función del estado de la señal ALE, serán datos o direcciones.
4.6- MMU
Esta es otra aportación del 8088, en lo que se refiere a estructura compleja. Este
microprocesador dispone de un bus de direcciones externo de 20 bits, con el que se puede
direccionar un total de un megabyte de memoria. Todo el mapa de memoria está dividido en
zonas de datos y códigos. A estos bloques, se les llama "segmentos" y tienen un tamaño de
64 Kbytes.
1. Direcciones
2. Datos
3. Control y estado
4. Temporización
5. Alimentación y masa
El número de patas para cada grupo varia. El grupo de temporización tiene una sola señal
que es el CLOCK, mientras que otros, como por ejemplo los grupos de direcciones o datos,
utilizan bastantes más y además multiplexadas en el tiempo.
A continuación haremos una descripción del patillaje del 8088, por grupos.
AD0-AD7. Address / Data. Las señales AD0 hasta AD7 están multiplexadas en el
tiempo, para de esta forma poder proporcionar direcciones o datos (ver figura 8). Al principio de
cada "ciclo máquina", los 8 bits de menor peso del bus de direcciones aparecen en estas patas.
Más tarde en el mismo ciclo máquina, se convertirán en el bus de datos. A partir de este
momento, AD0-AD7 pasa a ser un bus bidireccional, dependiendo de si el 8088 esta leyendo o
escribiendo datos al o desde el sistema.
AS16-AS19. Address / Status. Las señales A16 hasta A19 están multiplexadas en el
tiempo. Al principio de cada ciclo máquina, pasan a ser los cuatro bits de mayor peso del bus de
direcciones.
En la segunda parte del ciclo máquina, estas cuatro señales proporcionan información
sobre el estado de la CPU. Cuando se han fijado las direcciones, en estas patas aparecen las
señales S3 y S4. Estas dos señales pueden descodificarse para extraer la información
correspondiente al segmento de memoria a que está accediendo el 8088 durante el ciclo máquina
actual.
Los buses de direcciones y datos entran en estado de alta impedancia cuando la CPU cede
los buses. Durante el ciclo de reconocimiento de interrupción, en las cuatro direcciones de mayor
peso, la información referente a las direcciones, tendrá un valor indeterminado, pero la
información de estado será válida.
Las señales de "control y estado" indican el tipo de ciclo máquina que está realizando la
CPU y además sirven para controlar la lógica externa. Son las siguientes:
!RD1. Read. La señal de !RD indica que la CPU está leyendo datos de la memoria o
periférico de E/S2.
!WR. Write. La señal de !WR indica que la CPU está escribiendo datos a la memoria o
periférico de E/S.
ALE. Address Latch Enable. La señal ALE es una salida que se utiliza para fijar el bus de
direcciones en un sistema iAPX883. Esta señal normalmente se conecta a la entrada " enable" (G)
de un 74LS373 (ver fig. 15).
1
El símbolo ! indica negación, o que es activa por nivel bajo.
2
Entrada/Salida
3
iAPX88 hace referencia a un microsistema completo basado en la CPU 8088
Capítulo 15. Análisis de sistemas digitales Página 26
El flanco de bajada de ALE fija el bus de direcciones, haciéndolas válidas durante el resto
del ciclo máquina.
IO/!M. In/Out / Memory. Esta salida indica si el actual ciclo máquina está direccionando
a un periférico de E/S ó a la memoria (ALTO= E/S, BAJO = MEMORIA). Esta señal es valida
durante todo el ciclo máquina.
Mn/!Mx. Minimum / Maximum. Esta entrada configura el modo de trabajo del 8088.
Modo mínimo si vale uno y modo máximo si vale cero. El modo de trabajo del microprocesador
indica el tamaño del sistema que controla. Influye en el fan-out de los buses y las señales de
control cambian de nombre y función para poder ser conectadas directamente al controlador de
bus 8288.
Las señales de control explicadas hasta ahora, son suficientes para controlar un pequeño
sistema con los buses multiplexados. Si se desea controlar un sistema mayor y con el sistema de
buses desmultiplexados, hará falta conocer el resto de señales de control.
DT/!R. Data Transmit / Receive. La señal DT/!R es una salida, que permite controlar la
dirección del bus de datos cuando pasa a través de un buffer bidireccional (74LS245). Cuando
vale uno significa que el 8088 transmite los datos al bus de datos del sistema. Cuando vale cero,
el 8088 recibe los datos desde el bus de datos del sistema.
!DEN. Data Enable. La señal !DEN permite el paso de los datos a través del buffer
bidireccional. Esto evita colisiones en los buses mientras el 8088 pone las direcciones en el bus.
INTR. Interrupt Request. La señal INTR, informa al 8088 que pare lo que esté haciendo
y que sirva la interrupción solicitada. El 8088 muestrea esta señal durante el último período de
reloj de cada instrucción.
Capítulo 15. Análisis de sistemas digitales Página 27
Cuando la CPU detecta que INTR vale uno, el 8088 salta a una RSI (rutina de servicio de
interrupción) a través de la tabla de vectores de interrupción ubicada en la parte baja de la
memoria.
La señal INTR puede ser enmascarada por software manipulando el flag correspondiente
en el registro de flags. La señal INTR se sincroniza internamente.
!INTA. Interrupt Acknowledge. La señal !INTA se utiliza como señal de lectura cuando
se está sirviendo un ciclo de reconocimiento de interrupción. !INTA está activa durante los tres
últimos períodos de reloj de cada ciclo de reconocimiento de interrupción.
!SSO.. Cuando se descodifica junto con las señales IO/!M y DT/!R, nos dan información
del tipo de actividad que tiene lugar en los buses.
!HOLD/HLDA. Hold / Hold Acknowledge. La señal HOLD es una entrada activa por nivel bajo
e indicia a la CPU que hay otro dispositivo que desea los buses.
NOTA :Una transferencia de datos ocupa un ciclo máquina para un byte o dos ciclos máquina
para una palabra o reconocimiento de interrupción.
NMI. Non Maskable Interrupt. Esta interrupción no es enmascarable por software. A través de la
tabla de vectores de interrupción, se ejecutará la RSI(Rutina Servicio Interrupción) asociada.
Un flanco de subida en esta entrada provocará que al final de la instrucción actual se sirva la
interrupción. Esta entrada se sincroniza internamente.
Capítulo 15. Análisis de sistemas digitales Página 28
READY. La señal de READY, se utiliza para añadir estados de espera en un ciclo máquina
cuando tenemos periféricos o memoria lentos. READY es una entrada, la cual viene sincronizada
por el 8284A.
!TEST. Esta entrada sincroniza la CPU con un evento externo. Cuando se utiliza junto con la
instrucción " wait for test ", la CPU se queda a la espera hasta que la entrada de TEST es puesta a
cero por un dispositivo externo.
2.7.4- TEMPORIZACIÓN
La pata 19 es la entrada de reloj para el 8088. La frecuencia máxima de reloj es de 5 MHz para el
8088, y de 8 MHz para el 8088-2. Generalmente la señal de reloj viene del 8284A.
Un ciclo máquina básico del 8088 está compuesto por cuatro períodos de reloj, que llamaremos
T1, T2, T3 y T4.
Para localizar el inicio de un ciclo máquina se ha de tener en cuenta: 1º que T1 empieza con un
flanco de bajada del CLOCK. 2º que durante el período T1 baja la señal ALE.
Durante el período T1. La CPU coloca una dirección en el bus. Esta dirección apunta a una
posición de memoria o a un periférico dentro del iAPX88. Se garantiza que cuando baje la señal
ALE, esta dirección aún será valida. Además, en este momento las señales de control IO/!M,
!SSO y DT/!R también serán válidas.
Capítulo 15. Análisis de sistemas digitales Página 29
Estas tres señales indican a la lógica externa "qué tipo de ciclo máquina" se dispone a realizar
la CPU (ver tabla 2 ;Pág. 28).
Durante el período T2, los 8 bits de direcciones/datos de menor peso del 8088, empiezan a
fluctuar preparándose para la transferencia de datos.
A continuación, las señales de control !DEN y !RD o !WR serán válidas, para poder validar el
dato en el bus para la transferencia. Este dato será leído hacia dentro, o hacia fuera del 8088 a
través de las señales AD[0:7], los cuales en este momento hacen funciones de bus de datos. En
este momento, las cuatro direcciones de mayor peso, hacen funciones de bus de estado. La
información de estado estará disponible al descodificar estos bits.
De todas formas, S3 y S4 pueden descodificarse para determinar que segmento de memoria está
siendo accedido en el actual ciclo máquina. Esta información puede utilizarse para seleccionar
uno de los cuatro segmentos de memoria (código, datos, stack y extra) que son direccionados por
el iAPX88. Esta técnica permite partir la memoria en cuatro segmentos para expandirla hasta 4
MBytes.
Durante T3 la CPU continua haciendo valer el dato escrito en el bus, o bien sigue leyendo el bus
de datos, además sigue proporcionando información de estado en los 4 bits de mayor peso del
bus. Este estado, proporciona el tiempo necesario para que el dato se estabilice en el bus de datos,
y así poder ser leídos por la CPU o dispositivo seleccionado (memoria o periférico).
A principios de T4 las señales !RD o !WR suben a uno (quedan inactivas), y el dato es fijado en
el 8088 o dispositivo direccionado. Las señales !DEN y DT/!R también suben y la memoria o
periférico quedan desactivados.
Si el anterior ciclo máquina era de escritura, la CPU mantiene el dato en el bus antes de
que empiece el siguiente ciclo máquina. Pero si era un ciclo de lectura, la CPU no mantiene el
dato en el bus.
Capítulo 15. Análisis de sistemas digitales Página 30
Debido a que la CPU lee (pre fetch) al menos cuatro bytes de instrucción para la cola de
instrucciones, la relación entre la lectura de la instrucción y la transferencia del operando
asociado, puede estar separada en el tiempo por lecturas de bytes de instrucción adicionales.
En general, cuando se lee una instrucción y es puesta en la cola de instrucciones del 8088,
varias instrucciones serán leídas y puestas en la cola, antes de que sean descodificadas y
ejecutadas.
El hardware de la CPU que ejecuta las instrucciones obviamente debe esperar hasta
que la instrucción sea leída y descodificada antes de que empiece su ejecución. Por lo tanto,
en un microprocesador estándar, el hardware de ejecución malgasta mucho tiempo esperando
que las instrucciones sean leídas y descodificadas.
El 8088 elimina este tiempo de espera dividiendo la CPU en dos unidades funcionales
independientes (figura 10).
Capítulo 15. Análisis de sistemas digitales Página 31
El 8088 tiene una unidad de interfície con el bus, llamada BIU (Bus Interface Unit) cuyo
único trabajo es leer las instrucciones de la memoria y pasar los datos hacia y desde el
hardware de ejecución al mundo exterior a través de la interfície del bus.
Puesto que la unidad de ejecución EU (Execution Unit) y la unidad de interfície con el bus
son independientes, la BIU lee las instrucciones adicionales mientras la unidad de ejecución
ejecuta la instrucción anterior. Esto es posible gracias al Instrucción Pipeline o cola, entre la
unidad de interfície y la unidad de ejecución; la unidad de interfície llena la cola con las
instrucciones que serán ejecutadas. De este modo, cuando la unidad de ejecución termina una
instrucción, la siguiente instrucción normalmente está ya lista sin necesidad de tiempos de
espera. La figura 11 muestra el trabajo en paralelo de las unidades de ejecución y de interfície
en el 8088.
Debido a que la BIU normalmente está ocupada leyendo instrucciones para la cola, el bus del
8088 está más ocupado, sacando así un mayor rendimiento a la estructura de buses del
Capítulo 15. Análisis de sistemas digitales Página 32
Otro beneficio del trabajo en paralelo es que puesto que la EU rara vez necesita esperar a que
la BIU lea la siguiente instrucción, hay una menor necesidad de que la BIU lea las
instrucciones rápidamente. De este modo, la BIU del 8088 permite un máximo rendimiento
sin necesidad de utilizar dispositivos de memoria rápidos.
Cuando la ejecución del programa salta a una nueva dirección, el tiempo de fetch es el único
tiempo que no es totalmente transparente. Cuando esto sucede, la unidad interfície recibe la
nueva dirección de la unidad de ejecución; entonces empieza a leer las instrucciones
secuencialmente a partir de la nueva dirección. La unidad de ejecución deberá esperar a que la
nueva instrucción sea leída igual que lo hacen los microprocesadores estándar. Después de
que la primera instrucción haya sido leída de la nueva dirección la unidad de interfície
continua otra vez llenando la cola con instrucciones y el tiempo de fetch vuelve a ser otra vez
transparente.
Capítulo 15. Análisis de sistemas digitales Página 34
5- REALIZACIÓN DE LA PRÁCTICA
El estudio se realizará sobre un sistema completo basado en la CPU 8088, el sistema está
totalmente abierto para que el alumno pueda estudiar su funcionamiento. Los 68 canales del
Analizador lógico HP 1672G están conectados a las 68 señales más útiles para el estudio
del sistema .
Como ya se ha dicho antes, todo el sistema está controlado por el microprocesador Intel 8088 en
"modo mínimo" con los buses multiplexados y trabajando a una velocidad de reloj de
aproximadamente 5 MHz. El sistema está
permanentemente vigilado por un WatchDog, que inicializará de nuevo el sistema cada vez que
el software falle.
La memoria está formada por dos bancos de 32 Kbytes; Un banco de memoria RAM,
donde tenemos la tabla de vectores de interrupción, el segmento de datos y el stack; y un banco
de memoria EPROM donde tenemos el segmento de código.
Para que se puedan realizar pruebas de acceso a periférico, se ha conectado una PIO, de
propósito general, en el sistema. De esta manera, cuando el alumno escriba sus propios
programas en código máquina tendrá alguna vía para comunicarse con el exterior.
Una vez realizado el estudio completo del funcionamiento del sistema, el alumno tendrá
que poner en práctica los conocimientos obtenidos, simulando errores dentro del propio sistema,
y luego buscar dónde se halla el error.
A partir de este momento, el Analizador está preparado para recibir ordenes a través de la
RS-232.
Los 68 canales están conectados a las distintas señales de la unidad de pruebas . Para
idendificarlos se les asignan distintos nombres o "etiquetas".
Hay 32 etiquetas asignadas a señales simples y 3 etiquetas asignadas a buses . Total 35.
Las etiquetas de los buses consumen varios canales . Así AX(0 a 14) = 15 .
D(0 a 7) = 8
PA(0 a 7 ) = 8
Para una mejor comprensión, el nombre que figura en los esquemas, es el mismo que el
de las etiquetas. Debido a que nuestro sistema tiene más de 68 señales, se han conectado las
más didácticas, es decir, las que permiten hacer un estudio más adecuado.
En la tabla de la página 37 se detalla donde han sido conectados los 68 canales del
Analizador. En la primera columna de la tabla aparece el canal de la sonda. En la segunda, el
nombre de la etiqueta. En la tercera y cuarta columna, aparece el chip y el número de la
pata.
1
A partir de este momento, siempre que hagamos referencia al prompt, significará que es una orden para la unidad
de pruebas.
Capítulo 15. Análisis de sistemas digitales Página 37
A continuación, se hace una pequeña descripción de cuales son las líneas básicas a seguir
para realizar una buena adquisición.
Una vez cargadas las etiquetas, podemos empezar el estudio del funcionamiento de la
Unidad de Pruebas. El estudio se ha separado en 11 apartados, del 5.5 al 5.16. Al principio de
cada apartado, junto con la explicación teórica se adjunta el esquema. Al final del capítulo, están
los esquemas completos. Los esquemas completos, conviene seguirlos para tener una visión
global del sistema, y no perder el mundo de vista.
Primero debe leerse y comprenderse la teoría, a continuación el alumno debe elegir qué
señales considera interesante visualizar para poder realizar el estudio. Recordemos, que sólo se
pueden observar las señales con un nombre asignado (etiquetas). Antes de colocar las
nuevas etiquetas en la pantalla, deberán borrarse las etiquetas existentes.
La primera adquisición deberá realizarse en modo repetitivo. Una vez ajustada la base de
tiempos, deberá posicionarse el disparo mediante el delay en una posición de la pantalla que
permita la observación de toda la información.
void main(void) {
for(; ;) { // Bucle infinito
Lee Teclado();
Escribe Pantalla();
WatchDog(); // Refresco del WatchDog
}
}
Si por lo que fuese, el programa se colgase, el WacthDog se daría cuenta de que nadie le
informa del buen funcionamiento del programa y automáticamente restablecería las condiciones
iniciales.
El descodificador esta diseñado de tal manera que dará un flanco negativo cuando se
haga un acceso al periférico situado en la dirección 40 hexadecimal.
Debido a que el tiempo que la salida del descodificador se mantiene activa (nivel bajo) es
insuficiente para saturar directamente el transistor y que además está invertida,
intercalamos un monoestable que alarga e invierte el pulso, para que pueda saturar el transistor
T1.
Capítulo 15. Análisis de sistemas digitales Página 41
El 555 es un oscilador cuya constante de tiempo viene fijada por las resistencias R6 y R7
junto con el condensador C2. Mientras el condensador C2 este descargado la salida Q del 555 se
mantiene a uno. Pero cuando el condensador C2 se carga, la salida cambia a cero, hecho que
reiniciará el sistema, al poner un cero a la entrada de la AND (ver fig. 14).
Para un correcto funcionamiento, la rutina de refresco del WatchDog deberá quedar como
sigue:
void WatchDog(void) {
outportb(0x40, NULL); // Escribe un byte en el puerto 40 hexadecimal
}
5.5.2- PRECAUCIONES
- Debe tenerse en cuenta, que aunque un sistema se haya colgado, las interrupciones
pueden seguir funcionando correctamente, por lo tanto jamás debe incluirse el refresco del
WatchDog dentro de una RSI (Rutina de Servicio de Interrupción).
- La constante de tiempo del oscilador ha de ser tal que permita al programa realizar al
menos un ciclo completo.
La inicialización del sistema puede ser debida a dos causas totalmente independientes.
Una, que el usuario pulse el reset del sistema, y otra que el WatchDog actúe.
La frecuencia del reloj del sistema es tres veces menor que la frecuencia a la que
oscila el cristal de cuarzo. Además el 8284 tiene una salida PCLOCK que es la mitad de la
frecuencia del reloj del sistema, la cual se utiliza para los periféricos.
7. Pulsar sobre el término deseado, por ejemplo a. Elegir la opción de limpiar el término,
es decir Clear (=x). De esta forma estamos seguros que no hay ninguna asignación
anterior.
8. Pulsar sobre el campo que está al lado del término a y justo debajo de la etiqueta
!WDOG, poner un cero.
9. Definir la secuencia de disparo, cuando a suceda una vez (consultar apartado 2.15, pág.
14).
10. Pulsar el botón de RUN.
Podemos ver en la pantalla las señales !WDOG y Q_121 y que Q_555 no baja.
Cuando se quieran calcular tiempos de retardo entre señales o cualquier otro tiempo. Hay
que tener en cuenta que el sistema muestrea a una cierta frecuencia, y que el error máximo
cometido será un período de muestra.
Una vez visto el funcionamiento del monoestable, vamos a provocar que actúe el
WatchDog, para ello:
11. Definir el término a como Q_555= 0. Para ello repetir los pasos 5 a 9. No olvidarse
de borrar la secuencia de disparo anterior.
14. Pulsar RUN. Vemos que el analizador está a la espera de que se cumpla la
condición de disparo.
15. En el prompt, escribir la orden RESET (apartado 3.1.8, pág 17). Como se ha explicado
antes, se trata de un bucle infinito.
Ajustar el retardo, hasta que por pantalla aparezca el ultimo flanco de refresco del WatchDog y el
reset del sistema. Medir el tiempo que tarda el oscilador en resetear el sistema. Está
suficientemente dimensionado el sistema ?
Para que se pueda visualizar este intervalo de tiempo será necesario pasar el Acquisition Mode a
Manual, el Trigger Position a User Defined, con el Post Store al 20% y el Sample Period a 10 us. Para
el resto de las medidas el Acquisition Mode deberá estar en Automatic.
Capítulo 15. Análisis de sistemas digitales Página 44
5.6 - LA CPU
El desmultiplexado del bus de datos se hace con un 74LS245, que es un buffer bidireccional. El
sentido de los datos se fija con la pata DIR, la cual está gobernada con la señal DT/!R de la CPU,
(recordemos que vale cero cuando el sentido de los datos es de entrada y vale uno cuando los datos salen
de la CPU).
Las salidas del buffer entran en estado de alta impedancia cuando la entrada G vale uno, es decir
mientras la CPU no valide los datos con la señal !DEN.
El desmultiplexado del bus de direcciones se hace con dos 72LS373, que es un latch seguidor
unidireccional. Mientras la entrada de control G está a uno, la señal de salida sigue a la entrada, pero
cuando ésta baja a cero, el flanco fija, a la salida, los datos que en ese momento estén a la entrada.
Vemos, pues, que este chip esta controlado por la señal ALE de la CPU, la cual baja
cuando en el bus hay una dirección valida. La señal de control OC, está conectada a masa, por lo
tanto habilita la salida.
Como sólo se utilizan las primeras quince direcciones para direccionar la memoria. Y la
dirección de mayor peso para mapear los bancos de memoria. El resto de direcciones no es
necesario desmultiplexarlas, de esta forma nos ahorramos un chip.
Capítulo 15. Análisis de sistemas digitales Página 45
En la figura 16 se pueden observar las señales implicadas cuando la CPU realiza un ciclo
de lectura de instrucción o fetch. Como ya se ha visto en la teoría, durante el primer periodo de
reloj la señal ALE baja para validar el bus de direcciones (Recordemos que un período de
reloj empieza con el flanco de bajada) , además en este momento las señales !SSO, IO/!M
y DT/!R ya indican de qué tipo de ciclo máquina se trata. (fig. 16) En el caso de un ciclo de
lectura de instrucción las tres valen cero.
Durante el segundo período de reloj, bajará la señal !RD o !WR .En nuestro caso por
tratarse de un ciclo de lectura de instrucción, bajará la señal de !RD. Al cabo de poco rato bajará
la señal !DEN.
Al finalizar este estudio el alumno tendría que ser capaz de reconocer sin ninguna duda,
todos y cada uno de los ciclos máquina de la CPU. Además de interpretar la secuencia de
ejecución de un programa.
Con un simple vistazo se puede observar que el programa está formado por ocho ciclos de
lectura y dos de escritura, y si observamos la señal IO/!M llegaremos a la conclusión que son
ocho ciclos de lectura a memoria y dos ciclos de escritura a periférico.
Si observamos la señal !SSO durante los ocho ciclos de lectura, veremos que esta a cero,
por lo tanto no son ciclos de lectura a memoria, sino que son ciclos de lectura de instrucción.
A simple vista, también observaremos que hay ciclos que ocupan más de cuatro períodos
de reloj. Bien, esto no es cierto. Lo que pasa es que la CPU esta ejecutando ciclos de reposo.
Recordemos que los ciclos de reposo, son aquellos ciclos que ocupan un sólo período de
reloj, en los que la CPU no hace un acceso a memoria ni a periférico, sino que realiza algún tipo
de operación interna. Por ejemplo el último ciclo máquina es exageradamente largo. Esto es
debido a que la CPU está ejecutando la instrucción de salto para volver al principio del programa.
Cada vez que la CPU hace un ciclo de lectura o escritura a memoria o periférico de E/S,
lo indica al resto del sistema activando las señales del bus de control. En total hay siete "ciclos
máquina" a estudiar:
Una vez tenemos creada una etiqueta llamada CICLO, y que tiene asignados las tres
posiciones correspondientes a las señales !SSO, DT/!R y IO/!M. Vamos a asignar un valor
lógico, llamado símbolo, a cada una de las ocho combinaciones posibles (ver tabla 2).
Repetir esta operación asignando un símbolo para cada uno de los ciclos máquina de la
CPU. Tener en cuenta que el orden de los bits de la etiqueta es el mismo que el de
asignación, y no tiene porqué ser el mismo que el de la tabla 2.
Capítulo 15. Análisis de sistemas digitales Página 48
Una vez definida la secuencia de disparo, para estudiar el resto de ciclos máquina sólo
habrá que cambiar el valor de la variable a, poniéndole el valor del símbolo deseado.
Para ello, pueden observarse los tiempos de propagación del 74LS245 y del
74LS373. También puede observarse el comportamiento de una señal
multiplexada y como se comportan las salidas desmultiplexadas cuando se
activan las señales ALE, DT/!R y !DEN.
Capítulo 15. Análisis de sistemas digitales Página 49
5.7- LA MEMORIA
La memoria está formada por dos bancos de 32 Kbytes (figura 18). El primero es un
banco de memoria RAM estática situado en la parte baja de la memoria. El segundo banco es una
EPROM mapeada en la parte alta. El mapeado de memoria, queda de la siguiente manera:
2. Colocar las señales siguientes, implicadas en este estudio: AX19, IO/!M, !RD, !WR,
!RAM y !EPROM .Se recomienda utilizar la orden WAVE (apartado 3.1.11, pág 19).
3. Preparar una secuencia de disparo que nos permita ver un acceso a memoria. Por
ejemplo que dispare cuando se haga un acceso de lectura, !RD= 0. No olvidar borrar la
secuencia de disparo existente.
4. Volviendo al menú de WAVEFORM, poner una base de tiempos 2 us/div. Para
observar los accesos a memoria que realiza el sistema.
5. Pulsar RUN.
Prácticas adicionales
El método a seguir para realizar este estudio, es muy parecido al realizado en el apartado
anterior. Las señales implicadas pueden ser: AX4, AX5, AX6, IO/!M, !RD, !WR, !KEYB,
!PIO, !LCD, !WDOG, !RS232, y !PIC
Cuando se pulsa una tecla del teclado de la unidad de pruebas, provocamos una
interrupción. Al finalizar la RSI hay que enviar al PIC el código correspondiente al final de
interrupción. Dentro de la RSI leeremos el carácter que haya en el buffer de entrada. Cuando se
detecte que se ha soltado la tecla, escribiremos el carácter en el display. Por lo tanto el hecho de
pulsar una tecla, provoca la selección de tres periféricos.
5.9- EL TECLADO
En el apartado anterior hemos estudiado cómo hacía la CPU para direccionar el teclado,
en este apartado se estudiará, cómo envía los datos el teclado.
La conexión del teclado se hace con un conector DIN de 5 pins. De los cuales, sólo
cuatro están conectados: 1-Reloj, 2-Datos, 4-Masa y 5-Alimentación.
El teclado envía los datos de forma asíncrona, a una velocidad de 13.5 Kbauds, con un bit
de paridad par y otro de parada. Cuando el teclado está en reposo, las líneas de datos y de reloj
están a nivel alto. Cuando se pulsa una tecla, el reloj empieza a oscilar y la línea de datos empieza
la transmisión.
Cuando la USART detecta que el carácter está completo, sube la salida RxRDY (receiver
ready). Indicando así a la lógica externa que lea el carácter que tiene en el buffer de entrada. Si no
se leyera, el siguiente carácter machacaría al anterior y se perdería.
La señal de reloj que proviene del teclado, se utiliza para sincronizar ambos dispositivos,
y así se pueden utilizar diferentes teclados, aunque vayan a velocidades diferentes. Hecho
bastante frecuente.
A continuación envía un código indicando que se ha soltado la tecla. Hay que ir con
cuidado, puesto que ciertas teclas especiales están formadas por más de un código. Por ejemplo la
tecla de Pausa está formada por seis caracteres.
Capítulo 15. Análisis de sistemas digitales Página 53
Cuando se ha servido una interrupción, debe indicarse al PIC que ha finalizado. Por lo
tanto la CPU manda un código de fin de interrupción.
Una vez realizado el estudio, de cómo un periférico genera una interrupción, ya estamos
en condiciones de estudiar cómo ésta es servida por la CPU. Aunque tenemos tres tipos de
interrupciones, utilizaremos la del teclado, por ser la más sencilla.
1. Señales implicados: Bus Datos, IRQ8, INTR, !SSO, ALE, IO/!M, DT/!R y !INTA.
2. Disparar por flanco de bajada de !INTA.
Capítulo 15. Análisis de sistemas digitales Página 54
El segundo sirve para que la CPU lea el vector de interrupción. Como puede
observarse en la figura, es durante el segundo ciclo, cuando !INTA esta activo, el PIC pone el
valor del vector de interrupción en el bus de datos, en este caso 8.
Cuando el PIC detecta que le han reconocido la interrupción, libera la señal INTR. En
cambio el teclado tarda un poco más, pero el PIC es bastante inteligente para saber que no hace
falta preocuparse.
Como complemento, se pueden provocar las otras dos interrupciones. Utilizando la orden
que realiza una transmisión serie, pero no la de configuración. Para las diferentes interrupciones,
verificar el vector de interrupción.
También se puede localizar el ciclo máquina, en que la CPU indica al PIC que la
interrupción ha finalizado y descubrir el código de final de interrupción.
Capítulo 15. Análisis de sistemas digitales Página 55
5.11- EL DISPLAY
Otra parte importante de la interfície con el usuario, es el display. Para ello hemos
conectado un LCD de dieciséis caracteres por dos líneas, el cual se conecta directamente al bus
de datos y es tratado como cualquier otro periférico.
Al ser un dispositivo muy lento (es decir, tarda bastante en escribir un carácter
en comparación con la velocidad de la CPU) y restrictivo en lo referente a los tiempos
de establecimiento y mantenimiento de las señales de control (es decir, necesita que la
orden de lectura o escritura llegue pasado un cierto tiempo después de que se
haya selecciona el periférico), nos hemos visto obligados a utilizar la dirección A15
directamente tal y como sale de la CPU (recordemos que es valida durante todo el ciclo).
Así al no pasar a través del 74LS373 ganamos unos nanosegundos que nos son
necesarios para cumplir los tiempos anteriormente mencionados. Esta dirección la utilizaremos,
para diferenciar si realizamos un acceso de datos o de control.
Antes de realizar ninguna operación sobre el LCD, primero hay que leer el estado del flag
de ocupado. Por lo tanto, en el mejor de los casos, se necesitan dos accesos para realizar alguna
operación sobre el LCD.
Hay que tener en cuenta, que este dispositivo, al contrario de los demás, funciona con
lógica positiva. Por lo tanto el conexionado de las señales de control queda de la
siguiente forma:
* Señal R/W. Cuando ésta señal vale cero significa que la CPU escribe y cuando
vale uno la CPU lee. Por eso utilizaremos la señal !SSO para indicar
lectura/escritura.
* La entrada de selección del dispositivo es activa por nivel alto, por lo tanto hay
que invertir la salida de la lógica de selección de periférico.
Capítulo 15. Análisis de sistemas digitales Página 56
Observar cuántos ciclos de lectura hace la CPU, antes de poder escribir un carácter. Que
hace la CPU durante el bucle de espera (aumentar la base de tiempos) ?
5.12- LA PIO
El sistema dispone de una PIO 8155 de propósito general compatible con el 8088. Esta
formada por tres puertos: A, B y C . El puerto A, está a disposición del alumno y tiene todas las
señales a su disposición dentro del Analizador. La dirección del puerto A es la 21 hexadecimal.
Primera, utilizar la orden del sistema operativo, que saca por el puerto A
un valor determinado (ver apartado 3.1.7 ) .
La salida del contador interno TOUT de la PIO, nos servirá como base de
tiempos para la comunicación RS-232. A su salida tenemos una onda cuadrada de
19,2 KHz.
La PIO, ha sido diseñada para conectarla directamente a los buses y señales de control
de la CPU. Y ella misma ya desmultiplexará los buses de datos y direcciones
Capítulo 15. Análisis de sistemas digitales Página 57
Además esta PIO, dispone de 256 bytes de memoria interna, que no está mapeada
Sabiendo que se trata de una comunicación asíncrona (figura 28) con un start bit,
ocho bits de datos, un bit de paridad y un stop bit comprobar el valor de los
códigos XON y XOFF. Hay que poner una base de tiempos más pequeña 1.
Señales implicados: TOUT, TXD y RXD
2. Disparar por flanco de bajada de RXD
3. Base de tiempos de 10 ms
4. Preparar la adquisición
5. En el "prompt", escribir RS232
Las señales TxD y RxD están vistas desde el punto de vista de la placa. Es decir,
en TxD los datos viajan desde la placa hacía el Analizador.
Los errores se han provocado sobre los elementos más sencillos del
sistema. Tales como: monoestables, multiplexores, buffers, etc. Es decir,
dispositivos en los que es fácil verificar su funcionamiento. Por ejemplo, en un
multiplexor es muy sencillo verificar si unas ciertas entradas producen la salida
deseada.
Instrucción: DEC AX
Codificación: 0x48
Descripción: Decrementa el contenido del registro AX
Flags afectados: ZF
Instrucción: INC AX
Codificación: 0x40
Descripción: Incrementa el contenido del registro AX
Flags afectados: ZF
Instrucción: JC desp
Codificación: 0x72 desp
Descripción: Efectúa un salto si se cumple la condición CF = 1. El
desplazamiento debe estar comprendido entre -128 y +127
bytes de esta instrucción.
Flags afectados: ninguno
Instrucción: JZ desp
Codificación: 0x74 desp
Instrucción: NOP
Codificación: 0x90
Descripción: El procesador no hace nada. Pasa a ejecutar la instrucción
siguiente.
Flags afectados: ninguno