Está en la página 1de 37

UNIVERSIDAD TÉCNICA DE AMBATO

FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL


PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

UNVERSIDAD TÉCNICA DE AMBATO

FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL

TAREA #1

Tema:

Instrucciones de los uP 8085 y 8086

Carrera:
Ingeniería en Electrónica y Comunicaciones.

Área Académica:
Física-Electrónica

Línea de Investigación:
Nanotecnología

Ciclo Académico:
Septiembre 2017- Febrero 2018

Paralelo:
Sexto “A” Electrónica.

Alumno:
Paul Freire

Módulo y Docente:
Microprocesadores PhD. Carlos Gordón

Ambato-Ecuador
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

I. TAREA N.º 1
1. PP
2. YY

2.1 Tema

Instrucciones de los uP 8085 y 8086

2.2 Objetivos

 Investigar las instrucciones para programación de los microprocesadores


8085 y 8086.
 Ejemplificar cada una de las instrucciones
 Diferenciar las principales instrucciones de los microprocesadores 8085 y
8086.

2.3 Desarrollo de la Tarea

Set de Instrucciones del Microprocesador 8085

Instrucción Definición Ejemplo


ORG 0 Posición de programa en la ORG 0
directiva.
data 2000H Dirección donde se empieza data 2000H
a colocar los datos.
dB Directiva asociada a datos. dB 1,2,5 (Coloca los datos
1,2,5 en forma secuencial en
la tabla)
dW Directiva asociada a datos dW 1,3,4,4,1234H (Coloca
hexadecimales. los datos en la tabla pero
ocupa 2 bytes)
MOV R1, R2 Movimiento: El contenido MOV B, C
del registro 2 es transferido al
registro 1
MOV Reg, M Direccionamiento de registro MOV M, A
MOV M, Reg indirecto. El contenido de Si el registro H contiene 00H
dirección de la memoria y el registro L contiene 30H.
(dirección de registros de H- La instrucción almacenará el
L) se transfiere a cualquiera contenido del acumulador en
de los registros y viceversa. la posición 0030H
MVI R1, DATO Carga un registro con un dato MVI B, 44H
inmediato. El dato no debe
exceder el byte.
MVI M, DATO Carga un dato en la posición MVI M, 2AH
de memoria dada por los
registros H y L
CMP Reg Compara el contenido del CMP B
CMP M registro o posición de
memoria especificados con el
contenido del acumulador.
Devuelve 1 si son iguales y 0
en el caso contrario. En Z
CPI DATO Compara el valor del byte CPI 20H
especificado con el contenido
del acumulador y posiciona
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

los bits de cero y acarreo para


indicar el resultado. El bit
cero indica igualdad. Un 0 en
acarreo indica que
acumulador mayor que dato.
Un 1 es acumulador menor
que dato.
LXI Reg, Dato LXI es una instrucción de 3 LXI B, 00HFFH
bytes. El primer operando
especifica el par de registros Carga en B el valor 00H y
a ser cargados (BC, DE, HL). FFH en C.
El segundo operando
especifica los dos bytes a ser
cargados.
STAX Reg Almacena el contenido del STAX B
acumulador en la posición de
memoria especificada por los
registros B y C, o D y E.
STA Dir Almacenamiento directo STA 0080ª
desde el acumulador en la
posición de memoria
especificada.
LDAX Reg Carga el acumulador con el LDAX D
contenido de la posición de
memoria indicada por los
pares de registro B y C o D y
E.
LDA Dir Carga el acumulador con el LDA 1000H
dato almacenado en la
posición de memoria
especificada.
INR Reg El contenido del registro o INR A
posición de memoria
especificada se incrementa en Si A contiene 98H la
una unidad instrucción la cambia a 99H
DCR Reg El contenido del registro o DCR A
posición de memoria
especificada se decrementa
en una unidad.
INX Reg El número de 16 bits Si H y L contienen 30H y
contenido en el par de 00H.
registros especificado se INX H
incrementa en una unidad. Hace que el valor cambie a:
H=30H y L=01H
DCX Reg Decrementa el par de DCX H decrementa el valor
registros en una unidad contenido en H y L
ADD El contenido del registro o ADD B
posición de memoria
especificados se suma al
contenido del acumulador
ADC Reg El contenido del registro o ADC C
posición de memoria
especificados más el
contenido del bit de acarreo
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

se suman al contenido del


acumulador.
ADI Suma el valor del byte ADI 20
especificado en la
instrucción, al contenido del
acumulador y deja el
resultado en el acumulador.
ACI Suma el contenido del byte ACI 20
especificado en la instrucción
al contenido del acumulador,
añadiendo el bit del acarreo.
El resultado se almacena en
el acumulador.
SUB Reg El contenido del registro o SUB E
posición de memoria
especificados se resta al
contenido del acumulador,
usando aritmética de
complemento a dos. El
resultado se guarda en el
acumulador.
SUI dato El byte de datos inmediato se SUI B3H
resta del contenido del
acumulador usando
aritmética de complemento a
dos. El resultado se deja en el
acumulador.
SBI El bit de acarreo se suma SBI 01H
internamente al byte de datos
inmediato. El valor obtenido
se resta del contenido del
acumulador usando
aritmética de complemento a
dos.
ANA Reg Se realiza la función lógica ANA B
AND bit a bit entre el
contenido del registro o
posición de memoria
especificada y el contenido
del acumulador. El bit de
acarreo se pone a cero.
ANI datos Realiza una operación AND ANI 0FH
lógica entre el dato
especificado en la instrucción
y el contenido del
acumulador. El resultado
queda en el acumulador.
XRA Reg Se realiza la función lógica XRA B
O-Exclusivo bit a bit entre el
contenido del registro o
posición de memoria
especificador y el contenido
del acumulador, guardándose
el resultado en este último.
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

XRI Dato Se realiza la función lógica XRI 80H


