MICROPROCESADORES I SET DE INSTRUCCIONES DEL 8080

Documentos relacionados
ARQUITECTURA DE LAS COMPUTADORAS

ARQUITECTURA DE LAS COMPUTADORAS

Terminales del P 8085 (vistos hasta ahora)

2º CURSO INGENIERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN TEMA 1 - INTRODUCCIÓN JOSÉ GARCÍA RODRÍGUEZ JOSÉ ANTONIO SERRA PÉREZ

Ensamblador. Introducción. Dpto. Física y Arquitectura de Computadores. Universidad Miguel Hernandez

RELACIÓN DE PROBLEMAS DE LÓGICA PROGRAMADA (TEMA 4)

Ciclos de máquina. Otro ejemplo: decremento de un registro par (donde rp = HL, DE, BC, SP) DCX rp

UISRAEL FACULTAD DE ELECTRÓNICA 1. Traducción del manual al español GNUSIM8085. Charles Escobar

Descripción de las instrucciones del Z80

Tema 1. Fundamentos del lenguaje ensamblador

Arquitectura Interna del 8088

Conceptos de Arquitectura de Computadoras Curso 2015

Tema 4. Fundamentos del ensamblador

Asignatura Microprocesadores. Gabriel Spano Sazo Ingeniero Electrónico = Agosto 2008

Repaso Registros internos Z80 1/37

Problema 5. Cálculo de la temporización. Programación del Lectura de la cuenta del temporizador 0

Contenido. Conjunto de Instrucciones. Formato de la Instrucción. Instrucciones de 1 byte. Formato de la Instrucción 28/09/2011

BLOQUE 3 (PARTE 2) MICROCONTROLADOR 8051 DESCRIPCIÓN GENERAL

El microprocesador de 8 bits Z80

ESTRUCTURA Y ORGANIZACIÓN DE COMPUTADORES

EJERCICIOS con ORDENADOR

Arquitectura intel Preámbulo de OSO para alumnos formados en el procesador MIPS. Asignatura Sistemas Operativos Murcia abril de 2005

Resumen de las instrucciones del 8086/8088

Examen de teoría (5 puntos)

ORGANIZACIÓN DEL MICROCOMPUTADOR

Estructura de Computadores. Problemas de Instrucciones y Direccionamientos

Ejercicio. Solución. Banderas. Banderas. Banderas 05/10/2011 UNIDAD 5 2 A PARTE PROGRAMANDO EN EL ENSAMBLADOR DEL Z80

Examen de teoría (5 puntos)

CONJUNTO DE INSTRUCCIONES PARA LA FAMILIA DEL 51

Instrucciones del microprocesador

ITT-327-T Microprocesadores

NOTA TÉCNICA. FECHA: 29 de marzo de Airbag DTC Codes NºPSA.15

Práctica 1 : INTRODUCCIÓN Práctica 1: Introducción al 8051

El Stack y Subrutinas

Tablas familia MCS-51 (8051)

El programa no necesita ninguna instalación. Únicamente se debe ejecutar el fichero Modbus- Single.exe desde la carpeta en la cual lo haya guardado

Denominación: Relé Universal Descripción del protocolo Modbus: N EA: 1451 Sustitución de: Hoja: 1 de 10

16/11/2011. Contenido. Comunicación con Dispositivos I/O. Comunicación con Dispositivos I/O. Comunicación con Dispositivos I/O.

Práctica 3 - Arquitectura del CPU

Arquitectura (Procesador familia 80 x 86 )

