Está en la página 1de 10

28/09/2011

Contenido
2

Conjunto de instrucciones
Tipos de instrucciones
Modos de direccionamiento

El ensamblador del Z80


UNIDAD 5 El simulador AVOCET
EL LENGUAJE DE Implementacin de un sistema basado en
ENSAMBLADOR DEL Z80 el Z80
Otoo 2011 Microprocesadores

Conjunto de Instrucciones Formato de la Instruccin


3 4

El conjunto de instrucciones de un microprocesador El tamao de las instrucciones en el Z80 van de 1 a


determina la capacidad de su operacin y el 4 bytes
poder de su manipulacin de datos y su facilidad
de programacin.
El opcode determina cual es la operacin que se va
Una instruccin es un comando al microprocesador a realizar y esta incluido en el primer byte de la
para que desempee una tarea dada sobre un instruccin.
dato especifico y esta formada por:
Cdigo Operacional Algunos opcode especializados se encuentran en
Operando dos bytes

Formato de la Instruccin Instrucciones de 1 byte


5 6

El operando puede ser especificado de varias El opcode y los operandos son especificados en el
formas: mismo byte
Datos de 8 bits Opcode Operandos Codigo Binario Tarea
Datos de 16 bits Copiar el contenido del
LD A, B 01 111 000 (78H)
Registros registro B en el Acumulador

Par de registros
El cdigo operacional es especificado en los
Direccin de I/O
primeros dos bits 01
Direccin de Memoria
El registro A es representado por el cdigo 111
Las instrucciones son clasificadas en 4 grupos de
acuerdo a su longitud El registro B es representado por el cdigo 000

1
28/09/2011

Instrucciones de 2 bytes Instrucciones de 3 bytes


7 8

En una instruccin de 2 bytes, el primer byte El primer byte corresponde al opcode


especifica el opcode y el segundo byte el Los siguientes 2 bytes corresponden a una direccin o
operando dato de 16 bits en orden inverso
El primer byte corresponde a la parte baja del numero
Opcode Operandos Codigo Binario Tarea
LD B, 32H 0000 0110 (06H) Copiar el numero 32H en el
El segundo byte corresponde a la parte alta del numero
0011 0010 (32H) registro B
Opcode Operandos Codigo Binario Tarea
LD BC, 2080H 0000 0001 (01H)
Copiar el numero 2080H en el
1000 0000 (80H)
registro BC
El opcode para LD B es 06H 0010 0000 (20H)

Instrucciones de 4 bytes Conjunto de instrucciones


9 10

Las instrucciones anteriores son compatibles con el 8085 (244 El conjunto de instrucciones se clasifican en 6
opcodes) categoras
Para incluir una mayor funcionalidad se disearon instrucciones
Transferenciade Datos
especiales con opcodes de 2 bytes
Operaciones Aritmticas
Estas instrucciones son generalmente asociadas a los registros
ndice Operaciones Lgicas

Opcode Operandos Codigo Binario Tarea Manipulacin de bits


LD IX, 2000H 1101 1101 (DDH) Operaciones de Decisin
0010 0001 (21H) Copiar la direccin 2000H en Operaciones de Control de Maquina
0000 0000 (00H) el registro ndice IX
0010 0000 (20H)

Transferencia de datos Transferencia de datos


11 12

Estas instrucciones copian los datos de una locacin Operaciones Ejemplos


llamada fuente hacia otra llamada destino
Transfiere datos de un puerto de entrada hacia el
IN A,(01H)
Operaciones Ejemplos acumulador
Transfiere datos del acumulador hacia el puerto de
OUT (01H),A
Transfiere datos de un registro hacia otro registro LD A,B salida

Transfiere un byte hacia un registro o una localidad PUSH BC


