Las instrucciones de máquina son comandos o programas escritos en el código de máquina de una máquina (computadora) que puede reconocer y ejecutar.
- Una instrucción de máquina consta de varios bytes en la memoria que le indican al procesador que realice una operación de máquina.
- El procesador examina las instrucciones de la máquina en la memoria principal una tras otra y realiza una operación de la máquina para cada instrucción de la máquina.
- La colección de instrucciones de máquina en la memoria principal se denomina programa de lenguaje de máquina.
El código de máquina o lenguaje de máquina es un conjunto de instrucciones ejecutadas directamente por la unidad central de procesamiento (CPU) de una computadora. Cada instrucción realiza una tarea muy específica, como una carga, un salto o una operación de ALU en una unidad de datos en un registro o memoria de la CPU. Todo programa ejecutado directamente por una CPU se compone de una serie de tales instrucciones.
El formato general de una instrucción de máquina es
[Etiqueta:] Mnemónico [Operando, Operando] [; Comentarios] |
- Los corchetes indican que un campo es opcional
- La etiqueta es un identificador al que se le asigna la dirección del primer byte de la instrucción en la que aparece. Debe ir seguido de “:”
- La inclusión de espacios es arbitraria, excepto que se debe insertar al menos un espacio; ningún espacio conduciría a una ambigüedad.
- El campo de comentarios comienza con un punto y coma “; ”
Ejemplo:
Aquí: MOV R5,#25H; carga 25H en R5 |
Instrucciones de máquina utilizadas en el microprocesador 8086
1. Instrucciones de transferencia de datos : movimiento, intercambio de carga, entrada, salida.
- MOV: Mover byte o palabra a registro o memoria.
- IN, OUT: Byte de entrada o palabra del puerto, palabra de salida al puerto.
- LEA: Cargar dirección efectiva
- LDS, LES Puntero de carga usando segmento de datos, segmento adicional.
- EMPUJAR, POP: Empuje la palabra en la pila, extraiga la palabra de la pila.
- XCHG: Intercambio de byte o palabra.
- XLAT: Traducir byte usando la tabla de búsqueda.
2. Instrucciones aritméticas : sumar, restar, incrementar, decrementar, convertir byte/palabra y comparar.
- ADD, SUB: Sumar, restar byte o palabra
- ADC, SBB: Sumar, restar byte o palabra y llevar (pedir prestado).
- INC, DEC: Incremento, decremento byte o palabra.
- NEG: Byte o palabra negada (complemento a dos).
- CMP: Comparar byte o palabra (restar sin almacenar).
- MUL, DIV: Multiplicar, dividir byte o palabra (sin signo).
- IMUL, IDIV: Multiplicar entero, dividir byte o palabra (con signo)
- CBW, CWD: Convertir byte a palabra, palabra a palabra doble
- AAA, AAS, AAM, AAD: ajuste ASCII para agregar, sub, mul, div.
- DAA, DAS: ajuste decimal para suma, resta (números BCD)
3. Instrucciones lógicas : Y, O, O exclusivo, cambio/rotación y prueba
- NOT: NOT lógico de byte o palabra (complemento a uno)
- AND: AND lógico de byte o palabra
- OR: OR lógico de byte o palabra.
- XOR: OR exclusivo lógico de byte o palabra
- TEST: Byte o palabra de prueba (Y sin almacenar).
- SHL, SHR: Desplazamiento lógico, instrucción de rotación, desplazamiento a la izquierda, a la derecha, ¿byte o palabra? por 1 o CL
- SAL, SAR: ¿Desplazamiento aritmético a la izquierda, a la derecha, byte o palabra? por 1 o CL
- ROL, ROR: ¿Rotar byte o palabra a la izquierda, a la derecha? por 1 o CL.
- RCL, RCR: ¿Girar a la izquierda, a la derecha a través del byte de transporte o la palabra? por 1 o CL.
- Instrucción de manipulación de strings : cargar, almacenar, mover, comparar y buscar bytes/palabras
- MOVS: Mover byte o string de palabras
- MOVSB, MOVSW: Mover byte, string de palabras.
- CMPS: Compara string de bytes o palabras.
- SCAS S: string de bytes o palabras (en comparación con A o AX)
- LODS, STOS: carga, almacena byte o string de palabras en AL.
5. Instrucciones de transferencia de control : condicional, incondicional, subrutina de llamada y retorno de subrutina.
- JMP: Salto incondicional. Incluye transferencia de bucle e instrucciones de subrutina e interrupción.
- JNZ: saltar hasta que el valor del contador disminuya a cero. Ejecuta el ciclo hasta que el valor almacenado en CX se convierte en cero
6. Instrucciones de control de bucle-
- BUCLE: Bucle incondicional, cuenta en CX, salto corto a la dirección de destino.
- LOOPE (LOOPZ): Bucle si es igual (cero), cuenta en CX, salto corto a la dirección de destino.
- LOOPNE (LOOPNZ): bucle si no es igual (no cero), cuenta en CX, salto corto a la dirección de destino.
- JCXZ: salta si CX es igual a cero (usado para saltar código en bucle).
- Instrucciones de subrutina e interrupción-
- CALL, RET: Llamada, retorno de procedimiento (dentro o fuera del segmento actual).
- INT, INTO: Interrupción de software, interrupción si se desborda. IRET: Retorno de interrupción.
7. Instrucciones de control del procesador-
Manipulación de banderas:
- STC, CLC, CMC: Establecido, borrado, indicador de acarreo complementario.
- STD, CLD: Establecer, bandera de dirección clara. STI, CLI: Establecer, bandera de activación de interrupción clara.
- PUSHF, POPF: empujar banderas a la pila, sacar banderas de la pila.
Ejemplo de pregunta GATE
Considere la secuencia de instrucciones de la máquina dada a continuación:
MUL R5, R0, R1 DIV R6, R2, R3 ADD R7, R5, R6 SUB R8, R7, R4
En la secuencia anterior, R0 a R8 son registros de propósito general. En las instrucciones mostradas, el primer registro almacena el resultado de la operación realizada en el segundo y tercer registro. Esta secuencia de instrucciones se va a ejecutar en un procesador de instrucciones segmentado con las siguientes 4 etapas: (1) Obtención y decodificación de instrucciones (IF), (2) Obtención de operandos (OF), (3) Ejecución de operaciones (PO) y (4 ) Escriba de nuevo el Resultado (WB). Las etapas IF, OF y WB toman 1 ciclo de reloj cada una para cualquier instrucción. La etapa PO toma 1 ciclo de reloj para la instrucción ADD o SUB, 3 ciclos de reloj para la instrucción MUL y 5 ciclos de reloj para la instrucción DIV. El procesador segmentado utiliza el reenvío de operandos desde la etapa PO a la etapa OF. El número de ciclos de reloj necesarios para la ejecución de la secuencia de instrucciones anterior es ___________
(A)11
(B) 12
(C) 13
(D) 14
Respuesta: (C)
Explicación:
1 2 3 4 5 6 7 8 9 10 11 12 13 IF OF PO PO PO WB IF OF PO PO PO PO PO WB IF OF PO WB IF OF PO WB
Artículo aportado por Pooja Taneja. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA