Vous êtes sur la page 1sur 7

Binario: 10110000 01100001 (Hexadecimal: 0xb061)

LENGUAJE ENSAMBLADOR CON TURBO ASSEMBLER (TASM) La representación equivalente en ensamblador es más fácil de recordar: mov al, 061h
Esta instrucción significa:
MICROPROGRAMACION Mueva el valor hexadecimal 61 (97 decimal) al registro "al".
El mnemónico "mov" es un código de operación u "opcode", elegido por los diseñadores de la
INTRODUCCIÓN colección de instrucciones para abreviar "move" (mover).- El opcode es seguido por una lista de
argumentos o parámetros, completando una instrucción de ensamblador típica.
El lenguaje ensamblador es un tipo de lenguaje de bajo nivel, se llama así porque está muy cercano al La transformación del lenguaje ensamblador en código máquina la realiza un programa ensamblador, y
hardware del ordenador. Es por ello de el lenguaje ensamblador asigna una abreviatura a cada la traducción inversa la puede efectuar un desensamblador. A diferencia de los lenguajes de alto nivel,
instrucción en binario (código máquina), de esta forma es más fácil recordar y más difícil equivocarse aquí hay usualmente una correspondencia 1 a 1 entre las instrucciones simples del ensamblador y el
con las instrucciones o abreviaturas. lenguaje máquina. Sin embargo, en algunos casos, un ensamblador puede proveer "pseudo
Una desventaja es que con este lenguaje sigue siendo necesario conocer muy bien el hardware del instrucciones" que se expanden en un código de máquina más extenso a fin de proveer la funcionalidad
ordenador. En otras palabras es necesario conocer a fondo la arquitectura de la máquina para la que se necesaria. Por ejemplo, para un código máquina condicional como
va a programar. "si X mayor o igual que", un ensamblador puede utilizar una pseudoinstrucción al grupo "haga si menor
Fue usado ampliamente en el pasado para el desarrollo de software, pero actualmente sólo se utiliza en que", y "si = 0" sobre el resultado de la condición anterior. Los ensambladores más completos también
contadas ocasiones, especialmente cuando se requiere la manipulación directa del hardware o se proveen un rico lenguaje de macros que se utiliza para generar código más complejo y secuencias de
pretenden rendimientos inusuales de los equipos. datos.
Este documento es una guía para lograr conocer la estructura básica de un programa en Lenguaje Cada arquitectura de computadoras tiene su propio lenguaje de máquina, y en consecuencia su propio
Ensamblador utilizando Tasm. Además de esto se dará una guía para la instalación de Borland Turbo lenguaje ensamblador. Los ordenadores difieren en el tipo y número de operaciones que soportan;
Assembler 5.0, y la forma de utilizarlo. también pueden tener diferente cantidad de registros, y distinta representación de los tipos de datos en
memoria. Aunque la mayoría de las computadoras son capaces de cumplir esencialmente las mismas
funciones, la forma en que lo hacen difiere, y los respectivos lenguajes ensambladores reflejan tal
OBJETIVOS diferencia.
Pueden existir múltiples conjuntos de mnemónicos o sintaxis de ensamblador para un mismo conjunto
GENERAL de instrucciones, instanciados típicamente en diferentes programas ensamblador. En estos casos, la
• Conocer la estructura básica de un programa en Lenguaje Ensamblador utilizando Tasm. alternativa más popular es la provista por los fabricantes, y usada en los manuales del programa.

ESPECÍFICOS ESTRUCTURA DE UN PROGRAMA:


• Realizar la instalación adecuada de Borland Turbo Assembler 5.0. La estructura de un programa en lenguaje ensamblador para el microprocesador 8088, puede ser visto
como una colección de segmentos.
• Desarrollo de un programa básico en lenguaje ensamblador usando el tasm 5.0.

LENGUAJE ENSAMBLADOR
HISTORIA
Los lenguajes de computadoras toman diferentes formas; los de las primeras computadoras, como la
ENIAC y la EDSAC, se componían en el lenguaje real de las máquinas mismas. La dificultad de
programar las máquinas de esta manera limitaba drásticamente su utilidad y proporcionaba un fuerte
incentivo para que se desarrollaran lenguajes de programación más orientados hacia la expresión de
soluciones con la notación de los problemas mismos.
Los primeros lenguajes de programación se conocieron como Lenguajes Ensambladores, un ejemplo
es: TRANSCODE, desarrollado para la computadora FERUT. En los lenguajes ensambladores se
define un código especial llamado mnemónico para cada una de las operaciones de la máquina y se
El programa básico de lenguaje ensamblador debe tener al menos dos segmentos:
introduce una notación especial para especificar el dato con el cual debe realizarse la operación.
• Segmento de Pila.
DEFINICIÓN • Segmento de código.
Un programa escrito en lenguaje ensamblador consiste en una serie de instrucciones que corresponden
al flujo de órdenes ejecutables que pueden ser cargadas en la memoria de una computadora. Por QUE SON LAS INSTRUCCIONES:
ejemplo, un procesador x86 puede ejecutar la siguiente instrucción binaria como se expresa en código El set de instrucciones de un microprocesador es el set de entradas binarias que producen acciones
maquina: definidas durante un ciclo de instrucción. Un set de instrucciones es para el microprocesador lo mismo