O-Exclusivo bit a bit entre un
byte de datos inmediatos y el
contenido del acumulador.
ORA Reg Se realiza la función lógica ORA B
OR bit a bit entre el
contenido del registro o
posición de memoria
especificados y el contenido
del acumulador, quedando en
este último el resultado.
ORI datos Desarrolla una operación ORI F0H
lógica entre el contenido
especificado por Datos y el
contenido del acumulador. El
resultado se deja en el
acumulador.
CMC Si el bit de acarreo es 0, se CMC
pone a 1. Si es un 1, se pone
a 0.
STC El bit de acarreo se pone a 1 STC
DAA El número hexadecimal de 8 DAA
bits contenido en el
acumulador se ajusta como
dos dígitos de 4 bits
codificados en binario
decimal.
NOP No se realiza ninguna NOP
operación
RLC RLC rota un bit hacia la RLC
izquierda todo el contenido
del acumulador, transfiriendo
el bit de más alto orden al bit
de acarreo y al mismo tiempo
a la posición de menor orden
del acumulador.
RRC Rota el contenido del RRC
acumulador un bit a la
derecha, transfiriendo el bit
de más bajo orden a la
posición de más alto orden
del acumulador, además pone
el bit de acarreo igual al bit
de menor orden del
acumulador.
RAL Hace girar el contenido del RAL
acumulador y el bit de
acarreo un espacio de un bit
hacia la salida (izquierda). El
bit de acarreo es tratado
como si fuera del
acumulador.
RAR Rota el contenido del RAR
acumulador y del bit de
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

acarreo 1 bit de posición


derecha. El bit de acarreo que
es tratado como si fuera parte
del acumulador, se transfiere
al bit más alto orden del
acumulador.
JMP dir Altera la ejecución del JMP plan
programa cargando el valor
especificado por dir en el
contador de programa.
JC dir Comprueba el valor del bit JC plan
de acarreo. Si es un 1 la
ejecución del programa
continúa en la dirección
especificada por dir. Si es un
0 el programa continúa su
ejecución de forma normal.
JNC dir Comprueba el estado del bit JNC plan
de acarreo. Si está en cero el
programa salta a la dirección
especificada caso contrario
continúa normalmente.
JZ dir Comprueba el bit de cero. Si JZ plan
está a 1 el programa continúa
en la dirección expresada por
dir. Si es 0 continúa con la
ejecución secuencial normal.
JNZ dir Comprueba el valor del bit de JNZ plan
cero. Si el contenido del
acumulador no es cero el
programa continúa en la
dirección especificada por
dir. Si el contenido del
acumulador es cero el
programa continúa su ciclo
normal.
JM dir Comprueba el estado del bit JM plan
de signo. Si el contenido es
negativo ( bit de signo =1) la
ejecución del programa
continúa en la dirección
especificada. Caso contrario
irá de forma normal.
JP dir Comprueba el estado de bit JP plan
de signo. Si el contenido del
acumulador es positivo la
ejecución del programa
continúa con la dirección
especificada por dir. Si el
contenido es negativo
continúa con la ejecución
normal.
JPE dir La paridad existe si el byte JPE plan
que está en el acumulador
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

JPO dir tiene un número par de bits.


El bit de paridad se pone a 1
para indicar esta condición.
Comprueba la situación del
bit de paridad, si está a 1 el
programa salta a la dirección
especificada. Caso contrario
continúa normalmente
CALL dir Guarda el contenido del CALL plan
contador del programa dentro
del stack y salta a la
dirección especificada por
dir. Implica una instrucción
RET
CC dir CC comprueba el estado del CC plan
bit de acarreo. Si el bit está a
1, CC carga el contenido del
contador de programa en el
stack y a continuación pasa a
la dirección especificada. Si
el bit está a 0, la ejecución
del programa continúa con la
próxima instrucción.
CNC dir Chequea el valor del bit de CNC plan
acarreo. Si está a 1 CC carga
el contenido del contador de
programa en el stack y a
continuación salta a la
dirección especificada. Caso
contrario no realiza nada.
CZ dir Chequea el valor del bit zero. CZ plan
Si es uno salta a dir caso
contrario no hace nada.
CNZ dir Chequea el valor del bit cero CNZ dir
y realiza lo opuesto a CZ
CM dir Comprueba el valor del bit de CM plan
signo. Si es 1 CM guarda el
contenido del contador en el
stack y salta a dir, caso
contrario no hace nada.
CP dir Realiza lo opuesto a CM CP dir
CPE dir Chequea el valor del bit de CPE plan
paridad, si se tiene un 1 se
guarda el contenido del
contador del programa y salta
a la dirección especificada.
Caso contrario no hace nada
CPO dir Chequea el valor del bit de CPO plan
paridad y realiza acciones
contrarias a las de CPE
RET Se realiza una operación de RRET
retorno incondicional. Echa
fuer dos bytes de catos del
stack y los mete en el registro
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

contador del programa. El


programa continúa entonces
en la nueva dirección.
RC Comprueba el estado del bit RC
de acarreo. Si tiene un 1 la
instrucción saca dos bytes del
stack y los mete en el
contador. De otra forma no
hace nada.
RNC La instrucción RNC RNC
comprueba el bit de acarreo.
Si está en cero ejecuta la
función de RET. De otra
forma no hace nada.
RZ Comprueba el bit de cero. Si RZ
está a 1, indicando que el
contenido del acumulador es
cero, la instrucción ejecuta la
función de RET. Si es 1
continúa el ciclo normal.
RNZ Comprueba el bit de cero. Si RNZ
está a 1 indicando que el
contenido del acumulador es
cero, se ejecuta la función
RET. Caso contrario, el ciclo
continúa normalmente.
RM Comprueba el bit de signo. Si RM
es uno, indicando un dato
negativo en el acumulador la
instrucción echa dos bytes
fuera del stack y los mete en
el contador del programa. Si
el bit es 0 el programa
continúa normalmente.
RP Comprueba el bit de signo y RP
realiza lo contrario a RM
RPE Comprueba el bit de paridad. RPE
Si está a 1, indicando que
existe paridad, la instrucción
echa fuera del stack dos bytes
y los carga en el contador del
programa. Si el bit está a cero
continúa el ciclo normal.
RPO Retorno si la paridad es RPO
impar.
RST Es una instrucción CALL RST plan
para usar con interrupciones.
RST carga el contenido del
contador del programa en el
stack, para proveerse de una
dirección de retorno y salta a
una de las “ocho” direcciones
determinadas previamente.
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

