Enrique Galindo Cárdenas
Lenguaje Ensamblador INTRODUCCIÓN
El lenguaje de programación fue creado para hacer posible el entendimiento entre el usuario programador y la computadora; éste lenguaje tiene sus propias características y sintaxis que varían de acuerdo al tipo de lenguaje que se use. En la actualidad usamos un lenguaje de alto nivel que es el más fácil de entend entender, er, pero pero el lengua lenguaje je de interp interpret retaci ación ón de la comput computado adora ra se llama llama “Len “Lengu guaj aje e Máqu Máquin ina” a”,, que que no es más más que que núme número ros s bina binari rios os (1,0 (1,0)) que que dependiendo de su valor, la computadora es capas de detectar los procesos que se pueden realizar.
La defin definic ició ión n del del leng lengua uaje je ensa ensamb mbla lado dorr es que que prop propor orci cion ona a códi código gos s de operación de los mnemónicos para todas las instrucciones de la máquina contenidas en la lista de instrucciones predeterminada, esto quiere decir que cada mnemónico (Palabra Reservada) tiene un equivalente a un conjunto de números binarios, abarcando en total todas las instrucciones posibles que se es capa capas s de real realiz izar ar con con la CPU CPU (Uni (Unida dad d Cent Centra rall de Proc Proces eso) o) de una una computadora o del procesador de un microcontrolador; como consecuencia el lenguaje ensamblador maneja números binarios generalmente organizados en forma de pila debido al teorema de la Máquina de Turing.
Debi Debido do a esta esta cara caract cter erís ístic tica a el leng lengua uaje je ensa ensamb mbla lado dorr es cons consid ider erad ado o el lenguaje más difícil de entender, de aprender y si no se sabe utilizar de forma correcta, el más inseguro porque un mal código podría causar mucho daño a la computadora.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Definiciones LENGUAJE ENSAMBLADOR Como Como se menc mencio ionó nó ante anteri rior orme ment nte e tamb tambié ién n se pued puede e defi defini nirr un leng lengua uaje je ensam ensambla blador dor como como un lengua lenguaje je simból simbólico ico que se utiliz utiliza a para para codific codificar ar los programas origen que se procesan por el ensamblador (*). Cada computadora tiene características de CPU que hacen que un lenguaje ensamblador varíe de acuerdo al tipo de procesador, esto también pasa con los microcontroladores, debido a que su estructura es más simple, tienen menos palabras reservadas, y menos poder de procesamiento y almacenamiento, lo que hace que se derive un lenguaje específico ico para cada tipo de microcontrolador. Anteriormente se tenía un lenguaje ensamblador por cada procesado de cada empr empres esa, a, de igua iguall form forma a ante antes s se usab usaba a más más comú comúnm nmen ente te el “len “lengu guaj aje e máqu máquin ina” a”,, lo que que traí traía a com como cons consec ecue uenc ncia ia un mayor ayor conf conflilict cto o en las las compat compatibi ibilid lidade ades s de los progra programa mas. s. Para Para evitar evitar eso eso y con el auge auge de las microc microcom omput putado adoras ras se estand estandari arizó zó un lengua lenguaje je común común para para la mayor mayoría ía de ellas. Como principal consecuencia se desarrollo un sistema que fuera capas de anal analiz izar ar y simu simular lar este este leng lengua uaje je para para evit evitar ar erro errore res s grav graves es ante antes s de su ejecución, llamado ensamblador (*).
ENSAMBLADOR Los ensambladores son programas que procesan los enunciados del programa orig origen en en prog progra ram ma ensa ensam mblad blador or u los los trad traduc ucen en a leng lengua uaje je máqu máquin ina a guar guardá dánd ndol olos os en arch archiv ivos os que que son son ejec ejecut utad ados os o inte interp rpre reta tado dos s por por un microprocesador o microcontrolador. Una de las principales características de un ensamblador es que permiten que los programas origen se escriban y se editen en una computadora para generar un código ejecutable en otra computadora con el mismo procesador o con uno comp compat atib ible le,, deja dejand ndo o como como cons consec ecue uenc ncia ia un arch archiv ivo o en leng lengua uaje je obje objeto to ejecutable, generalmente llamado *.exe o *.com en el caso de la computadora o *.hex en el caso de los microcontroladores.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Principio de Funcionamiento Consiste en dos etapas, en la primera etapa el programa origen (ASM) se lee para desarrollar una tabla de símbolos ordenados, una vez terminada el archivo objeto se va “ensamblando”, esto quiere decir que se crea con referencia a la tabla; en la segunda etapa se crea el listado del programa origen, teniendo como resultado el ejecutable o el archivo HEX (Hexadecimal). Debido a que los programas que fueron ensamblados sólo contienen números bina binari rios os,, el prog progra rama ma es rela relativ tivam amen ente te pequ pequeñ eño o a comp compar arac ació ión n de un ejecutable compilado en C/C++, JAVA, etc. Y a diferencia de ellos tiene mayor eficiencia y eficacia. El lenguaje ensamblador se puede interpretar de diferentes maneras, se puede programar con estilo de programación estructurada que es l a que más se usa o se puede acoplar con el estilo de programación orientado a objetos, además tiene tiene como como caract caracterí erísti stica ca que que realiz realiza a su funció función n ejecut ejecutand ando o proces proceso o por proceso completo antes de continuar a la siguiente instrucción. Como cualquier compilador, este proceso interpreta y descarta los campos de etiqueta, de código, de operación y de operandos según sea el caso, además se tiene la ventaja de mostrar los posibles errores de sintaxis en el código del programa.
Funciones y Características. Debido a la estructura de funcionamiento de una computadora es esencial manejar registros de memoria para poder realizar todos los procesos, de estos registros existen cuatro de uso general que son muy importantes para cualquier proceso de almacenamiento y operación del programa. Se usan para cálculo y almacenamiento de propósito general. Son utilizados por los programas para realizar cálculos, así como para transferir datos de una posición de memoria a otra, ya que no se puede hacer de forma directa. Es decir, que no podemos transferir un dato de la posición de memoria X a la posición Y sin antes depositar ese dato temporalmente en un registro del procesador. Su aplicación fuera del lenguaje ensamblador es con el uso de gráficos en C y C++ con la librería GRAPHICS.H que a su vez necesita de interrupciones del sistema para su funcionamiento. Estos registros tienen una longitud de 16 bits, pero podemos descomponerlos
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Quedando de la forma siguiente: AX = AH + AL Siendo AX el registro de 16 bits, compuesto por la conjunción (que no la suma) de el registro AH de 8 bits (los 8 bits más significativos o de más a la izquierda) y el registro AL de 8 bits (los 8 bits menos significativos o de más a la derecha). Este registro interviene en las operaciones aritméticas y lógicas, después de una una oper operac ació ión n arro arroja ja un resu result ltad ado, o, tamb tambié ién n se le cono conoce ce como como regi regist stro ro acumulador. El registro AX es el llamado acumulador, hace que muchas operaciones tengan una forma más corta, ya que lo especifican implícitamente. Es decir, que hay operaciones que actúan sobre el registro AX en particular. BX = BH + BL BX se suele utilizar en muchas instrucciones como registro base, sobre todo en transferencias de datos entre memoria y procesador. Se le llama registro base. CX = CH + CL CX es el regis registr tro o cont contad ador or,, much muchas as inst instru rucc ccio ione nes s lo util utiliz izan an para para hace hacer r increm increment entos os o decrem decrement entos os autom automátic áticos, os, para para realiz realizar ar bucles bucles (LOOP) (LOOP) en operación de cadenas (REP) como apuntador, etc. DX = DH + DL DX es el registro de datos, se suele utilizar para operaciones de 32 bits, para alma almace cena narr los los 16 bits bits (o pala palabr bra) a) más más sign signif ific icat ativ ivos os,, se util utiliz iza a para para multiplicación y división junto con AX y en operaciones de entrada y salida de puertos. DL contiene el número de puertos disponibles. Para estos tres registros se aplica lo mismo que para el registro AX. De igual forma existen otros tipos de registros llamados registros de estado, en total son nueve y son indicadores de 1 bit de un registros de 16 bits. Los cuatro bits más significativos están indefinidos, mientras que hay tres bits con valores determinados: los bits 5 y 3 siempre valen cero y el bit 1 siempre vale uno. Que son los siguientes:
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
CF (Carry Flag, bit 0): Si vale 1, indica que hubo "arrastre" (un bit de más) en caso de suma o "préstamo" en caso de resta. Este indicador es usado por instrucciones que suman o restan números que ocupan varios bytes. Las instrucciones de rotación pueden aislar un bit de la memoria o de un registro poniéndolo en el CF. PF (Parity Flag, bit 2): Si vale uno, el resultado tiene paridad par, es decir, un número par de bits a 1. Este Este indica indicador dor se puede puede utiliza utilizarr para para detect detectar ar errore errores s en transm transmisi isione ones. s. AF (Aux (Auxililia iary ry carr carry y Flag Flag,, bit bit 4): 4): Si vale vale 1, indi indica ca que que hubo hubo "arr "arras astr tre" e" o "pré "prést stam amo" o" del del nibb nibble le (cua (cuatr tro o bits bits)) meno menos s sign signif ific icat ativ ivo o al nibb nibble le más más significativo. Este indicador se usa con las instrucciones de ajuste decimal. ZF (Zero Flag, bit 6): Si este indicador vale 1, el resultado de la operación es cero. SF (Sign Flag, bit 7): Refleja el bit más significativo del resultado. Como los números negativos se representan en la notación de complemento a dos, este bit representa el signo: 0 si es positivo, 1 si es negativo. TF (Trap Flag, bit 8): Si vale 1, el procesador procesador está está en modo paso a paso. En este modo, la CPU automáticamente genera una interrupción interna después de cada instrucción, permitiendo inspeccionar los resultados del programa a medida que se ejecuta instrucción por instrucción. IF (Interrupt Flag, bit 9): Si vale 1, la CPU reconoce pedidos de interrupción externas. Si vale 0, no se reconocen tales interrupciones DF (Direction Flag, bit 10): Si vale 1, las instrucciones con cadenas sufrirán "auto-decremento", esto es, se procesarán las cadenas desde las direcciones más altas de memoria hacia las más bajas. Si vale 0, habrá "auto-incremento", lo que quiere decir que las cadenas se procesarán de "izquierda a derecha". OF (Overflow flag, bit 11): Si vale 1, hubo un desborde en una operación aritmética con signo, esto es, un dígito significativo se perdió debido a que tamaño del resultado es mayor que el tamaño del destino.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Aplicaciones Un lenguaje ensamblador ayuda a aprovechar el 100% de la CPU debido a que es una aplicación directa que permite manipular exactamente cualquier función, por eso se aplica a procesos de tiempo real, generalmente en la industria y la manufactura, como por ejemplo en la adquicisión de datos, control de robots, sistemas internos en bancos, aviones, sondas espaciales, barcos, en el cine, videojuegos, graficación y multimedia. Exis Existe ten n apli aplica cac cione iones s espe especi cial ales es para para la medic edicin ina, a, la aero aeroná náut utic ica a y el armamento, y en aplicaciones tan comunes como los sistemas embebidos, como lo son: administración de impresoras, cámaras, autos, juguetes o en el procesamiento de señales, voz e imágenes. Ya que por sus características permite un alto rendimiento y acceso a cualquier recurso de la computadora de forma directa. Algunas de estas características son: 1.- Se puede acceder a cualquier localidad de la memoria RAM sin ninguna restricción. 2.- Se pueden programar virus, debido a que se tiene un acceso total a casi todo el hardware de la l a computadora vía interrupciones de software. 3.- Se pueden programar drivers de cualquier dispositivo. 4.- Se puede acceder directamente a los registros internos del cpu. 5.- Se puede acceder directamente a los dispositivos de entrada y/o salida Para un programador es importante conocerlo porque permite conocer a detalle cómo trabaja la computadora, pero para empezar a programar se necesita saber saber la arquit arquitect ectura ura y el juego juego de instru instrucci ccione ones s del proces procesado ador. r. Como Como la empresa de Intel ha logrado mantenerse a la cabeza de todas las empresas de microp microproc rocesa esador dores es a unific unificado ado el lengua lenguaje je ensamb ensamblad lador or con los siguie siguiente nte mnemónicos:
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Programa EJEMPLO 2 El lenguaje ensamblador también se usa en microcontroladores, cada uno con su propio propio lengu lenguaje aje.. El ejemp ejemplo lo está está hecho hecho para para un microc microcont ontrol rolado adorr PIC 16F84A con su respectiva arquitectura y juego de instrucciones:
List
p=16F84A
DATO1
equ
0x0C
DATO2
equ
0x0D
RESULTADO
equ
0x0E
W
equ
0
f
equ
1
org
0x00
goto
INICIO
movf
DATO1,W
aadwf
DATO2,W
movwf
RESULTADO
INICIO
end
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
EJEMPLO 3 Este ejemplo está completamente desarrollado en lenguaje ensamblador que usa servicios o funciones de MS-DOS ( system calls) para imprimir el mensaje Hola mundo!! en pantalla. STACK
SEGMENT STACK ; Segmento de pila DW 64 DUP (?) ; Define espacio en la pila STACK ENDS DATA SEGMENT ; Segmento de datos SALUDO DB "Hola mundo!!",13,10,"$" ; Cadena DATA ENDS CODE SEGMENT ; Segmento de Codigo ASSUME CS:CODE, DS:DATA, SS:STACK INICIO: ; Punto de entrada al programa MOV AX,DATA ; Pone direccion en AX MOV DS,AX ; Pone la direccion en los registros MOV DX,OFFSET SALUDO ; Obtiene direccion del mensaje MOV AH,09H ; Funcion: Visualizar cadena INT 21H ; Servicio: Funciones alto nivel DOS MOV AH,4CH ; Funcion: Terminar INT 21H CODE ENDS END INICIO ; Marca fin y define INICIO La descripción del programa es como sigue: 1.- Las declaraciones SEGMENT y ENDS definen los segmentos a usar. 2.2.- La vari variab able le SALU SALUDO DO en el segm segmen ento to DATA DATA,, defi define ne la cade cadena na a ser ser desplegada. El signo de dólares al final de la cadena (denominado centinela) es requerido por la función de visualización de la cadena de MS-DOS. La cadena incluye los códigos para carriage-return y line-feed . 3.3.- La etique etiqueta ta START START en el segm segmen ento to de códi código go marca marca el inic inicio io de las las instrucciones del programa. 4.- La declaración DW en el segmento de pila define el espacio para ser usado por el stack del programa.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Bibliografía 1.- http://es.wikipedia.org/wiki/Assembly 2.- http://homepage.mac.com/eravila/asmix862.html 3.- http://fermat.movimage.com/docs/ensamblador/ 4.- http://www.todoprogramas.com http://www.todoprogramas.com/manuales/program /manuales/programacion/ensamblado acion/ensamblador/ r/ 5.- http://homepage.mac.com/eravila/asmix862.html 6.- http://usuarios.lycos.es/patricio/ensam/ensam1.htm 7.- http://www.monografias.com/trabajos14/lenguaje-ensamblador/lenguajeensamblador.shtml 8.- 8086/8088, programación en ensamblador de Jürgen Hegner - 1987 - 425 páginas Translation of the original German edition published: Augsburg : KRS Verlagsgesellschaft, 1987
Ensamblador dor del 80286: : IBM AT y compati compatibles bles 9.- Ensambla de H. Lilen - 1992 - 382 páginas 10.- Guía del programador en ensamblador ensam blador para IBM PC, XT, AT y
compatibles
de Peter Norton, John Socha - 1988 Translation of : Assembly language book for the IBM PC