1
que una tabla de verdad es para una compuerta lógica, un registro de desplazamiento o un circuito 2- Colocar las rutinas en el mismo sitio, todas contiguas.
sumador. 3- Dibujar diagramas de flujo o escribir seudocódigo.
Por supuesto, las acciones que realiza un microprocesador con cada instrucción, son más complejas que
las que realizan los dispositivos y compuertas antes mencionados. Mnemónicos (códigos de operación):
INSTRUCCIONES BINARIAS: La tarea principal del assembler es la traducción de los códigos de operación en mnemónico en sus
Una instrucción es un patrón de dígitos binarios el cual debe estar a disposición del microprocesador en equivalentes binarios.
el tiempo y forma que éste lo requiera. El assembler realiza ésta tarea usando una tabla como si lo haríamos “a mano”.
Por ejemplo, cuando un micro controlador PIC16C5X recibe el patrón binario de 12 bits El assembler debe hacer algo más que traducir los códigos de operación. También debe determinar
„000010000000‟ en el momento adecuado, significa: cuantos operandos requiere la instrucción y de que tipo. Esto es un poco complejo; algunas
“CLEAR (borrar o poner a cero) EL REGISTRO W” instrucciones (como clrw) no tienen operandos, otras (como sumas o saltos) tienen una, mientras que
otras (manipulación de bits o skips) requieren dos.
VENTAJAS
• Máximo rendimiento: máxima velocidad y mínimo tamaño } DIRECTIVAS:
Algunas instrucciones del lenguaje assembler no se traducen directamente a instrucciones del lenguaje
• Puede explotar al máximo el CPU
máquina. Estas instrucciones son directivas para el assembler; éstas asignan al programa ciertas áreas
• Acceso a cualquier recurso de la computadora de memoria, definen símbolos, designan áreas de RAM para almacenamiento de datos temporales,
• Ayuda a conocer a detalle cómo trabaja la computadora colocan tablas o datos constantes en memoria y permiten referencias a otros programas.
Las directivas se utilizan como comandos escritos en el código fuente para realizar un control directo o
ahorrar tiempo a la hora de ensamblar. El resultado de incorporar directivas se puede ver en el fichero
Desventajas *.LST, después de ensamblar el programa.
• El programa sólo corre en un CPU Para usar éstas directivas o pseudo-operandos, el programador las coloca en el campo del código de
• Es difícil llegar a ser programador experto operación, y, si lo requiere la directiva, una dirección o dato en el campo de dirección.
• Es difícil escribir programas grandes y complejos Las directivas más comunes son:
• Es difícil depurar y dar mantenimiento a los programas • EQU (Equate)
• Un error puede provocar que falle el equipo • ORG (Origin)
• DEFB (Define Byte)
Convenciones en la escritura del código fuente • DEFW (Define Word)
Para hacer la tarea del programador más grata, se usan algunas convenciones. Cada uno puede adoptar • END (fin del código fuente)
las que más le agraden y ayuden para ser más productivo. En general, las convenciones son cualquier
acción que facilita la
revisión y comprensión de un programa, especialmente el que uno mismo ha escrito cuando tiene que EQU (Equate - Equivalente):
revisarlo algunos meses después. La directiva EQU permite al programador igualar nombres a datos o direcciones. Esta pseudo-
Comentamos algunas convenciones que usaremos: operación se nota EQU. Los nombres utilizados se refieren generalmente a direcciones de dispositivos,
• Los ficheros de código fuente llevarán la extensión *.ASM datos numéricos, direcciones de comienzo, direcciones fijas, posiciones de bits, etc.
• Los ficheros de listado llevarán la extensión *.LST PORT_A EQU 5
• Los ficheros de código objeto llevarán la extensión *.OBJ START EQU 0
• Los ficheros de errores llevarán la extensión *.ERR CARRY EQU 3
TIEMPO EQU 5
• Los ficheros ejecutables en formato Intel Hex llevarán la extensión *.HEX También se puede definir una equivalencia con el nombre de otra equivalencia ya definida.
• Los nemónicos escritos en mayúscula hacen que el código escrito sea más visible. PORT_B EQU PORT_A+1
• Comentarios explicando cada línea de código. PORT_C EQU PORT_A+2
• Un párrafo de comentarios explica las rutinas o conjunto de instrucciones ya que los campos FIN EQU START+100
de comentarios suelen ser pequeños. FIN2 EQU START+200
• El espacio entre caracteres se escribe “_”. RB0_ES_1 es más fácil de leer que RB0ES1. El valor del operando debe estar ya definido anteriormente, sino el compilador entregará un error.

