Está en la página 1de 32

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

INGENIERIA EN SISTEMAS COMPUTACIONALES


Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel

1 FUNDAMENTOS
1.1 INTRODUCCIN
Todo procesador, grande o pequeo, desde el de una calculadora hasta el de un supercomputador, ya sea
de propsito general o especfico, posee un lenguaje nico que es capaz de reconocer y ejecutar. Por
razones que resultan obvias, este lenguaje ha sido denominado Lenguaje Mquina y ms que ser propio
de un computador pertenece a su microprocesador. El lenguaje Mquina est compuesto por una serie de
instrucciones, que son las nicas que pueden ser reconocidas y ejecutadas por el microprocesador.
Este lenguaje es un conjunto de nmeros que representan las operaciones que realiza el
microprocesador a travs de su circuitera interna. Estas instrucciones, por decirlo as, estn grabadas o
"alambradas" en el hardware y no pueden ser cambiadas. El nivel ms bajo al que podemos aspirar a
llegar en el control de un microprocesador es precisamente el del lenguaje de mquina.
Obviamente es el lenguaje ms simple es el empleado por el propio ordenador (compuesto de 0 y 1,
cdigo binario). Es comprensible que al usar slo ceros y unos su utilizacin sea difcil, larga y motivo de
frecuentes errores.
Con el Lenguaje Mquina, se obtiene un control total del microprocesador sin embargo, la
programacin en este lenguaje resulta muy difcil y fcil para cometer errores. No tanto por el hecho de
que las instrucciones son slo nmeros, sino porque se debe calcular y trabajar con las direcciones de
memoria de los datos, los saltos y las direcciones de llamadas a subrutinas, adems de que para poder
hacer ejecutable un programa, se deben enlazar las rutinas de run-time y servicios del sistema operativo.
Este proceso es al que se le denomina ensamblado de cdigo. Para facilitar la elaboracin de
programas a este nivel, se desarrollaron los Ensambladores y el Lenguaje Ensamblador.
Lenguaje Ensamblador
Programar en Ensamblador es como programar en un lenguaje mquina ya que hay una identificacin
entre lenguaje mquina de 0 y 1 y un lenguaje simblico
El ensamblador es un lenguaje intermedio, creado para facilitar la comunicacin entre el hombre y la
mquina. Utiliza cdigos nmotcnicos o nmnicos, generalmente difciles de aprender y que adems son
especficos de cada microprocesador.
Para facilitar el trabajo del programador y hacer la programacin accesible al mayor nmero de
personas, se han creado lenguajes avanzados, que no dependen del ordenador. En realidad, estos
lenguajes son programas que convierten las distintas instrucciones y datos en lenguaje mquina, el nico
que es procesado por el ordenador.
Por lo tanto, se deduce que el Lenguaje Ensamblador es un lenguaje de bajo nivel compuesto por una
serie de cdigos nmotcnicos (o nmnicos) o de peticin que son traducidos a lenguaje mquina. Sus
caractersticas son:
1. Muy rpido.
2. Difcil de aprender.
3. Propio de cada procesador.
Una caracterstica fundamental del lenguaje ensamblador es que cada una de sus sentencias es una
codificacin simblica de una instruccin numrica mquina. Otra caracterstica que presenta es que nos
permite llegar a usar cualquier recurso del sistema (hw), cosa que no nos permiten los lenguajes de alto
nivel.
1

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel

El uso de referencias simblicas es una caracterstica bsica del lenguaje ensamblador, evitando
tediosos clculos y direccionamiento manual luego de cada modificacin del programa.
Tambin incluyen facilidades para crear macros , a fin de generar series de instrucciones cortas que
se ejecutan en tiempo real, en lugar de utilizar subrutinas.
Existe una correspondencia 1 a 1 entre las instrucciones del lenguaje de mquina y las del lenguaje
ensamblador. Cada uno de los valores numricos del lenguaje de mquina tiene una representacin
simblica de 3 a 5 letras como instruccin del lenguaje ensamblador.
Adicionalmente, este lenguaje proporciona un conjunto de pseudo-operaciones (tambin conocidas
como directivas del ensamblador) que sirven para definir datos, rutinas y todo tipo de informacin para que
el programa ejecutable sea creado de determinada forma y en determinado lugar.
El propsito para el que se crearon este tipo de aplicaciones es la de facilitar la escritura de
programas, ya que escribir directamente en cdigo binario, que es el nico cdigo entendible por la
computadora, es en la prctica imposible.

USUARIO

P
R
O
G
R
A
M
A
D
O
R

APLICACIONES

Lenguajes Visuales

SOFTWARE

Lenguaje de Alto
Nivel
Lenguaje Ensamblador

HARDWARE
Lenguaje Mquina

Ensambladores
El proceso importante que convierte las instrucciones de Lenguaje Ensamblador en un cdigo Mquina es el de traduccin. Los
traductores son programas que realizan ese proceso de conversin.
En el proceso de traduccin es necesario identificar los diferentes tipos de cdigo que se involucran. Cdigo Fuente se
denomina al programa escrito con las instrucciones propias del lenguaje. El Cdigo Objeto es el que se genera cuando ha
pasado por la traduccin y est escrito generalmente en cdigo mquina.
Los traductores se dividen en dos grupos dependiendo de la relacin entre cdigo fuente y cdigo objeto. Cuando una
instruccin de un cdigo fuente nos genera una nica instruccin numrica mquina decimos que ese cdigo fuente es
ensamblador.
Cuando la instruccin simblica de cdigo fuente (como Basic, Cobol, Fortran, llamados de Lenguajes de Alto Nivel) nos
genera varias instrucciones mquina o varias instrucciones simblicas de otro lenguaje, el traductor realiza la transformacin en
una de 2 formas:
Cuando todas las instrucciones son traducidas en un solo bloque se le llama compilador.
Si las instrucciones y datos son traducidas a lenguaje mquina lnea por lnea, entonces se llama intrprete.
2

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel
Un ensamblador crea cdigo objeto traduciendo instrucciones mnemnicas a cdigos operativos, y resolviendo los
nombres simblicos para posiciones de memoria y otras entidades.
Los ensambladores son por lo general ms fciles de programar que los compiladores de lenguajes de alto nivel, y han
estado disponibles desde la dcada de 1950.
Los ensambladores modernos, especialmente para arquitecturas basadas en RISC, como por ejemplo MIPS, SPARC y
PA-RISC optimizan las instrucciones para explotar al mximo la eficiencia de segmentacin del CPU.

Diferencias entre Lenguaje de Alto Nivel y Lenguaje Ensamblador.


1. El lenguaje ensamblador es muy prximo al lenguaje mquina, mientras que el lenguaje de alto nivel es
muy prximo al lenguaje humano.
2. La sintaxis del lenguaje ensamblador es muy sencilla, y la de los lenguajes de alto nivel son ms
complicadas.
3. La estructura en el lenguaje ensamblador se presenta nicamente en tres columnas, mientras que en
los lenguajes de alto nivel, se hace uso de las identaciones como herramienta para la escritura.
4. La lgica para desarrollar un programa en ensamblador debe ser mucho ms cuidadosa y especfica,
ya que en este lenguaje el programador realiza todas las operaciones, mientras que en el lenguaje de
alto nivel existen instrucciones que ejecutan operaciones que son transparentes para el usuario, es
decir, no se visualiza paso a paso, slo se obtiene el resultado final.
1.1.1 Uso y aplicaciones del Lenguaje Ensamblador
Fue usado ampliamente en el pasado para el desarrollo de software, pero actualmente slo se utiliza en
contadas ocasiones, especialmente cuando se requiere la manipulacin directa del hardware o se
pretenden rendimientos inusuales de los equipos.
Su uso ms frecuente se especifica en las siguientes categoras:
Programacin de aplicaciones. No necesita de un conocimiento especfico del hardware o de cualquier
otro aspecto asociado con el lenguaje ensamblador.
Manejador de Hardware. Est ntimamente ligada con la arquitectura del procesador, la direccin de los
puertos de los perifricos e interrupciones.
Programacin de sistemas. Se utiliza para desarrollar programas que sean marco de referencia para
mantener la computadora activa y en espera de que el usuario proporcione instrucciones para el manejo
de archivos, de memoria o para la ejecucin de comandos e instrucciones, un sistema operativo, por
ejemplo.
Los ensambladores de alto nivel proveen posibilidades de abstraccin que incluyen:
Control avanzado de estructuras
Procedimientos de alto nivel, declaracin de funciones.
Tipos de datos que incluyen estructuras, registros, uniones, clases y conjuntos.
Sofisticado procesamiento de macros.

1.1.2 Escalabilidad de los microprocesadores


El procesador mayormente usado en el mundo es toda la zaga de Intel, desde el 8086 hasta el ms
reciente lanzamiento de este fabricante.
3

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel

Obviamente, el lenguaje de mquina de un microprocesador no puede ser ejecutado por otro


