Mapa C

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 1

Ensamblador y Ligador.

Aunque la sintaxis entre ensambladores es parecida, es necesario mencionar que los


ejemplos de este manual están hechos para las siguientes herramientas:
Turbo Assembler
Turbo Assembler o TASM es un ensamblador desarrollado por Borland el cual además
de permitir ensamblar código MASM (Microsoft Macro Assembler) en su modo de
compatibilidad, es capaz de soportar programación orientada a objetos desde la versión
3.0 y de generar código para 16 o 32 bits.
La característica más importante de Turbo Assembler es que es compatible con
lenguajes de alto nivel, por ejemplo: Turbo Pascal, Turbo Basic, Turbo C, Turbo C++.
Turbo Linker
Saltos.
Los saltos son instrucciones que permiten al programador cambiar el orden de ejecución del programa según sea necesario, dentro de
Turbo Linker o T-Link es el enlazador (ligador) incluido con Turbo Assembler, el cual se ensamblador existen dos tipos de salto principales: condicionales e incondicionales.
encarga de generar el código ejecutable a partir del código objeto generado por TASM. 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.
También se puede contar como un salto incondicional la instrucción CALL, la cual llama una procedimiento y al terminarla devuelve el control
a la línea siguiente de donde se inicio la llamada a procedimiento
Saltos Condicionales:
2.3 Ciclos numéricos. 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
Como en cualquier otro lenguaje de programación, hay ocasiones en las que es necesario hacer que el cumple la condición establecida en el salto, los saltos condicionales son los siguientes:
programa no siga una secuencia lineal, sino que repita varias veces una misma instrucción o bloque de JA (Jump if Above)Salta cuando el valor es superior, su condición es equivalente al salto JNBE (Jump if Not Below or
instrucciones antes de continuar con el resto del programa, es para esto que se utilizan los ciclos.
Existen 5 tipos de ciclos predefinidos en ensamblador, aunque también se pueden crear ciclos personalizados Equal).
por medio de instrucciones de salto las cuales se verán en la sección 2.6 de este manual. JAE (Jump if Above or Equal):
Los ciclos predefinidos de ensamblador son los siguientes: Salta cuando el valor es superior o igual, su condición es equivalente al salto JNB (Jump if Not Below).
LOOP: Comparación y prueba. JB (Jump if Below):
Esta función decrementa el valor del registro contador CX, si el valor contenido en CX es cero ejecuta la
siguiente instrucción, en caso contrario transfiere el control a la ubicación definida por la etiqueta utilizada al Captura básica de cadenas. La comparación y prueba son instrucciones especiales con las que
cuenta el microprocesador, estas son CMP y TEST respectivamente.
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):
momento de declarar el ciclo. Dentro del lenguaje ensamblador no existe el tipo de dato cadena (string en otros lenguajes), por lo
Comparación (CMP): Salta cuando el valor es menor o igual, su condición es equivalente al salto JNA (Jump if Not Above).
LOOPE: que para utilizarla es necesario tratar a las cadenas como un conjunto de caracteres reservados bajo
Esta instrucción compara los dos valores que se le den como JE (Jump if Equal):
Esta función decrementa el valor del registro contador CX, si el valor contenido en CX es cero y ZF el nombre de una sola variable.
parámetros y modifica las banderas de signo (SF), de cero (ZF) y de Salta cuando el valor es igual.
es diferente de uno ejecuta la siguiente instrucción, en caso contrario transfiere el control a la El lenguaje ensamblador cuenta con instrucciones que por su naturaleza sirven para el manejo de
acarreo (CF) según sea necesario. JZ (Jump if Zero):
ubicación definida por la etiqueta utilizada al momento de declarar el ciclo. cadenas, estas son:
Ejemplo: Salta cuando el valor es cero.
LOOPNE: MOVSB:
Esta función decrementa el valor del registro contador CX, si el valor contenido en CX es cero y ZF es CMP ah,10h: Compara el valor almacenado en el registro ah con el valor JNE (Jump if Not Equal):
Mueve un byte desde una localidad de memoria hasta otra. Salta cuando el valor no es igual.
diferente de cero ejecuta la siguiente instrucción, en caso contrario transfiere el control a la ubicación definida 10 hexadecimal.
por la etiqueta utilizada al momento de declarar el ciclo, esta es la operación contraria a loope. MOVSW: JNZ (Jump if Not Zero):
Prueba (TEST):
LOOPZ: Mueve una palabra desde una localidad de memoria hasta otra. Salta cuando el valor no es cero.
Verifica que los valores que se le introduzcan como parámetros sean
Esta función decrementa el valor del registro contador CX, si el valor contenido en CX es cero y ZF LODSB: JG (Jump if Greater):
iguales relizando la operación lógica AND, no almacena ningún resultado
es diferente de uno ejecuta la siguiente instrucción, en caso contrario transfiere el control a la Carga en la parte baja del registro acumulador (AL) el valor de la localidad de memoria determinada Salta cuando el valor es mayor, su condición es equivalente al salto JNLE (Jump if Not Less or Equal).
pero modifica banderas según sea necesario.
ubicación definida por la etiqueta utilizada al momento de declarar el ciclo por DS:SI. JGE (Jump if Greater or Equal):
Ejemplo:
LOOPNZ: LODSW: Salta cuando el valor es mayor o igual, su condición es equivalente al salto JNL (Jump if Not Less).
TEST al, 1: Verifica que el valor almacenado en al sea 1.
Esta función decrementa el valor del registro contador CX, si el valor contenido en CX es cero y ZF Carga en el registro acumulador (AX) el valor de la localidad de memoria determinada por DS:SI. JL (Jump if Less):
es diferente de cero ejecuta la siguiente instrucción, en caso contrario transfiere el control a la Salta cuando el valor es menor, su condición es equivalente al salto JNGE (Jump if Not Greater or Equal).
ubicación definida por la etiqueta utilizada al momento de declarar el ciclo, esta es la operación JLE (Jump if Less or Equal):
contraria a loopz.. Salta cuando el valor es menor o igual, su condición es equivalente al salto JNG (Jump if Not Greater).

También podría gustarte