Recuerde que las convenciones son cualquier cosa que le haga más fácil la lectura y comprensión de su ORG (Origin - Origen):
código, como por ejemplo: La directiva origen (se nota ORG) permite al programador especificar la posición de memoria donde
1- Una cabecera estandarizada. programas, subrutinas o datos residirán. Los programas y los datos pueden estar alojados en diferentes
áreas de memoria dependiendo de la configuración de memoria.
2
Rutinas de comienzo, subrutinas de interrupción y otros programas deben comenzar en locaciones de El Turbo Assembler (TASM), es un paquete ensamblador principalmente destinado a la plataforma
memoria fijados por la estructura de microprocesador. del IBM PC y sus compatibles . Fue la oferta de Borland en el mercado de herramientas de
La directiva ORG hace al compilador colocar el código que le sigue en una nueva dirección de programación en lenguaje ensamblador para la familia de los microprocesadores x86 . Como se
memoria (la salida del compilador no solo coloca los códigos de operación sino también las direcciones pudiera esperar, trabajaban bien con los compiladores de lenguaje de alto nivel de Borland para los
de cada instrucción y datos del programa). PC, como Turbo C y Turbo Pascal. Junto con el resto de suite de lenguajes de programación Turbo,
Usualmente se la utiliza para: reset, programas de servicios de interrupción, almacenamiento en RAM, Turbo Assembler ya no es mantenido.
stack, programa principal, subrutinas. Para la compilación de un programa en ensamblador y su enlazado, hay que seguir una serie de pasos.
Por Ej: Este ensamblador lo que hace es obtener un programa “ejecutable” para un ordenador que tenga
ORG 00h integrado un microprocesador de la familia 80x86. La figura siguiente detalla los cuatro pasos que lleva
goto inicializa a cabo el compilador:
org 04h ; vector de interrupcion
goto interr
ORG 05h
Inicializa movlw 08h ; aquí comienza el programa

DEFB (Define Byte), DEFW (Define Word):


Esta directiva le permite al programador ingresar datos fijos en la memoria de programa.
Estos datos pueden ser:
Tablas de conversión
• Mensajes
• Nombres
• Umbrales
• Comandos
• Factores de conversión
• Identificación de teclas
• Direcciones de subrutinas
INSTALACIÓN BORLAND TURBO ASSEMBLER 5.0
Esta directiva trata a los datos como parte permanente del programa.
El formato es muy simple:
Primero hay que descargar Borland Turbo Assembler 5.0. Este se puede descargar de la
MENSAJE DEFB ’M’,’I’,’C’,’R’,’O’,0
DELAY DEFB 10 página siguiente: http://www.upseros.com/compiladores.php El instalador viene comprimido
DATOS DEFW $A100 en formato .zip.
DEFW $A400 Ahora procederemos a descomprimir el instalador de la siguiente forma: Damos clic derecho
DEFW $0000 sobre el tasm.rar, y luego seleccionamos la opción “Extraer en tasm”
POTENCIA DEFB 1,4,9,16,25,36,49,64,81

SOFTWARE NECESARIO:
Para poder crear un programa se requieren varias herramientas: Primero un editor para crear el
programa fuente. Segundo un compilador (Turbo Assembler) que no es más que un programa que
"traduce" el programa fuente a un programa objeto. Y tercero un enlazador (Turbo Linker), que genere
el programa ejecutable a partir del programa objeto. El editor puede ser cualquier editor de textos que
se tenga a la mano, como compilador utilizaremos el programa Turbo Assembler (TASM), y como
enlazador utilizaremos el Turbo Link (TLINK). La extensión usada para que el TASM reconozca los
programas fuente en ensamblador es .ASM, una vez traducido el programa fuente, el TASM crea un Figura1. Extraer archivos
archivo con la extensión .OBJ, este archivo contiene un "formato intermedio" del programa, llamado Aparecerá una carpeta con el nombre tasm con los archivos descomprimidos. Luego de esto
así porque aún no es ejecutable pero tampoco es ya un programa en lenguaje fuente. El enlazador abrimos esta carpeta y debemos dar clic sobre “Install.exe”, el cual iniciara la instalación:
genera, a partir de un archivo .OBJ o la combinación de varios de estos archivos, un programa
ejecutable, cuya extensión es .EXE.
BORLAND TURBO ASSEMBLER
3
Figura4. Pantalla de Instalación
Figura2. Pantalla inicial de Instalación.
En esta ventana nos pide la dirección de los archivos que descomprimimos previamente,
Luego presionamos Enter para continuar. Aparecerá la siguiente ventana: solamente damos “Enter” dejando la que aparece por default.
Luego aparecerá la siguiente ventana, en ella deje todas las opciones tal y como están por
default, y seleccione la opción “start Installation” y luego de “Enter”.
Otra forma de iniciar la instalación es presionando F9.

