Está en la página 1de 35

EMU 8086: Instrucciones

Edwin Rodrguez
Noviembre 20, 2017.

Universidad de las Fuerzas Armadas ESPE


Departamento de la Elctrica y Electrnica
Microcontroladores y Microprocesadores
Instrucciones

1. AAA
Ajusta el Resultado en AX luego de una suma a valores BCD. Ocupa 1 Byte

2. AAD
Ajusta los valores dentro del registro en BCD preparndolos para la divisin en HEX. Ocupa 1
Byte

3. AAM
Ajusta los valores del registro luego de una multiplicacin dejando en AH las decenas y en AL
las unidades. Ocupa 2 Bytes de memoria

4. AAS
Corrije los valores luego de una resta cuando el registro presenta overflow para nmeros
negativos al trabajar con BCD. Ocupa 1 Byte de memoria

5. ADC
Suma adicionando la bandera de Carry CF. Ocupa 2 Bytes de memoria

6. ADD
Suma 2 operandos y los almacena en el primer argumento de la funcin. Ocupa 2 Bytes de
memoria

7. AND
Representa y opera como la operacin lgica AND entre 2 operandos, almacenando el resultado
en el primero de ellos. Ocupa 2 Bytes de memoria

8. CALL
Hace el llamado a otro procedimiento dejando en pila el puntero de cdigo IP. Ocupa 3Bytes de
memoria

9. CBW
Convierte un valor HEX (Byte) del registro a un dato tipo palabra. Ocupa 1 Byte de memoria

10. CLC
Limpia el valor asignado a la bandera de Carry CF. Ocupa 1 Byte de memoria
11. CLD
Limpia banderas de direccin. Los punteros SI y DI sern incrementados tambin por las
instrucciones de cadena. Ocupa 1 Byte de memoria

12. CLI
Limpia la bandera de interrupciones, deshabilitando interrupciones de hardware. Ocupa 1 Byte de
memoria

13. CMC
Invierte el valor actual de la bandera de Carry. Ocupa 1 Byte de memoria
14. CMP
Compara 2 operandos, estableciendo las banderas OF, SF, ZF, AF, PF, CF, segn el resultado.
Ocupa 2 Bytes de memoria

15. CMPSB
Compara Bytes de los operandos ES y DS y establece las banderas OF, SF, ZF, AF, PF, CF,
segn el resultado. Ocupa 1 Byte de memoria

16. CMPSW
Compara las palabras de los operandos ES y DS y establece las banderas OF, SF, ZF, AF, PF,
CF, segn el resultado. Ocupa 1 Byte de memoria
17. CWD
Convierte un dato de tipo WORD a un Double Word. Ocupa 1 Byte de memoria

18. DAA
Ajuste decimal luego de la adicin. En lugar de establecer en AH el valor de la decena y en AL
la unidad, ajusta en AL todo el numero. Ocupa 1 Byte de memoria

19. DAS
Ajuste decimal luego de la sustraccin. En lugar de establecer en AH el valor de la decena y en
AL la unidad, ajusta en AL todo el nmero. Ocupa 1 Byte de memoria
20. DEC
Decrementa en 1 el operando presente. Ocupa 1Byte de memoria

21. DIV
Divide 2 valores sin signo, el nico operando que se ingresa con AL. Ocupa 2 Bytes de memoria

22. HLT
Detiene el sistema y con l la ejecucin del programa. Ocupa 1 Byte de memoria
23. IDIV.
Realiza la divisin entre 2 valores con signo guardando en AL el cociente y en AH el residuo.
Ocupa 2 Bytes de memoria

24. IMUL
Realiza la multiplicacion entre 2 valores con signo guardando en AX el resultado. Ocupa 2 Bytes
de memoria. Ocupa 2 Bytes de memoria

25. IN
Guarda una entrada en AL o AX por el puerto indicado. Ocupa 2 Bytes de memoria.
26. INC
Incrementa el operando en 1. Ocupa 1 Byte de memoria.

27. INT
Hace el llamado a la interrupcin numerada de 0 a 255. Ocupa 2 Bytes de memoria

28. INTO
Hace el llamado a la interrupcin 4 en caso de presentarse un overflow. Ocupa 1 Byte de memoria.
29. IRET
Retorno por Interrupcin. Realiza un POP a las banderas de registro, IP y CS. Ocupa 1 Byte de
memoria

30. JA
Realiza un salto si luego de la operacin CMP el primer operando fue mayor al segundo. Ocupa 2
Bytes de memoria

31. JAE
Realiza un salto si luego de la operacin CMP el primer operando fue mayor o igual al segundo.
Ocupa 2 Bytes de memoria
32. JB
Realiza un salto si luego de la operacin CMP el primer operando fue menor al segundo. Ocupa 2
Bytes de memoria

