You are on page 1of 7

HERRAMIENTAS NECESARIAS PARA PROGRAMAR EN LENGUAJE

ENSAMBLADOR.
JUEVES 14 DE AGOSTO DE 2008

Hola a todos, y Bienvenidos antes que nada, este es un blog que he creado con la finalidad de poner
al alcance de todos ustedes algunas herrameintas necesarias para poder iniciarse en el arte de la
programacion en Lenguaje Ensamblador, es decir en el lennguaje maquina o lo que es lo mismo
lenguaje de bajo nivel y no por que sea bajo su nivel sino porque es en este lenguaje en el que se
programa a nivel de la maquina utilizando las instrucciones y las interrupciones para trabajar
directamente con el hardware por medio de el microprocesador.
Es por eso que les pondr algunas herramientas para poder empezar, esto lo hago principalmente
para los que llevarn Lenguaje Ensamblador este semestre , espero que les sirva de mucha ayuda,
as que no dejen de descargarlos.
*Primero que nada les pongo un manual de interrupciones, as como un repertorio de todas las
instrucciones del 8086 que como sabrn a lo largo del curso necesitarn 2 cosas muy importantes,
conocer las instrucciones y las interrupciones, y pues son muchsimas, no se podran aprender todas
de memoria, estas se basan en el microprocesador 8086 que es el estndar de los procesadores.

MANUAL DE INTERRUPCIONES

REPERTORIO DE INSTRUCCIONES 8086

*En Segundo Lugar les pongo un programa "El Emu8086" con su respectivo serial, este programa es
uno de los ultimos que ha salido, y pues lo tiene todo, es un emulador, es editor, ensambla y enlaza,
aunque les recomiendo hacerlo a la antigita pero ahi esta para que lo prueben

EMU8086 Y SU SERIAL

*En tercer lugar les pongo el TurboDebug que ms que nada es un depurador, es decir, con este
programa no se puede ensamblar ni enlazar, si no que ms que nada sirve para abrir archivos con
extension .exe o sea el ejecutable que resulta al final, y al abrir sirve para depurar errores , ir viendo
paso a paso el programa. Es de mucha ayuda para poder encontrar errores o ver el funcionamiento
linea por linea del programa.

TURBO DEBUGGER (TD)

Y en cuarto lugar les pongo esta descarga "MASM", que es fundamental, muy pero muy fundamental
para poder ensamblar y enlazar los programas pues sin ellos simplemente no se puede, les explico
de otra forma, cuando ustedes editan o crean un programa en Lenguaje Ensamblador, ese archivo lo
deben de guardar con la extension .ASM en una carpeta en la cual deben de tener ya
descomprimido lo que contenga esta descarga, luego les explico por qu.

MASM

De una vez les pongo tambin el programa de esta materia , el calendario del periodo AgostoDiciembre 2008 y el cuadro de las materias de la carrera de Ingenieria en Sistemas Computacionales
por si alguien los quiere.

PROGRAMA LENGUAJE ENSAMBLADOR

CALENDARIO ESCOLAR AGOSTO-DICIEMBRE-2008

MATERIAS INGENIERIA EN SISTEMAS COMPUTACIONALES

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

COMO ENSAMBLAR?, COMO ENLAZAR?,QUE NECESITO PARA


HACERLO?....PUES EMPECEMOS DE UNA VEZ...
Bueno pues creo que es demasiado prematuro iniciar con esto pero considero que es lo ms
emocionante del curso, es decir, saber como se ensambla y enlaza un programa, todo lo que les digo
a continuacion lo prend con mi profesor de Lenguaje Ensamblador , DANIEL ROS GARCA.
Primero que nada hay que ver de que manera vamos a editar, ensamblar y enlazar.
Se puede crear el programa directamente en el debug de windows que es la herraminta que ya viene
en el MS-DOS por de faul, se accede a el escribiendo en una sesion de ms-dos la palabra "debug" y
enter pero resulta muy tedioso porque pues basicamente no hay interfaz grafica y hay que
aprenderse muchos comando, as que no se los recomiendo.
Tambien se puede hacer utilizando el "Emu8086", pero aqui todo es automatico, solo se escribe el
codigo en el edidor y presionar botones y mas botones todo resulta facil, de manera muy personal
creo que se pierde la esencia, por eso para mi gusto es mejor hacerlo a la antigita,la manera
original es decir en el bloc de notas y ensamblar en el MS-DOS:
A continuacion les pongo una descarga donde explico de manera rapida los tres entornos de
programacion , el debug, el turbodebug y el emu8086 (Es una exposicion que realic en clases
esperoles sirva) ,y posteriormente les explico paso a paso como ensamblar un programa.
Entornos de Programacion del Lenguaje Ensamblador.
PASOS PARA ENSAMBLAR Y ENLAZAR UN PROGRAMA:
1. Editar el Codigo Fuente en el Blog de Notas, para lo cual es necesario conocer la
estructura de un programa en ensamblador(Adelante les pondre la estructura larga), es
decir el Segmento de Pila, el Segmento de Datos y el Segmento de Codigo, Ademas
deben de conocer las instrucciones y las interrupciones , ademas de los registros ,para el
microprocesador 8086 que es el estandar.

