Upload
cesar-saucedo
View
226
Download
0
Embed Size (px)
Citation preview
7/29/2019 50747192 Manual de Ensamblador Tasm
1/17
7/29/2019 50747192 Manual de Ensamblador Tasm
2/17
INTRODUCCION
El documento que est visualizando tiene la funcin primordial de introducirlo a la
programacin en lenguaje Ensamblador, y est pensado en aquellas personas que nunca
han trabajado con este lenguaje y probablemente con ningn otro.
El tutorial se considera como una facilidad ya que el ensamblador basa su funcionamiento
en los recursos internos del procesador, los ejemplos descritos no son compatibles con
ninguna otra arquitectura.
Se estructura la informacin en forma de unidades para permitir el fcil acceso a cada uno
de los tpicos y facilitar el seguimiento del tutorial.
En la seccin introductoria se mencionan algunos de los conceptos elementales acerca de
los sistemas de cmputo as como del ensamblador mismo, y contina con el tutorial
propiamente dicho.
DEFINICIONES BASICAS
El lenguaje ensamblador, es un lenguaje de programacin de bajo nivel para los computadores,
microprocesadores, micro controladores, y otros circuitos integrados programables. Implementa
una representacin simblica de los cdigos de mquina binarios y otras constantes necesarias
para programar una arquitectura dada de CPU y constituye la representacin ms directa del
cdigo mquina especfico para cada arquitectura legible por un programador. Esta
representacin es usualmente definida por el fabricante de hardware, y est basada en los
mnemnicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del
procesador, las posiciones de memoria, y otras caractersticas del lenguaje. Un lenguaje
ensamblador es por lo tanto especfico a cierta arquitectura de computador fsica (o virtual). Esto
est en contraste con la mayora de los lenguajes de programacin de alto nivel, que, idealmente
son portables.
Un programa utilitario llamado ensamblador es usado para traducir sentencias del lenguaje
ensamblador al cdigo de mquina del computador objetivo. El ensamblador realiza una
traduccin ms o menos isomorfa (un mapeo de uno a uno) desde las sentencias mnemnicas a
las instrucciones y datos de mquina. Esto est en contraste con los lenguajes de alto nivel, en loscuales una sola declaracin generalmente da lugar a muchas instrucciones de mquina.
Muchos sofisticados ensambladores ofrecen mecanismos adicionales para facilitar el desarrollo
del programa, controlar el proceso de ensamblaje, y la ayuda de depuracin. Particularmente, la
mayora de los ensambladores modernos incluyen una facilidad de macro (descrita ms abajo), y
son llamados macro ensambladores.
7/29/2019 50747192 Manual de Ensamblador Tasm
3/17
Fue usado principalmente en los inicios del desarrollo de software, cuando an no se contaba con
potentes lenguajes de alto nivel y los recursos eran limitados. Actualmente se utiliza con
frecuencia en ambientes acadmicos y de investigacin, especialmente cuando se requiere la
manipulacin directa de hardware, altos rendimientos, o un uso de recursos controlado y
reducido.
Muchos dispositivos programables (como el micro controlador) an cuentan con el ensamblador
como la nica manera de ser manipulados.
LENGUAJE DE MQUINA
Lenguaje de mquina es el sistema de cdigos directamente interpretable por un circuito micro
programable, como el microprocesador de una computadora o el micro controlador de un
autmata (un PLC) . Este lenguaje est compuesto por un conjunto de instrucciones que
determinan acciones a ser tomadas por la mquina. Un programa de computadora consiste en una
cadena de estas instrucciones de lenguaje de mquina (ms los datos). Estas instrucciones sonnormalmente ejecutadas en secuencia, con eventuales cambios de flujo causados por el propio
programa o eventos externos. El lenguaje de mquina es especfico de cada mquina o
arquitectura de la mquina, aunque el conjunto de instrucciones disponibles pueda ser similar
entre ellas.
LENGUAJE ENSAMBLADOR
El lenguaje ensamblador, es un lenguaje de programacin de bajo nivel para los computadores,
microprocesadores, microcontroladores, y otros circuitos integrados programables. Implementa
una representacin simblica de los cdigos de mquina binarios y otras constantes necesarias
para programar una arquitectura dada de CPU y constituye la representacin ms directa del
cdigo mquina especfico para cada arquitectura legible por un programador. Esta
representacin es usualmente definida por el fabricante de hardware, y est basada en los
mnemnicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del
procesador, las posiciones de memoria, y otras caractersticas del lenguaje. Un lenguaje
ensamblador es por lo tanto especfico a cierta arquitectura de computador fsica (o virtual). Esto
est en contraste con la mayora de los lenguajes de programacin de alto nivel, que, idealmente
son portables.
Un programa utilitario llamado ensamblador es usado para traducir sentencias del lenguaje
ensamblador al cdigo de mquina del computador objetivo. El ensamblador realiza una
traduccin ms o menos isomorfa (un mapeo de uno a uno) desde las sentencias mnemnicas a
las instrucciones y datos de mquina. Esto est en contraste con los lenguajes de alto nivel, en los
cuales una sola declaracin generalmente da lugar a muchas instrucciones de mquina.
7/29/2019 50747192 Manual de Ensamblador Tasm
4/17
PROCESAMIENTO DE ENSAMBLADO
Este ensamblador es de dos pasadas.Durante la primera pasada, el programa origen se lee para desarrollar la tabla de smbolos.
Durante la segunda pasada el archivo objeto se crea (ensamblado) con referencia a la tabla
desarrollada en la primera pasada.
Durante la segunda pasada se crea el listado del programa origen.
Cada enunciado origen se procesa completamente antes de que el enunciado siguiente se lea.
A medida que el enunciado se procesa el ensamblador examina los campos de etiqueta, de cdigo deoperacin y de operados.
La tabla de cdigos de operacin se revisa para encontrar un cdigo operacional similar.
Durante el procesamiento de un mnemnico correspondiente a un cdigo de operacin normal, el
cdigo mquina normal se inserta en el archivo objetivo.
La accin buscada por una directriz del ensamblador ocurre durante el procesamiento de dichadirectriz.
Cualquier error que detecta el ensamblador se muestra justamente antes de la lnea que contienedicho error.
An y cuando no se desee producir un listado origen, los errores se despliegan para indicar que elprocesamiento de ensamblado no se llev a cabo de manera normal.
VENTAJAS DEL ENSAMBLADOR
La primera razn para trabajar con ensamblador es que proporciona la oportunidad de
conocer ms a fondo la operacin de su PC, lo que permite el desarrollo de software de
una manera ms consistente.
La segunda razn es el control total de la PC que se tiene con el uso del mismo.
Otra razn es que los programas de ensamblador son ms rpidos, ms compactos y
tienen mayor capacidad que los creados en otros lenguajes.
Por ltimo el ensamblador permite una optimizacin ideal en los programas tanto en su
tamao como en su ejecucin.
7/29/2019 50747192 Manual de Ensamblador Tasm
5/17
ESTRUCTURA DE UN PROGRAMA
La estructura de un programa est conectada con:
Los ficheros de cdigo fuente llevarn la extensin *.ASM
Los ficheros de listado llevarn la extensin *.LST
Los ficheros de cdigo objeto llevarn la extensin *.OB]
Los ficheros de errores llevarn la extensin *.ERR
Los ficheros ejecutables en formato Intel Hex llevarn la extensin *.HEX
Comentario descriptivo del programa (utilizar una cabecera estandarizada).
Definir el micro controlador que se usar (con las directivas LIST e INCLUDE).
Introducir las opciones de compilacin (que sern vistas ms adelante) (opcional).
Establecer las constantes que se usarn (con la directiva EQU).
Reservar espacios de memoria (directiva RES) (si es necesario).
Configurar los puertos.
Desarrollar el programa con comentarios, en lo posible explicando cada lnea de cdigo.
Los mnemnicos escritos en minscula y las constantes y variables en mayscula hacen
que el cdigo escrito sea ms visible.
Colocar las rutinas en el mismo sitio, todas contiguas.
Dibujar diagramas de flujo o escribir seudocdigo.
7/29/2019 50747192 Manual de Ensamblador Tasm
6/17
EJEMPLO 1: ESTRUCTURA DE UN PROGRAMA muy simple:
EJEMPLO 2: POSICION DE LOS ELEMENTOS DEL CODIGO
Etiquetas. Las etiquetas se rigen por las siguientes normas:
7/29/2019 50747192 Manual de Ensamblador Tasm
7/17
Debe situarse en la primera columna.
Debe contener nicamente caracteres alfanumricos.
El mximo de caracteres es de 31.
Operacin. En esta columna se situarn las instrucciones. El campo del cdigo de
operacin es el nico que nunca puede estar vaco; ste siempre contiene una
instruccin o una directiva del ensamblador.
Operandos El campo de operandos o de direccin puede contener una direccin o
un dato, o puede estar en blanco. Normalmente contendr registroso literales con
los que se operar (f, l ok , b y w).
Comentario. El campo del comentario o de etiquetas es opcional. Aqu se situar
cualquier comentario personalizado que deseemos. Estos son tiles para saber qu
hace un programa sin tener que descifrar el cdigo entero. El compilador
(ensamblador) ignorar todo texto ms all del carcter punto y coma ";".
Los comentarios generalmente se sitan en la cuarta columna para describir la
accin de una lnea de cdigo, pero pueden situarse en cualquier parte de
programa para describir cualquier otro evento, siempre que estn despus del
carcter ";" (semiculto en ingls).
Delimitadores (separacin entre campos)
Los campos van separados slo con espacios y/o tabulaciones. No agregue nunca
otros caracteres (comas, puntos, etc.)
No utilice espacios extra, particularmente despus de comas que separan
operandos.(Ej.: movlw 5, w )
No use caracteres delimitadores (espacios y tabulaciones) en nombres o etiquetas.
7/29/2019 50747192 Manual de Ensamblador Tasm
8/17
ESTRUCTURA DE UN LENGUAJE ENSAMBLADOR
CAMPOS DE UNA INSTRUCCIN EN ENSAMBLADOR
Etiqueta
Identifica la lnea en la cual se encuentra.
Se asocia a la direccin en la cual se encuentra la instruccin o el dato, o a la constante definida.
Recomendaciones
Utilizar slo letras o nmeros (comenzar por una letra).
Colocar la primera letra de la etiqueta en el primer carcter de la lnea.
Nemotcnico
Identifica:
Un cdigo de operacin del lenguaje
Una pseudoinstruccin
*Campo de operandos
Identifica los operandos que intervienen en la instruccin o pseudoinstruccin.
Tipos de operandos:
Constantes
Numricas: decimales (D), binarias (%,B), octales (O,@,Q,C),
Hexadecimales (H,$).
Alfabticas: entre comillas.
Smbolos
Predefinidos: registros, contador de direccin de ensamblado.
Implcitos: etiquetas de direccin.
Explcitos: mediante pseudoinstrucciones.
Expresiones
Comentarios
Indicaciones para una mejor comprensin del programa ensamblador.
7/29/2019 50747192 Manual de Ensamblador Tasm
9/17
Pueden comenzar con el smbolo ;.
Estructura y Tecnologa de Computadores I
Estructura de un lenguaje ensamblador -3-
PSEUDOINSTRUCCIONES
Manipulacin del contador de direccin de ensamblado
Indica la direccin a partir de la cual se localizan los datos o instrucciones acontinuacin.
Ej. : ORG operando
Definicin de smbolos
Da un valor a un smbolo.
Ej.: ETIQEQU expresin
Reserva de espacio en memoria (definicin de variables)
Con valor inicial: reserva espacio para los datos indicados en la lista deexpresiones, y les pone los
valores iniciales indicados (tamao de cada dato:S=B,W L).
Ej. : ETIQDC.S expr1, expr2,,exprN
Sin valor inicial: reserva espacio para tantas variables como se indica en laexpresin (tamao de cada
dato: S=B,W L).
Ej.: ETIQDS.S expresin
Control de traduccin
Marca el final del programa fuente
Ej.: END
Almacenamiento en posicin par
Hace que el siguiente objeto se almacene a partir de la prxima posicin dememoria con direccin par.
Ej.: EVEN
Enlace entre programas
Indicacin de smbolos externos: EXT, REF, XREF, EXTERNAL.
Indicacin de smbolos exportables: ENT, DEF, XDEF, PUBLIC.
7/29/2019 50747192 Manual de Ensamblador Tasm
10/17
Acciones de ensamblado condicional
Incluyen en el ensamblado o no grupos de instrucciones del programa fuente.
Ej.: IFELSE ENDIF
Ejecucin de listados e informes
Ttulo para la cabeceras: TITLE, NAME.
Salto de pgina: PAGE, SPAGE.
Impresin u omisin de parte del programa fuente: LIST, NOLIST.
Inclusin de la tabla de smbolos: SYMBOL, TABLE.
INTRODUCCION BASICA DEL LENGUAJE ENSAMBLADOR
Instrucciones lgicas. Son utilizadas para realizar operaciones lgicas sobre los
operando.
AND
Propsito: Realiza la conjuncin de los operandos bit por bit.
Sintaxis: AND destino, fuente
Con esta instruccin se lleva a cabo la operacin "y" lgica de los dos operando.
El resultado de la operacin se almacena en el operando destino.
NEG
Propsito: Genera el complemento a 2
Sintaxis: NEG destino
Esta instruccin genera el complemento a 2 del operando destino y lo almacena
en este mismo operando. Por ejemplo, si AX guarda el valor de 1234H,
entonces:
NEG AX
Nos dejara almacenado en el registro AX el valor EDCCH.
7/29/2019 50747192 Manual de Ensamblador Tasm
11/17
NOT
Propsito: Lleva a cabo la negacin bit por bit del operando destino.
Sintaxis: NOT destino
El resultado se guarda en el mismo operando destino.
OR
Propsito: OR inclusivo lgico
Sintaxis: OR destino, fuente
La instruccin OR lleva a cabo, bit por bit, la disyuncin inclusiva lgica de los
dos operados.
TEST
Propsito: Comparar lgicamente los operandos
Sintaxis: TEST destino, fuente
Realiza una conjuncin, bit por bit, de los operandos, pero a diferencia de AND
esta instruccin no coloca el resultado en el operando destino, solo tiene efecto
sobre el estado de las banderas.
XOR
Propsito: OR exclusivo
Sintaxis: XOR destino, fuente
Su funcin es efectuar bit por bit la disyuncin exclusiva lgica de los dos
operandos.Instrucciones aritmticas. Se usan para realizar operaciones aritmticas sobre
los operando.
ADC
7/29/2019 50747192 Manual de Ensamblador Tasm
12/17
Propsito: Adicin con acarreo.
Sintaxis: ADC destino, fuente
Lleva a cabo la suma de dos operandos y suma uno al resultado en caso de que
la bandera CF est activada, esto es, en caso de que exista acarreo.
El resultado se guarda en el operando destino.
ADD
Propsito: Adicin de los operandos.
Sintaxis: ADD destino, fuente
Suma los dos operandos y guarda el resultado en el operando destino.
DIV
Propsito: Divisin sin signo
Sintaxis: DIV fuente
El divisor puede ser un byte o palabra y es el operando que se le da a la
instruccin.
Si el divisor es de 8 bits se toma como dividendo el registro de 16 bits AX y si el
divisor es de 16 bits se tomara como dividendo el registro par DX: AX, tomando
como palabra alta DX y como baja AX.
Si el divisor fue un byte el cociente se almacena en el registro AL y el residuo en
AH, si fue una palabra el cociente se guarda en AX y el residuo en DX.
IDIV
Propsito: Divisin con signo
Sintaxis: IDIV fuente
Consiste bsicamente en lo mismo que la instruccin DIV, solo que esta ltima
realiza la operacin con signo.
7/29/2019 50747192 Manual de Ensamblador Tasm
13/17
Para sus resultados utiliza los mismos registros que la instruccin DIV.
MUL
Propsito: Multiplicacin sin signo
Sintaxis:MUL fuente
El ensamblador asume que el multiplicando ser del mismo tamao que el del
multiplicador, por lo tanto multiplica el valor almacenado en el registro que se
le da como operando por el que se encuentre contenido en AH si el
multiplicador es de 8 bits o por AX si el multiplicador es de 16 bits.
Cuando se realiza una multiplicacin con valores de 8 bits el resultado se
almacena en el registro AX y cuando la multiplicacin es con valores de 16 bits elresultado se almacena en el registro par DX: AX.
IMUL
Propsito: Multiplicacin de dos enteros con signo.
Sintaxis: IMUL fuente
Este comando hace lo mismo que el anterior, solo que si toma en cuenta los
signos de las cantidades que se multiplican.
Los resultados se guardan en los mismos registros que en la instruccin MUL.
SBB
Propsito: Substraccin con acarreo
Sintaxis: SBB destino, fuente
Esta instruccin resta los operandos y resta uno al resultado si CF est activada.El operando fuente siempre se resta del destino.
Este tipo de substraccin se utiliza cuando se trabaja con cantidades de 32 bits.
SUB
7/29/2019 50747192 Manual de Ensamblador Tasm
14/17
Propsito: Substraccin
Sintaxis: SUB destino, fuente
Resta el operando fuente del destino.
EJERCICIOS:
SUMA, RESTA, MULTIPLICACION, DIVISION.
SUMAR NUMEROS EN LENGUAJE ENSAMBLOR
.modelsmall
.stack
.datavar1 db ?.code.startup
mov ah,01h
int 21h
sub al,30hmov var1,al
mov ah,01hint 21hsub al,30h
7/29/2019 50747192 Manual de Ensamblador Tasm
15/17
add al,var1
movdl,aladd dl,30hmov ah,02hint 21h
.exitEnd
RESTAR NUMEROS EN LENGUAJE ENSAMBLADOR
.modelsmall
.stack
.datavar1 db ?.code.startupmov ah,01hint 21hsub al,30h
mov var1,al
mov ah,01hint 21hsub al,30hsub al,var1movdl,aladd dl,30hmov ah,02h
7/29/2019 50747192 Manual de Ensamblador Tasm
16/17
int 21h.exitend
MULTIPLICACION DE LENGUAJE ENSAMBLADOR
.model small
.stack
.data
var1 db ?.code.startup
mov ah,01hint 21hsub al,30hmov var1,al
mov ah,01hint 21hsub al,30hmul byte ptr [var1]
movdl,aladd dl,30hmov ah,02hint 21h
.exitEnd
7/29/2019 50747192 Manual de Ensamblador Tasm
17/17
DIVISION DE LENGUAJE ENSAMBLADOR
invokewrite, addr num1;mensaje delprimer valor
call leer ;lee unnumeromovEbx,numero ;muevoala bl
invokewrite, addrsaltinvokewrite, addr num2;mensaje delsegundo valor
call leer ;lee unnumeromovEax,EbxmovEbx,numerodiv Ebx ;sumo bl/almovnumero,Eax ;respaldomovEbx,Edx
invokewrite, addrsaltinvokewrite, addr res;mensajedelresultado
call mostrar;muestraelresultado
invokewrite, addrresi;mensaje de residuo
movnumero,Ebxcall mostrar;muestraelresiduo
callreadc;esperoa que presionetecla
jmp repite
LINKOGRAFIA
http://es.wikipedia.org/wiki/Compilador
http://usuarios.multimania.es/patricio/ensam/ensam1.htm
http://www.pro-gramas.com/scripts/Calculadora-de-32bits-suma,-resta,-multiplica,-
divide-en-ensamblador-43-26.html
http://www.monografias.com/trabajos76/estructura-programa-ensamblador/estructura-
programa-ensamblador.shtml