Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Contenido
2
Conjunto de instrucciones Tipos de instrucciones Modos de direccionamiento El ensamblador del Z80 El simulador AVOCET Implementacin de un sistema basado en el Z80
Microprocesadores
Conjunto de Instrucciones
3 4
Formato de la Instruccin
El conjunto de instrucciones de un microprocesador determina la capacidad de su operacin y el poder de su manipulacin de datos y su facilidad de programacin. Una instruccin es un comando al microprocesador para que desempee una tarea dada sobre un dato especifico y esta formada por:
El tamao de las instrucciones en el Z80 van de 1 a 4 bytes El opcode determina cual es la operacin que se va a realizar y esta incluido en el primer byte de la instruccin. Algunos opcode especializados se encuentran en dos bytes
Formato de la Instruccin
5 6
Instrucciones de 1 byte
El cdigo operacional es especificado en los primeros dos bits 01 El registro A es representado por el cdigo 111 El registro B es representado por el cdigo 000
28/09/2011
Instrucciones de 2 bytes
7 8
Instrucciones de 3 bytes
En una instruccin de 2 bytes, el primer byte especifica el opcode y el segundo byte el operando
Opcode LD Operandos B, 32H Codigo Binario 0000 0110 (06H) 0011 0010 (32H) Tarea Copiar el numero 32H en el registro B
El primer byte corresponde al opcode Los siguientes 2 bytes corresponden a una direccin o dato de 16 bits en orden inverso
El primer byte corresponde a la parte baja del numero El segundo byte corresponde a la parte alta del numero
Operandos BC, 2080H Codigo Binario 0000 0001 (01H) 1000 0000 (80H) 0010 0000 (20H) Tarea Copiar el numero 2080H en el registro BC LD
Opcode
Instrucciones de 4 bytes
9 10
Conjunto de instrucciones
Las instrucciones anteriores son compatibles con el 8085 (244 opcodes) Para incluir una mayor funcionalidad se disearon instrucciones especiales con opcodes de 2 bytes Estas instrucciones son generalmente asociadas a los registros ndice
Opcode LD Operandos IX, 2000H Codigo Binario 1101 1101 (DDH) 0010 0001 (21H) 0000 0000 (00H) 0010 0000 (20H) Copiar la direccin 2000H en el registro ndice IX Tarea
de Datos Aritmticas Operaciones Lgicas Manipulacin de bits Operaciones de Decisin Operaciones de Control de Maquina
Transferencia de datos
11 12
Transferencia de datos
Operaciones Transfiere datos de un puerto de entrada hacia el acumulador Transfiere datos del acumulador hacia el puerto de salida Transfiere datos de los registros del MPU hacia el STACK y viceversa Ejemplos IN A,(01H) OUT (01H),A PUSH BC POP BC
Estas instrucciones copian los datos de una locacin llamada fuente hacia otra llamada destino
Operaciones Ejemplos LD A,B Transfiere datos de un registro hacia otro registro
Transfiere un byte hacia un registro o una localidad LD B,32H de memoria Transfiere datos de 16 bits hacia un par de registros Transfiere datos de una localidad de memoria hacia un registro o viceversa LD HL,2050H LD A,(2080H) LD (2080H),A
Intercambio de contenido de los registros de propsito general BC, DE, HL con los registros alternativos
EXX
28/09/2011
Transferencia de datos
13 14
Operaciones Aritmticas
La instruccin de transferencia de datos el destino es especificado primero y despus la fuente. LD destino, fuente Las direcciones de memoria o dispositivos de entrada y salida se especifican entre parntesis En algunas operaciones los operandos son implcitos como en el caso de EXX Las instrucciones de transferencia de datos no afectan las banderas
Suma
15 16
Resta
Esta operacin se realiza usando el acumulador como uno de los operandos, el otro operando puede ser:
Cualquier nmero de 8 bits El contenido de un registro El contenido de una localidad de memoria
Los siguientes operandos pueden ser restados del contenido del acumulador
Numero
de 8 bits SUB 95H de un registro SUB C Contenido de una localidad de memoria SUB (HL)
Contenido
La resta se realiza en complemento a 2s y el resultado se almacena en el acumulador El resultado afecta las banderas El acumulador es un operando implcito
Incremento/Decremento
17 18
Complemento a 1s y a 2s
El contenido de un registro de 8 bits o localidad de memoria es incrementada o decrementada por uno El contenido de un registro de 16 bits puede ser incrementado o decrementado por uno Solo la operacin de 8 bits afecta las banderas Ejemplo INC B DEC BC
El contenido del acumulador puede ser complementado y el resultado almacenado en el acumulador Estas instrucciones asumen que el operando es el acumulador Estas instrucciones afectan algunas banderas
Tarea Complementa el contenido del acumulador (Complemento a 1) Resta el contenido del acumulador de cero (Complemento a 2)
CPL NEG
28/09/2011
Ejemplo
19 20
Operaciones Logicas
A B A B A B 53H X 53H F5H 48H F5H F C F C F C X X X X C=1, Z=0 X
Funciones Lgicas
21 22
Shift y Rotacin
RLCA: Rota el acumulador a la izquierda. El carry es afectado por D7 RLA: Rota el acumulador a la izquierda a travs del carry RRCA: Rota el acumulador a la derecha. El carry es afectado por D0 RRA: Rota el acumulador a la derecha a travs del carry C D7 D6 D5 D4 D3 D2 D1 D0
Los operandos para estas funciones pueden ser un numero de 8 bits, el contenido de un registro o locacin de memoria
Tarea AND B OR 32H XOR (HL) Aplicar la operacin AND a cada bit del registro B con los bits del acumulador Aplicar la operacin OR a cada bit del numero 32H con los bits del acumulador Aplicar la operacin XOR a cada bit del numero contenido en la localidad apuntada por HL con los bits del acumulador
D7
D6
D5
D4
D3
D2
D1
D0
D7
D6
D5
D4
D3
D2
D1
D0
D7
D6
D5
D4
D3
D2
D1
D0
Shift y Rotacin
23 24
Shift y Rotacin
Opcode Operando Descripcin Rota a la izquierda los bits del registro o memoria a travs del carry. Rota a la derecha los bits del registro o memoria a travs del carry. RLC Reg o Memoria Rota a la izquierda los bits del registro o memoria Reg o Memoria
SLA: Recorre los bits del registro hacia la izquierda a travs del carry. Introduce ceros en el bit D0
D7
D6
D5
D4
D3
D2
D1
D0
RL RRC RR
Reg o Memoria Rota a la derecha los bits del registro o memoria Reg o Memoria
SRL: Recorre los bits del registro hacia la derecha a travs del carry. Introduce ceros en el bit D7
C 0
D7
D6
D5
D4
D3
D2
D1
D0
SLA
Recorre los bits del registro o memoria a la Reg o Memoria izquierda a travs del carry e inserta 0 en la posicin D0 Recorre los bits del registro o memoria a la Reg o Memoria derecha a travs del carry e inserta 0 en la posicin D7
SRL
28/09/2011
Comparaciones
25 26
Comparaciones
CP 97H CP B CP (HL)
El resultado de la comparacin se indica con la bandera adecuada Esta instruccin realiza la comparacin por medio de substraer el operando del acumulador Prueba por menor que, igual y mayor que
Manipulacin de bits
27 28
Comprobacin de bits
Cualquiera de los 8 bits de un registro, acumulador o localidad de memoria puede ser verificada La bandera Z se modificara de acuerdo al valor del bit que se desea verificar Ejemplo
Verifique
BIT
7,B
Set y Reset
29 30
Decisin
Cualquiera de los 8 bits de un registro, acumulador o localidad de memoria puede ser puesto a uno o cero Ejemplo
Antes de la operacin B = 00110111 B = 11110000 Operacion SET 7,B RESET 5,B Despus de la operacin B = 10110111 B = 11010000
Este grupo de instrucciones pueden alterar la secuencia de ejecucin del programa de forma
Condicional Incondicional
28/09/2011
Saltos
31 32
Llamada a subrutina
Existen saltos condicionales e incondicionales Si el salto es condicional, entonces el procesador verifica las banderas especificadas y si la condicin es verdadera, la secuencia de instrucciones es alterada La locacin destino puede ser especificada directamente o relativa al PC Ejemplo
JP
CALL RET
C,2050H
2050H Z,2050H
Reinicio
33 34
Control de Maquina
Esta instruccin cambia la secuencia del programa a una de 8 locaciones de reinicio localizadas en la pagina 00. Esta instruccin generalmente se usa con las interrupciones
Estas instrucciones controla la operacin del microcontrolador, tales como Suspender la ejecucin de la instruccin
HALT
Ejemplo
RST
Deshabilitar las interrupciones poniendo a cero los flip-flops que habilitan las interrupciones
DI
28H
Modos de Direccionamiento
35 36
Modos de Direccionamiento
Modo Registro Indirecto Explicacin Este modo se usa para transferir datos entre el MPU y la memoria. El registro se utiliza como un apuntador a la memoria Los dos bytes seguidos del opcode indican un salto a la locacin de memoria especificada Ejemplo LD B,(HL)
Explicacin
Ejemplo
El byte que sigue despus del opcode LD B,97H es el operando Los 2 siguientes bytes despus del opcode son el operando LD BC,8045H
El registro que se usa como operando LD B,A esta incluido en el opcode El opcode contiene el operando de forma implcita. Algunas operaciones aritmticas y lgicas usan el acumulador como un operando implcito
Extendido
JP 2080H
Implicito
AND B
Relativo
JR 14H El segundo byte indica el valor del Salta 20 locaciones desplazamiento en complemento a 2s despus de la para una locacin de salto siguiente instruccin
28/09/2011
Modos de Direccionamiento
37 38
Programa Ilustrativo
Modo Indexado
Explicacin
Ejemplo
El byte despus del opcode especifica el valor de desplazamiento INC (IX+10H) que se suma al registro ndice para indicar una locacin de memoria Este modo es usado para la manipulacin de bits. En este modo se SET 7,B indica un bit de un registro o una locacin de memoria Se incluyen 8 posibles direcciones de reinicio en la pagina cero. En este modo se especifica la parte baja de la direccin de memoria y la parte alta se asume que es 00H
Seccin de definiciones
Bit
Pagina Cero
RST 28H
Programa Ilustrativo
39 40
Estructura de un programa
Declaracin de Constantes y definiciones Rutina de Inicio Subrutinas de Reinicio Cuerpo del programa principal Subrutinas
ORG indica la direccin en la cual se va a almacenar el programa EQU directiva al compilador para definir constantes
PORT1 MAX
Etiquetas
Se
utilizan para marcar puntos en el programa para ser usados en los saltos y llamados a subrutinas
Transferencia de datos
41 42
Transferencia de datos
Bytes Descripcin 1 2 1 1 3 3 El registro HL es usado como un apuntador a la memoria. El contenido del registro es copiado a la locacion de memoria apuntada por HL El numero de 8 bit es copiado a la locacion de memoria apuntada por HL El contenido del registro de propsito general es transferido al acumulador. El apuntador a memoria puede ser el registro BC o DE. La transferencia de datos empleando estos registros solo puede ser realizada al acumulador La direccin de memoria se especifica como el operando de 16 bits, y solo se puede hacer la transferencia de datos hacia o desde el acumulador.
Las banderas no son afectadas por esta instruccin Las instrucciones relacionadas a la memoria son identificadas por los parntesis El registro HL es un apuntador a memoria verstil que puede ser usado para transferir datos de memoria hacia cualquier registro de propsito general Los registros BC, DE y el direccionamiento inmediato solo pueden ser usados con el acumulador
28/09/2011
Transferencia de Datos
43 44
Transferencia de datos
Ejemplo
La
Direccionamiento Extendido
37H
locacin de memoria 2050H contiene el byte 37H Usando los diferentes modos de direccionamiento, transfiere el byte 37H al registro B
A B D H
F C E L
2050H
37H
37 H
Cdigo Instruccin
F C E L
2050H
37 H
Ejercicio
45 46
Solucion
HEX 21 40 20 01 70 20 7E 02 36 00 76 HALT ;Detiene la ejecucin del programa LD LD LD A,(HL) (BC),A (HL),00 ;Transfiere el dato hacia el acumulador ;Copia el dato en la direccin destino ;Limpia la locacin de memoria 2040H LD BC,2070H ;Coloca el apuntador BC a la direccin destino OPCODE Operando LD HL,2040H Comentario ; Coloca el apuntador HL a la direccin fuente
La localidad de memoria 2040H contiene el dato F2H Transfiere el dato hacia la localidad 2070H Limpia la localidad de memoria 2040H al terminar la transferencia Escribe el programa que realice las operaciones anteriormente descritas
47
Ejemplo
48
OUT A,(8-bits)
Lee datos del puerto de entrada y los almacena en el acumulador Escribe datos a un puerto de salida del acumulador
Las banderas no son afectadas por la ejecucin de estas instrucciones Las direcciones de los puertos de entrada y salida estn compuestas por 8 bits y deben estar escritas entre parntesis.
28/09/2011
Ejemplo
49 50
Operaciones Aritmticas
Lee los switches conectados al puerto 01H Despliega la lectura en los leds conectados al puerto 07H. Almacena la lectura en la direccion 2060H
OPERANDO A,(01H) (07H),A (2060H),A COMENTARIO ; Lee los switches de entrada ; Despliega la lectura de los switches en el puerto de salida ; Almacena la lectura en memoria IN OUT LD HALT
OPCODE
que uno de los operandos es el acumulador todas las banderas de acuerdo al resultado de la operacin El resultado es almacenado en el acumulador No afectan el contenido del operando, solo del acumulador.
Modifican
Operaciones Aritmticas
51 52
Operaciones Aritmticas
OPCODE OPERANDO ADD ADD ADD SUB SUB SUB A, r A, 8-bit A, (HL) R 8-bit (HL)
BYTES DESCRIPCION 1 2 1 1 2 1 Suma el contenido del registro r al acumulador y el resultado es almacenado en el acumulador Suma el dato de 8 bits al contenido del acumulador Suma el contenido de la locacin de memoria apuntada por HL al contenido del acumulador Resta el contenido del registro r del acumulador y el resultado es almacenado en el acumulador Resta el dato de 8 bits del contenido del acumulador Resta el contenido de la locacin de memoria apuntada por HL del contenido del acumulador
Operaciones Aritmticas
53 54
Operaciones Aritmticas
OPCODE OPERANDO INC INC INC DEC DEC DEC r (HL) rp r (HL) rp
BYTES DESCRIPCION 1 1 1 1 1 1
Incrementa el contenido del registro r Incrementa el contenido de la localidad de memoria apuntada por el registro HL Incrementa el contenido del par de registros. El par de registros puede ser BC, DE, HL y SP Decrementa el contenido del registro r Decrementa el contenido de la localidad de memoria apuntada por el registro HL Decrementa el contenido del par de registros. El par de registros puede ser BC, DE, HL y SP
Invierte cada bit del acumulador. Esta operacin equivale a la funcin NOT. Solo las banderas H y N son afectadas Substrae el contenido del acumulador de 00. Esto es equivalente a realizar el complemento a 2s del contenido del acumulador. Esta operacin afecta todas las banderas
NEG
28/09/2011
Ejercicio
55
Cargue el numero F2H y 68H en los registros B y C respectivamente Almacene A2H en la locacin de memoria 2065H Reste el 68H de F2H Complemente a 1s el resultado Sume A2H desde la memoria Almacene la repuesta final en la locacin de memoria 2066H Determine el estado del signo (S), cero (Z) y el Carry (C)
10