Вы находитесь на странице: 1из 10

28/09/2011

Contenido
2

UNIDAD 5 EL LENGUAJE DE ENSAMBLADOR DEL Z80


Otoo 2011

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

Cdigo Operacional Operando

Formato de la Instruccin
5 6

Instrucciones de 1 byte

El operando puede ser especificado de varias formas:


Datos de 8 bits Datos de 16 bits Registros Par de registros Direccin de I/O Direccin de Memoria

El opcode y los operandos son especificados en el mismo byte


Opcode LD Operandos A, B Codigo Binario 01 111 000 (78H) Tarea Copiar el contenido del registro B en el Acumulador

Las instrucciones son clasificadas en 4 grupos de acuerdo a su longitud

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

El opcode para LD B es 06H

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

El conjunto de instrucciones se clasifican en 6 categoras


Transferencia Operaciones

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 Resta Incremento/Decremento Complemento a 1s y a 2s

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

Las banderas son modificadas de acuerdo al resultado de la operacin


ADD A,B ADD A,97H ADD A,(HL)

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

LD A,53H LD B,F5H ADD A,B


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

Funciones lgicas Shift y Rotaciones Comparaciones

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 contenido del acumulador es comparado con


Un

numero Contenido de un registro Contenido de una localidad de memoria

Cuando el operando es una localidad de memoria se especifica por medio


El

Condicin A < operando A = operando A > operando

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

contenido de un registro Usando un registro ndice mas un offset CP (IX + 02H)

Banderas Carry Cero 1 0 0 1 0 0

Manipulacin de bits
27 28

Comprobacin de bits

Comprobacin de bits Bit set/Reset

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

el bit 7 del registro B

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

Saltos Llamada a subrutina Reinicio

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

Estas instrucciones alteran la secuencia del programa por


Llamado Regreso

a subrutina de una subrutina

CALL RET

El regreso o llamado condicional de subrutina verifica las banderas adecuadas Ejemplo


CALL CALL

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

La direccin de reinicio es 0028H

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)

Modo Inmediato Inmediato Extendido Registro

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

Suma dos nmeros hexadecimales y despliega el resultado


ORG PORT1 EQU LD LD LD ADD OUT 1800H 01H B,32H C,0A2H A,C A,B (PORT1),A ; La direccin de inicio del programa es 1800H ; Direccin del puerto de salida ;Copia 32H en el registro B ;Carga el segundo byte a ser sumado ; Copia uno de los operandos al acumulador ;Despliega el resultado ;Despliega el resultado ;Fin del programa ; Fin del ensamblador

Seccin de definiciones

Bit

Punto de inicio START:

Pagina Cero

RST 28H

Detenemos la ejecucin HALT Fin del programa END

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

EQU 01H EQU 10H

Etiquetas
Se

utilizan para marcar puntos en el programa para ser usados en los saltos y llamados a subrutinas

END marca el fin del programa en ensamblador

Transferencia de datos
41 42

Transferencia de datos

Instruccin LD (HL), R LD (HL), 8-bit LD A, (RP) LD (RP), A LD A,(16-bits) LD (16-bits),A

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

Cdigo Instruccin 3A 50 20 47 LD B,A LD A,(2050H)

A B D H

F C E L
2050H

Direccionamiento Indirecto usando HL


21 50 20 46 LD B,(HL) LD HL,2050H A B D H 20H 50H
37H

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

Transferencia de datos hacia dispositivos I/O


Instruccin IN A,(8-bits) Bytes 2 2 Ejemplo IN A,(01H) OUT (01H),A Descripcin

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

La suma y resta comparten las siguientes caractersticas


Asumen

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

El incremento y decremento comparten las siguientes caractersticas


El operando puede ser un registro, un numero de 8-bits o un direccin de memoria Si el operando es de 8-bits, el resultado de estas operaciones afecta todas las banderas excepto la del carry Si el operando es de 16-bits, ninguna bandera es afectada. Esto es importante tomarlo en cuenta cuando se usan como contadores de 16-bits El resultado es almacenado en mismo operando

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

El acumulador es el operando implicito para los complemento a 1s y a 2s El resultado es almacenado en el acumulador


BYTES DESCRIPCION 1

OPCODE OPERANDO CPL

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

Вам также может понравиться