microprocesador de arquitectura distinta, a menos que haya cierto tipo de compatibilidad prevista.
Por ejemplo, un 80486 es capaz de ejecutar lenguaje de mquina propio y soporta el cdigo generado
para microprocesadores anteriores de la misma serie (desde un 8086 hasta un 80386). Por otra parte, un
PowerPC es capaz de ejecutar instrucciones de los microprocesadores Motorola 68xxx y de los Intel
80xx/80x86. En ambos casos, el diseo de los microprocesadores se hizo tratando de mantener cierto
nivel de compatibilidad con los desarrollados anteriormente.
En el segundo caso, este nivel de compatibilidad se extendi a los de otra marca. Sin embargo, un
8088 no puede ejecutar cdigo de un 80186 o superiores, ya que los procesadores ms avanzados
poseen juegos de instrucciones y registros nuevos no contenidos por un 8088.
Un caso similar es la serie 68xxx, pero de ninguna manera podemos esperar que un Intel ejecute
cdigo de un Motorola y viceversa. Y esto no tiene nada que ver con la compaa, ya que Intel
desarrolla otros tipos de microprocesadores como el 80860 y el iWARP, los cuales no pueden compartir
cdigo ni entre ellos ni entre los 80xx/80x86.
Una caracterstica importante en la evolucin de los procesadores es la longitud (o tamao) de los
datos que manejan, por ello es importante detallar en qu consiste esta caracterstica.
Longitud de los Datos.
Los tipos principales de datos permitidos por los micro-programa de Intel tiene una longitud de
palabras de 1, 4, 8, 16 y 32 bits y se denominan, respectivamente, Bit, Nibble, Byte, Palabra, Doble
Palabra.
Composicin de Palabra, Byte, Nibble y Bit
La informacin en el procesador, se almacena en bits, esto es 0 1. Como ya es sabido, el procesador
solo reconoce dos estados: encendido (1) o apagado (0).
1. El byte, con 8 bits, determina el valor en decimal segn la posicin en que se encuentre un 0 un 1.
Base Elevada
Valor Posicional
Combinacin Binaria

27
128
1
1*128
12810

26
64
0

25
24
32
16
1
0
1*32
3210
(128+32+8+4+1) = 17310

23
8
1
1*8
810

22
4
1
1*4
410

21
2
0

20
1
1
1*1
110

2. Este byte es dividido es 2 partes, cada uno de 4 bits. Cada una de estas partes recibe el nombre de
NIBBLE. El sistema de numeracin hexadecimal es usado en esta conversin, siendo sus dgitos del 0
al 9 que representan respectivamente los nmeros del 0 al 9, los nmeros del 10 al 15 se representan
como sigue: A=10, B=11, C=12, D=13, E=14 y F=15.
Nibble Alto
23
8
1
1*8

22
4
0

Nibble Bajo
21
2
1
1*2

20
1
0

23
8
1
1*8

22
4
1
1*4

21
2
0

20
1
1
1*1
4

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel
8

2
(8+2) = 1010 = A16
161
16
10*16
16010

4
(8+4+1) = 1310 = D16
160
1
13*1
1310

(160+13)= 17310

3. El procesador 80386 utiliza la PALABRA que est compuesto de 2 bytes. El byte de valores mayores
(las 8 posiciones de la izquierda) recibe el nombre de byte ms significativo, el de valores menores (8
posiciones a la derecha) recibe el nombre de byte menos significativo.

PALABRA
Byte ms significativo

Byte menos significativo


Nibble
Nibble
23
20
23
20
23
22
21
20
23
22
21
8
1
8
1
8
4
2
1
8
4
2
1
0
1
0
1
0
1
0
0
0
1
8
8
8
2
1
Valores en Hexadecimal, que es la forma en que se representan las direcciones en ensamblador.
8
8
A (10)
1
163
162
161
160
8*16*16*16=32768
8*16*16=2048
10*16=160
1*1=1
Valor Decimal 34977
Nibble
22
21
4
2
0
0

Nibble
22
21
4
2
0
0

20
1
0

Los nmeros decimales se pueden almacenar de varias formas, como por ejemplo:
Desempaquetado, donde cada byte contiene un dgito.
Ejemplo:
1434
01
04
03
0000 0001
0000 0100
0000 0011

Empaquetado, donde cada byte contiene dos dgitos.


Ejemplo:
1434
14
0001 0100

04
0000 0100

34
0011 0100

Agrupaciones superiores al byte:


Nombre
Palabra
Doble Palabra
Cudruple Palabra

Tamao
2 bytes.
2 palabras, 4 bytes
4 palabras, 8 bytes
5

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel
Prrafo
Pgina
Segmento

8 palabras, 16 bytes.
128 palabras (normalmente)
256 bytes
64k bytes ( normalmente)
32,768 palabras
65,536 bytes

Familias de Procesadores 8086.


Procesador

Modos disponibles

Memoria Direccionable

Tamao del Registro

8086 / 8088

Real

1 MegaB

16 bits

80186 / 80188

Real

1 MegaB

16 bits

80286

Real y Protegido

16 MegaB

16 bits

80386

Real y Protegido

4 GigaB

16 o 32 bits

80486

Real y Protegido

4 GigaB

16 o 32 bits

En modo Real solo se puede ejecutar a la vez un proceso. El sistema operativo DOS solo funciona
en modo real. En el modo Protegido, ms de un proceso pueden ser activados a la vez.
1.1.3 Tipos de Lenguajes Ensambladores
Podemos distinguir entre tres tipos de ensambladores:
Ensambladores bsicos. Son de muy bajo nivel, y su tarea consiste bsicamente en ofrecer nombres
simblicos a las distintas instrucciones, parmetros y cosas tales como los modos de direccionamiento.
Adems, reconoce una serie de directivas (o meta instrucciones) que indican ciertos parmetros de
funcionamiento del ensamblador.
Ensambladores modulares, o macro ensambladores. Descendientes de los ensambladores bsicos, fueron
muy populares en las dcadas de los 50 y los 60, antes de la generalizacin de los lenguajes de alto nivel.
Hacen todo lo que puede hacer un ensamblador, y adems proporcionan una serie de directivas para
definir e invocar macroinstrucciones (o simplemente, macros).
Ensambladores modulares 32-bitso de alto nivel. Son ensambladores que aparecieron como respuesta a
una nueva arquitectura de procesadores de 32 bits, muchos de ellos teniendo compatibilidad hacia atrs
pudiendo trabajar con programas con estructuras de 16 bits. Adems de realizar la misma tarea que los
anteriores, permitiendo tambin el uso de macros, permiten utilizar estructuras de programacin ms
complejas propias de los lenguajes de alto nivel.
1.1.4 Clasificacin de la Memorias
Para las PCs la memoria se clasifica en tres tipos:

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel

Convencional. Es la memoria de tipo bsico y que abarca las direcciones de 0 a 640KB. En sta es
donde se cargan los programas de usuario y el sistema operativo, y es la que est disponible para equipo
XT (8088,8086, 80186 y 80188).
Extendida. Esta memoria slo est disponible para procesadores 80286 y mayores (equipo AT, 80386 y
80486). Muchos programas que usan la memoria convencional no pueden usar la memoria extendida
porque las direcciones en memoria extendida estn ms all de las que el programa puede reconocer.
nicamente las direcciones dentro de los 640KB pueden ser reconocidas por todos los programas. Para
reconocer la memoria extendida se requiere de un manejador de memoria extendida, como HIMEM.SYS
que provee MS-DOS.
Expandida. Esta es la memoria que se agrega al computador a travs de una tarjeta de expansin, y que
debe ser administrada por un programa especial, como el EMM386.EXE. A diferencia de la memoria
convencional o extendida, la memoria expandida es dividida en bloques de 16K llamados pginas (pages).
Cuando un programa solicita informacin de memoria expandida el manejador copia la pgina
correspondiente en un rea denominada page frame para poder ser accedida en la memoria extendida.
Como podremos ver, el 8088, 8086, 80188 y 80186 son capaces de direccionar hasta 1 MB de
memoria. Ya hemos indicado que la memoria convencional slo abarca 640KB, as nos quedan 384KB
libres. Esta parte de la memoria es denominada parte alta, y como no est disponible para muchos
programas generalmente se usa para cargar drivers del sistema operativo, programas residentes y datos
de hardware (ROM y pginas de video).
La memoria principal puede ser considerada como un arreglo lineal de localidades de
almacenamiento de un byte de tamao. Cada localidad de almacenamiento tiene asignada una direccin
que la identifica. La memoria principal es el lugar donde el CPU lee las instrucciones a ejecutar, as como
algunos datos a emplear.
Un mtodo de asignacin de memoria es la manera mediante la cual el Sistema Operativo lleva el
control de la memoria tratando de que sea lo ms eficiente posible.
El mtodo de asignacin usada por ensamblador es la segmentacin.
Arquitectura de Segmentos.
Los registros son elementos con un nmero determinado de bits que usa el procesador para hacer unas
operaciones especficas. Un segmento es una porcin de memoria seleccionada por el procesador para
almacenar cierto tipo de informacin.
Con la llegada de procesadores en modo protegido, la arquitectura de segmento consigui que los
segmentos puedan separarse en bloques diferentes para protegerlos de interacciones indeseables. La
arquitectura de segmentos realiz otro cambio significativo con el lanzamiento de procesadores de 32 bits,
empezando con el 80386, que minimizan las limitaciones de memoria de la arquitectura de segmentos de
los 16 bits, siendo, adems, compatibles con stos de 16 bits.
Ambos ofrecen paginacin para mantener la proteccin de los segmentos. En DOS los segmentos
se asignan normalmente adyacentes uno al otro.
En modo Protegido los segmentos estaran en cualquier parte de memoria. El programador no
sabe donde estn ubicados y no tiene ningn control sobre ellos.
Los segmentos pueden incluso moverse a una nueva posicin de memoria o cambiarse al disco
mientras que el programa se est ejecutando.

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel

Asignacin Programa Modo Real


Memoria
Segmento 0

1 direccin disponible

Segmento 1

Siguiente direccin a partir de segmento0

Asignacin Programa Modo Protegido


Memoria
...
...
Segmento 0
direccin disponible en alguna parte de memoria

...
...
Segmento 1

Siguiente direccin despus del segmento0, en alguna parte de memoria

Direccionamiento de los segmentos.

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel

Las direcciones en ensamblador estn divididas en 2 componentes: segmentos y desplazamientos


(offset).
Segmento:
Es un rea de memoria que puede tener una longitud de 64 Kbytes, esto es 32,768 palabras, o sea 65,536
bytes.
Debe iniciar en un rea de memoria cuya direccin sea lmite de 16 bytes.
Puede traslaparse con otros segmentos intercalando localidades de memoria.
La direccin de inicio del segmento define su localizacin.
Cuando se trabaja la memoria en Ensamblador se divide en 4 regiones de 64k. Estas seran:
1.
2.
3.
4.

El de cdigo, que contiene los cdigos de instruccin del programa que se est ejecutando.
El de datos, que guarda las variables del programa.
El de stack, con informacin referente a la pila o stack.
El extra, o rea de datos complementario, usada generalmente para operaciones con cadenas.

Desplazamiento:
Dado que los segmentos pueden tener hasta 64 Kbytes de tamao, es necesario especificar la ubicacin
de las localidades dentro de un segmento. Este parmetro es el desplazamiento de la localidad de
memoria.
El desplazamiento necesita de una palabra de 16 bits para definir todas las posiciones posibles
dentro de un segmento de 64 Kbytes (64*1024=65,536) de longitud mxima.
La representacin de una localidad de memoria que incluye la direccin de inicio del segmento y el
desplazamiento es la siguiente:

88A1:0015
Direccin del Desplazamiento
Direccin de inicio del Segmento
Este mecanismo interior combina el valor del segmento y un valor de desplazamiento para crear una
direccin. Las 2 partes representan una direccin 'segmento:desplazamiento'.
Memoria

<--- 1 byte --->

Segmento 0

0000:0000
0000:0001
.....
0000:FFFF

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel
Memoria

.....

<--- 1 byte --->


Segmento 1

0001:0000
0001:0001
......
0001:FFFF

La porcin del segmento es siempre de 16 bits. La porcin del desplazamiento es de 16 y 32 bits. En


modo real el valor del segmento es una direccin fsica que tiene una relacin aritmtica con el
desplazamiento.
El segmento y el desplazamiento crean junto una direccin fsica de 20 bits, con la que se puede
acceder a un MegaB de memoria (220), aunque, por ejemplo, el sistema operativo de IBM usa sobre 640k
de memoria por programa.
Para efectos de explicacin se considera un desplazamiento de 16 bits. El segmento seleccionar una
regin de 64k y se usar el desplazamiento para seleccionar 1 byte dentro de esa regin. La forma de
hacerlo sera:
1. El procesador desplaza la direccin del segmento 4 posiciones binarias a la izquierda y la rellena
con 0. Este funcionamiento tiene el efecto de multiplicar la direccin del segmento por 16.
2. El procesador aade esta direccin de segmento de 20 bits resultante a la direccin de
desplazamiento de 16 bits. La direccin de desplazamiento no se cambia.
3. El procesador usa la direccin de 20 bits resultante, a menudo llamada direccin fsica, al acceder
a una posicin en el MegaB de espacio direccionado.
Ejemplo:
Hexadecimal -->
Binario ------>
+

5
0101

3
0011

C
1100

2
0010

0101
0101
5

0011
0001
0100
4

1100
0000
1100
C

0010
0111
1001
9

1
0001

3
0011

F
1111

7
0111

0001

0011
0011
0111
7

1111
1000
1000
8

0111
1010
0001
1

1
0001

0
0000

7
0111

A
1010

A
1010

C
1100

0000
1010
1010
A
Direccin Fsica

Ejemplo:
Hexadecimal -->
Binario ------>
+

0001
1

3
0011

8
1000

0000
1100
1100
C
Direccin Fsica

10

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel

Las direccines base actuales de cada segmento se guardan en registros punteros especiales de 16 o 32
bits, denominados Registro de Segmento.

DIRECCIONAMIENTO MS-DOS
MS-DOS(Segmentacin)
8086 (16 Bits)

Capacidad de direccionamiento: 220=1'048,576=1MB.

80286 (16 Bits)


Puede funcionar de alguno de los 2 modos:
Modo real = 8086
Modo protegido:
Para cada programa se implementa una tabla de descriptores.
El valor que contenga un registro de segmento se utiliza como un apuntador (selector) a la tabla de
descriptores.
11

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel

Capacidad de direccionamiento: 224=16'777,216=16MB

SEGMENTACION MS-DOS
Si un programa trata de asignar un bloque de memoria de cierto tamao, MS-DOS busca un bloque
apropiado, si lo encuentra, se modifica para que pertenezca al proceso solicitado. Si el bloque es
demasiado grande, MS-DOS divide en un bloque asignado y un nuevo bloque libre. Cuando un programa
libera un bloque de memoria, MS-DOS lo modifica para indicar que est disponible. Cuando un programa
reduce la cantidad de memoria que necesita, MS-DOS crea un nuevo bloque de control de memoria para
la memoria liberada.
Tamao Maximo de Segmento.
En realidad no solo se ampliaron solo los registros de 32 bits, sino que tambin la longitud mxima del
segmento que puede ocupar hasta 4 GB (232).
Existe un tipo de segmento que especficamente sirve para la gestin de programas en modo
protegido el SEGMENTO DEL SISTEMA.

1.1.5 Unidades de Entrada/Salida

1.2 EL MICROPROCESADOR
1.2.1 Buses
Bus es el conjunto o grupo de cables que transportan los datos, las direcciones (ubicaciones) en
las que puede encontrarse informacin especfica, y las seales de control para asegurar que las
diferentes partes del sistema utilizan su ruta compartida sin conflictos.
Los buses se caracterizan por el nmero de bits que pueden transmitir en un determinado
momento. Un equipo con un bus de 8 bits de datos, por ejemplo, transmite 8 bits de datos cada vez,
mientras que uno con un bus de 16 bits de datos transmite 16 bits de datos simultneamente.
Para diferenciar las cuatro funciones diferentes, el bus est dividido en cuatro partes: lneas de
potencia, bus de control, bus de direcciones y bus de datos.
12

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel

La informacin codificada viaja a travs de la computadora por un bus.


El bus soporta tres tipos principales de informacin:
El grupo de cables que transporta datos, tales como la letra A codificada
El grupo de cables que lleva la direccin del componente al que van dirigidos los datos. Cada
componente acepta slo la informacin que va dirigida a l; por ejemplo, la informacin enviada a
la impresora no ser aceptada de forma inadvertida por la unidad de disco.
El grupo de cables que lleva la tercera clase de informacin que son seales de tiempo, que
sincronizan todo lo que hay conectado al bus para enviar y recibir mensajes en el instante
correcto.
1.2.2 Registros
Todos los procesadores 8086 tiene la misma base de registros de 16 bits. Se puede acceder a algunos
registros como 2 registros separados de 8 bits. En el 80386/486 se puede acceder a registros de 32 bits.

Registros de Datos

Funcin

L Low (Baja)
H High (Alta)
AH

AL

AX Acumulador

Funciona como AC en algunas ocasiones. Realiza operaciones como entrada/salida


de datos, multiplicacin, divisin, operaciones con decimales codificados en binario.

BH

BL

BX Base

Funciona como registro Base, en algunas ocasiones, para referenciar direcciones de


memoria En estos casos mantiene la direccin de base, inicio de tabla o matrices, en
la que la direccin se determina usando valores de desplazamiento.

CH

CL

CX Contador

Funciona como registro Contador, en algunas ocasiones, es decir, cuenta el nmero


de bits o palabras en una determinada cadena de datos durante los operaciones con
cadenas.
Ejemplo: Si se va a mover de un rea de memoria a otra n palabras, CX mantiene
inicialmente el nmero total de palabras a desplazar llevando la cuenta de la palabra o
byte que va siendo trasladada.
En las instrucciones de desplazamiento y rotacin CL se usa como contador.

DH

DL

DX Extra

Se usa en la multiplicacin para mantener parte del producto de 32 bits o en las


divisin, para mantener el valor del resto. Y en operaciones de Entrada/Salida de
datos para especificar la direccin del puerto de E/S usado.

8
bits

8
Bits

Total 16 bits

Registros
Punteros e
Indices
SP

Puntero de Pila

Funcin

Apunta a la posicin de la cima de la pila del segmento de pila en memoria. Es un registro usado
13

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel
para guardar un valor de desplazamiento que direcciona la posicin de un operando origen
durante operaciones de tratamiento de cadenas.
BP

Puntero de
Base

Apunta a una zona dentro del segmento de pila dedicada al almacenamiento de datos.

SI

ndice Origen

Es usado como registro ndice en ciertos modos de direccionamiento indirecto. Tambin puede
guardar un valor de desplazamiento indirecto. Se usa para almacenar un desplazamiento que
direcciona la posicin de un operando origen durante operaciones de tratamiento de cadenas.

DI

ndice Destino

Tambin se usa como registro ndice en determinados modos de direccionamiento indirecto.


Adems almacena un desplazamiento de direccin, la posicin de un operando destino durante
operaciones con cadenas.

16 bits (4 nibbles)

Los registros Indices SI y DI y los registros Punteros SP y BP guardan los valores de desplazamiento
empleados para el acceso a determinadas posiciones de memoria. Una caracterstica importante de los 4
registros es que se pueden usar operaciones aritmticas y lgicas de modo que los valores de
desplazamiento que almacenan pueden ser el resultado de clculos previos.
Funcin

Registros de Segmentos
CS

Segmento de Cdigo

Apunta la direccin donde inicia el segmento de cdigo en memoria.

DS

Segmento de Datos

Apunta la direccin donde inicia el segmento de datos en memoria.

SS

Segmento de Pila

Apunta la direccin donde inicia el segmento de pila en memoria.

ES

Segmento Extra

Apunta la direccin donde inicia el segmento de datos extra en memoria.

16 bits

Las reas de memoria asignadas al cdigo de programa, datos y pila se direccionan por separado
a pesar de poder solaparse. En un momento dado hay siempre 4 bloques disponibles de memoria
direccionable denominadas segmento. Cada uno de los segmento suele tener una longitud de 64k.
Para determinar una direcciones en el segmento de cdigo tendremos que realizar el
desplazamiento de 4 bits hacia la izquierda del registro CS poniendo a 0 los bits 0, 1, 2 y 3. Lo que
equivale a multiplicar CS por 16. Sumando a continuacin el valor de 16 bits almacenado en IP. La
direccin dentro de los otro 3 registros se calcula similarmente.
Las combinaciones de registro de segmento y desplazamiento depende de los tipos de
operaciones que se est ejecutando. Por omisin se asume que la direccin de un operando est en el
segmento de datos y el registro de segmento a usar es por tanto DS con el desplazamiento BX, SI o DI.

Segmento de

Segmento de

Segmento de

Segmento de
14

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel
Datos

Cdigo

Stack

Extra de Datos

DS : BX
DS : SI
DS : DI

CS : IP

SS : SP
SS : BP

ES : DI
ES : SI

Si el desplazamiento est almacenado en un registro puntero como SP o BP se asume que el


operando est en el segmento de pila y, por tanto, el registro de segmento de pila SS se usa como base.
Si la direccin del operando es el destino de una instruccin de cadena, el registro del segmento Extra ES
constituye la base y el desplazamiento se almacena en DI o SI.
Funcin

Puntero de Instruccin
IP

Puntero de
instruccin

Se usa para localizar la posicin inicial de la prxima instruccin a ejecutar


dentro del segmento de cdigo en curso. Como el registro CS contiene la
direccin base del segmento de cdigo, cualquier direccin de 20 bits dentro
del segmento se localizar empleando cualquier IP como desplazamiento
desde CS.

16 bits

Registro de Indicadores o de Banderas


15

. 11 10
OF DF

IF TF SF ZF

4
AF

2
PF

0
CF FLAGS: Registro de Indicadores

Los bits 0, 2, 4, 6, 7 y 11 son indicadores de condicin que reflejan los resultados de operaciones del
programa. Los bits del 8 al 10 son indicadores de control. Los indicadores de condicin pueden
comprobarse tras ejecutar determinadas operaciones usando el resultado de la comprobacin en la toma
de decisiones de bifurcacin condicional.
Indicadores de Condicin:
Bit 0. Indicador de acarreo (CF) Se pone a 1 si en una operacin de suma o resta se produce un acarreo
por exceso o por defecto. Si una operacin no produce acarreo estar a 0.
Bit 2. Indicador de paridad (PF) Se pone a 1 si el resultado de una operacin tiene un nmero par de bits a
1. Y se pone a 0 cuando el resultado tiene un nmero impar de bits a 1.
Bit 4
acarreo por exceso o defecto de los 4 bits menos significativos en los valores de BCD (decimal codificado
en binario).
Bit 6
e a 1 si el resultado de una operacin es 0, esto ocurre, por ejemplo,
despus de usar una instruccin de resta o decremento o al hacer una comparacin entre 2 nmero de
igual valor. Para resultados distintos de 0 el indicador estar a 0.
Bit 7. Indicador
aritmticas de complemento a 2. Se usa el bit ms significativo de cualquier nmero en complemento 2
15

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel

para indicar si dicho nmero es positivo cuando est a 0 o negativo cuando est a 1. Y se copia en el bit 7
del registro de indicadores.
Bit 11
operando provoca un desbordamiento (overflow) y activar este indicador a 1.
Registro indicador de Control:
Bit 8
activado, haciendo que el micro-procesador ejecute la instruccin paso a paso. El procesador genera
instruccin una detrs de otra. Un debugging puede usar este rango para procesar un programa
instruccin a instruccin.
Bit 9
activarla. IF se controla con la instruccin CLI (desactiva interrupcin externa) y STI (activa interrupcin
externa).
Bit 10
en relacin con SI y DI. Se pone a 0 para la cadena que se procesa hacia arriba, o sea, hacia direcciones
de memoria ms altas y se pone a 1 para las cadenas que se procesan hacia abajo, o sea, hacia
direcciones ms bajas.
Solo para 80386 / 486.
Los procesadores de este tipo usan registros de 8 y 16 bits igual que el resto de la familia de los 8086.
Todos los registros se extienden a 32 bits excepto los registros de segmento de 16 bits. Los registros
extendidos comienzan con la letra E: el registro extendido de AX es EAX.
Los procesadores 386 / 486 tienen 2 registros de segmento adicionales: FS y GS.

L Low (Baja)
H High (Alta)

Registro de Datos Extendidos


HL
AX

AH

AL

EAX: Acumulador

BX

BH

BL

EBX: Base

CX

CH

CL

ECX: Contador

DX

DH

DL

EDX: Extra

8 bits.

8 bits.

16 bits
16 bits

Registro Puntero e Indice Extendido

Total 32 bits
L Low (Baja)
H High (Alta)

SP

ESP: Puntero de Pila

BP

EBP: Puntero de Base

SI

ESI: Indice de Orden

16

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel

H
16 bits

DI

EDI: Indice de Destino

L
16 bits

Total 32 bits

Puntero de Instruccin Extendido

16 bits

IP

EIP: Reg

16 bits

Total 32 bits

Registro de Segmentos
Extendidos
CS

CS: Segmento de Cdigo

DS

DS: Segmento de Dato

SS

SS: Segmento de Pila

ES

ES: Segmento Extra

FS

FS: Segmento Extra

GS

GS: Segmento Extra

16 bits

Puntero de Bandera Extendida (EFlags)


31

30

19

18

17

16

15

14

13

IOP

12

11

10

OF

DF

1 0
CF

<--- 386/486 ---> <- 286/386/486 --> <--- Para todo los procesadores 8086 ->

IOP indica el nivel de proteccin para operaciones de Entrada/Salida.


El bit 14 (N) se usa en relacin con procesos anidados.
R para reanudacin de procesos.
V est relacionado con el modo 8086 virtual.
A est relacionado con el control de alineacin.

1.2.3 Modos de Direccionamiento


Estas maneras de obtener la direccin se denominan Modos de Direccionamiento y cada uno tiene
asignado un registro de segmento por defecto.
Modo de
Direccionamiento

Comentario

