Академический Документы
Профессиональный Документы
Культура Документы
Pila
2
UNIDAD 5 4A PARTE
PROGRAMANDO EN EL
ENSAMBLADOR DEL Z80
Otoo 2011
Microprocesadores
Pila
3
Pila
4
Pila
5
Memoria
0000H
0100H
Pagina 0
Rutinas de Inicio
Programa
Crecimiento
de la Pila
Pila
FFFFH
Pila
6
El almacenamiento y
recuperacin de los
bytes en la pila se
realiza siguiendo un
formato LIFO (Last Input
First Output)
La informacin en la
locaciones de la pila no
son destruidas hasta que
nueva informacin es
almacenada
Dato 4
Dato 3
Dato 2
Dato 1
08/11/2011
Instrucciones de la Pila
OPCODE OPERANDO
LD
SP,16-bits
PUSH
RP
PUSH
IX
POP
RP
POP
IX
DESCRIPCION
Carga una direccin de 16 bits en el registro apuntador a
la pila. Define la direccin de inicio de la pila
Copia el contenido del par de registros o de los registros
ndice en la pila.
Esta instruccin primero decrementa el apuntador a la pila y
copia la parte alta del registro en la locacin SP-1. Despus
decrementa nuevamente el apuntador y almacena la parte
baja del apuntador en SP-2
Copia el contenido de las dos locaciones de memoria de la
parte alta de la pila hacia par de registros especificados o
hacia los registros ndice .
Esta instruccin copia el contenido de la pila especificado
por SP dentro del registro de la parte baja (en BC, seria C)
incrementa el apuntador SP + 1. Copia el contenido de
SP+1 en la parte alta del registro e incrementa SP (SP + 2)
PUSH
POP
10
PUSH BC
B
C
PUSH HL
PUSH AF
21 H
Memoria
POP AF
10 H
22 H
A2 H
POP HL
A
F
Memoria
POP BC
22 H
A2 H
21 H
10 H
Banderas
23FA
Banderas
23FA
(A)
23FB
(A)
23FB
A2 H
23FC
A2 H
23FC
22 H
23FD
22 H
23FD
10 H
23FE
10 H
23FE
21 H
23FF
21 H
23FF
2400
SP
2400
SP
Manipulando Banderas
11
SP
SP
Manipulando banderas
12
START:
LD SP, STACK
; Inicializa la pila
LD DE, 0000H
PUSH DE
; Almacena 0 en la pila
POP AF
LD A,FFH
INC A
PUSH AF
POP DE
LD A,E
AND 11000001B
OUT (PORT1),A
HALT
08/11/2011
Manipulando Banderas
Intercambio
13
P/V
CY
Acumulador
H
0
AND C1H
Resultado
80 H
FF H
2097 H
Contenido de la Pila
2097 H
32H
2098 H
A2H
2099 H
EX (SP),HL
A2 H
EX (SP),IX
EX (SP),IY
EX (SP),HL
EX DE,HL
SP
EX AF,AF
Subrutinas
EXX
DESCRIPCION
Intercambio el contenido de los registros de propsito
general (BC,DE, HL) con el contenido de los registros
alternativos correspondientes
40H
Intercambio
SP
INSTRUCCION
32 H
2097 H
Contenido de la Pila
2097 H
FF H
2098 H
80 H
2099 H
Subrutina
Subrutina
2050H
LD B, C
PC
2051H
CALL DELAY
PC
2054H
CP (HL)
PC
2070H
XOR A
RET
SP
Subrutina
DELAY
20 H
54 H
LD B, C
2051H
CALL DELAY
PC
2054H
CP (HL)
PC
2070H
XOR A
PC
2080H
RET
SP
20 H
54 H
Subrutina
DELAY
08/11/2011
Subrutina
Subrutina
19
20
OPCODE
CALL
16-bits
RET
Regresa de la subrutina.
Esta instruccin obtiene la direccin de
regreso del tope de la pila y transfiere la
ejecucin del programa de regreso al
programa que realizo el llamado
Subrutina
Subrutina
21
22
OPCODE
OPERANDO
RET
RET
RET
RET
Z
NZ
C
NC
RET
RET
RET
PE
RET
PO
DESCRIPCION
Mnemnico
Regresa de la subrutina si Z =1
Regresa de la subrutina si Z =0
Regresa de la subrutina si CY =1
Regresa de la subrutina si CY =0
Regresa de la subrutina si S =1
(Negativo)
Regresa de la subrutina si S =0
(Positivo)
Regresa de la subrutina si P/V =1 (Par)
Regresa de la subrutina si P/V =0
(Impar)
LD SP,1895H
CALL 1850H
Direccin de
Memoria
1893
28
31
1800
1894
18
95
1801
1895
XX
18
1802
CD
1825
50
1826
18
1827
1850
Subrutina
1865
RET
Siguiente Instr.
HALT
Reinicio
23
HEX
CODE
SP
1828
76
1840
Reinicio
24
OPCODE
RST
RST
RST
RST
RST
RST
RST
RST
OPERANDO
00H
08H
10H
18H
20H
28H
30H
38H
DESCRIPCION
08/11/2011
Ejemplo
Ejemplo
Seales
Tiempo
Verde
D0
15 segundos
Amarilla
D2
5 segundos
Roja
D4
20 segundos
Caminar
D6
15 segundos
No Caminar
D7
25 segundos
PUSH DE
D5
D4
D3
D2
D1
D0
(15)
41H
84H
90H
15
Bits
(5)
20
(20)
40
DELAY:
D6
Hex
Code
Subrutina Retardo
27
D7
Verde
Secuencia de
tiempo en
segundos
Rojo
Caminar
Amarillo
26
No
Caminar
25
Ejemplo
28
START:
; guarda el contenido de DE y AF
PUSH AF
; Carga DE para realizar el retardo 0.5 seg
LD
SP,STACK
LD
A,01000001B
OUT (PORT1), A
LD
B,30
WAIT:
LD
DE, COUNT
LOOP:
DEC
DE
LD
A,D
OUT (PORT1), A
OR
LD
JP
NZ,LOOP
CALL DELAY
DEC
; Decrementa B
LD
JR
NZ,WAIT
OUT (PORT1), A
POP
AF
; Restablece el valor de DE y AF
LD
POP
DE
CALL DELAY
; de la subrutina DELAY
LD
A,10000100B
B,10
A,10010000B
B,40
CALL DELAY
RET
JP
START
Subrutinas Anidadas
29
30
Direccin
Programa
Principal
Direccin
XX00
Direccin
01
09
XX50
PUSH AF
CALL DELAY
DELAY
CALL DELAY
Direccin
Subrutina
Subrutina 1
2090
PUSH DE
0C
12
Programa
Principal
2000
Direccin
Subrutina 2
20C2
2050
CALL
209A
CALL
2051
90
209B
C2
209B
2052
20
209C
20
209C
209D
209A
209D
15
1B
1E
POP AF
CALL DELAY
RET
RET
POP DE
61
RET
08/11/2011
Ejemplo
BCD a 7 segmentos
31
32
w3 w2 w1 w0
0
0
0
0
0
0
0
0
1
1
Ajusta
b
g
7-segment display
0
0
0
0
1
1
1
1
0
0
0
0
1
1
0
0
1
1
0
0
0
1
0
1
0
1
0
1
0
1
1
0
1
1
0
1
1
1
1
1
1
1
1
1
1
0
0
1
1
1
1
1
0
1
1
1
1
1
1
1
1
0
1
1
0
1
1
0
1
1
1
0
1
0
0
0
1
0
1
0
1
0
0
0
1
1
1
0
1
1
0
0
1
1
1
1
1
0
1
1
Look-up Table
DAA
Contador BCD
33
34
UPDATE: ; Esta subrutina actualiza la cuenta BCD y ajusta el numero BCD. Cuando el
; contador llegue a 60, reinicia el contador
; Entrada: Cuenta en B
; Salida: Cuenta actualizada y ajustada a BCD en B
; Registros Modificados: B y el acumulador
LD
DELAY:
; Actualiza la cuenta
DAA
LD
B,A
; Guarda la cuenta en B
CP
60
; Es la cuenta = 60
RET NZ
LD
; Reinicia el contador
B,00H
Codigo BCD
Empaquetado
PUSH AF
PUSH BC
B,10
WAIT:
LD
DE, COUNT
LOOP:
DEC
DE
LD
A,D
OR
JP
NZ,LOOP
DEC
; Decrementa B
JR
NZ,WAIT
POP
BC
POP
DE
POP
AF
RET
LD
RET
Retardo
35
A,B
ADD A,01H
Cdigo
5
2000
7E H
2001
30 H
2002
6D H
2003
79 H
2004
33 H
2005
5B H
0001 0101
0000 1111
0001
0101
SRL A
0000
1010
2006
5F H
SRL A
0000
0101
2007
70 H
SRL A
0000
0010
2008
7F H
0001
7B H
SRL A
0000
2009
; Restablece el valor de DE y AF
08/11/2011
Desempaqueta
38
Cdigo BCD
Empaquetado
BCD
desempaquetado
01
L 00
01
2000
7E H
HL +1
2001
30 H
2002
6D H
AND 0FH
2003
79 H
LD
(HL),A
2004
33 H
INC
HL
; Incrementa el apuntador
2005
5B H
LD
A,B
2006
5F H
SRL
2007
70 H
SRL
2008
7F H
SRL
2009
7B H
SRL
HL + 5
L 01
05
HL
2000
H 20 00 L
L 00
Codigo
05
HL
UNPACK:
HL
L 05
HL
2001
2005
LD
HL, BUFF1
LD
A, B
LD
(HL), A
RET
Bsqueda
Despliega
39
40
LOOKUP:
DISPLAY:
PUSH HL
; guarda el contenido de HL
LD
HL,CODE
ADD
A,L
LD
LD
L,A
; Actualiza el apuntador
CALL LOOKUP
LD
A, (HL)
; Obtn el cdigo
OUT
(PORT2), A
; Despliega el cdigo
POP
HL
; Restablece HL
DEC
HL
; Decrementa el apuntador
LD
A, (HL)
RET
CODE:
A,(HL)
CALL LOOKUP
DEFB
; Cdigo para 0, 1, 2, 3
OUT
DEFB
; 4, 5, 6, 7
RET
DEFB
7FH, 7BH
; 8, 9
Programa Principal
41
(PORT1), A
Ejercicio
42
STACK:
EQU 1900H
BUFF:
EQU 1901H
ORG 1800H
MAIN:
NEXT:
LD
SP, STACK
; Inicializa el stack
LD
B, 00H
CALL UNPACK
CALL DISPLAY
CALL DELAY
CALL UPDATE
; Actualiza la cuenta
JP
; continua
NEXT
0000
1100
0010
00000001
00000010
10
00001010
00001100
00000010
08/11/2011
BCD a Binario
BCDBIN:
43
Hitachi HD44780
44
PUSH DE
SUM:
LD
HL,BUFF
INC
HL
LD
D,(HL)
LD
E,10
XOR
ADD
A,D
DEC
JR
NZ,SUM
DEC
HL
ADD
A,(HL)
POP
DE
Pantalla de Cristal
Liquido LCDII con
controlador incluido
HDD44780
Esta pantalla tiene una
variedad de
configuraciones como
son 8X1 (8 caracteres
por 1 rengln), 16X2,
20X2,20X4
RET
Configuracin de Terminales
Rutina de Inicializacin
45
46
1.
2.
3.
4.
5.
6.
Ground
VCC (+3.3 to +5V)
Contrast adjustment (VO)
Register Select (RS). RS=0:
Command, RS=1: Data
Read/Write (R/W).
R/W=0: Write, R/W=1:
Read
Clock (Enable). Falling
edge triggered
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Encender
LCD
Esperar 1.5 ms
despus de que
Vdd llega a 4.5V
Enviar
cdigo de
INICIO
00011XXXX
Repetir
cdigo de
INICIO
Repetir
cdigo de
INICIO
El cdigo de inicio
indica que la
interfaz se
establece a 8 bits
Esperar 100s
Inicializar
LCD
Apagar y prender
el display
Limpiar pantalla
BF no puede
probarse en este
punto
Establecer modo
de Escritura
Instrucciones
47
48
1.
2.
3.
RS = 0,
setup
Escritura
RW = 1
Habilita
intercambio
CE = 1
Envi de
datos
Envi de
cdigo
ASCII
Deshabilita
Intercambio
CE = 0
RS = 1,
dato
14
13
12
11
10
7 PINS
1 Limpia pantalla
ID
SC
RL
DL
08/11/2011
Interfaz
49