Claves:
() = contenidos
r = registro,
M = domicilio de la memoria definido por el bit alto H y el bit bajo L
Mnemónica | Código Op D7D6D5D4D3D2D1D0 |
Significado |
MOV r1, r2 | 01DD DSSS |
Mover los contenidos del registro
r1 al registro r2 r1 ← (r2): transferir r2 a r1 |
MOV M, r | 0111 0SSS |
Mover los contenidos del registro r
a la memoria |
MOV r, M | 01DD D110 |
Mover contenidos de la memoria
al registro r |
HLT | 0111 0110 |
Alto (Halt)
|
MVI r, dato | 00DD D110 |
Movimiento inmediato de dato al
registro r |
MVI M, dato | 0011 0110 |
Movimiento inmediato de dato a
la memoria |
INR r | 00DD D100 |
Incrementar los contenidos del
registro r en 1 r ← r + 1 |
DCR r | 00DD D101 |
Decrementar contenidos del
registro r en 1 r ← r - 1 |
ADD r | 1000 0SSS |
Sumar (Add) los contenidos del
registro r al acumulador A A ← (A) + (r) |
ADC r | 1000 1SSS |
Sumar (Add) el registro r con
“llevar” (Carry) a A (Add with Carry) A ← (A) + (r) + C |
SUB r | 1001 0SSS |
Restar (Subtract) el registro r del
acumulador A A ← (A) - (r) |
SBB r | 1001 1SSS |
Restar el registro r del acumulador
A con “tomar prestado” (Subtract with Borrow) |
ANA r | 1010 0SSS |
Operación AND del registro r con
el acumulador A A ← (A) AND (R) |
XRA r | 1010 1SSS |
Operación OR EXCLUSIVO del
registro con el acumulador A A ← (A) XOR (R) |
ORA r | 1011 0SSS |
Operación OR del registro r con
el acumulador A A ← (A) OR (R) |
CMP r | 1011 1SSS |
Comparar los contenidos del
registro r con el acumulador A |
ADD M | 1000 0110 |
Sumar de la memoria al
acumulador A |
ADC M | 1000 1110 |
Sumar de la memoria al
acumulador A con “llevar” (Carry) |
SBB M | 1001 1110 |
Restar número en la memoria del
acumulador con “tomar prestado” |
ANA M | 1010 0110 |
Operación AND del número en
la memoria con el acumulador A |
XRA M | 1010 1110 |
OR EXCLUSIVO del número en
la memoria con el acumulador A |
ORA M | 1011 0110 |
Operación OR del número en la
memoria con el acumulador A |
CMP M | 1011 1110 |
Comparar número en la memoria
con el acumulador A |
ADI dato | 1100 0110 |
Suma Inmediato (Add Immediate)
al acumulador A |
ACI dato | 1100 1110 |
Suma Inmediato (Add Immediate)
al acumulador A con “llevar” |
SUI dato | 1101 0110 |
Resta Inmediato (Subtract
Immediate) del acumulador |
SBI dato | 1101 1110 |
Resta Inmediato del acumulador A
con “tomar prestado” (Borrow) |
ANI dato | 1110 0110 | And Inmediato (AND Immediate) con los contenidos del acumulador |
XRI dato | 1110 1110 |
OR EXCLUSIVO Inmediato
con los contenidos del acumulador |
ORI dato | 1111 0110 |
OR Inmediato con los contenidos
del acumulador |
CPI dato | 1111 1110 |
Comparación Inmediato con los
contenidos del acumulador A |
RLC | 0000 0111 |
Rotar los contenidos del acumulador
hacia la izquierda (Left) |
RRC | 0000 1111 |
Rotar los contenidos del acumulador
hacia la derecha (Right) |
RAL | 0001 0111 |
Rotar A hacia la izquierda (Left)
a través de “llevar” |
RAR | 0001 1111 |
Rotar A hacia la derecha (Right)
a través de “llevar” |
JMP domicilio | 1100 0011 |
Salto incondicional (Jump)
|
JC dom. cond. | 1101 1010 |
Salto en la condición de “llevar”
(Jump on Carry) |
JNC dom. cond. | 1101 0010 |
Salto en la condición de “no llevar”
(Jump on No Carry) |
JZ dom. cond. | 1100 1010 |
Salto en la condición de cero (Jump
on Zero) |
JNZ dom. cond. | 1100 0010 |
Salto en la condición de no-cero
(Jump on No Zero) |
JP dom. cond. | 1111 0010 |
Salto en la condición de positivo
(Jump on Positive) |
JM dom. cond. | 1111 1010 |
Salto en la condición de negativo
(Jump on Minus) |
JPE dom. cond. | 1110 1010 |
Salto en la condición de paridad par
(Jump on Parity Even) |
JPO dom. cond. | 1110 0010 |
Salto en la condición de paridad
impar (Jump on Parity Odd) |
CALL domicilio | 1100 1101 |
Llamado incondicional (Call
unconditional) |
CC dom. cond. | 1101 1100 |
Llamado en la condición de “llevar”
(Call on Carry) |
CNC dom. cond. | 1101 0100 |
Llamado en la condición de “no
llevar” (Call on No Carry) |
CZ dom. cond. | 1100 1100 |
Llamado en la condición de cero
(Call on Zero) |
CNZ dom. cond. | 1100 0100 |
Llamado en la condición de no-cero
(Call on No Zero) |
CP dom. cond. | 1111 0100 |
Llamado en la condición de positivo
(Call on Positive) |
CM dom. cond. | 1111 1100 |
Llamado en la condición de negativo
(Call on Minus) |
CPE dom. cond. | 1110 1100 |
Llamado en la condición de paridad
par (Call on Parity Even) |
CPO dom. cond. | 1110 0100 |
Llamado en la condición de paridad
impar (Call on Parity Odd) |
RTE | 1100 1001 |
Regresar (Return)
|
RC | 1101 1000 |
Regresar en la condición de “llevar”
(Return on Carry) |
RNC | 1101 0000 |
Regresar en la condición de “no
llevar” (Return on No Carry) |
RZ | 1100 1000 |
Regresar en la condición de cero
(Return on Zero) |
RNZ | 1100 0000 |
Llamado en la condición de no-cero
(Return on No Zero) |
RP | 1111 0000 |
Regresar en la condición de positivo
(Return on Positive) |
RM | 1111 1000 |
Regresar en la condición de negativo
(Return on Minus) |
RPE | 1110 1000 |
Regresar en la condición de paridad
par (Return on Parity Even) |
RPO | 1110 0000 |
Regresar en la condición de paridad
impar (Return on Parity Odd) |
RST n | 11NN N111 |
Reiniciar (Restart)
|
IN puerto | 1101 1011 |
Entrada (Input) a un puerto
|
OUT puerto | 1101 0011 |
Salida (Output) a un puerto
|
LXI B dato | 0000 0001 |
Carga Inmediato par de registros B
y C (Load Immediate register pair B & C) |
LXI D dato | 0001 0001 |
Carga Inmediato par de registros D
y E (Load Immediate register pair D & E) |
LXH dato | 0010 0001 |
Carga Inmediato par de registros H
y L (Load Immediate register pair H & L) |
PUSH B | 1100 0101 |
Empujar (Push) par de registros B y
C hacia la pila |
PUSH D | 1101 0101 |
Empujar (Push) par de registros D y
E hacia la pila |
PUSH H | 1110 0101 |
Empujar (Push) par de registros H y
L hacia la pila |
PUSH PSW | 1111 0101 |
Empujar contenidos del acumulador
y las banderas hacia la pila |
POP B | 1100 0001 |
Botar de la pila el par de registros B
y C (Pop register pair off the stack) |
POP D | 1101 0001 |
Botar de la pila el par de registros D
y E (Pop register pair off the stack) |
POP H | 1110 0001 |
Botar de la pila el par de registros H
y L (Pop register pair off the stack) |
POP PSW | 1111 0001 |
Botar contenidos (acumulador y
banderas guardados) de la pila |
STA domicilio | 0011 0010 |
Almacenamiento directo de lo que
está en A (Store A direct) |
LDA domicilio | 0011 1010 |
Cargado directo de lo que está en
el acumulador A (Load A direct) |
XCHG | 1110 1011 |
Intercambiar el par de registros D y
E con el par de registros H y L (Exchange register pairs) |
XTHL | 1110 0011 |
Intercambiar tope de la pila con los
registros H y L (Exchange Top of stack with HL) |
SPHL | 1111 1001 |
Enviar el par de registros H y L al
tope de la pila (Stack Push of H and L pair) |
PCHL | 1110 1001 |
Enviar el par de registros H y L al
Contador del Programa |
DAD B | 0000 1001 |
Sumar (Add) el par de registros B y
C al par de registros H y L |
DAD D | 0001 1001 |
Sumar (Add) el par de registros D y
E al par de registros H y L |
DAD H | 0010 1001 |
Sumar (Add) el par de registros H y
L al mismo par de registros H y L |
STAX B | 0000 0010 |
Almacenamiento (Store) indirecto
de A en el par de registros B y C |
STAX D | 0001 0010 |
Almacenamiento (Store) indirecto
de A en el par de registros D y E |
LDAX B | 0000 1010 |
Cargado (Load) indirecto de A del
par de registros B y C |
LDAX D | 0001 1010 |
Cargado (Load) indirecto de A del
par de registros D y E |
INX B | 0000 0011 |
Incrementar el par de registros B y
C (tomados como un solo registro) |
INX D | 0001 0011 |
Incrementar el par de registros D y
E (tomados como un solo registro) |
INX H | 0010 0011 |
Incrementar el par de registros H y
L (tomados como un solo registro) |
INX SP | 0011 0011 |
Incrementar el puntero que apunta
hacia la pila (Increment Stack Pointer) |
DCX B | 0000 1011 |
Decrementar el par de registros B y
C (tomados como un solo registro) |
DCX D | 0001 1011 |
Decrementar el par de registros D y
E (tomados como un solo registro) |
DCX H | 0010 1011 |
Decrementar el par de registros H y
L (tomados como un solo registro) |
DCX SP | 0011 1011 |
Decrementar el puntero que apunta
hacia la pila (Decrement Stack Pointer) |
CMA | 0010 1111 |
Complementar (lógicamente) los
contenidos del acumulador A |
STC | 0011 0111 |
Fijar en “1” (Set) la bandera de
la condición de “llevar” (Set Carry) |
CMC | 0011 1111 |
Complementar (lógicamente) la
bandera de la condición de “llevar” (Complement Carry) |
DAA | 0010 0111 |
Ajuste decimal (Decimal Adjust) del
acumulador A |
SHLD domicilio | 0010 0010 |
Almacenar (Store) en forma directa
el par de registros H y L |
LHLD domicilio | 0010 1010 |
Cargar (Load) en forma directa al
par de registros H y L |
EI | 1111 1011 |
Habilitar interrupciones (Enable
Interrupts) |
DI | 1111 0011 |
Inhabilitar interrupciones (Disable
Interrupts) |
NOP | 0000 0000 |
No operación (instrucción a ser
ignorada por el procesador) |
Notas:
1) En la tabla, las siglas SSS y DDD identifican al registro fuente de origen SSS (Source) y al registro destinatario DDD (Destination) de acuerdo al siguiente convención:
SSS ó DDD | Valor |
A | 111 |
B | 000 |
C | 001 |
D | 010 |
E | 011 |
H | 100 |
L | 101 |
2) Cada uno de los saltos J (como JNZ y JPE) puede ser obtenido agregando al símbolo J el sufijo adecuado (NZ, PE, etc.) y formando la instrucción (JNZ, JPE, etc.) en lenguaje de máquina usando el formato:
11CC C010
y reemplazando los valores CCC de acuerdo a la siguiente tabla:
Condición | CCC |
NZ (No Zero, Z=0) | 000 |
Z (Zero, Z=1) | 001 |
NC (No Carry, CY=0) | 010 |
C (Carry, CY=1) | 011 |
PO (Parity Odd, P=0) | 100 |
PE (Parity Even, P=1) | 101 |
P (Plus, S=0) | 110 |
M (Minus, S=1) | 111 |
Las instrucciones de llamados (Call) y los regresos (Return) que empiezan con C y con R respectivamente usan la misma convención y la información se puede compactar de la misma manera.
En la literatura técnica de Intel frecuentemente se usa la notación simbólica compacta, pero se ha optado aquí por expanderla en forma explícita en aras de una mayor claridad.