LD B,32H Transfiere datos de los registros del MPU hacia el
de memoria
STACK y viceversa
POP BC
Transfiere datos de 16 bits hacia un par de
LD HL,2050H
registros
Intercambio de contenido de los registros de propsito
LD A,(2080H) EXX
Transfiere datos de una localidad de memoria general BC, DE, HL con los registros alternativos
hacia un registro o viceversa
LD (2080H),A

2
28/09/2011

Transferencia de datos Operaciones Aritmticas


13 14

La instruccin de transferencia de datos el destino



es especificado primero y despus la fuente. Suma
LD destino, fuente
Las direcciones de memoria o dispositivos de Resta
entrada y salida se especifican entre parntesis
En algunas operaciones los operandos son implcitos Incremento/Decremento
como en el caso de EXX
Las instrucciones de transferencia de datos no

afectan las banderas Complemento a 1s y a 2s

Suma Resta
15 16

Esta operacin se realiza usando el acumulador como Los siguientes operandos pueden ser restados del
uno de los operandos, el otro operando puede ser: contenido del acumulador
Cualquier nmero de 8 bits Numero de 8 bits SUB 95H
El contenido de un registro Contenido de un registro SUB C
El contenido de una localidad de memoria
Contenido de una localidad de memoria SUB (HL)
Las banderas son modificadas de acuerdo al resultado
La resta se realiza en complemento a 2s y el
de la operacin
resultado se almacena en el acumulador
ADD A,B
ADD A,97H
El resultado afecta las banderas
ADD A,(HL) El acumulador es un operando implcito

Incremento/Decremento Complemento a 1s y a 2s
17 18

El contenido de un registro de 8 bits o localidad de El contenido del acumulador puede ser


memoria es incrementada o decrementada por uno complementado y el resultado almacenado en el
El contenido de un registro de 16 bits puede ser acumulador
incrementado o decrementado por uno Estas instrucciones asumen que el operando es el
Solo la operacin de 8 bits afecta las banderas acumulador
Ejemplo Estas instrucciones afectan algunas banderas
INC B Tarea
CPL Complementa el contenido del acumulador (Complemento a 1)
DEC BC
NEG Resta el contenido del acumulador de cero (Complemento a 2)

3
28/09/2011

Ejemplo Operaciones Logicas


19 20

A 53H F X
LD A,53H B X C X
Funciones lgicas
A 53H F X
LD B,F5H B F5H C X

ADD A,B A 48H F C=1, Z=0 Shift y Rotaciones


B F5H C X

53H 01010011
+ F5H + 11110101 Comparaciones
1 48H 1 01001000

Funciones Lgicas Shift y Rotacin


21 22

Los operandos para estas funciones pueden ser un RLCA: Rota el acumulador a la
izquierda. El carry es C D7 D6 D5 D4 D3 D2 D1 D0
numero de 8 bits, el contenido de un registro o afectado por D7
locacin de memoria
RLA: Rota el acumulador a la
izquierda a travs del C D7 D6 D5 D4 D3 D2 D1 D0
Tarea
carry
AND B Aplicar la operacin AND a cada bit del registro B
con los bits del acumulador
RRCA: Rota el acumulador a la
OR 32H Aplicar la operacin OR a cada bit del numero derecha. El carry es C D7 D6 D5 D4 D3 D2 D1 D0
32H con los bits del acumulador afectado por D0
XOR (HL) Aplicar la operacin XOR a cada bit del numero
contenido en la localidad apuntada por HL con los RRA: Rota el acumulador a la
bits del acumulador derecha a travs del C D7 D6 D5 D4 D3 D2 D1 D0
carry

Shift y Rotacin Shift y Rotacin


23 24

Opcode Operando Descripcin