EI Activar interrupciones a EI
partir de la siguiente
instrucción.
DI Desactivar instrucciones. DI
IN PORT Lee los 8 bits de datos que IN 2
hay en el “PORT”
especificado y los carga en el
acumulador.
OUT PORT Pone el contenido del OUT 2
acumulador en el bus de
datos de 8 bits del puerto
seleccionado.
HLT Detiene el procesador y solo HTL
puede ser arrancado por un
proceso externo o
interrupciones por lo que se
debe tener EI activado.
PUSH Reg El contenido del par de PUSH B
registros especificado se
guarda en dos bytes de
memoria definidos por el
puntero de stack. El
contenido del primer registro
se guarda en la posición de
memoria inmediatamente
inferior a la del puntero de
stack. El contenido del
segundo registro del par se
guarda en la posición de
memoria dos unidades
inferior al puntero de stack.
POP reg Copia el contenido de la POP B
posición de memoria
direccionada por el stack
pointer en el registro de bajo
orden del par de registros
especificados. A
continuación, se incrementa
el pointer en 1 y copia el
contenido de la dirección
resultante en el registro de
más alto orden del par. Luego
incrementa el stack pointer
otra vez, de modo que se
apunta al siguiente dato del
stack.
DAD reg Suma doble, suma el valor de DAD BD
un dato de 16 bits contenido
en un determinado par de
registros al contenido del par
de registros HL. El resultado
es almacenado en el par HL.
Los operandos pueden ser
B=BC, D=DE, H=HL, SP.
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

XCHG Intercambiar datos entre XCHG


registros. Intercambia el
contenido de los registros H
y L con el contenido de los
registros D y E.
XTHL Cambia los dos bytes de la XTHL
posición más alta del stack
con los dos bytes
almacenados en los registros
H y L.
SPHL Cargar el puntero de stack SPHL
desde los registros H y L.

MICROPROCESADOR 8086
AAA
Ajuste ASCII después de la suma. Corrige el resultado en AH y AL después de la adición
cuando se trabaja con valores BCD.
Funciona de acuerdo con el siguiente algoritmo:
Si low nibble de AL > 9 o AF = 1 entonces:

 AL = AL + 6
 AH = AH + 1
 AF = 1
 CF = 1
Caso contrario

 AF = 0
 CF = 0
en ambos casos:
despejar el high nibble de AL.
Ejemplo
MOV AX, 15; AH = 00, AL = 0Fh
AAA; AH = 01, AL = 05
RET

AAD

Ajuste ASCII antes de la División. Prepara dos valores de BCD para la división.

 AL = (AH * 10) + AL
 AH = 0
Ejemplo
 MOV AX, 0105h; AH = 01, AL = 05
 AAD; AH = 00, AL = 0Fh (15)
 RET

AAM
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

Ajuste ASCII después de la multiplicación. Corrige el resultado de la multiplicación de dos


valores BCD.

 AH = AL / 10
 AL = remainder

Ejemplo
MOV AL, 15; AL = 0Fh
AAM; AH = 01, AL = 05
RET

AAS
ASCII Ajustar después de la resta. Corrige el resultado en AH y AL después de la resta cuando
se trabaja con valores BCD.

Si low nibble de AL > 9 o AF = 1 entonces:


 AL = AL - 6
 AH = AH – 1
 AF = 1
 CF = 1

Caso contrario

 AF = 0
 CF = 0
Ejemplo
MOV AX, 02FFh; AH = 02, AL = 0FFh
AAS; AH = 01, AL = 09
RET

ADC
Agregar con Carry.
operand1 = operand1 + operand2 + CF

Ejemplo
STC; set CF = 1
MOV AL, 5; AL = 5
ADC AL, 1; AL = 7
RET

ADD

operand1 = operand1 + operand2

Ejemplo
MOV AL, 5; AL = 5
ADD AL, -3; AL = 2
RET

AND
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

Lógica AND entre todos los bits de dos operandos. El resultado se almacena en operando1.
1 AND 1 = 1
1 AND 0 = 0
0 AND 1 = 0
0 AND 0 = 0
Ejemplo
MOV AL, 'a'; AL = 01100001b
AND AL, 11011111b ; AL = 01000001b ('A')
RET
CALL
Transfiere el control al procedimiento, la dirección de retorno es (IP) se empuja a la pila. La
dirección de 4 bytes se puede ingresar de esta forma: 1234h: 5678h, el primer valor es un
segundo valor del segmento es un desplazamiento (esta es una llamada lejana, por lo que CS
también se empuja para apilar).
Ejemplo
ORG 100h; para el archive COM
CALL p1
ADD AX, 1
RET; regresa a OS.
p1 PROC ; declaración de procedimiento.
MOV AX, 1234h
RET; regresa al llamador
p1 ENDP

CBW
Convierte el byte en palabra.
Si el bit high de AL = 1 entonces:
AH = 255 (0FFh)
Caso contrario
AH = 0
Ejemplo
MOV AX, 0; AH = 0, AL = 0
MOV AL, -5; AX = 000FBh (251)
CBW; AX = 0FFFBh (-5)
RET

CLC
Borrar la bandera de Carry.
CF = 0
CLD
Borrar indicador de dirección. SI y DI se incrementarán mediante instrucciones de cadena:
CMPSB, CMPSW, LODSB, LODSW, MOVSB, MOVSW, STOSB, STOSW.
DF = 0
CLI
Borrar indicador de activación de interrupción. Esto desactiva las interrupciones de hardware.
IF = 0
CMC
Complemento llevar bandera. Invierte el valor de CF.
if CF = 1 then CF = 0
if CF = 0 then CF = 1
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