33. JBE
Realiza un salto si luego de la operacin CMP el primer operando fue menor o igual al segundo.
Ocupa 2 Bytes de memoria
34. JC
Realiza un salto si la bandera de carry es 1. Ocupa 2 Bytes de memoria

35. JCXZ
Realiza un salto si el registro CX es 0. Ocupa 2 Bytes de memoria.

36. JE
Realiza un salto si luego de la operacin CMP el primer operando fue igual al segundo. Ocupa 2
Bytes de memoria
37. JG
Realiza un salto si luego de la operacin CMP el primer operando fue mayor al segundo. Ocupa 2
Bytes de memoria

38. JGE
Realiza un salto si luego de la operacin CMP el primer operando fue mayor o igual al segundo.
Ocupa 2 Bytes de memoria

39. JL
Realiza un salto si luego de la operacin CMP el primer operando fue menor al segundo. Ocupa 2
Bytes de memoria
40. JLE
Realiza un salto si luego de la operacin CMP el primer operando fue menor o igual al segundo.
Ocupa 2 Bytes de memoria

41. JMP
Realiza un salto sin necesitar de ninguna condicin que se cumpla. Ocupa 2 Bytes de memoria

42. JNA
Realiza un salto si luego de la operacin CMP el primer operando no estaba sobre el segundo.
Ocupa 2 Bytes de memoria
43. JNAE
Realiza un salto si luego de la operacin CMP el primer operando no estaba sobre ni era igual al
segundo. Ocupa 2 Bytes de memoria

44. JNB
Realiza un salto si luego de la operacin CMP el primer operando no era menor al segundo. Ocupa
2 Bytes de memoria

45. JNBE
Realiza un salto si luego de la operacin CMP el primer operando no era menor ni igual al segundo.
Ocupa 2 Bytes de memoria
46. JNC
Realiza un salto si la bandera de carry no es 1. Ocupa 2 Bytes de memoria

47. JNE
Realiza un salto si luego de la operacin CMP el primer operando no es igual al segundo. Ocupa
2 Bytes de memoria

48. JNG
Realiza un salto si luego de la operacin CMP el primer operando no es mayor al segundo. Ocupa
2 Bytes de memoria
49. JNGE
Realiza un salto si luego de la operacin CMP el primer operando no es mayor ni igual al segundo.
Ocupa 2 Bytes de memoria

50. JNL
Realiza un salto si luego de la operacin CMP el primer operando no es menor al segundo. Ocupa
2 Bytes de memoria

51. JNLE
Realiza un salto si luego de la operacin CMP el primer operando no es menor ni igual al segundo.
Ocupa 2 Bytes de memoria
52. JNO
Si no existe overflow, entonces se realiza un salto. Ocupa 2Bytes

53. JNP
Realiza un salto si es que el numero no es par segn las instrucciones CMP, SUB, ADD, TEST,
AND, OR, XOR. Ocupa 2 Bytes

54. JNS
Realiza un salto si es que el numero no tiene signo segn las instrucciones CMP, SUB, ADD,
TEST, AND, OR, XOR. Ocupa 2 Bytes
55. JNZ
Realiza un salto si es que el numero no es igual a otro operador segn las instrucciones CMP, SUB,
ADD, TEST, AND, OR, XOR. Ocupa 2 Bytes

56. JO
Realiza un salto si se presenta un overflow en la memoria. Ocupa 2 Bytes

57. JP
Realiza un salto si es que el numero es par segn las instrucciones CMP, SUB, ADD, TEST, AND,
OR, XOR. Ocupa 2 Bytes
58. JPE
Realiza un salto si es que el numero es par segn las instrucciones CMP, SUB, ADD, TEST, AND,
OR, XOR. Ocupa 2 Bytes

59. JPO
Realiza un salto si es que el numero es impar segn las instrucciones CMP, SUB, ADD, TEST,
AND, OR, XOR. Ocupa 2 Bytes

60. JS
Realiza un salto si es que el numero es negativo, o tiene signo segn las instrucciones CMP, SUB,
ADD, TEST, AND, OR, XOR. Ocupa 2 Bytes
61. JZ
Realiza un salto si es que el numero es cero segn las instrucciones CMP, SUB, ADD, TEST,
AND, OR, XOR. Ocupa 2 Bytes

62. LAH
Carga a AH con el nero de bits de banderas de registro activas. Ocupa 1 Byte.

63. LDS
Carga un dato WORD Doble en el registro indicado y en DS. Ocupa 4 Bytes
64. LEA
Carga una direccin efectiva. Ocupa 3 Bytes en memoria.

65. LES
Carga un dato WORD Doble en el registro indicado y en ES. Ocupa 4 Bytes