2. Luego de tener ya editado el programa hay que guardarlo con la extension .ASM , esta
extension se le pone en el nombre, ya que es en bloc de notas donde estamos editando
(ejemplo: primerprograma.ASM), muy importande tambin es ver en donde se guarda, hay
que guardarlo en la carpeta donde tengamos el MASM.EXE y el LINK.EXE, los cuales
puedes descargar del enlace anterior y descomprimirlo en una carpeta donde estaremos
guardando nuestros programas.
3. Una vez Guardado nuestro Codigo fuente con la extension .ASM, hay que habrir una
sesion del MS-DOS, esto se hace al ir a inicio-programas-accesorios-Simbolo del Sistema
o bien inicio-ejecutar-cmd y enter.
4. Ahora desde el MS-DOS nos ubicamos en la carpeta donde este guardado nuestro
codigofuente.ASM (Recomiendo que creen una carpeta en C:\ ,para ubicarse m rapido en
la carpeta).
5. Una vez ubicados en la carpeta escribimos en el MS-DOS lo siguiente:

MASM nombredelprograma.ASM; (Despues del punto y coma dar un enter ,esto nos crea
un archibo con la extension .OBJ, claro que si hay errores no lo har).

Luego escribir: LINK nombredelprograma.OBJ; (Luego del punto y coma dar enter, esto
nos enlazar el programa es decir nos linkear y creara el archivo con la extensin .EXE)

Y listo ya hemos ensamblado y enlazado, y ya tenemos el archivo ejecutable .EXE


Como se podrn dar cuenta el proceso de ensamblaje y de enlazado es muy pero muy sencillo, la
dificultad se encuentra en crear el programa ya que hay que conocer la estructura del programa,
saber para que sirve cada instruccion y cuales debemos utilizar, conocer los registros del
microprocesador y las instrucciones.
EN EL SUBTEMA SIGUIENTE LES PONDRE LA ESTRUCTURA LARGA DE UN PROGRAMA EN
ENSMBLADOR.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

ESTRUCTURA DE UN PROGRAMA EN LENGUAJE ENSAMBLADOR.


A continuacion les presento como se conforma la estructura de un programa en lenguaje
ensamblador: PRIMERO PONEMOS EL TITULO DEL PROGRAMA LUEGO EL SEGMENTO DE
PILA, ENSEGUIDA EL SEGMENTO DE DATOS QUE ES MAS QUE NADA LA PARTE DONDE
DECLARAMOS NUESTRAS VARIABLES O CADENAS QUE NOS VAN A SERVIR A LO LARGO
DEL PROGRAMA Y FINALMENTE EL SEGMENTO DE CODIGO QUE ES DONDE YA
ESTRUCTURAMOS LO QUE QUREREMOS QUE HAGA EL PROGRAMA UTILIZANDO LAS
DEBIDAS INTERRUPCIONES E INSTRUCCIONES CON LOS DIFERENTES REGISTROS QUE
EXISTEN.
Quizas a estas alturas no le entiendan nada al codigo pero aqui la finalidad solo es conocer las
partes del codigo.
Este ejemplo es el tipico HOLA MUNDO

page 60,132
TITLE HOLAWILL (EXE) Operaciones de mover y sumar.
;-----------------------------------------------------------------------------STACKSG SEGMENT PARA STACK ' Stack' ; Segmento de Pila
DW 32 DUP (0)
STACKSG ENDS
;-----------------------------------------------------------------------------DATASG SEGMENT PARA 'Data' ; Segmento de datos
cadena db 'Hola Williams','$'
letrasAS db 35 dup('A')
valor dw 1740
DATASG ENDS
;-----------------------------------------------------------------------------CODESG SEGMENT PARA 'Code' ;Segmento de Codigo
BEGIN PROC FAR
ASSUME SS:STACKSG, DS:DATASG, CS:CODESG
MOV AX, DATASG ;Se asigna direccin de DATASG
MOV DS, AX ; en registro DS
MOV AH,09
LEA DX,CADENA
INT 21H
MOV AX, 4C00H ;Salida a DOS
INT 21H
BEGIN ENDP ;Fin de procedimiento
CODESG ENDS ; Fin de segmento
END BEGIN ; Fin del programa
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

