Este documento describe las herramientas de ensamblador Turbo Assembler y Turbo Linker. Turbo Assembler permite ensamblar código MASM y generar código de 16 o 32 bits, y es compatible con lenguajes de alto nivel como Turbo Pascal y Turbo C++. Turbo Linker es el enlazador incluido con Turbo Assembler que genera el código ejecutable a partir del código objeto producido por Turbo Assembler. El documento también cubre temas como ciclos numéricos, saltos condicionales e incondicionales, y
0 calificaciones0% encontró este documento útil (0 votos)
23 vistas1 página
Este documento describe las herramientas de ensamblador Turbo Assembler y Turbo Linker. Turbo Assembler permite ensamblar código MASM y generar código de 16 o 32 bits, y es compatible con lenguajes de alto nivel como Turbo Pascal y Turbo C++. Turbo Linker es el enlazador incluido con Turbo Assembler que genera el código ejecutable a partir del código objeto producido por Turbo Assembler. El documento también cubre temas como ciclos numéricos, saltos condicionales e incondicionales, y
Este documento describe las herramientas de ensamblador Turbo Assembler y Turbo Linker. Turbo Assembler permite ensamblar código MASM y generar código de 16 o 32 bits, y es compatible con lenguajes de alto nivel como Turbo Pascal y Turbo C++. Turbo Linker es el enlazador incluido con Turbo Assembler que genera el código ejecutable a partir del código objeto producido por Turbo Assembler. El documento también cubre temas como ciclos numéricos, saltos condicionales e incondicionales, y
Este documento describe las herramientas de ensamblador Turbo Assembler y Turbo Linker. Turbo Assembler permite ensamblar código MASM y generar código de 16 o 32 bits, y es compatible con lenguajes de alto nivel como Turbo Pascal y Turbo C++. Turbo Linker es el enlazador incluido con Turbo Assembler que genera el código ejecutable a partir del código objeto producido por Turbo Assembler. El documento también cubre temas como ciclos numéricos, saltos condicionales e incondicionales, y
Descargue como PDF, TXT o lea en línea desde Scribd
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).