Please enable JavaScript.
Coggle requires JavaScript to display documents.
Instrucciones en Ensamblador, Alexis Alvarez Tostado Espinoza - Coggle…
Instrucciones en Ensamblador
Comparación y prueba
Comparación
Esta instrucción compara los dos valores que se le den como parámetros y modifica las banderas de signo (SF), de cero (ZF) y de acarreo (CF) según sea necesario.
Ejemplo
CMP ah,10h: Compara el valor almacenado en el registro ah con el valor 10 hexadecimal.
Prueba (TEST)
Verifica que los valores que se le introduzcan como parámetros sean iguales realizando la operación lógica AND, no almacena ningún resultado pero modifica banderas según sea necesario.
Ejemplo
TEST al, 1: Verifica que el valor almacenado en al sea 1.
Saltos
Los saltos son instrucciones que permiten al programador cambiar el orden de ejecución del programa según sea necesario, dentro de ensamblador existen dos tipos de salto principales: condicionales e incondicionales.
Saltos Incondicionales
Los saltos incondicionales se utilizan mediante la instrucción JMP, la cual transfiere el control a la línea especificada después de la palabra JMP, la cual puede ser un valor directo o una etiqueta.
Ejemplo
Salto: Etiqueta a la que se hará referencia para el salto incondicional.
JMP Salto: Instrucción que indica que el flujo del programa continuara desde la ubicación de la etiqueta Salto.
Saltos Condicionales
Los saltos condicionales transfieren el control del programa a la ubicación que se les dé como parámetro si al hacer una comparación se cumple la condición establecida en el salto.
JA (Jump if Above)
Salta cuando el valor es superior, su condición es equivalente al salto JNBE (Jump if Not Below or Equal).
JAE (Jump if Above or Equal)
Salta cuando el valor es superior o igual, su condición es equivalente al salto JNB (Jump if Not Below).
JB (Jump if Below)
Salta cuando el valor es menor, su condición es equivalente al salto JNAE (Jump if Not Above or Equal).
JBE (Jump if Below or Equal)
Salta cuando el valor es menor o igual, su condición es equivalente al salto JNA (Jump if Not Above).
JE (Jump if Equal)
Salta cuando el valor es igual.
JZ (Jump if Zero)
Salta cuando el valor es cero.
JNE (Jump if Not Equal)
Salta cuando el valor no es igual.
JNZ (Jump if Not Zero)
Salta cuando el valor no es cero.
JG (Jump if Greater)
Salta cuando el valor es mayor, su condición es equivalente al salto JNLE (Jump if Not Less or Equal).
JGE (Jump if Greater or Equal)
Salta cuando el valor es mayor o igual, su condición es equivalente al salto JNL (Jump if Not Less).
JL (Jump if Less)
Salta cuando el valor es menor, su condición es equivalente al salto JNGE (Jump if Not Greater or Equal).
JLE (Jump if Less or Equal)
Salta cuando el valor es menor o igual, su condición es equivalente al salto JNG (Jump if Not Greater).
Ejemplo:
CMP al, bl: Comparación entre el valor almacenado en al y el almacenado en bl.
JG Salto: Instrucción que indica que el flujo del programa continuara desde la ubicación de la etiqueta Salto si el valor de al es mayor al de bl.
Salto: Etiqueta a la que se hará referencia para el salto condicional.
Ciclos condicionales
Dentro de la programación existen ocasiones en la que es necesario ejecutar una misma instrucción un cierto número de veces, el cual no siempre es conocido por el programador o puede cambiar durante la ejecución del programa, para lo que existen los ciclos condicionales, los cuales una vez se cumpla la condición que tienen establecida, dejaran de ejecutarse como ciclo y permitirán que el programa continúe con su flujo normal.
Ejemplo
ciclo: Etiqueta a la que se hará referencia para el ciclo condicional.
INC al: Aumenta en 1 el valor del registro al.
mov al, 0: Asigna el valor cero al registro al.
CMP al, bl : Comparación entre el valor almacenado en al y el almacenado en bl.
JL ciclo: Instrucción que indica que el flujo del programa continuara desde la ubicación de la etiqueta ciclo si el valor de al es menor al de bl.
Incremento y decremento
En ensamblador existen dos instrucciones que cumplen con el propósito de aumentar o reducir el valor contenido dentro de un registro.
INC al: Aumenta en 1 el valor del registro al.
DEC: Reduce en uno el valor contenido dentro del registro que se le dé como parámetro.
INC: Incrementa en uno el valor contenido dentro del registro que se le dé como parámetro.
DEC al: Reduce en 1 el valor del registro al.
Instrucciones aritméticas y lógicas
Instrucciones aritméticas
Dentro de ensamblador se pueden llevar a cabo las 4 instrucciones aritméticas básicas, cada una de ellas cuenta con su propia función:
Instrucción de Resta SUB
Resta el primer operando al segundo y almacena el resultado en el primero.
Ejemplo
SUB al, bl: Resta el valor de AL al de BL y almacena el resultado en AL.
Instrucción de multiplicación MUL
Multiplica el contenido del acumulador por el operando, a diferencia de los métodos anteriores, solo es necesario indicar el valor por el que se multiplicará, ya que el resultado siempre es almacenado en el registro AX.
Ejemplo
Instrucción de Suma ADD
Suma los operandos que se le dan y guarda el resultado en el primer operando.
Ejemplo
ADD al, bl: Suma los valores guardados en los registros al y bl, almacenando el resultado en al.
Instrucción de división DIV
Divide un numero contenido en el acumulador entre el operando fuente, el cociente se guarda en AL o AX y el resto en AH o DX según el operando sea byte o palabra respectivamente.
Ejemplo
AAM: Ajuste ASCII para la división.
DIV bl: Instrucción que divide los valores en ax y bl.
Instrucciones lógicas
Ensamblador cuenta con un grupo de cuatro instrucciones lógicas a nivel de bit, las cuales con excepción de la primera requieren de dos operandos, estas son las siguientes:
AND
Esta instrucción también conocida como producto lógico requiere de dos operandos y su valor será igual a uno cuando los bits que se comparen ambos sean uno.
Ejemplo
AND ax,bx Se aplica el producto lógico a los valores de ax y bx.
OR
La instrucción OR también conocida como suma lógica requiere de dos operandos y su valor será uno si alguno de los bits que compara es uno.
Ejemplo
OR ax,bx Se aplica la suma lógica a los valores de ax y bx.
NOT
La instrucción NOT o negación requiere un solo operando y su función es cambiar el estado de los bits del mismo, es decir, cambiar los ceros por unos y los unos por ceros.
Ejemplo
NOT ax Se aplica la negación al valor del registro ax.
XOR
Agencia Estatal de Jalisco
Ejemplo
XOR ax,bx Se aplica la instrucción XOR a los valores de ax y bx.
Desplazamiento y rotación
Las instrucciones de desplazamiento son cuatro: shl, shr, sar y sal; y su objetivo es desplazar los bits de un operando un determinado número de posiciones a la izquierda o a la derecha. La estructura de los operandos manejados por estas instrucciones y su significado es idéntico para las cuatro instrucciones.
SAL (Shift Arithmetic Left = desplazamiento aritmético a la izquierda)
El objetivo de un desplazamiento aritmético a la izquierda es multiplicar un operando, interpretado con signo, por una potencia de 2.
SHR (Shift Right = desplazamiento a la derecha)
La instrucción shr funciona de la misma forma que shl, pero desplazando los bits a la derecha en lugar de a la izquierda.
Se desplazan a la izquierda los bits del operando destino tantas posiciones como indique el operando fuente.
SAR (Shift Arithmetic Right = desplazamiento aritmético a la derecha)
Esta instrucción desplaza los bits del operando destino a la derecha tantos bits como indique el operando fuente.
Alexis Alvarez Tostado Espinoza