SLA: Recorre los bits del RLC Reg o Memoria Rota a la izquierda los bits del registro o memoria
registro hacia la Rota a la izquierda los bits del registro o memoria
izquierda a travs del C D7 D6 D5 D4 D3 D2 D1 D0 0 RL Reg o Memoria
a travs del carry.
carry. Introduce ceros en
el bit D0 RRC Reg o Memoria Rota a la derecha los bits del registro o memoria
Rota a la derecha los bits del registro o memoria
RR Reg o Memoria
a travs del carry.
SRL: Recorre los bits del Recorre los bits del registro o memoria a la
registro hacia la C D7 D6 D5 D4 D3 D2 D1 D0 SLA Reg o Memoria izquierda a travs del carry e inserta 0 en la
derecha a travs del posicin D0
carry. Introduce ceros en 0 Recorre los bits del registro o memoria a la
el bit D7 SRL Reg o Memoria derecha a travs del carry e inserta 0 en la
posicin D7

4
28/09/2011

Comparaciones Comparaciones
25 26

El contenido del acumulador es comparado con


Cuando el operando
Unnumero CP 97H
es una localidad de Condicin Banderas
Contenido de un registro CP B memoria se especifica
Contenido de una localidad de memoria CP (HL) Carry Cero
por medio
A < operando 1 0
El resultado de la comparacin se indica con la Elcontenido de un
A = operando 0 1
bandera adecuada registro
A > operando 0 0
Esta instruccin realiza la comparacin por medio Usando un registro
de substraer el operando del acumulador ndice mas un offset
CP (IX + 02H)
Prueba por menor que, igual y mayor que

Manipulacin de bits Comprobacin de bits


27 28

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
Comprobacin de bits del bit que se desea verificar
Ejemplo
Verifique el bit 7 del registro B
Bit set/Reset
BIT 7,B

Set y Reset Decisin


29 30

Cualquiera de los 8 bits de un registro, acumulador Este grupo de instrucciones pueden alterar la
o localidad de memoria puede ser puesto a uno o secuencia de ejecucin del programa de forma
cero Condicional

Ejemplo Incondicional
Saltos
Antes de la Despus de la
Operacion
operacin operacin
Llamada a subrutina
B = 00110111 SET 7,B B = 10110111
B = 11110000 RESET 5,B B = 11010000
Reinicio

5
28/09/2011

Saltos Llamada a subrutina


31 32

Existen saltos condicionales e incondicionales Estas instrucciones alteran la secuencia del


Si el salto es condicional, entonces el procesador programa por
verifica las banderas especificadas y si la condicin Llamado a subrutina CALL
es verdadera, la secuencia de instrucciones es Regreso de una subrutina RET
alterada El regreso o llamado condicional de subrutina
La locacin destino puede ser especificada verifica las banderas adecuadas
directamente o relativa al PC Ejemplo
Ejemplo CALL 2050H
JP C,2050H CALL Z,2050H

Reinicio Control de Maquina


33 34

Esta instruccin cambia la secuencia del programa Estas instrucciones controla la operacin del
a una de 8 locaciones de reinicio localizadas en la microcontrolador, tales como
pagina 00.
Suspender la ejecucin de la instruccin
Esta instruccin generalmente se usa con las HALT
interrupciones
Deshabilitar las interrupciones poniendo a cero los
Ejemplo flip-flops que habilitan las interrupciones
RST 28H La direccin de reinicio es 0028H DI

Modos de Direccionamiento Modos de Direccionamiento


35 36

Modo Explicacin Ejemplo Modo Explicacin Ejemplo


El byte que sigue despus del opcode Este modo se usa para transferir
Inmediato LD B,97H
es el operando Registro datos entre el MPU y la memoria. El
LD B,(HL)
Inmediato Los 2 siguientes bytes despus del Indirecto registro se utiliza como un apuntador
LD BC,8045H a la memoria
Extendido opcode son el operando
El registro que se usa como operando Los dos bytes seguidos del opcode
Registro LD B,A Extendido indican un salto a la locacin de JP 2080H
esta incluido en el opcode
memoria especificada
El opcode contiene el operando de
forma implcita. Algunas operaciones JR 14H
El segundo byte indica el valor del
Implicito aritmticas y lgicas usan el AND B Salta 20 locaciones
Relativo desplazamiento en complemento a 2s
acumulador como un operando despus de la
para una locacin de salto
implcito siguiente instruccin