Ejemplo
17

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel
1. Implcito
2. Inmediato
3. De Registro
4. Directo
5. De Registro
Indirecto

6. Relativo a la
Base

7. Indexado
Directo

8. Indexado de
Base

En este tipo de direccionamiento se omiten especificaciones de origen o


destino de los datos, ya que la instruccin misma lo indica. El registro
AX ser colocado en la pila o stack
El valor es especificado por el usuario.
El 18 en decimal (la D al final indica que el valor est en decimal), es
colocado en el registro AX
12 registros bsicos con los que trabaja el microprocesador).
Indica que se tomar el valor contenido en BX y ser colocado en AX.
El valor es tomado de un identificador definido por el usuario.
El valor que contenga DDDW es asignado a AX.
En este caso, en el registro BX, BP, SI o DI nicamente se colocar una
direccin. La instruccin OFFSET se encarga de buscar la direccin
inicial (no el valor) del dato que se especifique.
(En BX se coloca la direccin de inicio de almacenamiento del
identificador DDDX.)
Despus usando el registro en el que se coloc la direccin, se obtiene
el valor contenido en esa direccin y ser asignado a otro registro
Es importante el uso de los corchetes, pues indican que en AX se
asignar el valor almacenado dentro de la direccin indicada por BX, es
decir BX indica una direccin, no un valor.
Son usados nicamente los registros BX o BP, ya que son los que se
usan para indicar base.
A la direccin del desplazamiento contenida en el registro (sea BP o
BX), se suma un valor: BX+2.
En AX, se asignar el valor almacenado en la direccin que resulte de
sumar 2 a la direccin indicada en BX.
Se utilizan los registros SI o DI (ndice), a los cuales es asignado un
valor.
Al combinarlo con un identificador, que tiene una direccin, a sta
ltima se sumar el valor del registro ndice.
En AX, se asignar el valor que est en la direccin que tenga DDDZ +
2.
El valor que tomar el registro, es la que est contenida en la direccin
determinada por la suma de lo que contenga BX ms SI DI y un valor,
este ltimo es opcional.

PUSH AX

BX contendr la direccin inicial de DDDW


A SI se le asigna el valor de 8, que funciona como desplazamiento
Por ltimo a AX se le asignar el contenido de la direccin que resulte
de la operacin de suma de BX ms SI.

MOV BX, OFFSET DDDW