!"#$%&%#'(!$#')! &*"%+',-%"*.#!"/&#'(!$#!-*"%+' #)%'%(%0*!!1$!"/&#'(!1$#1*!*$!1#'#!"#1!$##*-! *"%+'$#

Intel Arquitectura. Programación en Ensamblador Ing. Marcelo Tosini

2º CURSO INGENIERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN TEMA 2 UNIDAD DE CONTROL JOSÉ GARCÍA RODRÍGUEZ JOSÉ ANTONIO SERRA PÉREZ

Análisis general de un Microprocesador

Códigos y tablas de uso frecuente en criptografía

Intel 8086 modelo básico (primera parte) Registros:

$%# ! "#$% &' *& & -& **. *+ #$/0$% % &' &)* (*& &*& ()& +&', . & # *+ &(* & //$ % & 1 &*+ % * & & &* & *2&, +& *3& (* & *& &

Programación de IA-32 Modo Real

Tema 4. Lenguaje máquina y lenguaje ensamblador

Los números naturales y enteros en el 80X86 y en LAN

ASCII HTML HTML Dec Hex Símbolo Numero Nombre Descripción

Ejemplo del uso de las subrutinas

Funcionamiento de la Pila (o stack)

CS2: Unidad de datos (UD)

Examen de teoría (5 puntos)

Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta

TEMA 1: Conceptos generales. 1.- Representa los primeros 16 números decimales (del 0 al 15) usando codificación binaria y hexadecimal.

Guía de ejercicios # 8 Flags y Saltos

CONJUNTO DE INSTRUCCIONES Microprocesador 8086

Registros de direcciones de 32 bits A0 a A7 (A7 puntero de pila SP)

PROCESAMIENTO DE LOS DATOS. Procesamiento de datos ascii a binario y de binario a ascii

Introducción a la Computación. Capítulo 10 Repertorio de instrucciones: Características y Funciones

Tema 4. Lenguaje máquina y lenguaje ensamblador

Unidad 2. Organización y diseño básico de computadoras

Trabajo Práctico Nro 3: Assembler

Disco de Alberti. Y el disco interno: A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z

8.4. El software en los μprocesadores

Estructura de Computadores: Tema 1. Introducción. Índice. Arquitectura del i8086

Operaciones lógicas y repetición

(2) Unidad 2. Modelo de Programación del 80x86 de Intel SISTEMAS BASADOS EN MICROPROCESADORES. Grado en Ingeniería Informática EPS - UAM

Relación de Problemas I

Pregunta correcta=0,4 Pregunta no contestada=0 Pregunta incorrecta (tipo test)=-0,2

Página núm. 78 BOJA núm. 82 Sevilla, 28 de abril 2011

Curso sobre Microcontroladores Familia HC9S08 de Freescale

Los dos círculos deben quedar unidos al centro y con la posibilidad de girar cada uno de ellos de forma independiente.

Tema 4: Lenguaje máquina - Lenguaje ensamblador

UNIDAD No. 2 CAD para WLAN, Administración y Seguridad en Redes de Datos

Modos de direccionamiento

Tema 5.2: Segmentación y modos de direccionamiento

ESTRUCTURA. Estructura básica de un computador ESTRUCTURA BÁSICA DE UN COMPUTADOR RELOJ. Unidad de control CPU ULA. Onda cuadrada RELOJ

COMPUTADORA. Introducción Las computadoras se usan en diversas aplicaciones

Tema 2: Segmentación y modos de direccionamiento

ISO 10646, ISO 8879, ISO

Ingeniería Técnica en Informática de Sistema E.T.S.I. Informática Universidad de Sevilla

Solución 1. Solución usando un 8255 para las entradas y salidas, un 8254 para la temporización y realizando la entrada/salida por polling.

Ejercicios del tema 4. El procesador

Ejercicio. Solución. Ejercicio. Comparaciones. Solución 16/11/2011 UNIDAD 5 3 A PARTE PROGRAMANDO EN EL ENSAMBLADOR DEL Z80

Interruptores automáticos 3RV1

Tema 4. Lenguaje máquina y lenguaje ensamblador

Pregunta correcta=0,4 Pregunta no contestada=0 Pregunta incorrecta (tipo test)=-0,15

!"!# $"%&'('"'(%) "*#%!(%'"+*!(,

Soluciones de los ejercicios sobre representación y procesamiento

Programación de los Microcontroladores 8052/8051 (I)

Tema 2 INSTRUCCIONES DE UN COMPUTADOR. Estructura de Computadores OCW_2015 Nekane Azkona Estefanía

Instrucciones de Control de Flujo y Usos de la Pila

ESTRUCTURA Y TECNOLOGÍA DE COMPUTADORES II BOLETÍN 4 MICROPROCESADOR MC 68000

W4IKS MANUAL DEL USUARIO

Laboratorio 1 Entorno de desarrollo y subrutinas

Transcripción:

MICROPROCESADORES I SET DE INSTRUCCIONES DEL 8080 Registro de Estado S Z Ca P C S: Bit de Signo Z: Bit de Cero Ca: Carry Auxiliar P: Bit de Paridad C: Bit de Carry AC: Acumulador ACI -Suma en forma inmediata un dato con el acumulador con carry. Flags afectados ACI CE C,S,Z,P,AC Esta instrucción suma el dato de 8 bits especificado por, mas el contenido del bit de carry, al acumulador. El resultado se guarda en el acumulador. ADC -Suma un registro o lugar de memoria con el acumulador con carry. ADC R Flags afectados C,S,Z,P,AC Donde R es A,B,C,D,E,L,H o M. /7 Esta instrucción suma el contenido del registro especificado por R mas el bit de carry al acumulador. Si el registro especificado es M, se usará el lugar de memoria designado por el par HL. ADC B 88 ADC C 89 ADC D 8A ADC E 8B ADC H 8C ADC L 8D ADC M 8E ADC A 8F ADD -Suma un registro o memoria al acumulador. ADD R Flags afectados C,S,Z,P,AC Donde R es A,B,C,D,E,L,H, o M. /7 Esta instrucción suma el contenido del registro designado con R al contenido del acumulador, guardando el resultado en el acumulador. El acarreo, de existir o no, será reflejado en el bit de carry. Si el registro especificado es M, se usará el lugar de memoria designado por el par HL. 1

ADD B 80 ADD C 81 ADD D 82 ADD E 83 ADD H 84 ADD L 85 ADD M 86 ADD A 87 ADI -Suma en forma inmediata un dato con el acumulador. ADI C6 Flags afectados C,S,Z,P,AC Esta instrucción suma el dato de 8 bits representado por con el contenido del acumulador, y el resultado se guarda en el acumulador. ANA -Realiza la,operación lógica AND entre un registro o lugar de memoria y el acumulador. ANA R Flags afectados C,Z,S,P Donde R es A,B,C,D,E,L,H o M. /7 Esta instrucción realiza la operación lógica AND, bit a bit entre el registro especificado en R y el acumulador. El resultado se guarda en el acumulador. El flag de carry es puesto a 0. Si M es el registro especificado, se usará el contenido del lugar de memoria direccionado por el par HL. ANA B A0 ANA C A1 ANA D A2 ANA E A3 ANA H A4 ANA L A5 ANA M A6 ANA A A7 ANI -Realiza la operación lógica AND entre un dato y el acumulador. ANI E6 Flags afectados C,Z,S,AC Esta instrucción realiza la operación lógica AND bit a bit, entre el dato de 8 bits especificado por, con el contenido del acumulador, y el resultado se guarda en el acumulador. El flag de carry es puesto a 0. CALL -Llama a subrutina. CALL CD 2

Ciclos de reloj 18 Esta instrucción hace que la ejecución del programa continúe en la dirección especificada por. La dirección de retorno se salvaguarda en la memoria y el puntero de pila se decrementa en 2. CC -Llama si hay carry. Ciclos de reloj 9/18 CC DC Esta instrucción hace que la ejecución del programa continúe en la dirección especificada por, si el flag de carry está en 1; la dirección de retorno se salvaguarda en la memoria pila, y el puntero de pila se decrementa en 2. Si está en 0, continúa con la dirección siguiente. CM -Llama si es negativo. Ciclos de reloj 8/18 CM FC Esta instrucción hace que la ejecución del programa continúe en la dirección especificada por si el bit de signo está en 1. La dirección de retorno se salvaguarda en la memoria pila, y el puntero de pila se decrementa en 2. Si el bit de signo está en 0, continúa con la dirección siguiente. CMA -Complemento del acumulador. CMA 2F --- El contenido del acumulador es complementado bit a bit CMC -Complementa el bit de carry. CMC 3F --- Flags afectados C Esta instrucción causa la complementación del flip flop de carry. Si el flag de carry es 0, CMC lo pone a 1; si está en 1, CMC lo pone a 0. 3

CMP -Compara el acumulador con un registro o locación de memoria. CMP R Flags afectados C,Z,S,P,AC Donde R es A,B,C,D,E,L,H o M. /7 Compara el acumulador con el registro especificado en la instrucción, realizando una resta entre ambos. El resultado de esta diferencia se pierde, ya que el acumulador no se modifica. El objetivo de utilizar esta instrucción se basa en el análisis de los bits del registro de estado Z, C y S. El bit de Z se activa si ambos datos son iguales. El bit de carry se activa si el valor absoluto del registro es mayor que el del acumulador, en este caso el bit de carry cumple la función de bit de pido (borrow). El bit de signo (N) se activa si el resultado de la diferencia entre el Ac y el registro posee un 1 en el bit 7. CMP B B8 CMP C B9 CMP D BA CMP E BB CMP H BC CMP L BD CMP M BE CMP A BF CNC -Llama si no hay carry. Ciclos de reloj 9/18 CNC D4 Esta instrucción hace que la ejecución del programa continúe en la dirección dada por si el bit de carry es 0. La dirección de retorno se salvaguarda en la memoria pila, y el puntero de pila se decrementa en 2. Si el flag de carry esta en 1, continúa con la dirección siguiente. CNZ -Llama si el bit de cero es 0. Ciclos de reloj 9/18 CNZ C4 Esta instrucción hace que la ejecución del programa continúe en la dirección especificada por si el bit de cero es puesto a 0. La dirección de retorno se salvaguarda en la memoria pila, y el puntero de pila se decrementa en 2. Si el bit de cero esta en 1, continúa con la dirección siguiente. CP -Llama si es positivo. Ciclos de reloj 9/18 CP F4 4

Esta instrucción hace que la ejecución del programa continúe en la dirección especificada por si el bit de signo está en 0. La dirección de retorno se salvaguarda en la memoria pila, y el puntero de pila se decrementa en 2. Si el bit de signo está en 1, continúa con la dirección siguiente. CPE -Llama si la paridad es par. Ciclos de reloj 9/18 CPE EC Esta instrucción hace que la ejecución del programa continúe en la dirección especificada por si el bit de paridad está en 1. La dirección de retorno se salvaguarda en la memoria pila, y el puntero de pila se decrementa en 2. Si el bit de paridad está en 0, continúa con la dirección siguiente. CPI -Compara en forma inmediata con el acumulador. Flags afectados CPI FE C,Z,S,P Esta instrucción compara el dato de 8 bits representado por con el contenido del acumulador, realizando una resta entre ambos. El resultado de esta diferencia se pierde, ya que el acumulador no se modifica. El objetivo de utilizar esta instrucción se basa en el análisis de los bits del registro de estado Z, C y S. El bit de Z se activa si ambos datos son iguales. El bit de carry se activa si el valor absoluto del dato es mayor que el del acumulador, en este caso el bit de carry cumple la función de bit de pido (borrow). El bit de signo (N) se activa si el resultado de la diferencia entre el Ac y el dato posee un 1 en el bit 7. CPO -Llama si la paridad es impar. Ciclos de reloj 9/18 CPO E4 Esta instrucción hace que la ejecución del programa continúe en la dirección especificada por si el bit de paridad está en 0. La dirección de retorno se salvaguarda en la memoria pila, y el puntero de pila se decrementa en 2. Si el bit de paridad está en 1, continúa con la dirección siguiente. CZ -Llama si el bit de cero es 1. CZ 5

CC Ciclos de reloj 9/18 Esta instrucción hace que la ejecución del programa continúe en la dirección especificada por si el bit de cero está en 1. La dirección de retorno se salvaguarda en la memoria pila, y el puntero de pila se decrementa en 2. Si el bit de cero está en 0, continúa con la dirección siguiente. DAA -Ajuste decimal del acumulador. DAA 27 --- Flags afectados Z,S,P,C,AC La utilización de esta instrucción solo tiene justificación, luego de una instrucción de suma de dos números decimales, representados en BCD. La operación que realiza es el tradicional ajuste decimal, el cual se puede descomponer en dos pasos: a- Si el valor del nible bajo del acumulador es mayor que 9 0 si el carry auxiliar es 1, le suma 6 a este nibble. b- Si el valor del nible alto del acumulador es mayor que 9 0 si el carry es 1, le suma 6 a este nibble. DAD -Doble adición. DAD RP Flags afectados C Donde RP es B (por los registros B y C), D (por los registros D y E), H (por los registros H y L) o SP (por el puntero de pila). Ciclos de reloj 10 El contenido de 16 bits del par especificado por RP, es sumado al contenido de 16 Bits del par HL y el resultado se guarda en HL. Si el par especificado es H, el contenido del par HL será duplicado. DAD B 09 DAD D 19 DAD H 29 DAD SP 39 DCR -Decrementa un registro o memoria. DCR R Flags afectados Z,S,P,AC Donde R es A,B,C,D,E,H,L o M /10 Esta instrucción decrementa en 1 el contenido del registro especificado por R. DCR B 05 DCR C 0D DCR D 15 6

DCR E 1D DCR H 25 DCR L 2D DCR M 35 DCR A 3D DCX -Decrementa un registro par. Ciclos de reloj 6 DCX RP Donde RP es B (por los registros B y C), D (por los registros D y E), H (por los registros H y L) o SP (por el puntero de pila). El contenido de 16 bits del par especificado por RP, es decrementado en 1. DCX B 0B DCX D 1B DCX H 2B DCX SP 3B DI -Inhabilita interrupciones. DI F3 --- Esta instrucción pone en 0 el flip flop de habilitación del 8080 de manera que se ignoren las interrupciones que se pidan. El flip flop se pone automáticamente en 0 luego de un ciclo de reset. También se inhabilitan cuando una interrupción es aceptada. Esto asegura que una interrupción no se autointerrumpa. EI -Habilita interrupciones. EI FB --- Esta instrucción pone en 1 al flip flop de interrupciones en el 8080, de manera que el sistema reconozca y procese las interrupciones que sean pedidas. HLT -Alto. HLT 76 --- Ciclos de reloj 5 7

Esta instrucción causa que el 8080 entre en un estado de espera y solo saldrá de éste al recibir una interrupción, o una señal de reset. Los registros y los flags no son afectados. IN -Entrada. Ciclos de reloj 10 IN DB Donde es la dirección del periférico de entrada. Esta instrucción hace que el acumulador lea un dato de 8 bits de la puerta especificada por. INR -Incremento de registro o memoria. INR R Flags afectados Z,S,P,AC Donde R es A,B,C,D,E,H,L o M Esta instrucción causa que un registro, especificado por R, sea incrementado en 1. El carry no se modifica. INR B 04 INR C 0C INR D 14 INR E 1C INR H 24 INR L 2C INR M 34 INR A 3C INX -Incremento de registro par. INX RO Ciclos de reloj 6 Donde RP es B (por los registros B y C), D (por los registros D y E), H (por los registros H y L) o SP (por el puntero de pila). El contenido de 16 bits del registro par especificado por RP, es incrementado en 1. INX B 03 INX D 13 INX H 23 INX SP 33 JC -Salta si el bit de carry es 1 /10 JC DA Esta instrucción hace que la ejecución del programa continúe en el lugar de memoria especificado por, si el flag de carry está en 1. Si el flag de carry está en 0, continúa con la proxima instrucción. 8

JM -Salta si el flag de signo es 1. /10 JM FA Esta instrucción hace que el programa continúe en el lugar de memoria especificado por, si el flag de signo es 1. Si es 0, continúa con la proxima instrucción. JMP -Salto incondicional. Ciclos de reloj 10 JMP C3 Esta instrucción hace que la ejecución del programa continúe en el lugar de memoria especificado por. JNC -Salta si el flag de carry es 0. /10 JNC D2 Esta instrucción hace que la ejecución del programa continúe en el lugar de memoria especificado por, si el flag de carry está en 0. Si el flag de carry está en 1, continúa con la proxima instrucción. JNZ -Salta si el flag de cero es 0. /10 JNZ C2 Esta instrucción hace que la ejecución del programa continúe en el lugar de memoria especificado por, si el flag de cero está en 0. Si el flag de cero está en 1, continúa con la proxima instrucción. JP -Salta si es positivo. /10 JP F2 9

Esta instrucción hace que la ejecución del programa continúe en el lugar de memoria especificado por, si el bit de signo está en 0. Si el bit de signo está en 1, continúa con la proxima instrucción. JPE -Salta si la paridad es par. /10 JPE EA Esta instrucción hace que la ejecución del programa continúe en el lugar de memoria especificado por, si el flag de paridad está activo en 1, indicando paridad par. Si el flag de paridad está en 0, continúa con la proxima instrucción. JPO -Salta si la paridad es impar. /10 JPO E2 Esta instrucción hace que la ejecución del programa continúe en el lugar de memoria especificado por, si el flag de paridad está en 0, indicando paridad impar. Si el flag de paridad está en 1, continúa con la proxima instrucción. JZ -Salta si el flag de cero es 1. /10 JZ CA Esta instrucción hace que la ejecución del programa continúe en el lugar de memoria especificado por, si el flag de cero está en 1. Si el flag de cero está en 0, continúa con la proxima instrucción. LDA -Carga el acumulador en forma directa. Ciclos de reloj 13 LDA 3A Esta instrucción carga el acumulador con el contenido del lugar de memoria especificado en la instrucción por la dirección. 10

LDAX -Carga el acumulador. LDAX RP Donde RP es uno de los pares B (B/C) o D (D/E). Carga en el acumulador el contenido de la locación de memoria direccionada por el par registro RP especificado en la instrucción. LDAX B 0A LDAX D 1A LHLD -Carga H y L en forma directa. Ciclos de reloj 16 LHLD 2A Esta instrucción hace que el contenido de la locación de memoria especificado por se cargue en L. El contenido de la locación siguiente que se carga en el registro H. LXI -Carga en forma inmediata un registro par. Ciclos de reloj 10 LXI RP, Donde RP es B (por los registros B y C), D (por los registros D y E), H (por los registros H y L) o SP (por el puntero de pila). Esta instrucción carga en el par especificado por RP, los 16 bits especificados por en la instrucción. LXI B 01 LXI D 11 LXI H 21 LXI SP 31 MOV -Transferencia entre registros. MOV s R,S Donde R y S son A,B,C,D,E,L,H o M. /7 Esta instrucción hace que el byte de datos del registro designado por S (fuente) se transfiera al registro designado por R (destino). Si M es uno de los registros especificados, se usará el contenido del lugar de memoria direccionado por el par HL. MOV A,A y demás variantes donde R y S designan el mismo registro, son instrucciones válidas, pero no serán ejecutadas.(equivalen a una NOP). MOV B,B 40 MOV B,C 41 MOV B,D 42 MOV B,E 43 11

MOV B,H 44 MOV B,L 45 MOV B,M 46 MOV B,A 47 MOV C,B 48 MOV C,C 49 MOV C,D 4A MOV C,E 4B MOV C,H 4C MOV C,L 4D MOV C,M 4E MOV C,A 4F MOV D,B 50 MOV D,C 51 MOV D,D 52 MOV D,E 53 MOV D,H 54 MOV D,L 55 MOV D,M 56 MOV D,A 57 MOV E,B 58 MOV E,C 59 MOV E,D 5A MOV E,E 5B MOV E,H 5C MOV E,L 5D MOV E,M 5E MOV E,A 5F MOV H,B 60 MOV H,C 61 MOV H,D 62 MOV H,E 63 MOV H,H 64 MOV H,L 65 MOV H,M 66 MOV H,A 67 MOV L,B 68 MOV L,C 69 MOV L,D 6A MOV L,E 6B MOV L,H 6C MOV L,L 6D MOV L,M 6E MOV L,A 6F MOV M,B 70 MOV M,C 71 MOV M,D 72 MOV M,E 73 MOV M,H 74 MOV M,L 75 MOV M,A 77 MOV A,B 78 MOV A,C 79 MOV A,D 7A MOV A,E 7B MOV A,H 7C MOV A,L 7D MOV A,M 7E MOV A,A 7F MVI -Carga inmediata de un registro o memoria. MVI R, Donde R es A,B,C,D,E,L,H o M. /7 Esta instrucción carga el dato de 8 bits en el registro designado por R. MVI B 06 MVI D 16 MVI H 26 MVI M 36 MVI C 0E MVI E 1E MVI L 2E MVI A 3E NOP -No opera. NOP 00 --- No realiza ninguna operación. El contador de programa (PC) se incrementa en uno y la ejecución continúa en la próxima instrucción. ORA -Or entre un lugar de memoria o registro y el acumulador. ORA R Flags afectados C,Z,S,P Donde R es A,B,C,D,E,L,H o M. 12

Esta instrucción realiza la operación OR bit a bit entre el registro especificado por R y el acumulador. El resultado se guarda en el acumulador. El flag de carry es puesto a 0. Si M es el registro especificado, usará el contenido del lugar de memoria direccionado por el par HL. ORA B B0 ORA C B1 ORA D B2 ORA E B3 ORA H B4 ORA L B5 ORA M B6 ORA A B7 ORI -Or inmediato con el acumulador. Flags afectados ORI EE C,Z,S,P Esta instrucción realiza la operación lógica OR bit a bit entre el dato de 8 bits representado por y el contenido del acumulador. El resultado es almacenado en el acumulador. El flag de carry es puesto en 0. OUT -Salida. Ciclos de reloj 10 OUT D3 Donde representa la dirección del periférico de salida. Esta instrucción transfiere el contenido de 8 bits del acumulador por el bus de datos, al periférico especificado por. PCHL -Carga el contador de programa. PCHL E9 --- Ciclos de reloj 6 Esta instrucción hace que el PC se cargue con el contenido de los registros HL. Esto hace que la ejecución del programa siga en la dirección de memoria especificada por H y L. POP -Saca datos de la pila. Ciclos de reloj 10 POP RP Donde RP es B (por los registros B y C), D (por los registros D y E), H (por los registros H y L), o PSW (por los flags y el acumulador). 13

El contenido del lugar de memoria cuya dirección está en el registro SP, es transferido a la parte baja del registro par especificado, y el dato contenido en el lugar de memoria siguiente, es cargado en la parte alta del registro especificado. El SP es incrementado en dos. Para el caso de PSW, la parte alta del registro corresponde al acumulador y la parte baja al código de condición. POP B C1 POP D D1 POP H E1 POP PSW F1 PUSH -Guarda datos en la pila. Ciclos de reloj 12 PUSH RP Donde RP es B (por los registros B y C), D (por los registros D y E), H (por los registros H y L), o PSW (por los flags y el acumulador). Esta instrucción salvaguarda el par especificado por RP en la pila, y decrementa el puntero de pila en 2. La parte alta del registro del par (el que se usa como operando), se salvaguarda en la dirección anterior a la que contiene SP. La parte baja es guardada dos lugares anteriores al puntero. Note que el puntero de pila es primero decrementado y luego se salvaguarda el registro. Esto significa que la instrucción PUSH B no guardará el registro B en la locación direccionada por el puntero sino en un lugar anterior, y el registro C dos lugares anteriores. Cuando se usa PUSH PSW, los flags se guardan en un lugar anterior al indicado por el puntero, y el acumulador, dos lugares menos que donde indica el puntero. Los flags se salvaguardan como sigue. bit 7 6 5 4 3 2 1 0 flag S Z 0 AC 0 P 1 C PUSH B C5 PUSH D D5 PUSH H E5 PUSH PSW F5 RAL -Rota el acumulador hacia la izquierda a través del bit de carry. RAL 17 --- Flags afectados C Esta instrucción hace rotar a la izquierda un bit, cada uno de los bits del acumulador. En esta instrucción el bit de carry se trata como un noveno bit; así el bit mas significativo va al lugar del bit de carry, y el contenido de este, pasa a ocupar el lugar del bit menos significativo. RAR -Rota el acumulador a la derecha a través del bit de carry. RAR 1F --- Flags afectados C 14

Esta instrucción hace rotar a la derecha un bit, cada uno de los bits del acumulador. En esta instrucción el bit de carry se trata como un noveno bit; así el bit menos significativo va al lugar del bit de carry, y el contenido de este, pasa a ocupar el lugar del bit mas significativo. RC -Retorna si hay carry. RC --- Ciclos de reloj 6/12 Esta instrucción si el bit de carry es 1, saca una dirección de la memoria pila e incrementa el puntero de pila en dos, esta direcciión se carga en el PC. La ejecución del programa continúa en esa dirección. Si el bit de carry es 0 se trata como una NOP. RET -Retorno. RET C9 --- Ciclos de reloj 10 Esta ejecución saca un dirección de la memoria pila e incrementa el puntero de pila en dos. La ejecución del programa continúa en esa dirección. RLC -Rota el acumulador a la izquierda. RLC 07 --- Flags afectados C Esta instrucción hace correr (rotar) un lugar los bits del acumulador. El bit mas significativo pasa a ser el menos significativo; además, el BMS queda almacenado en el bit de carry. RM -Retorna si el bit de signo es 1(negativo). RM F8 --- Ciclos de reloj 6/12 Esta instrucción si el bit de signo es 1, saca una dirección de la memoria pila e incrementa el puntero de pila en dos. La ejecución del programa continúa en esa dirección. Si el bit de signo es 0 se trata como una NOP. 15

RNC -Retorna si no hay carry. RNC D0 --- Ciclos de reloj 6/12 Esta instrucción si el bit de carry es 0 saca una dirección de la memoria pila e incrementa el puntero de pila en dos. La ejecución del programa continúa en esa dirección. Si el bit de carry es 1 se trata como una NOP. RNZ -Retorna si el bit de cero es 0. RNZ C0 --- Ciclos de reloj 6/12 Esta instrucción si el bit de cero es 0, saca una dirección de la memoria pila e incrementa el puntero de pila en dos. La ejecución del programa continúa en esa dirección. Si el bit de cero es 1 se trata como una NOP. RRC -Rota el acumulador a la derecha. RRC 0F --- Flags afectados C Esta instrucción hace correr (rotar) un lugar los bits del acumulador hacia la derecha.el bit menos significativo pasa a ser el mas significativo; además, el bms queda almacenado en el bit de carry. RP -Retorna si el bit de signo es 0(positivo). RP F0 --- Ciclos de reloj 6/12 Esta instrucción si el bit de signo es 0, saca una dirección de la memoria pila e incrementa el puntero de pila en dos. La ejecución del programa continúa en esa dirección. Si el bit de signo es 1 se trata como una NOP. RPE -Retorna si la paridad es par. RPE E8 --- 16

Ciclos de reloj 6/12 Esta instrucción si el bit de paridad es 1, saca una dirección de la memoria pila e incrementa el puntero de pila en dos. La ejecución del programa continúa en esa dirección. Si el bit de paridad es 0 se trata como una NOP. RPO -Retorna si la paridad es impar. RPO E0 --- Ciclos de reloj 6/12 Esta instrucción si el bit de paridad es 0, saca una dirección de la memoria pila e incrementa el puntero de pila en dos. La ejecución del programa continúa en esa dirección. Si el bit de paridad es 1 se trata como una NOP. RST -Restablecimiento. Ciclos de reloj 12 RST N Donde N es un número entero entre 0 y 7. Esta instrucción rara vez es usada en el listado de un programa. En lugar de eso, se implementa por hardware, y entra por el bus de datos, cuando el 8080 acepta un pedido de interrupción. Esta instrucción se comporta como un llamado incondicional a subrutina a una dirección fija, por lo tanto causa que la ejecución del programa continúe en la dirección dada por 00EXP000, donde EXP es el número N en binario. El contenido del PC, se almacena en la memoria pila, para proveer posteriormente la dirección de retorno. Cada una de las instrucciones RST, tiene un código diferente, y acceden a distintos lugares fijos de memoria (distintas rutinas de servicio). RST0 C7 RST1 CF RST2 D7 RST3 DF RST4 E7 RST5 EF RST6 F7 RST7 FF RZ -Retorna si el bit de cero es 1. RZ C8 --- Ciclos de reloj 6/12 Esta instrucción si el bit de cero es 1, saca una dirección de la memoria pila e incrementa el puntero de pila en dos. La ejecución del programa continúa en esa dirección. Si el bit de cero es 0 se trata como una NOP. SBB -Resta del acumulador un registro o lugar de memoria con pido (borrow). SBB 17

R Flags afectados C,S,Z,P,AC Donde R es A,B,C,D,E,H,L o M. Esta instrucción suma el contenido del flip flop de carry con el registro especificado por R. Este valor luego se resta del acumulador y el resultado se guarda en el acumulador.si M es el registro especificado, se usará el contenido del lugar de memoria direccionado por el par HL. El flag de carry cumple la función de pido (borrow) SBB B 98 SBB C 99 SBB D 9A SBB E 9B SBB H 9C SBB L 9D SBB M 9E SBB A 9F SBI -Resta en forma inmediata del acumulador con pido. Flags afectados SBI DE C,S,Z,P,AC Esta instrucción suma el bit de carry al dato de 8 bits especificado en la instrucción por. Este valor luego se resta del acumulador usando complemento a dos. El resultado se guarda en el acumulador. Si un exceso ocurre en el bit de mayor orden, el bit de carry es puesto en 1; caso contrario; es puesto en 0. El flag de carry cumple la función de pido (borrow) SHLD -Almacena H y L en forma directa. SHLD 22 Ciclos de reloj 16 Esta instrucción hace que el contenido del registro L sea almacenado en la dirección especificada en la instrucción por. El registro H es almacenado en la dirección posterior a. SPHL -Carga el puntero de pila con el contenido de HL. SPHL F9 --- Ciclos de reloj 6 18

El contenido de los registros H y L se carga en el puntero de pila. Se pierde el contenido anterior del puntero SP, H y L permanecen invariables. STA -Almacena en el acumulador en forma directa. STA 32 Ciclos de reloj 13 Esta instrucción almacena el contenido del acumulador en la dirección de memoria especificada en la instrucción por. STAX -Salvaguarda el acumulador. STAX RP Donde RP es uno de los pares B (B/C) o D (D/E). Esta instrucción guarda el contenido del acumulador en la dirección de memoria direccionada por el registro par especificado por RP. STAX B 02 STAX D 12 STC -Pone en 1 el bit de carry. STC 37 --- Flags afectados C Esta instrucción pone en 1 el flip flop de carry. Si estaba en 1, STC lo deja en ese estado. SUB -Resta del acumulador un registro o lugar de memoria. SUB R Flags afectados C,S,Z,P,AC Donde R es A,B,C,D,E,H,L o M. Esta instrucción resta del acumulador el registro designado por R, el resultado se guarda en el acumulador. Si el registro especificado es M, se usará el contenido de la locación de memoria direccionada por el par HL. El flag de carry cumple la función de pido (borrow). 19

SUB B 90 SUB C 91 SUB D 92 SUB E 93 SUB H 94 SUB L 95 SUB M 96 SUB A 97 SUI -Resta en forma inmediata del acumulador. Flags afectados SUI D6 C,Z,S,P,AC Esta instrucción resta el dato de 8 bits especificado por, del contenido del acumulador. El resultado se guarda en el acumulador. El flag de carry cumple la función de pido (borrow) XCHG -Intercambia registros. XCHG EB --- El contenido de 16 bits de los registros D y E, se intercambian con el contenido de los registros H y L. El intercambio es entre D y H, y entre E y L. XRA -Or exclusivo de un registro o lugar de memoria con el acumulador. XRA R Flags afectados C,Z,S,P Donde R es A,B,C,D,E,L,H o M. Esta instrucción realiza la operación Or exclusivo entre el registro especificado por R y el acumulador. El flag de carry es puesto a 0. Si M es el registro especificado, usará el contenido del lugar de memoria direccionado por el par HL. XRA B A8 XRA C A9 XRA D AA XRA E AB XRA H AC XRA L AD XRA M AE XRA A AF XRI -Or exclusivo en forma inmediata con el acumulador. XRI EE Flags afectados C,Z,S,AC 20

Esta instrucción realiza la operación lógica Or exclusivo bit a bit entre el dato de 8 bits representado por y el contenido del acumulador. El resultado se guarda en el acumulador, y el flag de carry es puesto en 0. XTHL -Intercambia contenido de la memoria pila con el puntero HL. XTHL E3 --- Ciclos de reloj 16 El contenido del registro L es intercambiado con el contenido de la locación de memoria direccionada por el puntero de pila. El contenido del registro H es intercambiado con el contenido de la locación de memoria un lugar mayor que el direccionado por el puntero. 21