SET de Instrucciones Del 8085
SET de Instrucciones Del 8085
SET de Instrucciones Del 8085
A1
Apndice A1
Conjunto de instrucciones del 8085
A1.1.
Introducci
n
Aunque el conjunto de instrucciones puede encontrarse en cualquier libro que trate este
tema especficamente, en este apartado se muestra un "diccionario" de las mismas. La
descripcin se lista funcionalmente para una localizacin ms inmediata y todas estn
descritas de forma detallada.
Si desea hacer una bsqueda alfabtica de las instrucciones puede usar la ayuda
incorporada en el programa simulador.
A1.2.
A1.2.1.
CM
C
Complementar acarreo
Instruccin
Bits
afectado
s
Direccionam
iento
CM
C
CY
Descripcin
A1.2.2.
ST
C
Activar acarreo
Instruccin
ST
C
Bits
afectado
s
Direccionam
iento
Descripcin
CY
A1.3.
Instrucciones de un
registro
A1.3.1.
IN
R
Instruccin
Bits
afectado
s
Direccionam
iento
INR reg
Z, S, P, AC
Registro
indirecto
Descripcin
0 0 REGISTRO 1 0
0
000
para registro B001
para registro C010 para
p
rregistro D011 para
rregistro E100 para
rregistro H101 para
rregistro L110 para
M
MEMORIA
111 para
A
ACUMULADOR
Ejemplo
A1.3.2.
DC
R
Instruccin
Bits
afectado
s
Direccionam
iento
DCR
reg
Z, S, P,
AC
Registr
o
Descripcin
0 0 REGISTRO 1 0
Ejemplo
CM
A
Complementar acumulador
Instruccin
CM
A
Bits
afectado
s
Direccionam
iento
Descripcin
Cada uno de los bits del acumulador se complementa (operacin denominada a uno).
Formato
A1.3.4.
DA
A
Instruccin
Bits
afectado
s
Direccionam
iento
DAA
Z, S, P,
CY, AC
Registro
Descripcin
Nota
Supongamos que queremos realizar una suma decimal de dos nmeros (40 + 80).
Ambos bits de acarreo estn a cero.
La secuencia de instrucciones podra ser:
(1).MVI B,80H
(2).MVI A,40H
; Acumulador = 40H
(3).ADD B
(4).DAA
; Acumulador = 20H
; Bit de acarreo = 1
Acumulador
+6
Nuevo
acumulador
C0
H
60
H
20
H
1 1 0 0 0 0 0 0
0 1 1 0 0 0 0 0
0 0 1 0 0 0 0 0
CY =
0
CY =
0
CY =
1
A1.4.
Instruccin
NOP
Instruccin
Bits
afectado
NO
P
10
s
Direccionam
iento
Descripcin
A1.5.
Instrucciones de transferencia de
datos
11
A1.5.1.
MO
V
Movimiento
Instruccin
Bits
afectado
s
Direccionam
iento
Registro o registro
indirecto
Descripcin
(B).
(C).
(A).
MOV R1, R2
El contenido del registro R2 es transferido al registro R1. R1 y R2 pueden
ser los registros B, C, D, E, H, L o el acumulador A.
(B).
MOV R, M
El contenido de la direccin de memoria, cuya direccin est en los
registros H-L, es transferido al registro R. R puede ser cualquiera de los
registros A, B, C, D, E, H o L.
(C).
MOV M, R
El contenido del registro R es transferido a la direccin de memoria
indicada por los registros H-L.
12
Formato
1 Registro Registro
0
000
para registro B001
para registro C010 para
p
rregistro D011 para
rregistro E100 para
rregistro H101 para
rregistro L110 para
M
MEMORIA
111 para
A
ACUMULADOR
Ejemplos
A1.5.2.
STA
X
Instruccin
Bits
STAX rp
afectado
s
Direccionam
iento
13
Registro
indirecto
Descripcin
0
Par de registros pr (BD
o DE)
Ejemplo
A1.5.3.
LDA
X
Cargar el acumulador
Instruccin
Bits
afectado
s
Direccionam
iento
LDAX rp
Registro
indirecto
14
Descripcin
Formato
0
Par de registros pr (BD
o DE)
Ejemplo
A1.6.
15
A continuacin vamos a ver las instrucciones que operan con el contenido del
acumulador y el de uno de los registros o posicin de memoria. Estas instrucciones
ocupan un byte en la forma siguiente:
OPERAC REGISTR
IN
O
000 para registro
B001 para
rregistro C010
000 para ADD001
0
para registro
para ADC010
p
D011 para
para SUB011
p
rregistro E100
para SBB100
p
para registro
para ANA101
p
H101 para
para XRA110
p
rregistro L110
para ORA111
p
para
para CMP
p
M
MEMORIA
111
para
A
ACUMULADOR
1
16
A1.6.1.
ADD
ADD reg
Z, S, P,
CY, AC
Registro
Descripcin
REGISTR
O
Ejemplos
3A
H
6C
H
0 0 1 1 1 0 1 0
0 1 1 0 1 1 0 0
Nuevo
acumulador
A6
H
17
1 0 1 0 0 1 1 0
2. La instruccin
ADD A
duplica el contenido del acumulador.
A1.6.2.
AD
C
ADC reg
Z, S, P, CY,
AC
Registro
indirecto
Descripcin
REGISTR
O
Ejemplo
18
ADC C
realizar la siguiente suma:
Registro B
Acumulador
30
H
76
H
0 0 1 1 0 0 0 0
0 1 1 1 0 1 1 0
Bit de
acarreo
Nuevo
acumulador
A6
H
1 0 1 0 0 1 1 0
El nuevo contenido del acumulador ser A6H, mientras que todos los bits de
condicin quedarn puestos a cero excepto los de signo y paridad.
Si el bit de acarreo hubiera sido 1 antes de realizar la operacin, hubiera tenido
lugar la siguiente suma:
Registro B
Acumulador
30
H
76
H
0 0 1 1 0 0 0 0
0 1 1 1 0 1 1 0
Bit de
acarreo
Nuevo
acumulador
A7
H
1 0 1 0 0 1 1 1
A1.6.3.
SUB
SUB reg
Z, S, P,
afectado
s
Direccionam
iento
19
CY, AC
Registro
Descripcin
REGISTR
O
Ejemplos
60H
+
(28H)
0 1 1 0 0 0 0 0
1 1 0 1 0 1 1 1
1
0 0 1 1 1 0 0 0
20
acumulador
8H
2. La instruccin
SUB A
restar al acumulador a s mismo, obtenindose un resultado de cero. Se utiliza
en muchas ocasiones para poner a cero el bit de acarreo y el acumulador.
A1.6.4.
SBB
SBB reg
Z, S, P, CY,
AC
Registro
indirecto
Descripcin
El valor del bit de acarreo se suma internamente al contenido del registro o posicin de
memoria especificados. Este valor se resta del acumulador usando aritmtica de
complemento a dos.
Esta instruccin es de gran utilidad en la realizacin de restas de varios bytes,
pues tiene en cuenta el valor positivo o negativo de la sustraccin anterior.
21
Formato
REGISTR
O
Ejemplo
Nuevo
acumulador
05
H
F7
H
0 0 0 0 0 1 0 1
FC
H
1 1 1 1 1 1 0 0
1 1 1 1 0 1 1 1
4. No hay acarreo al final por lo que el bit de acarreo se queda a uno. Los bits de
signo y paridad estn puestos a uno mientras que es bit de cero est a cero.
A1.6.5.
AN
A
ANA reg
Z, S, P, CY,
AC
Registro
22
iento
indirecto
Descripcin
Se realiza la funcin lgica AND bit a bit entre el contenido del registro o posicin de
memoria especificados y el contenido del acumulador. El bit de acarreo se pone a cero.
Formato
REGISTR
O
Nota
B
0
1
0
1
R
0
0
0
1
Ejemplo
Nuevo
acumulador
3A
H
6C
H
0 0 1 1 1 0 1 0
28
H
0 0 1 0 1 0 0 0
0 1 1 0 1 1 0 0
A1.6.6.
XR
A
23
XRA reg
Z, S, P,
CY, AC
Registro
Descripcin
Se realiza la funcin lgica O-EXCLUSIVO bit a bit entre el contenido del registro o
posicin de memoria especificados y el contenido del acumulador, guardndose el
resultado en este ltimo.
Formato
REGISTR
O
Nota
B
0
1
0
1
R
0
1
1
0
Ejemplos
24
XRA B
realiza la siguiente operacin:
Acumulador
Registro B
Nuevo
acumulador
3A
H
6C
H
0 0 1 1 1 0 1 0
56
H
0 1 0 1 0 1 1 0
0 1 1 0 1 1 0 0
A1.6.7.
OR
A
ORA reg
Z, S, P, CY,
AC
s
Direccionam
iento
25
Registro
indirecto
Descripcin
Se realiza la funcin lgica AND bit a bit entre el contenido del registro o posicin de
memoria especificados y el contenido del acumulador, quedando en este ltimo el
resultado. El bit de acarreo se pone a cero.
Formato
REGISTR
O
Nota
B
0
1
0
1
R
0
1
1
1
Ejemplo
Como sea que la funcin OR de cualquier bit con un uno da como resultado uno, y de
cualquier bit con cero, lo deja invariable, esta funcin se utiliza frecuentemente para
poner a uno grupos de bits.
Si el registro B contiene OFH y el acumulador almacena 33H, la instruccin
ORA B
realiza la siguiente operacin:
26
Acumulador
Registro B
Acumulador
33
H
0F
H
0 0 1 1 0 0 1 1
3F
H
0 0 1 1 1 1 1 1
0 0 0 0 1 1 1 1
Este ejemplo concreto garantiza que los cuatro bits de menos peso del
acumulador son unos, mientras que los dems permanecen invariables.
A1.6.8.
CM
P
CMP reg
Z, S, P, CY,
AC
Registro
indirecto
Descripcin
27
Formato
REGISTR
O
Ejemplos
Acumulador
0A
H
5
H
0 0 0 0 1 0 1 0
05
H
0 0 0 0 0 1 0 1
1 1 1 1 1 0 1 1
Acumulador
02
H
5
H
0 0 0 0 0 0 1 0
FD
H
1 1 1 1 1 1 0 1
1 1 1 1 1 0 1 1
28
En este el bit de acarreo se pone a uno (no existe acarreo del bit 7) y el bit de
cero estar a cero, indicando que el contenido del registro B es mayor que el
acumulador.
3. Por ltimo supongamos un valor 1BH para el acumulador. En esta situacin:
Acumulador
+( Registro B)
1B
H
5H
1 1 1 0 0 1 0 1
E0
H
1 1 1 0 0 0 0 0
Acumulador
1 1 1 1 1 0 1 1
Aqu el bit de acarreo est a cero. Como los dos nmeros difieren en signo, el
hecho de que el bit de acarreo est a cero indica que el contenido del registro B
es mayor que el del acumulador, al contrario de cmo ocurra en el ejemplo
anterior.
A1.7.
A continuacin se describen las instrucciones que provocan una rotacin del contenido
del acumulador. Esta operacin nicamente puede realizarse con el acumulador, no con
ningn registro o posicin de memoria.
OPER
1
AC
29
A1.7.1.
RL
C
Instruccin
Bits
afectado
s
Direccionam
iento
RL
C
CY
Descripcin
RLC rota un bit hacia la izquierda todo el contenido del acumulador, transfiriendo el bit
de ms alto orden al bit de acarreo y al mismo tiempo a la posicin de menor orden del
acumulador.
Formato
Ejemplo
Bit de acarreo
Acumulador
30
A1.7.2.
RR
C
Instruccin
Bits
afectado
s
Direccionam
iento
RR
C
CY
Descripcin
Ejemplo
Acumulador
acarreo
Bit de
A1.7.3.
RA
L
31
RA
L
CY
Descripcin
RAL hace girar el contenido del acumulador y el bit de acarreo un espacio de un bit
hacia la salida (izquierda). El bit de acarreo que es tratado como si fuera del
acumulador, se transfiere el bit de menor orden del acumulador. El bit de mayor orden
del acumulador se transfiere al bit de acarreo. No tiene operandos.
Formato
Ejemplo
Bit de acarreo
A1.7.4.
RA
Acumulador
32
R
travs del bit de acarreo
Instruccin
Bits
afectado
s
Direccionam
iento
RA
R
CY
Descripcin
RAR rota el contenido del acumulador y del bit de acarreo 1 bit de posicin a la
derecha. El bit de acarreo que es tratado como si fuera parte del acumulador se
transfiere al bit de ms alto orden del acumulador. El bit de menor peso del acumulador
se carga en el bit de acarreo. No existen operandos en la instruccin RAR.
Formato
Ejemplo
En este caso el acumulador contendr el valor 6AH. La instruccin RAL efectuar las
siguientes modificaciones en el registro acumulador y en el bit de acarreo:
Acumulador
acarreo
Bit de
A1.8.
33
A continuacin se describen las instrucciones que dan lugar a operaciones con pares de
registros.
A1.8.1.
PUS
H
Instruccin
Bits
afectado
s
Direccionam
PUSH pr
Registro
34
iento
indirecto
Descripcin
signo
cero
arrrast
re
auxilia
r
parida
d
acarre
o
Sea cual sea el par de registros especificado, una vez que los datos se han
guardado, el puntero de pila se decrementa en dos unidades.
Formato
pr
B, D, H o
PSW
1
00 para registros B y
C01 para registros D y
E10 para registros H y
L11 para bits de
condicin y reg. A
c
Ejemplos
35
Registro C
16
MEMORIA
00
00
00
00
DIRECCION
2027
2028
2029
2030
Despus de PUSH
Puntero
stack
2028
Registro B
3F
Registro C
16
MEMORIA
00
16
3F
00
DIRECCION
2027
2028
2029
2030
36
A1.8.2.
PO
P
Instruccin
Bits
afectado
s
Direccionam
iento
POP pr
Registro
indirecto
Descripcin
pr
B, D, H o
PSW
1
00 para registros B y
C01 para registros D y
E10 para registros H y
L11 para bits de
condicin y reg. A
c
37
Ejemplos
Despus de POP
Antes de POP
Puntero
stack
2030
Puntero
stack
2028
Registro B
00
Registro C
00
Registro B
3F
Registro C
16
MEMORIA
00
16
3F
00
DIRECCION
2027
2028
2029
2030
MEMORIA
00
16
3F
00
DIRECCION
2027
2028
2029
2030
16h =
S
0
Z
0
AC
1
P
1
CY
0
38
A1.8.3.
DA
D
Suma doble
Instruccin
Bits
afectado
s
Direccionam
iento
DAD
pr
CY
Regist
ro
Descripcin
pr
B, D, H o SP
1
0 para registros B y C01
00
para registros D y E10
p
para registros H y L11
p
para registros de puntero
de pila
d
Ejemplos
39
DAD D
Realiza la siguiente suma:
BC
HL
339F
A17B
HL
051A
2. Al ejecutar la instruccin
DAD H
se duplica el valor del nmero de 16 bits contenido en H L (equivale a
desplazar los 16 bits una posicin hacia la izquierda).
A1.8.4.
IN
X
Instruccin
Bits
afectado
s
Direccionam
iento
INX pr
Regist
ro
Descripcin
pr
B, D, H o SP
1
00 para registros B y C01
para registros D y E10
para registros H y L11
para registros de puntero
de pila
40
Ejemplos
A1.8.5.
DC
X
Instruccin
Bits
afectado
s
Direccionam
iento
DCR
pr
Regist
ro
Descripcin
pr
41
B, D, H o SP
Ejemplo
XCH
G
Instruccin
Bits
afectado
s
Direccionam
iento
XCHG
Regist
ro
Descripcin
1
Ejemplo
42
A1.8.7.
E
04
H
01
L
02
XTHL
D
01
E
02
H
03
L
04
XTHL
Registro
indirecto
Descripcin
XTHL cambia los dos bytes de la posicin ms alta del stack con los dos bytes
almacenados en los registros H y L. As XTHL salva el contenido actual del par HL y
carga nuevos valores en HL.
XTHL cambia el contenido del L con la posicin de memoria especificada por el stack
pointer y el registro H es intercambiado con el contenido del SP+1.
Formato
Ejemplo
43
XTHL
realizar la siguiente operacin:
Antes de XTHL
Despus de XTHL
Puntero
stack
40B4
Puntero
stack
40B4
Registro H
AA
Registro L
BB
Registro H
DD
Registro L
CC
MEMORIA
00
CC
DD
00
DIRECCION
40B3
40B4
40B5
40B6
MEMORIA
00
BB
AA
00
DIRECCION
40B3
40B4
40B5
40B6
A1.8.8.
SPH
L
SP
HL
Bits
afectado
s
Direccionam
iento
Descripcin
44
Formato
Ejemplo
A1.9.
0 0
pr
Parte alta de
datos
0 0 0 1
45
Parte baja de
datos
00 para registros B y
C01 para registros D y
E10 para registros H y
L11 para registro
puntero de pila
p
0 0
REG
1 1 0
Datos
0
000
para registro B001
para registro C010 para
p
rregistro D011 para
rregistro E100 para
rregistro H101 para
rregistro L110 para
M
MEMORIA
111 para
A
ACUMULADOR
3. Por ltimo, para el resto de las instrucciones, que ocupan 2 bytes, se cuenta con
este formato:
1 1 OPER 1 1 0
Datos
000 para instruccin
A 001 para instruccin
ADI
A 010 para instruccin
ACI
S 011 para instruccin
SUI
S 100 para instruccin
SBI
A 101 para instruccin
ANI
X 110 para instruccin
XRI
D 111 para instruccin
DRI
C
CPI
46
La instruccin LXI opera sobre el par de registros especificado por PR, usando
dos bytes de datos inmediatos.
La instruccin MVI opera sobre el registro especificado por REG, usando un
byte de datos inmediatos. Si se hace referencia a la memoria, la instruccin opera sobre
la posicin de memoria de la misma determinada por los registros H y L. El registro H
contiene los 8 bits ms significativos de la direccin, mientras que el registro L contiene
los 8 bits menos significativos.
Las restantes instrucciones operan sobre el acumulador, usando un byte de datos
inmediatos. El resultado sustituye al contenido del acumulador.
A1.9.1.
LXI
LXI pr,
datos
Inmediat
o
Descripcin
LXI es una instruccin de 3 bytes; su segundo y tercer byte contienen el dato que ha de
ser cargado en el par de registros (PR). El primer operando debe especificar el par de
registros a ser cargados, pueden ser los pares BC, DE, HL, o el SP. El segundo
operando especifica los dos bytes a ser cargados. LXI es la nica instruccin inmediata
que acepta un valor de 16 bits. El resto trabajan con datos de 8 bits.
Si el par de registros especificados es SP, el segundo byte de la instruccin
sustituye a los 8 bits menos significativos del puntero de pila, mientras que el tercer
byte de la instruccin reemplaza a los 8 bits ms significativos del puntero de pila.
47
Formato
0 0
pr
0 0 0 1
B, D, H o
SP
Parte alta de
datos
Parte baja de
datos
00 para registros B y
C01 para registros D y
E10 para registros H y
L11 para registro
puntero de pila
p
Ejemplos
1. La instruccin
LXI B, 00FFH
carga en el registro B el valor 00H y en el registro C el valor FFH.
2. La siguiente instruccin carga en el puntero de pila el valor 1000H
LXI SP, 1000H
A1.9.2.
MV
I
Instruccin
Bits
afectado
s
Direccionam
iento
MVI reg,
datos
Inmediato
Descripcin
El primer operando debe ser uno de los registros A, B, C, D, E, H o L, que ser cargado
48
0 0
REG
1 1 0
Datos
00 para registros B y
C01 para registros D y
E10 para registros H y
L11 para registro
puntero de pila
p
A, B, C, D, E, H,
LoM
Ejemplos
(1).La instruccin
MVI H, 33H
carga en el registro H el valor 33H.
(2).La instruccin
MVI L, 44H
carga en el registro L el valor 44H.
(3).Supuestos los dos ejemplos anteriores, la instruccin
MVI M, 2AH
carga en la posicin de memoria 3344H (direccin aportada por los registros H
y L) el valor 2AH.
A1.9.3.
ADI
49
ADI datos
Z, S, P,
CY, AC
Inmediato
Descripcin
1 1 0 0 0 1 1 0
Datos
Ejemplo
50
Acumulador
0 0 1 0 0 0 1 0
Dato
inmediato
22
H
14
H
Nuevo
acumulador
33
H
0 0 1 1 0 1 1 0
0 0 0 1 0 1 0 0
0 0 1 1 0 1 1 0
Dato
inmediato
33
H
EC
H
Nuevo
acumulador
22
H
0 0 1 0 0 0 1 0
1 1 1 0 1 1 0 0
Ahora los bits de paridad, acarreo y acarreo auxiliar se quedan a uno y el resto a
cero.
A1.9.4.
ACI
ACI datos
Z, S, P,
CY, AC
Inmediato
Descripcin
51
1 1 0 0 1 1 1 0
Datos
Ejemplo
22
H
14
H
0 0 1 0 0 0 1 0
0 0 0 1 0 1 0 0
1
37
H
0 0 1 1 0 1 1 1
A1.9.5.
SUI
52
Instruccin
Bits
afectado
s
Direccionam
iento
SUI datos
Z, S, P,
CY, AC
Inmediato
Descripcin
El byte de datos inmediato se resta del contenido del acumulador usando aritmtica de
complemento a dos. El resultado se deja en el acumulador.
Ya que se trata de una operacin de resta, el bit de acarreo se pone a uno cuando
no hay acarreo del bit de ms peso, y se pone a cero si tiene dicho acarreo.
Formato
1 1 0 1 0 1 1 0
Datos
Ejemplo
B3
H
6D
1 0 1 1 0 0 1 1
0 1 0 0 1 1 0 1
inmediato
Nuevo
acumulador
00
H
53
0 0 0 0 0 0 0 0
Como era de esperar el resultado final del acumulador es cero ya que le estamos
restando su propio valor. El valor 6DH del dato inmediato corresponde al complemento
a dos del valor B3H que estamos restando.
Debido a que existe desbordamiento del sptimo bit se produce acarreo y se
pone el bit de acarreo a cero.
El bit de paridad se pone a uno mientras que los dems permanecen inactivos.
A1.9.6.
SBI
SBI datos
Z, S, P,
CY, AC
Inmediato
Descripcin
54
Formato
1 1 0 1 1 1 1 0
Datos
Ejemplo
00
H
FF
H
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0
1H
1 1 1 1 1 1 1 1
No hay acarreo, por lo que el bit de acarreo se pone a uno. Los bits de cero y
acarreo auxiliar estn a cero, mientras que los de signo y paridad se ponen a uno.
A1.9.7.
ANI
ANI datos
Bits
afectado
s
Direccionam
iento
55
Z, S, P,
CY, AC
Inmediato
Descripcin
1 1 1 0 0 1 1 0
Datos
Ejemplo
1 0 1 0 0 0 0 0
Dato
inmediato
A0
H
OF
H
Nuevo
00
0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 1
56
acumulador
La instruccin ANI del ejemplo pone a cero los cuatro bits de mayor peso,
dejando invariables los cuatro menores. Ya que los cuatro bits de menor peso del
acumulador eran cero, el resultado final es 00H con lo que el bit de cero se pondr a
cero.
A1.9.8.
XRI
XRI datos
Z, S, P,
CY, AC
Inmediato
Descripcin
Se realiza la funcin lgica O-EXCLUSIVO bit a bit entre un byte de datos inmediatos
y el contenido del acumulador. El resultado se guarda en el acumulador. El bit de
acarreo se pone a cero.
Formato
1 1 1 0 1 1 1 0
Datos
Ejemplo
Esta instruccin se suele utilizar para complementar bits especficos del acumulador
dejando los restantes en su estado original. De este modo y suponiendo que el
acumulador contiene ABH, la instruccin
XRI 80H
57
A1.9.9.
ORI
1 0 1 0 1 0 1 1
Dato
inmediato
AB
H
80
H
Nuevo
acumulador
2B
H
0 0 1 0 1 0 1 1
1 0 0 0 0 0 0 0
ORI datos
Z, S, P,
CY, AC
Inmediato
Descripcin
ORI desarrolla una operacin lgica OR entre el contenido especificado por DATOS y
el contenido del acumulador. El resultado se deja en el acumulador. Los bits de acarreo
y acarreo auxiliar se ponen a cero.
Formato
1 1 1 1 0 1 1 0
Datos
Ejemplo
58
ORI F0H
realiza la siguiente operacin OR bit a bit:
Acumulador
0 0 1 1 1 1 0 0
Dato
inmediato
3C
H
F0
H
Nuevo
acumulador
FC
H
1 1 1 1 1 1 0 0
1 1 1 1 0 0 0 0
Como vemos la instruccin ORI de nuestro ejemplo activa los cuatro bits de
menor peso, dejando invariables los restantes.
A1.9.10.
CPI
CPI datos
Z, S, P, CY,
AC
Registro
indirecto
Descripcin
Compara el valor del byte especificado (DATOS) con el contenido del acumulador y
posiciona los bits de cero y acarreo para indicar el resultado. El bit de cero indica
igualdad. Un 0 en el acarreo indica que el contenido del acumulador es mayor que
DATOS. Un 1 en el acarreo indica que el acumulador es menor que DATOS. Sin
embargo, el significado del bit de acarreo es contrario cuando los valores tienen
diferente signo o cuando uno de los valores est complementado. El valor de DATOS
no debe exceder de un byte.
59
Formato
1 1 1 1 1 1 1 0
Datos
Ejemplo
0 0 1 0 0 1 0 1
Dato
inmediato
25
H
E1
H
Nuevo
acumulador
03
H
0 0 0 0 0 1 1 0
1 1 1 0 0 0 0 1
Existe desbordamiento del ltimo bit, por lo que el bit de acarreo se pone a cero.
El acumulador continua con su valor inicial pero el bit de cero est a cero, indicando
que las cantidades no son iguales. Al estar el bit de acarreo a cero, nos indica que los
datos inmediatos son menores que el contenido del acumulador.
A1.10.
Instrucciones de direccionamiento
directo
60
0 0 1
OP
0 1 0
ER
Parte baja de la
direccin
Parte alta de la
direccin
00 para instruccin
STA01 para instruccin
LDA10 para instruccin
SHLD11 para
instruccin LHLD
A1.10.1.
ST
A
STA
dir
Direc
to
Descripcin
STA DIR almacena una copia del contenido actual del acumulador en la posicin de
memoria especificada por DIR.
Formato
0 0 1 1 0 0 1 0
Parte baja de la
direccin
Parte alta de la
direccin
61
Ejemplo
A1.10.2.
LD
A
STA 0080H
// Base hexadecimal
STA 128
// Base decimal
STA 0000000010000000B
// Base binaria
Instruccin
Bits
afectado
s
Direccionam
iento
LDA
dir
Direc
to
Descripcin
LDA DIR carga el acumulador con el contenido de la memoria direccionada por DIR.
La direccin puede ser puesta como un nmero, una etiqueta previamente definida o
una expresin.
Formato
0 0 1 1 1 0 1 0
Parte baja de la
direccin
Parte alta de la
direccin
Ejemplo
62
A1.10.3.
LDA 300H
SHL
D
Instruccin
Bits
afectado
s
Direccionam
iento
SHLD
dir
Direct
o
Descripcin
Almacena una copia del registro L en la posicin de memoria especificada por DIR, a
continuacin almacena una copia del registro H en la siguiente posicin de memoria
(DIR+1).
Formato
0 0 1 0 0 0 1 0
Parte baja de la
direccin
Parte alta de la
direccin
Ejemplo
Suponiendo que los registros H y L contienen respectivamente los valores 3CH y 54H,
la instruccin
SHLD 34B3
63
A1.10.4.
LHLD
Memoria despus de
ejecutar SHLD
DIRECCIN
34B2
34B3
34B4
34B5
FF
54
3C
FF
Cargar H y L directamente
Instruccin
Bits
afectado
s
Direccionam
iento
LHLD
dir
Direct
o
Descripcin
LHLD DIR carga el registro L con una copia del byte almacenado en la posicin de
memoria especificada por DIR. Despus carga el registro H con una copia del byte
almacenado en la posicin siguiente de memoria especificada por DIR. La instruccin
LHLD esta prevista para cargar direcciones nuevas en los registros H y L.
Formato
0 0 1 0 1 0 1 0
Parte baja de la
direccin
Parte alta de la
direccin
64
Ejemplo
A1.11.
Instrucciones de
salto
1 1 1 0 1 0 0 1
1 1 OPER 0 1 X
Parte baja de la
direccin
Parte alta de la
direccin
65
A1.11.1.
PCH
L
Instruccin
Bits
afectado
s
Direccionam
iento
PCHL
Regist
ro
Descripcin
66
1 1 1 0 1 0 0 1
Ejemplo
A1.11.2.
JMP
Salto incondicional
Instruccin
Bits
afectado
s
Direccionam
iento
JMP dir
Inmedi
ato
Descripcin
La instruccin JMP DIR altera la ejecucin del programa cargando el valor especificado
por DIR en el contador de programa.
67
Formato
1 1 0 0 0 0 1 1
A1.11.3.
JC
Parte baja de la
direccin
Parte alta de la
direccin
JC dir
Inmedi
ato
Descripcin
1 1 0 1 1 0 1 0
A1.11.4.
JNC
Parte baja de la
direccin
Parte alta de la
direccin
JNC dir
Inmedi
ato
68
Descripcin
La instruccin JNC DIR comprueba el estado del bit acarreo. Si esta a 0 el programa
cambia a la direccin especificada por DIR. Si esta a 1 la ejecucin del programa
contina normalmente.
Formato
1 1 0 1 0 0 1 0
A1.11.5.
JZ
Parte baja de la
direccin
Parte alta de la
direccin
JZ dir
Inmedi
ato
Descripcin
1 1 0 0 1 0 1 0
A1.11.6.
JNZ
Parte baja de la
direccin
Parte alta de la
direccin
JNZ dir
Bits
afectado
s
Direccionam
iento
69
Inmedi
ato
Descripcin
La instruccin JNZ DIR comprueba el valor del bit de cero. Si el contenido del
acumulador no es cero (Bit de cero = 0) el programa contina en la direccin
especificada por DIR. Si el contenido del acumulador es cero (Bit de cero = 1) el
programa contina su ciclo normal.
Formato
1 1 0 0 0 0 1 0
A1.11.7.
JM
Parte baja de la
direccin
Parte alta de la
direccin
JM dir
Inmedi
ato
Descripcin
70
1 1 1 1 1 0 1 0
A1.11.8.
JP
Parte baja de la
direccin
Parte alta de la
direccin
JP dir
Inmedi
ato
Descripcin
1 1 1 1 0 0 1 0
A1.11.9.
JPE
Parte baja de la
direccin
Parte alta de la
direccin
JPE dir
Inmedi
ato
Descripcin
La paridad existe si el byte que esta en el acumulador tiene un nmero par de bits. El bit
de paridad se pone a 1 para indicar esta condicin.
La instruccin JPE DIR comprueba la situacin del bit de paridad. Si esta a 1, la
71
1 1 1 0 1 0 1 0
A1.11.10.
JP0
Parte baja de la
direccin
Parte alta de la
direccin
JPO dir
Inmedi
ato
Descripcin
La instruccin JPO DIR comprueba el estado del bit de paridad. Si esta a 0, el programa
contina en la direccin marcada por DIR. Si est a 1 contina con la secuencia normal.
Formato
1 1 1 0 0 0 1 0
Parte baja de la
direccin
Parte alta de la
direccin
72
A1.12.
Instrucciones de llamada a
subrutina
1 1 OPER 1 0 X
Parte baja de la
direccin
Parte alta de la
direccin
73
A1.12.1.
CALL
Llamada incondicional
Instruccin
Bits
afectado
s
Direccionam
iento
CALL dir
Inmediato / Registro
indirecto
74
Descripcin
1 1 0 0 0 1 0 1
A1.12.2.
CC
Parte baja de la
direccin
Parte alta de la
direccin
CC dir
Inmediato / Registro
indirecto
Descripcin
CC comprueba el estado del bit de acarreo. Si el bit est a 1, CC carga el contenido del
contador de programa en el stack y a continuacin salta a la direccin especificada por
DIR. Si el bit esta a 0, la ejecucin del programa contina con la prxima instruccin de
su secuencia normal. Aunque el uso de una etiqueta es lo ms normal, la direccin
puede ser especificada tambin como un nmero o una expresin.
75
Formato
1 1 0 1 1 1 0 0
A1.12.3.
CNC
Parte baja de la
direccin
Parte alta de la
direccin
CNC dir
Inmediato / Registro
indirecto
Descripcin
CNC chequea el valor del bit de acarreo. Si est en cero CNC carga el contenido de
contador de programa en el stack y a continuacin salta a la direccin especificada por
la instruccin en DIR. Si el bit est a 1, el programa contina con su secuencia normal.
Aunque el uso de una etiqueta es lo ms comn, la direccin puede tambin estar
indicada por un nmero o por una expresin.
Formato
1 1 0 1 0 1 0 0
A1.12.4.
CZ
Parte baja de la
direccin
Descripcin
Parte alta de la
direccin
CZ dir
Inmediato / Registro
indirecto
76
CZ chequea el bit de cero. Si el bit esta a 1 (indicando que el contenido del acumulador
es cero), CZ carga el contenido del contador de programa en el stack y salta a la
direccin especificada en DIR. Si el bit est a 0 (indicando que el contenido del
acumulador es distinto de cero) el programa contina su desarrollo normal.
Formato
1 1 0 0 1 1 0 0
A1.12.5.
CNZ
Parte baja de la
direccin
Parte alta de la
direccin
CNZ dir
Inmediato / Registro
indirecto
Descripcin
CNZ chequea el bit de Cero. Si est en 0 (indicando que el contenido del acumulador no
es cero), CNZ manda el contenido del contador de programa al stack y salta a la
direccin especificada por DIR. Si el bit est a 1 el programa contina su desarrollo
normal.
Formato
1 1 0 0 0 1 0 0
A1.12.6.
CM
Parte baja de la
direccin
Parte alta de la
direccin
CM dir
Direccionam
iento
77
Inmediato / Registro
indirecto
Descripcin
CM comprueba el estado del bit del signo. Si el bit esta a 1 (indicando que el contenido
del acumulador es negativo) CM manda el contenido del contador de programa al stack
y salta a la direccin especificada por DIR. Si el bit es 0 la ejecucin del programa
contina con su secuencia normal. El uso de la etiqueta es lo ms corriente, pero la
direccin puede especificarse tambin por un nmero o una expresin.
Formato
1 1 1 1 1 1 0 0
A1.12.7.
CP
Parte baja de la
direccin
Parte alta de la
direccin
CP dir
Inmediato / Registro
indirecto
Descripcin
CP chequea el valor del bit de signo. Si est a 0 (indicando que el contenido del
acumulador es positivo), CP enva el contenido del contador de programa al stack y
salta a la direccin especificada por DIR. Si el bit tiene un 1, contina el programa
normalmente con la instruccin siguiente.
Formato
1 1 1 1 0 1 0 0
Parte baja de la
direccin
Parte alta de la
direccin
78
A1.12.8.
CPE
CPE dir
Inmediato / Registro
indirecto
Descripcin
Existe paridad en un byte si el nmero de unos que tiene es par. El bit de paridad se
pone a 1 para indicar esta condicin. CPE chequea el valor del bit de paridad. Si tiene
un 1, CPE enva el contenido del contador de programa al stack y salta a la direccin
especificada por la instruccin en DIR. Si el bit tiene un cero, el programa contina
normalmente.
Formato
1 1 1 0 1 1 0 0
A1.12.9.
CPO
Parte baja de la
direccin
Parte alta de la
direccin
CPO dir
Inmediato / Registro
indirecto
Descripcin
CPO chequea el bit de paridad. Si el bit esta a 0, CPO carga el contenido del contador
de programa en el stack y salta a la direccin especificada en DIR. Si el bit est a 1 el
programa contina su desarrollo normal.
79
Formato
1 1 1 0 0 1 0 0
A1.13.
Parte baja de la
direccin
Parte alta de la
direccin
1 1 OPER 1 0 X
80
A1.13.1.
RET
Retorno incondicional
Instruccin
Bits
afectado
s
Direccionam
iento
RET
Registro
indirecto
Descripcin
81
Formato
1 1 0 0 1 0 0 1
A1.13.2.
RC
RC
Registro
indirecto
Descripcin
1 1 0 1 1 0 0 0
A1.13.3.
RNC
RNC
Registro
indirecto
82
Descripcin
1 1 0 1 0 0 0 0
A1.13.4.
RZ
RZ
Registro
indirecto
Descripcin
1 1 0 0 1 0 0 0
A1.13.5.
RNZ
RNZ
afectado
s
Direccionam
iento
83
Registro
indirecto
Descripcin
La instruccin RNZ comprueba el bit cero. Si est a 0, indicando que el contenido del
acumulador no es cero, la instruccin echa fuera del stack dos bytes y los carga en el
contador de programa. Si el bit est a 1, contina el ciclo normal.
Formato
1 1 0 0 0 0 0 0
A1.13.6.
RM
RM
Registro
indirecto
Descripcin
1 1 1 1 1 0 0 0
84
A1.13.7.
RP
RP
Registro
indirecto
Descripcin
1 1 1 1 0 0 0 0
A1.13.8.
RPE
RPE
Registro
indirecto
Descripcin
85
Formato
1 1 1 0 1 0 0 0
A1.13.9.
RPO
RPO
Registro
indirecto
Descripcin
1 1 1 0 0 0 0 0
86
A1.14.
Instruccin
RST
Instruccin
Bits
afectado
s
Direccionam
iento
RST exp
Registro
indirecto
Descripcin
Es una instruccin CALL para usar con interrupciones. RST carga el contenido del
contador de programa en el stack, para proveerse de una direccin de retorno y salta a
una de las "ocho" direcciones determinadas previamente.
Un cdigo de tres bits incluido en el cdigo de operacin de la instruccin RST
especifica la direccin de salto. Esta instruccin es empleada por los perifricos cuando
intentan una interrupcin.
Para volver a la instruccin en que ha tenido lugar la interrupcin, se debe
utilizar una instruccin de RETORNO.
Formato
EXP
FORMAT
O
1100
0111
1100
1111
1101
0111
1101
1111
1110
0111
1110
1111
1111
0111
1111
1111
87
CONTADOR DE
PROGRAMA
C7
H
CF
H
D7
H
DF
H
E7
H
EF
H
F7
H
FF
H
0000 0000
0000
0000 0000
1000
0000 0000
0000
0000 0000
1000
0000 0000
0000
0000 0000
1000
0000 0000
0000
0000 0000
1000
0000
0000
0001
0001
0010
0010
0011
0011
0000
H
0008
H
0010
H
0018
H
0020
H
0028
H
0030
H
0038
H
Ejemplos
1. La instruccin
RST 3
llama a la subrutina de la posicin 0018H.
2. La instruccin
RST 10
es una instruccin ilegal ya que el argumento de RST debe ser un nmero entre 0
y 7.
88
A1.15.
En este apartado estudiamos las instrucciones que operan directamente sobre el flip-flop
de actuacin de interrupciones. Todas estas instrucciones ocupan un byte siguiendo el
formato que se muestra:
1 1 1 1 X 0 1 1
1 para instruccin
E 0 para instruccin
EI
D
DI
A1.15.1.
EI
Activar interrupciones
Instruccin
89
I
Bits
afectado
s
Direccionam
iento
Descripcin
1 1 1 1 1 0 1 1
A1.15.2.
DI
Desactivar interrupciones
Instruccin
D
I
Bits
afectado
s
Direccionam
iento
Descripcin
90
1 1 1 1 0 0 1 1
A1.16.
Instrucciones de Entrada /
Salida
Ahora nos ocuparemos de las instrucciones que hacen que los datos entren o salgan de
la CPU. Estas instrucciones ocupan dos bytes en la forma siguiente:
1 1 0 1 X 0 1 1
Nmero de
puerto
0 para instruccin OUT1
para instruccin IN
p
91
El nmero de puerto viene definido por el hardware del sistema, no estando bajo
el control del programador. Este, nicamente selecciona uno de ellos para realizar la
correspondiente operacin.
A1.16.1.
IN
Entrada
Instruccin
Bits
afectado
s
Direccionam
iento
IN
port
Direc
to
Descripcin
La instruccin IN PORT lee los 8 bits de datos que hay en el "PORT" especificado y los
carga en el acumulador. El operando debe ser un nmero o una expresin que produzca
un valor comprendido entre 00H y FFH.
Formato
1 1 0 1 1 0 1 1
Nmero de
puerto
Ejemplos
1. La instruccin
IN 2
deposita en el acumulador los datos de entrada del puerto 2.
92
2. La instruccin
IN 3*2
deposita en el acumulador los datos de entrada del puerto 6.
A1.16.2.
OUT
Salida
Instruccin
Bits
afectado
s
Direccionam
iento
OUT
port
Direct
o
Descripcin
OUT PORT pone el contenido del acumulador en el bus de datos de 8 bits del puerto
seleccionado. El nmero de puertos oscila de 0 a 255 y es duplicado en el bus de
direcciones. Es la lgica externa la encargada de seleccionar el puerto y aceptar el dato
de salida. El operando (PORT) debe especificar el nmero del puerto de salida
seleccionado.
Formato
1 1 0 1 0 0 1 1
Ejemplos
1. La instruccin
OUT 2
Nmero de
puerto
93
A1.17.
Instruccin de alto
HLT
Instruccin
Bits
afectado
s
Direccionam
HL
T
94
iento
Descripcin
A1.18.
Instruccin
Bits
afectado
s
Direccionam
iento
Descripcin
bit 7
bit 6
bit 5
bit 4
bit 3
bit 2
bit 1
bit 0
SID
I7.5
I6.5
I5.5
IE
M7.5
M6.5
M5.5
donde:
95
RI
M
96
Formato
A1.19.
97
SI
M
Bits
afectado
s
Direccionam
iento
Descripcin
SIM es una instruccin de usos mltiples que utiliza el contenido del acumulador para
posicionar el enmascaramiento de interrupciones para las RST 5.5, RST 6.5, RST 7.5;
pone a cero el flanco sensitivo de la entrada RST 7.5 y saca el bit 7 del acumulador al
latch de datos de salida serie. La estructura de la instruccin SIM es como sigue:
bit 7
bit 6
bit 5
Bit 4
bit 3
bit 2
bit 1
bit 0
SOD
SOE
R7.5
MSE
M7.5
M6.5
M5.5
donde:
98
Formato