CMP
Comparar
operand1 - operand2
el resultado no se almacena en ningún lugar, se establecen los indicadores (OF, SF, ZF, AF, PF,
CF) de acuerdo con el resultado.
Ejemplo
MOV AL, 5
MOV BL, 5
CMP AL, BL; AL = 5, ZF = 1 (so equal!)
RET

CMPSB
Comparación de bytes: ES: [DI] de DS: [SI].
DS: [SI] - ES: [DI]
establecer banderas según el resultado:
OF, SF, ZF, AF, PF, CF
si DF = 0 entonces
SI = SI + 1
DI = DI + 1
Caso contrario
SI = SI - 1
DI = DI – 1
Ejemplo
nombre "cmpsb"

org 100h

; establecer dirección hacia adelante:


cld

; cargar la fuente en ds: si,


; cargar destino en es: di:
mov ax, cs
mov ds, hacha
mov es, hacha
lea si, str1
lea di, str2

; poner en contra de la longitud de la cuerda:


mov cx, tamaño

; compare hasta igual:


repe cmpsb
jnz not_equal

; "sí" - ¡igual!
mov al, 'y'
mov ah, 0eh
int 10h
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

jmp exit_here

no es igual:

; "no" - ¡no igual!


mov al, 'n'
mov ah, 0eh
int 10h

exit_here:

; espere a presionar la tecla:


mov ah, 0
int 16h

retirado

; las cadenas deben tener longitudes iguales:


x1:
str1 db 'cadena de prueba'
str2 db 'cadena de prueba'
tamaño = ($ - x1) / 2
CMPSW
Comparación de palabras: ES: [DI] de DS: [SI].
DS: [SI] - ES: [DI]
establecer banderas según el resultado:
OF, SF, ZF, AF, PF, CF
si DF = 0 entonces
SI = SI + 2
DI = DI + 2
Caso contrario
SI = SI - 2
DI = DI - 2
Ejemplo
nombre "cmpsw"
org 100h
; establecer dirección hacia adelante:
cld

; cargar la fuente en ds: si,


; cargar destino en es: di:
mov ax, cs
mov ds, hacha
mov es, hacha
lea si, dat1
lea di, dat2

; contrarrestar la longitud de los datos en palabras:


mov cx, tamaño
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

; compare hasta igual:


repe cmpsw
jnz not_equal

; "sí" - ¡igual!
mov al, 'y'
mov ah, 0eh
int 10h

jmp exit_here

no es igual:

; "no" - ¡no igual!


mov al, 'n'
mov ah, 0eh
int 10h

exit_here:

; espere a presionar la tecla:


mov ah, 0
int 16h

retirado

; los vectores de datos deben tener la misma longitud:


x1:
dat1 dw 1234h, 5678h, 9012h, 3456h
dat2 dw 1234h, 5678h, 9012h, 3456h
tamaño = ($ - x1) / 4

CWD
Convierte palabra a palabra doble.
si alto de AX = 1 entonces:
DX = 65535 (0FFFFh)
Caso contrario
DX = 0
Ejemplo
MOV DX, 0; DX = 0
MOV AX, 0; AX = 0
MOV AX, -5; DX AX = 00000h:0FFFBh
CWD; DX AX = 0FFFFh:0FFFBh
RET

DAA
Ajuste decimal después de la suma.
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

Corrige el resultado de la adición de dos valores de BCD empaquetados.


si el nible low de AL> 9 o AF = 1, entonces:
AL = AL + 6
AF = 1
si AL> 9Fh o CF = 1, entonces:
AL = AL + 60h
CF = 1
Ejemplo
MOV AL, 0Fh; AL = 0Fh (15)
DAA; AL = 15h
RET

DAS
Ajuste decimal después de la resta.
Corrige el resultado de la resta de dos valores de BCD empaquetados.
si el nibble low de AL> 9 o AF = 1, entonces:
AL = AL - 6
AF = 1
si AL> 9Fh o CF = 1, entonces:
AL = AL - 60h
CF = 1
Ejemplo
MOV AL, 0FFh; AL = 0FFh (-1)
DAS; AL = 99h, CF = 1
RET

DEC
Decremento.
operand = operand - 1
Ejemplo
MOV AL, 255; AL = 0FFh (255 or -1)
DEC AL; AL = 0FEh (254 or -2)
RET

DIV
División sin signo
cuando el operando es un byte:
AL = AX / operando
AH = resto (módulo)
cuando operando es una palabra:
AX = (DX AX) / operando
DX = resto (módulo)
Ejemplo
MOV AX, 203; AX = 00CBh
MOV BL, 4
DIV BL; AL = 50 (32h), AH = 3
RET

HLT
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

Detener el sistema
Ejemplo
MOV AX, 5
HLT

IDIV
Firmado dividido
cuando el operando es un byte:
AL = AX / operando
AH = resto (módulo)
cuando operando es una palabra:
AX = (DX AX) / operando
DX = resto (módulo)
Ejemplo
MOV AX, -203; AX = 0FF35h
MOV BL, 4
IDIV BL; AL = -50 (0CEh), AH = -3 (0FDh)
RET

IMUL
Firmado multiplicar
cuando el operando es un byte:
AX = AL * operando.
cuando operando es una palabra:
(DX AX) = AX * operando.
Ejemplo
MOV AL, -2
MOV BL, -4
IMUL BL; AX = 8
RET

IN
Entrada desde el puerto a AL o AX.
El segundo operando es un número de puerto. Si es necesario para acceder al número de puerto
por encima de 255, se debe usar el registro DX.
Ejemplo

EN AX, 4; obtener el estado de los semáforos


EN AL, 7; obtener el estado de motor paso a paso.

INC
Incremento
operand = operand + 1
Ejemplo
MOV AL, 4
INC AL ; AL = 5
RET