6
28/09/2011

Modos de Direccionamiento Programa Ilustrativo


37 38

Modo Explicacin Ejemplo Suma dos nmeros hexadecimales y despliega el


El byte despus del opcode
especifica el valor de desplazamiento
resultado
Indexado INC (IX+10H)
que se suma al registro ndice para Seccin de ORG 1800H ; La direccin de inicio del programa es 1800H
indicar una locacin de memoria definiciones
PORT1 EQU 01H ; Direccin del puerto de salida
Este modo es usado para la
manipulacin de bits. En este modo se Punto de inicio START: LD B,32H ;Copia 32H en el registro B
Bit SET 7,B
indica un bit de un registro o una LD C,0A2H ;Carga el segundo byte a ser sumado
locacin de memoria LD A,C ; Copia uno de los operandos al acumulador
Se incluyen 8 posibles direcciones de ADD A,B ;Despliega el resultado
reinicio en la pagina cero. En este OUT (PORT1),A ;Despliega el resultado
Pagina Cero modo se especifica la parte baja de RST 28H
Detenemos la ejecucin HALT ;Fin del programa
la direccin de memoria y la parte
alta se asume que es 00H Fin del programa END ; Fin del ensamblador

Programa Ilustrativo Estructura de un programa


39 40

ORG indica la direccin en la cual se va a Declaracin de Constantes y definiciones


almacenar el programa
EQU directiva al compilador para definir constantes Rutina de Inicio
PORT1 EQU 01H
MAX EQU 10H Subrutinas de Reinicio
Etiquetas
Se utilizan para marcar puntos en el programa para Cuerpo del programa principal
ser usados en los saltos y llamados a subrutinas
END marca el fin del programa en ensamblador Subrutinas

Transferencia de datos Transferencia de datos


41 42

Instruccin Bytes Descripcin Las banderas no son afectadas por esta instruccin
El registro HL es usado como un apuntador a la memoria. Las instrucciones relacionadas a la memoria son
LD (HL), R 1 El contenido del registro es copiado a la locacion de
memoria apuntada por HL identificadas por los parntesis
LD (HL), 8-bit 2
El numero de 8 bit es copiado a la locacion de memoria El registro HL es un apuntador a memoria verstil
apuntada por HL
que puede ser usado para transferir datos de
LD A, (RP) 1 El contenido del registro de propsito general es
transferido al acumulador. El apuntador a memoria memoria hacia cualquier registro de propsito
puede ser el registro BC o DE. La transferencia de datos general
LD (RP), A 1 empleando estos registros solo puede ser realizada al
acumulador Los registros BC, DE y el direccionamiento inmediato
LD A,(16-bits) 3 La direccin de memoria se especifica como el operando solo pueden ser usados con el acumulador
de 16 bits, y solo se puede hacer la transferencia de
LD (16-bits),A 3 datos hacia o desde el acumulador.

7
28/09/2011

Transferencia de Datos Transferencia de datos


43 44

Ejemplo Direccionamiento Extendido


La locacin de memoria 2050H contiene el byte 37H
Usando los diferentes modos de direccionamiento, Cdigo Instruccin
37H
A F
transfiere el byte 37H al registro B 3A LD A,(2050H)
B 37H C 2050H
50 37 H
Direccionamiento Indirecto usando HL D E
20
H L
47 LD B,A
Cdigo Instruccin
A 37H F
21 LD HL,2050H
B C 2050H 37 H
50
D E
20
H 20H 50H L
46 LD B,(HL)

Ejercicio Solucion
45 46

La localidad de memoria 2040H contiene el dato HEX OPCODE Operando Comentario