Figura3. Pantalla de Configuración Figura5. Pantalla de Configuración de la Instalación


Luego aparecerá un recuadro dando el estado de la instalación. Debe esperar unos minutos
En esta ventana debemos cambiar el lugar donde se instalaran nuestros archivos, en este caso para terminar la instalación.
escogimos el disco C. Luego de esto presionamos “Enter” para continuar con la instalación

4
Figura8. Léeme (Readme) de Assembler

Para salir de esta pantalla presione ESC.


Figura 6. Pantalla Proceso de Instalación.
Ejemplo en Borland Turbo Assembler 5.0
Se pregunta si se desean asignar o crear iconos o grupos de programas para los diferentes Se puede usar cualquier editor de texto para escribir el código del programa en ensamblador.
archivos (Borland proporciona esos iconos), por lo general, se acepta. Para que pueda ser interpretado por el ensamblador TASM, la condición necesaria es que el
fichero de este programa lleve la extensión .ASM y el nombre del fichero no deba ser mayor
a ocho caracteres. Para la edición, se puede usar EDIT como programa editor de texto, el
notepad o el block de notas de Windows.
En este documento mencionaremos 2 centrándonos en la segunda.
1- La primera es tecleando en Menú Inicio > Ejecutar > cmd > Enter

Figura 7. Mensaje asignar o crear iconos o grupos de programas

Por último, y no por eso menos importante aparecerá el ReadMe de Assembler, se


recomienda ver el contenido ya que contiene ayuda sobre el programa.

Figura9. Ejecutar

Ya en la ventana de comando se teclea edit

5
Figura10. Ventana de comandos

Nos aparecerá la siguiente ventana:

Figura13. Guardar como de Block de notas

Lo siguiente será ubicar el archivo a crear en la carpeta donde se desea guardar en este caso
lo haremos en la siguiente ruta: C:\TASM\BIN. En la pestaña tipo se selecciona “Todos los
Figura11. Edit de DOS Archivos”, y en la de nombre debe ir el nombre de mi aplicación con la extensión .asm y se
En la que se puede editar el código del programa, una vez terminado solo hay que guardar el presiona el botón Guardar.
programa con la extensión .asm
2- La segunda forma es utilizando el Block de notas, la cual será la que se usará en el
ejemplo.

Figura14. Ventana Guardar como

Figura12. Block de notas de windows Editamos el siguiente programa, al terminar se guarda el fichero. No olvide confirmar que
tiene extensión .asm.
Al terminar de digitar el programa es hora de guardar, en este caso se selecciona Guardar ; EJEMPLO.ASM
como. ; Un programa en ensamblador que envía un mensaje
; A pantalla. A ver que pasa….
.model tiny ; directiva de modelo de programación
.stack ; directiva de asignación de segmento de stack
.data ; directiva de asignación de segmento de datos
Message db "Hola Microprogramación$" ; mensaje a pantalla
.code ; directiva de asignación de segmento de datos
start: ; inicio de programa
6
mov dx,OFFSET Message ; offset en DX
mov ax,SEG Message ; segmento en AX Y listo, aparecerá la aplicación que haya compilado, siempre y cuando no tenga ningún
mov ds,ax ; DS:DX apunta al mensaje mensaje de Error.
mov ah,9 ; función 9–llamada a servicio de pantalla
int 21h ; llamada a interrupción del DOS CONCLUSIONES
mov ax,4c00h ; vuelta al DOS • Para el Lenguaje Ensamblador su funcionamiento radica en la importancia de su uso
int 21h y su profundo estudio, ya que ayuda a conocer a detalle cómo trabaja un CPU.
END start ; fin

Ese código se guarda en el siguiente directorio: C:\TASM\BIN con la extensión .ASM


Luego abrimos una consola de DOS de Windows: Inicio > Ejecutar > cmd
• El lenguaje ensamblador es el que va traduciendo instrucciones de código de
maquina a nemónicos, es decir interpreta los nombres de los nemónicos a
Y escribimos lo siguiente:
direcciones de memoria y otras entidades.
cd c:\tasm\bin
tasm Ejemplo
tlink Ejemplo

Así como se muestra en la siguiente pantalla: • El modo segmentado de memoria permite a los programas poder moverse reubicarse
en la misma, debido a que no se manejan posiciones completamente directas en
memoria sino referentes al valor de segmento.

Figura15. Ejemplo en Consola

Para ejecutar lo que hemos compilado debe escribir:


Ejemplo.exe

Figura16. Programa en ejecución.


7