INT
Interrupción numerada por byte inmediato (0..255).
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

Empujar para apilar:


registro de banderas
CS
IP
IF = 0
Control de transferencia para interrumpir el procedimiento
Ejemplo
MOV AH, 0Eh ; teletype.
MOV AL, 'A'
INT 10h ; BIOS interrupt.
RET

INTO
Interrumpa 4 si el indicador de desbordamiento es 1.
si OF = 1 entonces INT 4
Ejemplo
; -5 - 127 = -132 (not in -128..127)
; el resultado de SUB es incorrecto (124),
; entonces OF = 1 está configurado:
MOV AL, -5
SUB AL, 127 ; AL = 7Ch (124)
INTO ; error de proceso
RET

IRET
Interrumpir el retorno
Pop de la pila:
IP
CS
registro de banderas

JA
Salto corto si el primer operando está por encima del segundo operando (como lo establece la
instrucción CMP). No firmado.
if (CF = 0) y (ZF = 0) luego salta
Ejemplo
include 'emu8086.inc'
ORG 100h
MOV AL, 250
CMP AL, 5
JA label1
PRINT 'AL is not above 5'
JMP exit
label1:
PRINT 'AL is above 5'
exit:
RET

JAE
Salto corto si el primer operando es superior o igual al segundo operando (como lo establece la
instrucción CMP). No firmado.
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

si CF = 0, entonces salta
Ejemplo
incluye 'emu8086.inc'
ORG 100h
MOV AL, 5
CMP AL, 5
Etiqueta JAE1
PRINT 'AL no es superior ni igual a 5'
Salida JMP
etiqueta1:
PRINT 'AL es superior o igual a 5'
salida:
RET

JB
Salto corto si el primer operando está debajo del segundo operando (como lo establece la
instrucción CMP). No firmado.
si CF = 1, entonces salta
Ejemplo
incluye 'emu8086.inc'
ORG 100h
MOV AL, 1
CMP AL, 5
JB label1
PRINT 'AL no está debajo de 5'
Salida JMP
etiqueta1:
PRINT 'AL está debajo de 5'
salida:
RET

JBE
Salto corto si el primer operando es inferior o igual al segundo operando (como lo establece la
instrucción CMP). No firmado.
si CF = 1 o ZF = 1, salta
Ejemplo
incluye 'emu8086.inc'
ORG 100h
MOV AL, 5
CMP AL, 5
JBE label1
PRINT 'AL no es inferior o igual a 5'
Salida JMP
etiqueta1:
PRINT 'AL es menor o igual a 5'
salida:
RET
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

JC
La bandera de salto corto si lleva está establecida en 1.
si CF = 1, entonces salta
Ejemplo
incluye 'emu8086.inc'
ORG 100h
MOV AL, 255
ADD AL, 1
JC label1
PRINT 'no llevar'
Salida JMP
etiqueta1:
PRINT 'tiene carry'
salida:
RET

JCXZ
Salto corto si el registro CX es 0.
si CX = 0, entonces salta
Ejemplo
include 'emu8086.inc'
ORG 100h
MOV CX, 0
JCXZ label1
PRINT 'CX is not zero.'
JMP exit
label1:
PRINT 'CX is zero.'
exit:
RET

JE
Salto corto si el primer operando es igual al segundo operando (como lo establece la instrucción
CMP). Firmado / Sin firmar.
si ZF = 1, entonces salta
Ejemplo
include 'emu8086.inc'
ORG 100h
MOV AL, 5
CMP AL, 5
JE label1
PRINT 'AL is not equal to 5.'
JMP exit
label1:
PRINT 'AL is equal to 5.'
exit:
RET

JG
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

Salto corto si el primer operando es mayor que el segundo operando (como lo establece la
instrucción CMP). Firmado
if (ZF = 0) y (SF = OF) luego salta
Ejemplo
include 'emu8086.inc'
ORG 100h
MOV AL, 5
CMP AL, -5
JG label1
PRINT 'AL is not greater -5.'
JMP exit
label1:
PRINT 'AL is greater -5.'
exit:
RET

JGE
Salto corto si el primer operando es mayor o igual que el segundo operando (como lo establece
la instrucción CMP). Firmado
si SF = OF luego salta
Ejemplo
include 'emu8086.inc'
ORG 100h
MOV AL, 2
CMP AL, -5
JGE label1
PRINT 'AL < -5'
JMP exit
label1:
PRINT 'AL >= -5'
exit:
RET

JL
Salto corto si el primer operando es menor que el segundo operando (como lo establece la
instrucción CMP). Firmado
si SF <> OF luego salta
Ejemplo
include 'emu8086.inc'
ORG 100h
MOV AL, -2
CMP AL, 5
JL label1
PRINT 'AL >= 5.'
JMP exit
label1:
PRINT 'AL < 5.'
exit:
RET

JLE
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

Salto corto si el primer operando es menor o igual que el segundo operando (como lo establece
la instrucción CMP). Firmado
si SF <> OF o ZF = 1, entonces salta
Ejemplo
include 'emu8086.inc'
ORG 100h
MOV AL, -2
CMP AL, 5
JLE label1
PRINT 'AL > 5.'
JMP exit
label1:
PRINT 'AL <= 5.'
exit:
RET

JMP
Salto incondicional. Transfiere el control a otra parte del programa. La dirección de 4 bytes se
puede ingresar de esta forma: 1234h: 5678h, el primer valor es un segundo valor del segmento
es un desplazamiento.

Ejemplo
include 'emu8086.inc'
ORG 100h
MOV AL, 5
JMP label1 ; jump over 2 lines!
PRINT 'Not Jumped!'
MOV AL, 0
label1:
PRINT 'Got Here!'
RET

JNA
Salto corto si el primer operando no está sobre el segundo operando (como lo establece la
instrucción CMP). No firmado.
si CF = 1 o ZF = 1, salta
Ejemplo
include 'emu8086.inc'