F2H 21 LD HL,2040H ; Coloca el apuntador HL a la direccin fuente
40
Transfiere el dato hacia la localidad 2070H 20
Limpia la localidad de memoria 2040H al terminar 01 LD BC,2070H ;Coloca el apuntador BC a la direccin destino

la transferencia 70
20
Escribe el programa que realice las operaciones 7E LD A,(HL) ;Transfiere el dato hacia el acumulador
anteriormente descritas 02 LD (BC),A ;Copia el dato en la direccin destino
36 LD (HL),00 ;Limpia la locacin de memoria 2040H
00
76 HALT ;Detiene la ejecucin del programa

Transferencia de datos hacia


Ejemplo
47
dispositivos I/O 48

Instruccin Bytes Ejemplo Descripcin


Lee datos del puerto de entrada y
IN A,(8-bits) 2 IN A,(01H)
los almacena en el acumulador
OUT Escribe datos a un puerto de
OUT A,(8-bits) 2
(01H),A 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.

8
28/09/2011

Ejemplo Operaciones Aritmticas


49 50

Lee los switches conectados al puerto 01H La suma y resta comparten las siguientes
Despliega la lectura en los leds conectados al caractersticas
Asumen que uno de los operandos es el acumulador
puerto 07H.
Modifican todas las banderas de acuerdo al resultado
Almacena la lectura en la direccion 2060H
de la operacin
OPCODE OPERANDO COMENTARIO El resultado es almacenado en el acumulador
IN A,(01H) ; Lee los switches de entrada No afectan el contenido del operando, solo del
OUT (07H),A ; Despliega la lectura de los switches en el puerto de salida acumulador.
LD (2060H),A ; Almacena la lectura en memoria
HALT

Operaciones Aritmticas Operaciones Aritmticas


51 52

El incremento y decremento comparten las


OPCODE OPERANDO BYTES DESCRIPCION
Suma el contenido del registro r al acumulador y
siguientes caractersticas
ADD A, r 1
el resultado es almacenado en el acumulador El operando puede ser un registro, un numero de 8-bits
ADD A, 8-bit 2
Suma el dato de 8 bits al contenido del o un direccin de memoria
acumulador
Si el operando es de 8-bits, el resultado de estas
Suma el contenido de la locacin de memoria
ADD A, (HL) 1
apuntada por HL al contenido del acumulador
operaciones afecta todas las banderas excepto la del
Resta el contenido del registro r del acumulador y
carry
SUB R 1
el resultado es almacenado en el acumulador Si el operando es de 16-bits, ninguna bandera es

SUB 8-bit 2
Resta el dato de 8 bits del contenido del afectada. Esto es importante tomarlo en cuenta cuando
acumulador se usan como contadores de 16-bits
Resta el contenido de la locacin de memoria
SUB (HL) 1 El resultado es almacenado en mismo operando
apuntada por HL del contenido del acumulador

Operaciones Aritmticas Operaciones Aritmticas


53 54

OPCODE OPERANDO BYTES DESCRIPCION El acumulador es el operando implicito para los


INC r 1 Incrementa el contenido del registro r complemento a 1s y a 2s
INC (HL) 1
Incrementa el contenido de la localidad de El resultado es almacenado en el acumulador
memoria apuntada por el registro HL
Incrementa el contenido del par de registros. OPCODE OPERANDO BYTES DESCRIPCION
INC rp 1
El par de registros puede ser BC, DE, HL y SP
Invierte cada bit del acumulador. Esta
DEC r 1 Decrementa el contenido del registro r CPL 1 operacin equivale a la funcin NOT. Solo las
Decrementa el contenido de la localidad de banderas H y N son afectadas
DEC (HL) 1
memoria apuntada por el registro HL Substrae el contenido del acumulador de 00.
Decrementa el contenido del par de registros. Esto es equivalente a realizar el complemento
DEC rp 1 NEG 1
El par de registros puede ser BC, DE, HL y SP a 2s del contenido del acumulador. Esta
operacin afecta todas las banderas

9
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

También podría gustarte