66. LODSB
Carga el byte de DS en AL y actualiza el SI. Ocupa 1 Byte en memoria
67. LODSW
Carga el valor de un Word de DS en AX y actualiza el SI. Ocupa 1 Byte en memoria

68. LOOP
Decrementa CX y salta a dicho segmento de cdigo si CX no es 0 an. Ocupa 2 Bytes

.
69. LOOPE
Decrementa CX y salta a dicho segmento de cdigo si CX hasta ser 0 y la bandera de cero se iguale
a 1. Ocupa 2 Bytes
70. LOOPNE
Decrementa CX y salta a dicho segmento de cdigo si CX hasta ser 0 y la bandera de cero se iguale
a 0. Ocupa 2 Bytes

71. LOOPNZ
Decrementa CX y salta a dicho segmento de cdigo para CX hasta ser 0 y la bandera de cero se
iguale a 0. Ocupa 2 Bytes

72. LOOPZ
Decrementa CX y salta a dicho segmento de cdigo para CX hasta ser 0 y la bandera de cero se
iguale a 1. Ocupa 2 Bytes
73. MOV
Escribe y guarda un valor determinado en el registro indicado. Ocupa 3 Bytes

74. MOVSB
Esccribe el valor de SD en ES. Ocupa 1 Byte

75. MOVSW
Escribe el valor de un dato WORD de SD en ES. Ocupa 1 Byte en memoria
76. MUL
Realiza la multiplicacin de un dato con el valor en AL. Ocupa 2 Bytes

77. NEG
Ocupa el complemento a 2 para convertir un nmero a negativo. Ocupa 2 Bytes

78. NOP
No realiza ninguna Operacin. Ocupa 1 Byte en memoria
79. NOT
Similar a la operacin lgica NOT, invierte cada bit de la palabra en el registro. Ocupa 3 Bytes

80. OR
Similar a la operacin lgica OR entre 2 operandos. Ocupa 2 Bytes

81. OUT
Enva a un puerto de salida los datos en AL o AX. Ocupa 2 Bytes de memoria
82. POP
Mueve al registro indicado el valor en el stack con el indicador actual. Ocupa 1 Byte en memoria

83. POPA
Obtiene y escribe todos los valores de los registros DI, SI, BP, SP, BX, DX, CX, AX con los
presentes en la pila. Ocupa 1 Byte

84. POPF
Obtiene las banderas de registro de la pila. Ocupa 1 Byte en memoria.
85. PUSH.
Guarda el dato de 16 bits de la direccin indicada en la pila. Ocupa 1 Byte de memoria

86. PUSHA
Guarda todos los valores de los registros DI, SI, BP, SP, BX, DX, CX, AX presentes, en la pila.
Ocupa 1 Byte

87. PUSHF
Guarda las banderas de registro en la pila. Ocupa 1 Byte en memoria.
88. RCL
Rota el operando 1 a la izquierda mediante la bandera de carry. El numero de rotaciones est dado
por el operando 2. Ocupa 2Bytes

89. RCR
Rota el operando 1 a la derecha segun la bandera de carry. El numero de rotaciones est dado por
el operando 2. Ocupa 2 Bytes

90. REP
Repite las siguientes instrucciones de MOVSB, MOVSW, LODSB, LODSW, STOSB, STOSW
el nmero de veces indicadas en CX. Ocupa 1 Byte de memoria
91. REPE
Repite las siguientes instrucciones de MOVSB, MOVSW, LODSB, LODSW, STOSB, STOSW
el nmero maximo de veces indicadas en CX mientras ZF sea igual a 1. Ocupa 1 Byte de memoria

92. REPNE
Repite las siguientes instrucciones de MOVSB, MOVSW, LODSB, LODSW, STOSB, STOSW
el nmero maximo de veces indicadas en CX mientras ZF sea igual a 0. Ocupa 1 Byte de memoria

93. REPNZ
Repite las siguientes instrucciones de MOVSB, MOVSW, LODSB, LODSW, STOSB, STOSW
el nmero maximo de veces indicadas en CX mientras ZF sea igual a 0. Ocupa 1 Byte de memoria
94. REPZ
Repite las siguientes instrucciones de MOVSB, MOVSW, LODSB, LODSW, STOSB, STOSW
el nmero maximo de veces indicadas en CX mientras ZF sea igual a 1. Ocupa 1 Byte de memoria

95. RET
Retorna de un procedimiento. Ocupa 1 Byte de memoria

96. RETF
Retorna de un procedimiento mas alejado. Ocupa 1 Byte de memoria
97. ROL
Rota un operando a la izquierda el numero que indique el segundo operando. Ocupa 2 Bytes de
memoria

98. ROR
Rota un operando a la derecha el numero que indique el segundo operando. Ocupa 2 Bytes de
memoria

99. SAHF
Almacena en AH un valor indicado por el numero de bits de las banderas de registro.

También podría gustarte