ORG 100h
MOV AL, 2
CMP AL, 5
JNA label1
PRINT 'AL is above 5.'
JMP exit
label1:
PRINT 'AL is not above 5.'
exit:
RET

JNAE
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

Salto corto si el primer operando no está arriba ni es igual al segundo operando (como lo
establece la instrucción CMP). No firmado.
si CF = 1, entonces salta
Ejemplo
include 'emu8086.inc'

ORG 100h
MOV AL, 2
CMP AL, 5
JNAE label1
PRINT 'AL >= 5.'
JMP exit
label1:
PRINT 'AL < 5.'
exit:
RET

JNB
Salto corto si el primer operando no está debajo del segundo operando (como lo establece la
instrucción CMP). No firmado.
si CF = 0, entonces salta
Ejemplo
include 'emu8086.inc'

ORG 100h
MOV AL, 7
CMP AL, 5
JNB label1
PRINT 'AL < 5.'
JMP exit
label1:
PRINT 'AL >= 5.'
exit:
RET

JNBE
Salto corto si el primer operando no está debajo y no es igual al segundo operando (como lo
establece la instrucción CMP). No firmado.
if (CF = 0) y (ZF = 0) luego salta
Ejemplo
include 'emu8086.inc'

ORG 100h
MOV AL, 7
CMP AL, 5
JNBE label1
PRINT 'AL <= 5.'
JMP exit
label1:
PRINT 'AL > 5.'
exit:
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

RET

JNC
La bandera de salto corto si lleva está establecida en 0.
si CF = 0, entonces salta
Ejemplo
include 'emu8086.inc'

ORG 100h
MOV AL, 2
ADD AL, 3
JNC label1
PRINT 'has carry.'
JMP exit
label1:
PRINT 'no carry.'
exit:
RET

JNE
Salto corto si el primer operando no es igual al segundo operando (como lo establece la
instrucción CMP). Firmado / Sin firmar.
si ZF = 0, entonces salta
Ejemplo
include 'emu8086.inc'

ORG 100h
MOV AL, 2
CMP AL, 3
JNE label1
PRINT 'AL = 3.'
JMP exit
label1:
PRINT 'Al <> 3.'
exit:
RET

JNG
Salto corto si el primer operando no es mayor que el segundo operando (como lo establece la
instrucción CMP). Firmado
si (ZF = 1) y (SF <> OF) luego salta
Ejemplo
include 'emu8086.inc'

ORG 100h
MOV AL, 2
CMP AL, 3
JNG label1
PRINT 'AL > 3.'
JMP exit
label1:
PRINT 'Al <= 3.'
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

exit:
RET

JNGE
Salto corto si el primer operando no es mayor y no es igual al segundo operando (como lo
establece la instrucción CMP). Firmado
si SF <> OF luego salta
Ejemplo

include 'emu8086.inc'

ORG 100h
MOV AL, 2
CMP AL, 3
JNGE label1
PRINT 'AL >= 3.'
JMP exit
label1:
PRINT 'Al < 3.'
exit:
RET

JNL
Salto corto si el primer operando es No menos que segundo operando (como lo establece la
instrucción CMP). Firmado
si SF = OF luego salta
Ejemplo
include 'emu8086.inc'

ORG 100h
MOV AL, 2
CMP AL, -3
JNL label1
PRINT 'AL < -3.'
JMP exit
label1:
PRINT 'Al >= -3.'
exit:
RET

JNLE
Salto corto si el primer operando no es menor y no es igual al segundo operando (como lo
establece la instrucción CMP). Firmado
si (SF = OF) y (ZF = 0) luego salta
Ejemplo
include 'emu8086.inc'

ORG 100h
MOV AL, 2
CMP AL, -3
JNLE label1
PRINT 'AL <= -3.'
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

JMP exit
label1:
PRINT 'Al > -3.'
exit:
RET

JNO
Salto corto si no se desborda.
si OF = 0, entonces salta
Ejemplo
; -5 - 2 = -7 (inside -128..127)
; the result of SUB is correct,
; so OF = 0:

include 'emu8086.inc'

ORG 100h
MOV AL, -5
SUB AL, 2 ; AL = 0F9h (-7)
JNO label1
PRINT 'overflow!'
JMP exit
label1:
PRINT 'no overflow.'
exit:
RET

JNP
Salto corto si no hay paridad (impar). Solo se verifican 8 bits de resultado bajos. Establezca las
instrucciones CMP, SUB, ADD, TEST, AND, OR, XOR.
si PF = 0, entonces salta
Ejemplo
include 'emu8086.inc'

ORG 100h
MOV AL, 00000111b ; AL = 7
OR AL, 0 ; just set flags.
JNP label1
PRINT 'parity even.'
JMP exit
label1:
PRINT 'parity odd.'
exit:
RET

JNS
Salto corto si no está firmado (si es positivo). Establezca las instrucciones CMP, SUB, ADD,
TEST, AND, OR, XOR.
si SF = 0, entonces salta
Ejemplo
include 'emu8086.inc'
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

ORG 100h
MOV AL, 00000111b ; AL = 7
OR AL, 0 ; just set flags.
JNS label1
PRINT 'signed.'
JMP exit
label1:
PRINT 'not signed.'
exit:
RET

JNZ
Salto corto si no es cero (no es igual). Establezca las instrucciones CMP, SUB, ADD, TEST,
AND, OR, XOR.
si ZF = 0, entonces salta
Ejemplo
include 'emu8086.inc'

ORG 100h
MOV AL, 00000111b ; AL = 7
OR AL, 0 ; just set flags.
JNZ label1
PRINT 'zero.'
JMP exit
label1:
PRINT 'not zero.'
exit:
RET

JO
Salto corto si se desborda.
si OF = 1, entonces salta
Ejemplo
; -5 - 127 = -132 (not in -128..127)
; the result of SUB is wrong (124),
; so OF = 1 is set:

include 'emu8086.inc'

org 100h
MOV AL, -5
SUB AL, 127 ; AL = 7Ch (124)
JO label1
PRINT 'no overflow.'
JMP exit
label1:
PRINT 'overflow!'
exit:
RET

