Descripción de las instrucciones del El menú de instrucciones del consta de158 diferentes tipos de instrucciones, incluyendo todas las (78) del 8080A. Las instrucciones se pueden clasificar en los siguientes grupos principales: TRANSFERENCIA E INTERCAMBIO TRANSFERENCIA DE BLOQUES Y BÚSQUEDA LÓGICAS Y ARITMÉTICAS ROTACIONES Y DESPLAZAMIENTOS MANIPULACIÓN DE BITS (SET, RESET, TEST) SALTOS, LLAMADOS Y RETORNOS ENTRADA /SALIDA CONTROL BÁSICO DE LA CPU INSTRUCCIONES DE TRANSFERENCIA E INTERCAMBIO De Carga de 8 bits De Carga de 16 bits PUSH y POP Intercambio
TRANSFERENCIAS DE 8 BITS LAS INSTRUCCIONES DE TRANSFERENCIA NOS PERMITEN MOVER DATOS DE UN OPERANDO FUENTE A OTRO OPERANDO DESTINO,ESTOS PUEDEN ESTAR EN: LD A,B LD A,20H BB AA Transferencia entre registros internos de la CPU AA 3EH 20H LD A,(1000H) LD (1000H), A MEMORIA DE PROGRAMA Transferencia entre la memoria de programa Y registros internos de la CPU. AA 1000H MEMORIA DE DATOS Transferencia entre registros internos de la CPU y la memoria de datos LD r, r r r 0 1 r r Ciclos: 1 Estados: 4 LD r, n r n 0 0 r 1 1 0 Ciclos: 2 Estados: 7 n
LD r, (HL) r (HL) 0 1 r 1 1 0 Ciclos: 2 Estados: 7 LD r, (IX+d) r (IX+d) 1 1 0 1 1 1 0 1 0 1 r 1 1 0 d Ciclos: 5 Estados: 19 LD (HL),r (HL) r Ciclos: 2 Estados: 7 0 1 1 1 0 r LD r, (IY+d) r (IY+d) 1 1 1 1 1 1 0 1 0 1 r 1 1 0 d Ciclos: 5 Estados: 19
LD (HL),n (HL) n 0 0 1 1 0 1 1 0 Ciclos: 3 Estados: 10 n LD A,(nn) A (n 2 ) 0 0 1 1 1 0 1 0 n 2 Ciclos: 4 Estados: 13 LD (nn),a (n 2 ) A 0 0 1 1 0 0 1 0 n 2 Ciclos: 4 Estados: 13
TRANSFERENCIAS DE 16 BITS LD HL,1025H PUSH AF HH LL 21H 25H 10H AA FF SP AA SP-1 FF z80 STACK MEMORIA DE PROGRAMA Transferencia entre registros internos de 16 bits de la CPU y el STACK Transferencia entre la memoria de programa y registros internos de 16 bits de la CPU. LD (1025H),IX HH LL LD SP,HL IX IXL IXH 1025h 1026h SP Transferencia entre registros internos de 16 bits de la CPU MEMORIA DE DATOS Transferencia entre registros internos de 16 bits de la CPU y la memoria de datos
Instrucciones de carga de 16 bits LD dd, nn dd n 2 0 0 d d 0 0 0 1 Ciclos: 3 Estados: 10 n 2
Instrucciones de carga de 16 bits LD dd, (nn) d H (n 2 +1) d L (n 2 ) 1 1 1 0 1 1 0 1 0 1 d d 1 0 1 1 Ciclos: 6 Estados: 20 n 2 Instrucciones de carga de 16 bits LD (nn), HL (n 2 +1) H (n 2 ) L 0 0 1 0 0 0 1 0 Ciclos: 5 Estados: 16 n 2
Instrucciones de carga de 16 bits LD SP, HL SP HL 1 1 1 1 1 0 0 1 Ciclos: 1 Estados: 6 Instrucciones de carga de 16 bits PUSH qq (SP-2) qq L, (SP-1) qq H. Ciclos: 3 Estados: 11 1 1 q q 0 1 0 1 POP qq qq H (SP+1), qq L (SP). 1 1 q q 0 0 0 1 Ciclos: 3 Estados: 10
INSTRUCCIONES DE INTERCAMBIO EX AF,A F EXX AA FF A F F BB DD HH CC EE LL B D H C E L L INSTRUCCIONES DE TRANSFERENCIA Y BÚSQUEDA DE BLOQUES Este grupo de instrucciones es exclusivo del. Con las instrucciones de transferencia de bloques, con una solo instrucción, un bloque de memoria de cualquier tamaño puede ser movido a cualquier otra localidad en la misma memoria. Con las instrucciones de búsqueda de bloques, con una solo instrucción, se puede buscar un caracter determinado de 8 bits, en un bloque de memoria externa de cualquier longitud, tal que, cuando el caracter es encontrado o se llega al fin del bloque la instrucción termina automáticamente. Tanto las instrucciones bloques de transferencia como las de búsqueda, pueden ser interrumpidas durante su ejecución de tal manera que no ocupen al CPU por grandes longitudes de tiempo.
TRANSFERENCIA DE BLOQUES Este grupo de instrucciones permiten mover un dato o un bloque de datos origen ubicados en la memoria, a otra región de la misma memoria llamada destino. Para realizar esta transferencia se involucran los pares de registros siguientes: DE Localidades destino HL como apuntador de la localización del bloque ORIGEN DE cómo apuntador de la localización del DESTINO del bloque BC como contador de # de bytes transferidos HL Bloque de datos Origen Transferencia por programa LDD Y LDI Tipos de Transferencias de bloque LDD: TRANSFIERE UN BYTE UBICADO EN (HL) AL DESTINO UBICADO EN (DE) Y DECREMENTA LOS APUNTADORES Y DECREMENTA BC LDI: TRANSFIERE UN BYTE UBICADO EN (HL) AL DESTINO UBICADO EN (DE) E INCREMENTA LOS APUNTADORES Y DECREMENTA BC ESTAS INSTRUCCIÓNES SON ÚTILES CUANDO DEBE SER MOVIDO UN BLOQUE PERO OTRO TIPO DE PROCESAMIENTO DEBE SER REALIZADO ENTRE CADA MOVIMIENTO. Transferencia automática LDIR Y LDDR LDDR: TRANSFIERE UN BYTE UBICADO EN (HL) AL DESTINO UBICADO EN (DE) INCREMENTA LOS APUNTADORES, DERCREMENTA EL CONTADOR BC Y REPITE HASTA QUE BC SEA CERO LDIR: TRANSFIERE UN BYTE UBICADO EN (HL) AL DESTINO UBICADO EN (DE) INCREMENTA LOS APUNTADORES, DECREMENTA EL CONTADOR BC Y REPITE HASTA QUE BC SEA CERO
Ejemplo ilustrativo de la instrucción LDI: Se transfiere un dato de la localidad de memoria apuntada por HL a otro localidad de la misma memoria apuntada por DE. Los apuntadores se incrementan y quedan listos para programar otra transferencia. H L 01 01 00 01 00 01 D E 04 04 00 01 01 00 B C 00 00 00 00 0400H 0100H Ejemplo ilustrativo de las instrucciones de transferencia de bloques automática: Se desea transferir un bloque de 4 bytes que empieza en la localidad 100h a las localidades destino que empiezan en la dirección 400h, use la instrucción LDIR (Load Increment and Repeat = Carga Incrementa y Repite) PROGRAMA: LD HL, 100H ; Se carga el apuntador del bloque origen LD DE, 400H ; Se carga el apuntador del bloque destino LD BC, 04 ; Se carga el contador de bytes transferidos LDDR ; Se realiza la transferencia automática..
LDIR H L 01 01 00 01 00 01 D E 04 04 01 00 01 00 B C 00 00 04 03 04 03 0400H 0100H FE 89 3A LDIR H L 01 01 01 02 01 02 D E 04 04 02 01 02 01 B C 00 00 03 02 03 02 0401H 0101H 3A FE 89 3A
LDIR H L 01 01 02 03 02 03 D E 04 04 03 02 03 02 B C 00 00 01 02 01 02 0402H 0102H FE 3A FE 89 3A LDIR H L 01 01 04 03 04 03 D E 04 04 04 03 04 03 B C 00 00 00 01 00 01 0403H 0103H 89 FE 3A FE 89 3A
Instrucciones de Búsqueda de bloques CPI (COMPARE AND INCRENMENT) y CPD (COMPARE AND DECREMENT) Acciones en CPI : 300Ch 300Bh 300Ah 3009h 3008h 3007h 3006h 3005h HL al inicio en CPD HL después de CPD HL después de CPI HL al inicio en CPI 1.- lee el siguiente byte 2.-incrementa HL 3.-Decrementa BC 4.-compara el byte con (A) y activa banderas 5.-se va a la siguiente instrucción Acciones en CPD: 1.- lee el siguiente byte 2.-decrementa HL 3.-Decrementa BC 4.-compara el byte con (A) y activa banderas 5.-se va a la siguiente instrucción