EL MICROPROCESADOR.
QUE ES UN BUS?
Conjunto de cables, pistas o conductores que se utilizan para conectar diferentes partes del PC.
CLASIFICACION DE BUSES POR TECNOLOGIA.
Bus de direccionamiento: Seala la posicin en memoria donde se lee o almacena la informacin.
Bus de datos: Transportar la informacin de un dispositivo a otro.
Bus de control: Sincroniza todo lo que hay conectado al bus para enviar y recibir mensajes en el
instante correcto.

CLASIFICACION DE ACUERDO AL MODO DE TRANSMITIR LA INFORMACIN.


BUS UNIDIRECCIONAL: La informacin que fluye a travs de el es en una sola direccin.
BUS BIDIRECCIONAL: A travs de el los datos pueden fluir en cualquiera de los dos sentidos.
BUS SERIE: La informacin puede fluir en uno o dos sentidos.
BUS PARALELO: La informacin que se transmite se manda a travs de varios canales
simultneos.
Una computadora tiene varios tipos de Buses de entre los cuales se encuentran los siguientes:
Processor Bus: Es usado para transferir datos entre el CPU y el Bus del sistema principal.
Memory Bus: Es usado para transferir informacin entre la memoria principal y el CPU.
Address Bus: Es usado para indicar exactamente que direccin en memoria o que direccin sobre
el Bus del sistema ser usada para transferir un dato.
I/O Bus: Son los Buses que se utilizan en la entrada y salida de los datos en todo el sistema.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

REGISTROS.
Este tema es uno de los mas importantes del curso ya que son las bases para poder programar en
lenguaje ensamblador, hay que conocer que es un registro, para que sirven, y que tipos de registros
existen.
Un registro es una localidad de memoria que se encuentra dentro del microprocesador y sirven para
almacenar datos o para realizar operaciones aritmticas entra otras.
Los registros del microprocesador tienen como misin fundamental almacenar las posiciones de
memoria que van a sufrir repetidas manipulaciones, ya que los accesos a memoria son mucho ms
lentos que los accesos a los registros.

El microprocesador 8086 dispone de 14 registros de 16 bits que se emplean para controlarla


ejecucin de instrucciones, direccionar la memoria y proporcionar capacidad aritmtica y lgica.

Los diferentes registros del 8086 se clasifican en:

Registros de propsito general o de Datos.

Registros de Segmento.

Registro Apuntador de instrucciones (IP).

Registros Apuntadores (SP y BP)-

Registros ndice (SI y DI) y registros de Banderas.

Flags o registros de Estado (FL).

Registros del 8086/88 y del 80280


Registros de Propsito General.
Se utilizan para clculo y almacenamiento de propsito general. Hay cuatro registros de propsito
general que, aparte de ser usados a voluntad por el programador, tiene fines especficos:
1. Registro AX : Este registro es el acumulador principal, implicado en gran parte de las
operaciones aritmticas y de E/S.
2. Registro BX : Recibe el nombre de registro base ya que es el nico registro de propsito
general que se usa como un ndice en el direccionamiento indexado. Se suele utilizar para
clculos aritmticos.
3. Registro CX : El CX es conocido como registro Contador ya que puede contener un valor
para controlar el nmero de veces que se repite cierta operacin.
4. Registro DX : Se conoce como registro de datos. Algunas operaciones de E/S requieren
su uso, y las operaciones de multiplicacin y divisin con cifras grandes suponen que el
DX y AX trabajan juntos.
Los registros de propsito general se pueden direccionar como una palabra o como un byte. El byte
de la izquierda es la parte alta y el byte de la derecha es la parte baja:

Siguiendo esta nomenclatura es posible referirse a cada uno de los dos bytes, byte de orden alto y
mas significativo y byte de orden bajo y menos significativo, de cada uno de estos registros. Por
ejemplo: AH es el registro ms significativo del registro AX, mientras que AL es el byte menos
significativo.

Publicado por LENGUAJE ENSAMBLADOR en 17:18

You might also like