JP
Salto corto si es paritario (par). Solo se verifican 8 bits de resultado bajos. Establezca las
instrucciones CMP, SUB, ADD, TEST, AND, OR, XOR.
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

si PF = 1, salta
Ejemplo
include 'emu8086.inc'

ORG 100h
MOV AL, 00000101b ; AL = 5
OR AL, 0 ; just set flags.
JP label1
PRINT 'parity odd.'
JMP exit
label1:
PRINT 'parity even.'
exit:
RET

JPE
Salto corto si Paridad Par. Solo se verifican 8 bits de resultado bajos. Establezca las
instrucciones CMP, SUB, ADD, TEST, AND, OR, XOR.
si PF = 1, salta
Ejemplo
include 'emu8086.inc'

ORG 100h
MOV AL, 00000101b ; AL = 5
OR AL, 0 ; just set flags.
JPE label1
PRINT 'parity odd.'
JMP exit
label1:
PRINT 'parity even.'
exit:
RET

JPO
Salto corto si la paridad es impar. Solo se verifican 8 bits de resultado bajos. Establezca las
instrucciones CMP, SUB, ADD, TEST, AND, OR, XOR.
si PF = 0, entonces salta
Ejemplo
include 'emu8086.inc'

ORG 100h
MOV AL, 00000111b ; AL = 7
OR AL, 0 ; just set flags.
JPO label1
PRINT 'parity even.'
JMP exit
label1:
PRINT 'parity odd.'
exit:
RET

JS
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

Salto corto si está firmado (si es negativo). Establezca las instrucciones CMP, SUB, ADD,
TEST, AND, OR, XOR.
si SF = 1, entonces salta
Ejemplo
include 'emu8086.inc'

ORG 100h
MOV AL, 10000000b ; AL = -128
OR AL, 0 ; just set flags.
JS label1
PRINT 'not signed.'
JMP exit
label1:
PRINT 'signed.'
exit:
RET

JZ
Salto corto si es cero (igual). Establezca las instrucciones CMP, SUB, ADD, TEST, AND, OR,
XOR.
si ZF = 1, entonces salta
Ejemplo
ORG 100h
MOV AL, 5
CMP AL, 5
JZ label1
PRINT 'AL is not equal to 5.'
JMP exit
label1:
PRINT 'AL is equal to 5.'
exit:
RET

LAHF
Carga AH desde 8 bits bajos de registro Flags.
Ejemplo
AH = banderas de registro
AH bit: 7 6 5 4 3 2 1 0
[SF] [ZF] [0] [AF] [0] [PF] [1] [CF]
bits 1, 3, 5 are reserved.
LDS
Cargue la palabra doble de memoria en el registro de palabras y DS.
REG = primera palabra
DS = segunda palabra
Ejemplo
ORG 100h

LDS AX, m

RET

m DW 1234h
DW 5678h
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

END

LEA
Cargar dirección efectiva.
REG = dirección de la memoria (desplazamiento)
Ejemplo
MOV BX, 35h
MOV DI, 12h
LEA SI, [BX+DI] ; SI = 35h + 12h = 47h

LES
Cargue la palabra doble de la memoria en el registro de palabras y ES.
REG = primera palabra
ES = segunda palabra
Ejemplo
ORG 100h

LES AX, m

RET

m DW 1234h
DW 5678h

END

LODSB
Cargue bytes en DS: [SI] en AL. Actualización SI.
AL = DS: [SI]
si DF = 0 entonces
SI = SI + 1
no
SI = SI – 1
Ejemplo
ORG 100h

LEA SI, a1
MOV CX, 5
MOV AH, 0Eh

m: LODSB
INT 10h
LOOP m

RET

LODSW
Cargar palabra en DS: [SI] en AX. Actualización SI.
AX = DS: [SI]
si DF = 0 entonces
SI = SI + 2
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

no
SI = SI – 2
Ejemplo
ORG 100h

LEA SI, a1
MOV CX, 5

REP LODSW ; finally there will be 555h in AX.

RET

LOOP
Disminuya CX, salte a la etiqueta si CX no es cero.
CX = CX - 1
si CX <> 0 entonces
saltar
no
no saltar, continuar
Ejemplo
include 'emu8086.inc'

ORG 100h
MOV CX, 5
label1:
PRINTN 'loop!'
LOOP label1
RET

LOOPE
Disminuya CX, salte a la etiqueta si CX no es cero e Igual (ZF = 1).
CX = CX - 1
if (CX <> 0) y (ZF = 1) luego
saltar
no
no saltar, continuar
Ejemplo
include 'emu8086.inc'

ORG 100h
MOV AX, 0
MOV CX, 5
label1:
PUTC '*'
ADD AX, 100
CMP AH, 0
LOOPE label1
RET

LOOPNE
Disminuya CX, salte a la etiqueta si CX no es cero y No es igual (ZF = 0).
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

CX = CX - 1
if (CX <> 0) y (ZF = 0) luego
saltar
no
no saltar, continuar
Ejemplo
include 'emu8086.inc'

ORG 100h
MOV SI, 0
MOV CX, 5
label1:
PUTC '*'
MOV AL, v1[SI]
INC SI ; next byte (SI=SI+1).
CMP AL, 7
LOOPNE label1
RET

LOOPNZ
Disminuya CX, salte a la etiqueta si CX no es cero y ZF = 0.
CX = CX - 1
if (CX <> 0) y (ZF = 0) luego
saltar
no
no saltar, continuar
Ejemplo
include 'emu8086.inc'

ORG 100h
MOV SI, 0
MOV CX, 5
label1:
PUTC '*'
MOV AL, v1[SI]
INC SI ; next byte (SI=SI+1).
CMP AL, 7
LOOPNZ label1
RET

LOOPZ
Disminuya CX, salte a la etiqueta si CX no es cero y ZF = 1.
CX = CX - 1
if (CX <> 0) y (ZF = 1) luego
saltar
no
no saltar, continuar
Ejemplo
include 'emu8086.inc'