MOV SI, 8
MOV AX, [BX+SI

MOV AX, 18D

MOV AX, BX
MOV AX, DDDW

MOV BX, OFFSET DDDX


MOV AX, [BX

MOV AX, [BX+2

MOV SI, 2
MOV AX, DDDZ [SI

Especificaciones de Modos de Direccionamiento


Absoluto e Indirecto
Obtencin
Desplazamiento

Segmento

Direccionamiento Absoluto

Inmediato

DS

MOV al, 0

Direccionamiento Indirecto con Base (BX)

BX+XX

DS

MOV cx, [bx+2]

Direccionamiento Indirecto con base (BP)

BP+XX

SS

MOV ax, [bp+4]

Direccionamiento Indirecto con Indice (SI)

SI+XX

DS

MOV dx, [si+2]

Denominacin

Ejemplo

18

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel
Direccionamiento Indirecto con Indice (DI)

DI+XX

DS

MOV [di], es

Direccionamiento Indirecto con Base (BX) e Indice (SI)

BX+SI+XX

DS

MOV [bx+si-2], cx

Direccionamiento Indirecto con Base (BX) e Indice (DI)

BX+DI+XX

DS

MOV dx, [bx+di]

Direccionamiento Indirecto con Base (BP) e Indice (SI)

BP+SI+XX

SS

MOV ds, [bp+si]

Direccionamiento Indirecto con Base (BP) e Indice (DI)

BP+DI+XX

SS

MOV ax, [bp+di]

Puede apreciarse que todos los modos admiten que despus de obtener el valor de desplazamiento
de un registro o de la suma de dos, se aada una constante a ste, antes de generar la lectura, indicada
por XX. Si se omite el valor XX se generan instrucciones que no aaden ningn valor al desplazamiento
obtenido por los registros.
Cada modo usa un registro de segmento por defecto para componer la direccin completa pero
siempre es posible que le CPU use, no el registro de segmento por defecto, sino uno especificado por
nosotros.
A nivel de lenguaje mquina lo que se hace es aadir a la instruccin un prefijo de 1 byte que modifica
el comportamiento de la siguiente instruccin haciendo que use el registro de segmento correspondiente al
prefijo en lugar del registro por defecto.
Hay 4 prefijos distintos, uno para cada registro de segmento y se denominan Prefijos de Segmento por
convenio se aade el prefijo inmediato antes de la apertura de corchetes o despus de PTR, si este
aparece.
As las siguientes instrucciones acceden a posicin de memoria dentro del segmento de cdigo de
datos extra y segmento de pila, respectivamente.
MOV al, cs:[bx+4]
MOV word ptr ds:[bp-0fh], 0
MOV es:[di], al
MOV word ptr ss:[bx], 0
Es interesante tener en cuenta que por ejemplo:
MOV [bx], ax y MOV ds:[bx], ax son equivalentes. Ya que si no se indica nada el registro por
defecto es DS. Tambin es interesante resaltar que para acceder a una posicin de un vector, que haya
sido previamente definido en el segmento de datos, usamos los corchetes.
Segmento de datos...
tabla word 100 dup (0)
inicial 0.
Segmento de cdigo...
MOV ax, tabla[si]
MOV bx, 0
MOV ax, tabla[5]
MOV ax, tabla+5

; Vector de 100 posicines, cada posicin sera de 1 palabra con valor

; Donde SI acta como ndice del vector.


; Esto sera equivalente
; todas las sentencias pasaran al registro AX
; el valor de la posicin 5 de la tabla pasa AX.

MOV ax, tabla[bx]+5


19

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel

MOV ax, tabla[bx][di]


MOV ax, tabla[di][bx]
MOV ax, tabla[bx+di]
MOV ax, [tabla+bx+di]
MOV ax, [bx][di]+tabla

; Todas estas instrucciones tambin son equivalentes


; todas las sentencias mueven la posicin
; indicada por BX+DI dentro de la tabla a AX.

1.3 INTERRUPCIONES
Como se mencion anteriormente la PC esta constituida lgicamente por su BIOS y sistema operativo. La
mayora de las rutinas que controlan al computador estn grabadas en el ROM del BIOS, aunque muchas
rutinas son establecidas por el sistema operativo y se cargan en RAM al momento de encender al
computador.
Estas rutinas son denominadas interrupciones y son activadas mediante la instruccin: INT
nmero. Una interrupcin es una operacin que invoca la ejecucin de una rutina especfica que suspende
la ejecucin del programa que la llam, de tal manera que el sistema toma control del computador
colocando en el stack el contenido de los registros CS e IP.
El programa suspendido vuelve a activarse cuando termina la ejecucin de la interrupcin y son
restablecidos los registros salvados. Existen dos razones para ejecutar una interrupcin: (1)
intencionalmente como peticin para la entrada o salida de datos de un dispositivo, y (2) un error serio y
no intencional, como sobreflujo o divisin por cero.
El operando de una interrupcin indica cul es la rutina a activar. La direccin de la rutina es
localizada por medio de una tabla que el sistema mantiene a partir de la direccin 0000:0000h. Existen
256 entradas de 4 bytes de longitud, y cada interrupcin proporciona varias funciones. Las interrupciones
de 00h a 1Fh corresponden al BIOS y de 20h a FFh son del DOS y BASIC.
Una interrupcin es una seal que provoca la suspensin del programa que se estaba ejecutando
y provoca el comienzo de ejecucin de un programa de tratamiento que de solucin a esa interrupcin.
A ese programa se le conoce como RUTINA DE TRATAMIENTO de esa interrupcin.
1.3.1 Hardware
Interrupciones Hardware o Interrupciones Externas, que son aquellas provocadas por los dispositivos
perifricos, controladas por un procesador especial de interrupciones (8259) o IPC (Controlador de
Interrupciones Programable), y la rutina de tratamiento est "cableada".
Interrupciones Internas, que son aquellas provocadas dentro del propio procesador por una situacin
anormal de funcionamiento de alguna de sus partes.
1.3.2 Software
Son aquellas que son programables y que podemos cambiar. Las interrupciones de software podemos
llegar a manejarlas y por ello el ensamblador nos proporciona una instruccin que nos permita poner en
funcionamiento una determinada rutina de interrupcin; esta instruccin es INT.
Interrupcin
Formato
INT nm_entero.
20

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel

Ese "nm_entero", asociado a la instruccin, es un identificativo que indica, mediante la aplicacin de un


algoritmo, la posicin de Memoria Interna donde se encuentra almacenada la direccin de comienzo de la
rutina de tratamiento de esa interrupcin.
El ensamblador permite, normalmente, identificar 256 interrupciones. Una parte de ellas son las
correspondientes a la ROM-BIOS y las proporciona el fabricante.
Otra parte de ellas forman del sistema operativo DOS, y otra parte de ellas queda libre para que el
programador genere sus propias rutinas de interrupcin.
Las interrupciones correspondientes a la parte de la BIOS y las correspondientes a la parte del
DOS representas caractersticas similares.
Existe un flag denominado IF (Interrupcin Flag, bandera de Interrupcin) que determina la
reaccin del microprocesador ante una interrupcin. Si el flag est a uno, el rpocesador responde a la
interrupcin producida; pero si el flag IF est a cero, la peticin de interrupcin ser ignorada
completamente por el microprocesador.
En algunas secciones de cdigo, resulta necesario deshabilitar las interrupciones (poner el flag IF
a cero) durante algunos ciclos, y habilitarlas de nuevo despus.
La familia 8086 provee dos instrucciones que realizan estas tareas:
STI (Activar flag de interrupciones): Pone la bandera IF a i, de forma que se premiten las interrupciones.
CLI (Borrar flag de interrupciones): Pone la bandera IF a 0, de modo que el microprocesador no responde
a ms interrupciones hasta que se ejecuta un STI o se altera el contenido de las banderas (entre ellas el
de IF) recuperndolos de la pila con POPF o IRET.
MOV ax, 8000h
CLI
MOV ss, ax
MOV sp, 2000h
STI
Retorno de interrupcin.
Formato
IRET (no tiene operandos)
Retorna de una rutina de servicio a la interrupcin, extrayendo de la pila los nuevos valores de IP y CS, en
este orden, y el contenido del registro de flags. La ejecucin contina en la instruccin siguiente a la que
se estaba ejecutando cuando ocurri la interrupcin.
Ejemplos de interrupciones del DOS.
La interrupcin ms conocida (y utilizada) es la 21h. Esta interrupcin presenta una gran cantidad de
funciones diversas; por ello adems de indicar el "n entero", debemos indicar tambin el "n funcin" que
se desea dentro de esa interrupcin. Dicho nmero se almacena siempre el registro AH.
No. De
Interrupcin
No. De
Funcin
INT 21h.
Funcin 01h

Accin

Cdigo

Permite dar entrada a un carcter de teclado y al mismo tiempo


dicho carcter aparece en pantalla, en la posicin en la que se
encuentre el cursor. El carcter tecleado queda almacenado en
AL. Si no hay ningn carcter disponible, se espera hasta que
haya alguno.

MOV ah, 01h


INT 21h ; El carcter tecleado queda
en AL

21

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel
INT 21h.
Funcin 02h
INT 21h.
Funcin 08h

INT 21h.
Funcin 09h

INT 21h.
Funcin 4Ch

Permite llevar un carcter desde el procesador hacia la pantalla.


Dicho carcter debe estar almacenado en el registro DL.
Aparecer en la posicin donde se encuentre el cursor.
Permite dar una entrada de un carcter desde el teclado pero sin
que aparezca en pantalla. El carcter tecleado queda
almacenado en el registro Al. Si no hay un carcter disponible se
espera hasta que lo haya.
Visualizacin de una cadena de caracteres. Nos permite llevar
una cadena de caracteres hacia la pantalla. Dicha cadena
aparecer a partir de la posicin en la que se encuentre el
cursor. Esta funcin necesita que en el registro DX se encuentre
la direccin de comienzo de la cadena a presentar en pantalla.
(DS:DX).
Acabar el proceso con cdigo de retorno. Permite realizar el
retorno al Sistema Operativo. Acaba el proceso actual, enviando
un cdigo de retorno al programa original. Se trata de uno de los
diversos mtodos con los que se puede provocar una salida
definitiva de un programa.

MOV dl, carcter


MOV ah, 02h
INT 21h
MOV ah, 08h
INT 21h ; El carcter tecleado queda
en AL
En DX queda el desplazamiento que
hay que hacer dentro; de DS para llegar
a la posicin donde se encuentra;
"cadena"
MOV dx, offset cadena
MOV ah, 09h
INT 21h
MOV ah, 4ch
INT 21h

1.4 ESTRUCTURA DE UN PROGRAMA EN ENSAMBLADOR


Cualquier lenguaje de programacin tiene 3 caractersticas, es decir, debe cumplir con 3 requisitos:
Sintaxis. Son las reglas que deben seguirse para escribir un programa.
Estructura. Es la forma de escribir el programa, para que sea claro y legible y sea menos complicado
encontrar errores.
Lgica. Es el pensamiento del programador, que hace que el programa ejecute las instrucciones
adecuadamente
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 ejemplo, un procesador x86 puede ejecutar la siguiente instruccin binaria como se
expresa en cdigo maquina:
Binario
Hexadecimal

1011 0000 0110 0001


0xb061)

La representacin equivalente en ensamblador es ms fcil de recordar:


mov al, 061h
Esta instruccin significa:
Mueva el valor hexadecimal 61 (97 decimal) al registro "al".
El mnemnico "mov" es un cdigo de operacin u "opcode" , elegido por los diseadores de la
coleccin de instrucciones para abreviar "move" (mover).- El opcode es seguido por una lista de
argumentos o parmetros, completando una instruccin de ensamblador tpica.
El siguiente es un ejemplo del programa clsico Hola mundo escrito para la arquitectura de procesador
x86 (bajo el sistema operativo DOS ).
22

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel

dosseg
.model small
.stack 100h
.data
Cadena1 DB 'Hola Mundo.$'
.code
programa:
mov ax, @data
mov ds, ax
mov dx, offset Cadena1
mov ah, 09h
int 21h
end programa
1.4.1 Data Segment
Cuando el programa requiere del uso de datos, deben definirse en este segmento, en ensamblador no
existen tipos de datos, solo tamao de datos.
Dato

Tamao
en bits
8
16
32
64

DB
DW
DD
DT

Valor Numrico Mximo


255
65,535
4,294,967,296
18,446,744,073,709,551,616

No. De Bytes por


cada caracter
1 byte
2 bytes
4 bytes
8 bytes

El segmento se define de la siguiente manera:


.data
Iden1 db 23d
Iden2 dw 420
Cadena db mensaje$

; es db, por lo tanto su valor mximo podra ser 255


; se define dw porque 420 sobrepasa el valor de 255 para un db
; cada carcter de la cadena se almacenar en 1 byte

1.4.2 Stack Segment


En esta seccin se define el tamao que tendr el segmento de stack para ese programa. Este segmento
debe definirse una sola vez. Si se est trabajando con programas modularizados, esta definicin deber
escribirse en el programa principal.
.stack 100h

; Se define un stack de 256 bytes de tamao (162 =256)

1.4.3 Code Segment


En este segmento del programa se escriben todas las instrucciones que se realizarn.
.code
xor ax, ax
mov ax, @data
mov ds, ax
23

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel

mov bx, offset cadena


mov al, [bx+1]
..
..
end
1.4.4 Instrucciones del Programa
Cada arquitectura de computadoras tiene su propio lenguaje de mquina, y en consecuencia su propio
lenguaje ensamblador. Las computadoras difieren en el tipo y nmero de operaciones que soportan;
tambin pueden tener diferente cantidad de registros, y distinta representacin de los tipos de datos en
memoria.
Aunque la mayora 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 diferencia.
Pueden existir mltiples conjuntos de mnemnicos o sintaxis de ensamblador para un mismo conjunto
de instrucciones, instanciados tpicamente en diferentes programas ensamblador. En estos casos, la
alternativa ms popular es la provista por los fabricantes, y usada en los manuales del programa.
Cdigo mquina
El lenguaje de mquina esta formado por instrucciones discretas, que -dependiendo de la arquitectura del
procesador- pueden especificar:
Registros especficos para operaciones aritmticas, direccionamiento o control de funciones.
Posiciones de memoria especficas (offset).
Modos de direccionamiento usados para interpretar a los operandos.
Las operaciones ms complejas se realizan combinando estas simples instrucciones, que pueden ser
ejecutadas secuencialmente o mediante instrucciones de control de flujo.
Las operaciones disponibles en la mayora de los conjuntos de instrucciones incluye:
Mover
Llenar un registro con un valor constante
Mover datos de una posicin de memoria a un registro o viceversa
Escribir y leer datos de dispositivos
Computar
Sumar, restar, multiplicar o dividir los valores de dos registros, colocando el resultado en uno de
ellos o en otro registro
Realizar operaciones binarias, incluyendo operaciones lgicas (AND/OR/XOR/NOT)
Comparar valores entre registros (mayor, menor, igual)
Afectar el flujo del programa
Saltar a otra posicin en el programa y ejecutar instrucciones all
Saltar si se cumplen ciertas condiciones (IF)
Saltar a otra posicin, pero guardar el punto de salida para retornar (CALL, llamada a subrutinas)
Algunas computadoras incluyen instrucciones complejas dentro de sus capacidades. Una sola
instruccin compleja hace lo mismo que en otras computadoras puede requerir una larga serie de
instrucciones, por ejemplo:
Salvar varios registros en la pila de una sola vez
Mover grandes bloques de memoria
Operaciones aritmticas complejas o de punto flotante (seno, coseno, raz cuadrada )
24

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel

1.4.5 Directivas
El MASM (Macro Assembler, ensamblador) posee un conjunto de instrucciones que no pertenecen al
lenguaje ensamblador propiamente sino que son instrucciones que nicamente son reconocidas por el
ensamblador y que han sido agregadas para facilitar la tarea de ensamblado, tanto para el programador
como para el programa que lo lleva a cabo. Dichas instrucciones son denominadas directivas.
En general, las directivas son usadas para especificar la organizacin de memoria, realizar
ensamblado condicional, definir macros, entrada, salida, control de archivos, listados, cross-reference,
direcciones e informacin acerca de la estructura de un programa y las declaraciones de datos.
Conjunto de instrucciones
Dentro de las directivas ms importantes, tenemos las que establecen el conjunto de instrucciones a
soportar para un microprocesador en especial:
.8086(defecto).- Activa las instrucciones para el 8086 y 8088 e inhibe las del 80186 y 80286.
.8087(defecto).- Activa instrucciones para el 8087 y desactiva las del 80287.
.186.- Activa las instrucciones del 80186.
.286c.- Activa instrucciones del 80286 en modo no protegido.
.286p.- Activa instrucciones del 80286 en modo protegido y no protegido.
.287.- Activa las instrucciones para el 80287.
Declaracin de segmentos
En lo que respecta a la estructura del programa tenemos las directivas SEGMENT y ENDS que
marcan el inicio y final de un segmento del programa. Un segmento de programa es una coleccin de
instrucciones y/o datos cuyas direcciones son todas relativas para el mismo registro de segmento. Su
sintaxis es:
nombre SEGMENT [alineacin] [combinacin] [clase
nombre ENDS
El nombre del segmento es dado por nombre, y debe ser nico. Segmentos con el mismo
nombre se tratan como un mismo segmento. Las opciones alineacin, combinacin, y clase
proporcionan informacin al LINK sobre cmo ajustar los segmentos.
Para alineacin tenemos los siguientes valores: byte (usa cualquier byte de direccin), word
(usa cualquier palabra de direccin, 2 bytes/word), para (usa direcciones de prrafos, 16 bytes/prrafo,
deafult), y page (usa direcciones de pgina, 256 bytes/page).
Combinacin define cmo se combinarn los segmentos con el mismo nombre. Puede asumir
valores de: public (concatena todos los segmentos en uno solo), stack (igual al anterior, pero con
direcciones relativas al registro SS, common (crea segmentos sobrepuestos colocando el inicio de todos
en una misma direccin), memory (indica al LINK tratar los segmentos igual que MASM con public,
at address (direccionamiento relativo a address).
clase indica el tipo de segmento, sealados con cualquier nombre. Cabe sealar que en la
definicin est permitido el anidar segmentos, pero no se permite de ninguna manera el sobreponerlos.
25

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel

Fin de cdigo fuente


Otra directiva importante es la que indica el final de un mdulo. Al alcanzarla el ensamblador ignorar
cualquier otra declaracin que siga a sta. Su sintaxis es:
END [expresin]
la opcin expresin permite definir la direccin en la cual el programa iniciar.
Asignacin de segmentos
La directiva ASSUME permite indicar cuales sern los valores por defecto que asumirn los registros de
segmento. Existen dos formas de hacer esto:
ASSUME registrosegmento:nombre,,,
ASSUME NOTHING
NOTHING cancela valores previos.
Etiquetas
Las etiquetas son declaradas
nombre:
donde nombre constituye una cadena de caracteres.
Declaracin de datos
Estos se declaran segn el tipo, mediante la regla
[nombre] directiva valor,,,
donde directiva puede ser DB (bytes), DW (palabras), DD (palabra doble), DQ (palabra cudruple),
DT (diez bytes). Tambin pueden usarse las directivas LABEL (crea etiquetas de instrucciones o datos),
EQU (crea smbolos de igualdad) , y el smbolo = ( asigna absolutos) para declarar smbolos.
Estos tienen la siguiente sintaxis:
nombre = expresin
nombre EQU expresin
nombre LABEL tipo
donde tipo puede ser BYTE, WORD, DWORD, QWORD, TBYTE, NEAR, FAR.
26

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel

Declaracin de estructuras
Para la declaracin de estructuras de datos se emplea la directiva STRUC. Su sintaxis es:
nombre STRUC
campos
nombre ENDS

1.5 PROCEDIMIENTO DE ENSAMBLE, ENLACE Y EJECUCIN


La transformacin del lenguaje ensamblador en cdigo mquina la realiza un programa ensamblador, y la
traduccin inversa la puede efectuar un des-ensamblador. A diferencia de los lenguajes de alto nivel, aqu
hay usualmente una correspondencia 1 a 1 entre las sencillas instrucciones en ensamblador y el lenguaje
mquina.
Sin embargo, en algunos casos, un ensamblador puede proveer "pseudo instrucciones" que se
expanden en un cdigo de mquina ms largo a fin de proveer la necesaria funcionalidad. Por ejemplo,
para un cdigo mquina condicional como "si X mayor o igual que", un ensamblador puede utilizar una
pseudo instruccin al grupo "haga si menor que" , y "si = 0" sobre el resultado de la condicin anterior.
Los ensambladores ms completos tambin proveen un rico lenguaje de macros que se utiliza
para generar cdigo ms complejo y secuencias de datos.
El nivel de lenguaje ensamblador tiene aspectos importantes de los niveles de micro-arquitectura,
en los cuales se encuentra (ISA y sistema operativo) estos dos se utilizan para la traduccin en lugar de la
interpretacin. Algunas caractersticas del lenguaje se describen a continuacin
Como se especific al inicio, se usa la traduccin cuando se cuenta con un procesador (ya sea
hardware o un interprete) para el lenguaje objeto pero no para el lenguaje fuente. Si la traduccin se
realiza correctamente, la ejecucin del programa traducido dar exactamente los mismos resultados que
habra dado la ejecucin del programa fuente. Hay dos diferencias entre traduccin e interpretacin, en la
traduccin no se ejecuta directamente el programa original, en el lenguaje fuente se convierte en un
programa equivalente llamado programa objeto o programa binario ejecutable y este funciona solo cuando
se ha acabado la traduccin.
El cdigo mquina, un simple patrn de bits, es hecho legible reemplazando valores crudos por
smbolos denominados mnemnicos. Se invent para facilitar la tarea de los primeros programadores que
hasta ese momento tenan que escribir directamente en cdigo binario. Antes an era peor, ya que el
cdigo de ceros y unos (el programa) deba introducirse en una tarjeta perforada. La posicin ocupada por
cada punto equivala a un "1" o a un "0" segn hubiera un hueco o no. Lo cual supona una forma casi
idntica en la que hoy se escriben los datos binaros en soportes tales como los CDs y DVDs.
Mientras que una computadora reconoce la instruccin de mquina
IA-32
10110000 01100001
para los programadores de microprocesadores x86 es mucho ms fcil reconocer dicha instruccin
empleando lenguaje ensamblador:
27

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel

mov al, 0x61


(que significa mover el valor hexadecimal 61 (97 decimal) al registro 'al'.)
Cada instruccin de la mquina se transforma en una nica instruccin en cdigo simblico. Pero
adems, para mejorar la legibilidad del programa, el cdigo simblico introduce instrucciones adicionales,
que no corresponden a ninguna instruccin de la mquina y que proporcionan informacin. Se llaman
"pseudo-instrucciones".
El cdigo simblico puede parecer de difcil acceso, pero es ms fcil de recordar e interpretar que
el binario o el hexadecimal.
Los lenguajes simblicos no resuelven definitivamente el problema de cmo programar un
ordenador de la manera ms sencilla posible. Para utilizarlos, hay que conocer a fondo el
microprocesador, los registros de trabajo de que dispone, la estructura de la memoria, y muchas cosas
ms.
Adems, el lenguaje ensamblador est demasiado ligado al microprocesador para que sea posible
escribir programas independientes de la mquina en que van a ejecutarse.
Este cdigo simblico no puede ser ejecutado directamente por un ordenador, por lo que es
preciso traducirlo previamente. Pero la traduccin es un proceso mecnico y repetitivo, que se presta a su
realizacin por un programa de ordenador.
Los programas que traducen cdigo simblico al lenguaje de mquina se llaman ensambladores
("assembler", en ingls), porque son capaces de ensamblar el programa traducido a partir de varias
piezas, procedimientos o subrutinas a cdigo binario ("1" y "0") que entiende el procesador.

INTERPRETE

Programa
Fuente
.PAS
.BAS
.CBL
.PRG
.ASM

EJECUCIN

.OBJ
COMPILACION O
ENSAMBLE
Programa
Objeto

.EXE

Programa
Ejecutable

Para la elaboracin de programas ejecutables, se sigue el proceso esquematizado en la figura anterior.


1. Se inicia con la captura de un programa denominado Programa Fuente, escrito en cdigo ASCII en
cualquier editor de textos que almacene sus archivos es este formato (cdigo ASCII), ya que algunos
editores, como el WORD, guardan sus archivos en un formato diferente.
2. Una vez capturado el programa fuente, se procede a la verificacin de la sintaxis del mismo, esto es
que no tenga errores en la escritura y las instrucciones. Segn la forma que se ejecute se denomina:
28

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel

intrprete, cuando se verifica lnea a lnea, y compilado o ensamblado cuando se verifica la totalidad del
programa.
En el caso del intrprete la ejecucin es inmediatamente despus de la verificacin de la lnea,
esto tiene como consecuencia que el programa se ejecutar hasta que encuentre un error y no genera
programa objeto.
En el caso del compilado o ensamblado no es as, una vez que el programa ya no tiene errores
sintcticos, se genera el Programa Objeto, que est escrito en cdigo mquina.
3. El proceso de ligado es el que se lleva a cabo despus del compilado o ensamblado, es este paso, se
determinan las direcciones de las localidades de memoria que utilizar el programa cuando se ejecute.
Se genera el Programa Ejecutable, que al ser llamado directamente de sistema operativo se ejecutar.
PASO 1: EDICION.
Los archivos fuente de cdigo ensamblador deben estar en formato ASCII standard. Para esto
puede usarse cualquier editor que permita crear archivos sin formato, por ejemplo: Edlin, Edit, Write, el
editor del Turbo Pascal, Works, Word. Las declaraciones pueden ser introducidas en maysculas y/o
minsculas. Una buena prctica de programacin es poner todas las palabras reservadas (directivas e
instrucciones) en maysculas y todo lo del usuario en minsculas para fines de facilidad de lectura del
cdigo.
Las sentencias pueden comenzar en cualquier columna, no pueden tener ms de 128 caracteres,
no se permiten lneas mltiples ni cdigos de control, y cada lnea debe ser terminada con una
combinacin de line-feed (avance de linea) y carriage-return (retorno de carro). Los comentarios se
declaran con ; y terminan al final de la lnea.
PASO 2: ENSAMBLADO.
El ensamblado se lleva a cabo invocando al MASM. Este puede ser invocado, usando una lnea
de comando, de la siguiente manera:
MASM archivo [,[objeto][,[listado][,[cross]]]]][opciones][;]
donde:
archivo
objeto
listado.
cross.
opciones.

Corresponde al programa fuente. Por defecto se toma la extensin .ASM.


Es el nombre para el archivo objeto.
Nombre del archivo de listado de ensamblado.
Es un archivo de referencias cruzadas.
Pueden ser:
/A
escribe los segmentos en orden alfabtico
/S
escribe los segmentos en orden del fuente
/Bnum
fija buffer de tamao num
/C
especifica un archivo de referencias cruzadas
/L
especifica un listado de ensamble
/D
crea listado del paso 1
/Dsym
define un smbolo que puede usarse en el ensamble
/Ipath
fija path para buscar archivos a incluir
/ML
mantiene sensitividad de letras (mays./mins) en nombres
/MX
mantiene sensitividad en nombre pblicos y externos
29

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel

convierte nombres a maysculas


suprime tablas en listados
checa por cdigo impuro
crea cdigo para instrucciones de punto flotante
crea cdigo para emular instrucciones de punto flotante
suprime mensajes de ensamble exitoso
despliega estadsticas adicionales en pantalla
incluir condicionales falsos en pantalla
despliega lneas de error en pantalla

/MU
/N
/P
/R
/E
/T
/V
/X
/Z

Si el ; al final se omite es necesario poner todas las comas que se indican. Si no se quiere
poner algn valor basta con dejar la coma.
La otra forma de invocar al ensamblador es slo tecleando MASM y respondiendo a la
informacin que se solicita. Para omitir algn valor slo basta teclear ENTER si dar ningn valor.
TERCER PASO: LIGADO
De la misma forma que el ensamblado, la fase de liga se lleva a cabo con el LINK. Este puede ser
invocado de la misma forma que el MASM. Los parmetros que este requiere son:
LINK objeto [,[ejecutable][,[mapa][,[librera]]]]][opciones][;]
donde:
objeto
Es el nombre para el archivo .OBJ
ejecutable
Nombre del archivo .EXE
mapa
Nombre del archivo mapa
librera
Nombre del archivo biblioteca de rutinas
opciones
Pueden ser:
/HELP
muestra lista de opciones
/PAUSE
pausa en el proceso
/EXEPACK
empaca archivo ejecutable
/MAP
crea mapa se smbolos pblicos
/LINENUMBERS
copia nmero de lneas al mapa
/NOIGNORECASE
mantiene sensitividad en nombres
/NODEFAULTLIBRARYSEARCH
no usa bibliotecas por defecto
/STACK:size
fija el tamao del stack a usar
/CPARMAXALLOC:nmero
fija alojacin mxima de espacio
/HIGH
fija la direccin de carga ms alta
/DSALLOCATE
aloja grupo de datos
/NOGROUPASSOCIATION
ignora asociaciones para direcciones
/OVERLAYINTERRUPT:nmero
asigna nuevo nmero a la INT 03Fh
/SEGMENTS:nmero
procesa un nmero de segmentos
/DOSSEG
sigue la convencin de orden de DOS
PASO 4: EJECUCION.
Para la ejecucin del programa simplemente basta teclear su nombre en el prompt de MS-DOS y
teclear ENTER. Con esto el programa ser cargado en memoria y el sistema proceder a ejecutarlo. El
30

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel

proceso completo para poder crear un programa ejecutable con el Microsoft Macro Assembler se
muestra abajo.

PASO 5: DEPURACION.
Para la depuracin de un programa en ensamblador tenemos disponibles dos herramientas. Por
un lado tenemos el debugger que nos proporciona MS-DOS (DEBUG.EXE) y por otro lado tenemos el
que nos proporciona Microsoft (SYMDEB.EXE). Este ltimo trabaja igual que el de MS-DOS pero nos
proporciona muchas ventajas ms. Una de ellas es la facilidad de desplegar el cdigo fuente
correspondiente a la instruccin que se esta ejecutando (si el programa ejecutable fue ensamblado o
compilado con un ensamblador o compilador compatible), nos permite ejecutar comandos del S.O. y nos
permite obtener informacin de las interrupciones de manera simblica.
Otra opcin es usar el programa TD.EXE o Turbo Debugger.

1.6 ENTORNO DE PROGRAMACIN


Se recomienda ampliamente trabajar en ensamblador en modo de consola, para un adecuado uso de los
registros del procesador, utilizarlo en entorno grfico puede tener como consecuencia interrupciones
abruptas del sistema. Por tanto el entorno de programacin es el austero modo de consola, pantalla negra,
tecleando los comando, sin el entretenido uso del ratn.
Ejecutando el proceso de ensamble y ligado, lo que se vera en la pantalla sera lo siguiente:
Ensamblado
C:\DATA\PROGRAMS\ASM>masm main
Microsoft (R) Macro Assembler Version 4.00
Copyright (C) Microsoft Corp 1981, 1983, 1984, 1985. All rights reserved.
Object filename [main.OBJ]:
Source listing [NUL.LST]:
Cross-reference [NUL.CRF]:
50966 Bytes symbol space free
0 Warning Errors
31

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA


INGENIERIA EN SISTEMAS COMPUTACIONALES
Lenguaje de Interfaz
Unidad 1: Fundamentos
MTI. Ana Francisca Lule Rangel

0 Severe Errors
Ensamblado del programa MAIN.ASM

C:\DATA\PROGRAMS\ASM>masm task
Microsoft (R) Macro Assembler Version 4.00
Copyright (C) Microsoft Corp 1981, 1983, 1984, 1985. All rights reserved.
Object filename [task.OBJ]:
Source listing [NUL.LST]:
Cross-reference [NUL.CRF]:
51034 Bytes symbol space free
0 Warning Errors
0 Severe Errors
Ensamblado del programa TASK.ASM

Ligado
C:\DATA\PROGRAMS\ASM>link main+task
Microsoft (R) 8086 Object Linker Version 3.05
Copyright (C) Microsoft Corp 1983, 1984, 1985. All rights reserved.
Run File [MAIN.EXE]:
List File [NUL.MAP]:
Libraries [.LIB]:
C:\DATA\PROGRAMS\ASM>main
Entrando a un submodulo....
.......saliendo del submodulo.
Ligado de los programas MAIN.OBJ y TASK. OBJ

C:\DATA\PROGRAMS\ASM>

32