ORG 100h
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

MOV AX, 0
MOV CX, 5
label1:
PUTC '*'
ADD AX, 100
CMP AH, 0
LOOPZ label1
RET

MOV
Copie operand2 a operando1.
La instrucción MOV no puede:
establecer el valor de los registros CS e IP.
copiar el valor de un registro de segmento a otro registro de segmento (debe copiar primero al
registro general).
Copie el valor inmediato en el registro de segmento (primero debe copiar al registro general).
Ejemplo
ORG 100h
MOV AX, 0B800h ; set AX = B800h (VGA memory).
MOV DS, AX ; copy value of AX to DS.
MOV CL, 'A' ; CL = 41h (ASCII code).
MOV CH, 01011111b ; CL = color attribute.
MOV BX, 15Eh ; BX = position on screen.
MOV [BX], CX ; w.[0B800h:015Eh] = CX.
RET ; returns to operating system.

MOVSB
Copiar el byte en DS: [SI] a ES: [DI]. Actualiza SI y DI.
Ejemplo

ORG 100h

CLD
LEA SI, a1
LEA DI, a2
MOV CX, 5
REP MOVSB

RET

MOVSW
Copiar palabra en DS: [SI] a ES: [DI]. Actualiza SI y DI.
Ejemplo
ORG 100h

CLD
LEA SI, a1
LEA DI, a2
MOV CX, 5
REP MOVSW
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

RET

MUL
Multiplicado sin signo.
cuando el operando es un byte:
AX = AL * operando.
cuando operando es una palabra:
(DX AX) = AX * operando.
Ejemplo
MOV AL, 200 ; AL = 0C8h
MOV BL, 4
MUL BL ; AX = 0320h (800)
RET

NEG
Negar. Hace que el operando sea negativo (complemento de dos).
Ejemplo
MOV AL, 5 ; AL = 05h
NEG AL ; AL = 0FBh (-5)
NEG AL ; AL = 05h (5)
RET

NOP
No operación.
Ejemplo
NOP
NOP
NOP
RET

NOT
Invierta cada bit del operando.
si el bit es 1, gírelo a 0.
si bit es 0, conviértalo en 1.
Ejemplo
MOV AL, 00011011b
NOT AL ; AL = 11100100b
RET

OR
OR lógico entre todos los bits de dos operandos. El resultado se almacena en el primer
operando.
1 OR 1 = 1
1O0=1
0 OR 1 = 1
0 OR 0 = 0
Ejemplo
MOV AL, 'A' ; AL = 01000001b
OR AL, 00100000b ; AL = 01100001b ('a')
RET

OUT
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

Salida de AL o AX a puerto.
El primer operando es un número de puerto. Si es necesario para acceder al número de puerto
por encima de 255, se debe usar el registro DX.
Ejemplo
MOV AX, 0FFFh; Encienda todo
OUT 4, AX; semáforos.
MOV AL, 100b; Enciende el tercero
OUT 7, AL; imán del motor paso a paso.
POP
Obtenga 16 bit de valor de la pila.
Ejemplo
MOV AX, 1234h
PUSH AX
POP DX ; DX = 1234h
RET

POPA
Muestra todos los registros de propósito general DI, SI, BP, SP, BX, DX, CX, AX de la pila.
El valor SP se ignora, se muestra pero no se establece en el registro SP).
Ejemplo

 POP DI
 POP SI
 POP BP
 POP xx (SP value ignored)
 POP BX
 POP DX
 POP CX
 POP AX
POPF
Almacene el valor de 16 bits en la pila.
Ejemplo
MOV AX, 1234h
PUSH AX
POP DX ; DX = 1234h
RET

PUSHA
Presione todos los registros de propósito general AX, CX, DX, BX, SP, BP, SI, DI en la pila.
Se usa el valor original del registro SP (antes de PUSHA).
Ejemplo

 PUSH AX
 PUSH CX
 PUSH DX
 PUSH BX
 PUSH SP
 PUSH BP
 PUSH SI
 PUSH DI

PUSHF
Las banderas de la tienda se registran en la pila.
Ejemplo
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

 SP = SP - 2
 SS:[SP] (top of the stack) = flags
RCL
Gire el operando1 hacia la izquierda para llevar la bandera. La cantidad de rotaciones es
establecida por operando2.
Cuando el valor inmediato es mayor que 1, el ensamblador genera varias instrucciones RCL xx,
1 porque 8086 tiene código de máquina solo para esta instrucción (el mismo principio funciona
para todas las demás instrucciones de cambio / rotación).
Ejemplo
STC ; set carry (CF=1).
MOV AL, 1Ch ; AL = 00011100b
RCL AL, 1 ; AL = 00111001b, CF=0.
RET

RCR
Gire el operando1 hacia la derecha a través de la marca de llevar. La cantidad de rotaciones es
establecida por operando2.
Ejemplo
STC ; set carry (CF=1).
MOV AL, 1Ch ; AL = 00011100b
RCR AL, 1 ; AL = 10001110b, CF=0.
RET

REP
Repita las siguientes instrucciones MOVSB, MOVSW, LODSB, LODSW, STOSB, STOSW
CX
Ejemplo
check_cx:

si CX <> 0 entonces
hacer la siguiente instrucción de cadena
CX = CX - 1
regrese a check_cx
más
salir del ciclo REP.

DIFERENCIAS
ADI
STA
PUSHA
XRA
XRI
POPA
ANA

2.4 Conclusiones
 Se investigo las principales instrucciones de los uP 8085 y 8086
 De cada una de las instrucciones investigadas se realizo un ejemplo de los
mismos.
 Se estableció las principales diferencias entre las instrucciones de los uP
8085 y 8086
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 - FEBRERO 2018

2.5 Referencias bibliográficas

http://exa.unne.edu.ar/ingenieria/circuitos_logicos/archivos/instrucciones8085.p
df