Está en la página 1de 19

Introduccin al Lenguaje Ensamblador

2
ITS Carrillo Puerto Lenguajes De Interfaz ISC-6B

Contenido

1.1 Importancia de la programacin en Lenguaje Ensamblador ....................................... 3
1.2 El procesador y sus registros internos ................................................................................... 4
1.3 La memoria principal (RAM) .................................................................................................... 7
1.4 Concepto De Interrupcin. ............................................................................................................ 8
1.5 Llamadas A Servicios Del Sistema. ........................................................................................ 9
1.6 Modos De Direccionamiento. ................................................................................................. 10
Direccionamiento Directo. ................................................................................................. 11
Direccionamiento Relativo. ................................................................................................ 12
Direccionamiento Indirecto. .............................................................................................. 12
Direccionamiento Implcito. ............................................................................................... 13
Direccionamiento de Registro. ......................................................................................... 13
Direccionamiento Indirecto por Registro. ..................................................................... 13
1.7 Proceso de ensamblado y ligado .......................................................................................... 14
1.8 Desplegado de mensajes en el monitor ............................................................................... 15


C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
Introduccin al Lenguaje Ensamblador
3
ITS Carrillo Puerto Lenguajes De Interfaz ISC-6B

UNIDAD I: INTRODUCCION AL LENGUAJE ENSAMBLADOR
1.1 Importancia de la programacin en Lenguaje Ensamblador

Definicin: El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado
para escribir programas informticos, y constituye la representacin ms directa del
cdigo mquina especfico para cada arquitectura de microprocesador.
La importancia del lenguaje ensamblador es principalmente que se trabaja
directamente con el microprocesador; por lo cual se debe de conocer el
funcionamiento interno de este, tiene la ventaja de que en l se puede realizar
cualquier tipo de programas que en los lenguajes de alto nivel no lo pueden realizar.
Otro punto sera que los programas en ensamblador ocupan menos espacio en
memoria.


Ventajas y desventajas del Lenguaje Ensamblador
Ventajas
1. Como trabaja directamente con el microprocesador al ejecutar un programa,
pues como este lenguaje es el ms cercano a la mquina la computadora lo
procesa ms rpido.
2. Eficiencia de tamao.- Un programa en ensamblador no ocupa mucho espacio
en memoria porque no tiene que cargan libreras y dems como son los
lenguajes de alto nivel.
3. Flexibilidad.- En lenguaje ensamblador se pueden hacer tareas especficas que
en un lenguaje de alto nivel no se pueden llevar acabo porque tienen ciertas
limitantes que no se lo permite.


C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
Introduccin al Lenguaje Ensamblador
4
ITS Carrillo Puerto Lenguajes De Interfaz ISC-6B

1.2 El procesador y sus registros internos

El procesador es un elemento importante del hardware de la PC. Es la unidad
del sistema, que contiene una tarjeta de sistema, fuente de poder y ranuras de
expansin para tarjetas opcionales. Los elementos de la tarjeta de sistema son un
microprocesador, memoria de solo lectura (ROM) y memoria de acceso aleatorio
(RAM).

REGISTROS INTERNOS DEL PROCESADOR.
Los registros del procesador se emplean para controlar instrucciones en
ejecucin, manejar direccionamiento de memoria y proporcionar capacidad
aritmtica. Los registros son direccionables por medio de un nombre. Los bits por
convencin, se numeran de derecha a izquierda, como en:
... 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Registros de segmento
Un registro de segmento tiene 16 bits de longitud y facilita un rea de memoria
para direccionamiento conocida como el segmento actual.
Registro CS. El DOS almacena la direccin inicial del segmento de cdigo
de un programa en el registro CS. Esta direccin de segmento, ms un valor
de desplazamiento en el registro apuntador de instruccin (IP), indica la
direccin de una instruccin que es buscada para su ejecucin.
Registro DS. La direccin inicial de un segmento de datos de programa es
almacenada en el registro DS. En trminos sencillos, esta direccin, ms un
valor de desplazamiento en una instruccin, genera una referencia a la
localidad de un byte especifico en el segmento de datos.
Registro SS. El registro SS permite la colocacin en memoria de una pila,
para almacenamiento temporal de direcciones y datos. El DOS almacena la
direccin de inicio del segmento de pila de un programa en el registro SS.
Esta direccin de segmento, ms un valor de desplazamiento en el registro
del apuntador de pila (SP), indica la palabra actual en la pila que est siendo
direccionada.
Registros ES. Algunas operaciones con cadenas de caracteres (datos de
caracteres) utilizan el registro extra de segmento para manejar el
direccionamiento de memoria. En este contexto, el registro ES est asociado
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
Introduccin al Lenguaje Ensamblador
5
ITS Carrillo Puerto Lenguajes De Interfaz ISC-6B

con el registro DI (ndice). Un programa que requiere el uso del registro ES
puede inicializarlo con una direccin de segmento apropiada.
Registros FS y GS. Son registros extra de segmento en los procesadores
80386 y posteriores.
Registros de propsito general.
Son nicos en el sentido de que se puede direccionarlos como una palabra o
como una parte de un byte. El ltimo byte de la izquierda es la parte "alta", y el ltimo
byte de la derecha es la parte "baja". Por ejemplo, el registro CX consta de una parte
CH (alta) y una parte Cl (baja), y usted puede referirse a cualquier parte por su
nombre.
Registro AX. El registro AX, el acumulador principal, es utilizado para
operaciones que implican entrada/salida y la mayor parte de la aritmtica.
Por ejemplo, las instrucciones para multiplicar, dividir y traducir suponen el
uso del AX. Tambin, algunas operaciones generan cdigo ms eficiente si
se refieren al AX en lugar de a los otros registros.

Registro BX. El BX es conocido como el registro base ya que es el nico
registro de propsito general que puede ser ndice para direccionamiento
indexado. Tambin es comn emplear el BX para clculos.

Registro DX. El DX es conocido como el registro de datos. Algunas
operaciones de entrada/salida requieren uso, y las operaciones de
multiplicacin y divisin con cifras grandes suponen al DX y al AX trabajando
juntos.


Registro de Apuntador de Instrucciones.
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
Introduccin al Lenguaje Ensamblador
6
ITS Carrillo Puerto Lenguajes De Interfaz ISC-6B

El registro apuntador de instrucciones (IP) de 16 bits contiene el
desplazamiento de direccin de la siguiente instruccin que se ejecuta. El IP est
asociado con el registro CS en el sentido de que el IP indica la instruccin actual
dentro del segmento de cdigo que se est ejecutando actualmente. Los
procesadores 80386 y posteriores tienen un IP ampliado de 32 bits, llamado EIP.
Registros Apuntadores.
Los registros SP (apuntador de la pila) Y BP (apuntador de base) estn
asociados con el registro SS y permiten al sistema accesar datos en el segmento
de la pila.
Registro SP. El apuntador de la pila de 16 bits est asociado con el registro
SS y proporciona un valor de desplazamiento que se refiere a la palabra actual que
est siendo procesada en la pila. El sistema maneja de forma automtica estos
registros.
Registro BP. El BP de 16 bits facilita la referencia de parmetros, los cuales
son datos y direcciones transmitidos va pila.
Registros ndice.
Los registros SI y DI estn disponibles para direccionamiento indexado y para
sumas y restas.
Registro SI. El registro ndice fuente de 16 bits es requerido por algunas
operaciones con cadenas (de caracteres). En este contexto, el SI est asociado con
el registro DS.
Registro DI. El registro ndice destino tambin es requerido por algunas
operaciones con cadenas de caracteres. En este contexto, el DI est asociado con
el registro ES.
Registro de Banderas.
Sirven para indicar el estado actual de la mquina y el resultado del
procesamiento. Muchas instrucciones que piden comparaciones y aritmtica
cambian el estado de las banderas, algunas cuyas instrucciones pueden realizar
pruebas para determinar la accin subsecuente:
OF (Overflow, desbordamiento). Indica desbordamiento de un bit de orden
alto (mas a la izquierda) despus de una operacin aritmtica.
DF (direccin). Designa la direccin hacia la izquierda o hacia la derecha
para mover o comparar cadenas de caracteres.
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
Introduccin al Lenguaje Ensamblador
7
ITS Carrillo Puerto Lenguajes De Interfaz ISC-6B

IF (interrupcin). Indica que una interrupcin externa, como la entrada
desde el teclado, sea procesada o ignorada.
TF (trampa). Permite la operacin del procesador en modo de un paso. Los
programas depuradores, como el DEBUG, activan esta bandera de manera
que usted pueda avanzar en la ejecucin de una sola instruccin a un tiempo,
para examinar el efecto de esa instruccin sobre los registros de memoria.
SF (signo). Contiene el signo resultante de una operacin aritmtica (0 =
positivo y 1 = negativo).
ZF (cero). Indica el resultado de una operacin aritmtica o de comparacin
(0 = resultado diferente de cero y 1 = resultado igual a cero).
AF (acarreo auxiliar). Contiene un acarreo externo del bit 3 en un dato de 8
bits para aritmtica especializada.
PF (paridad). Indica paridad par o impar de una operacin en datos de 8 bits
de bajo orden (mas a la derecha).
CF (acarreo). Contiene el acarreo de orden ms alto (ms a la izquierda)
despus de una operacin aritmtica; tambin lleva el contenido del ltimo
bit en una operacin de corrimiento o de rotacin.
Las banderas estn en el registro de banderas en las siguientes posiciones:


1.3 La memoria principal (RAM)



RAM es el acrnimo ingls de Random Access Memory (memoria de acceso
aleatorio). Se trata de una memoria de semiconductor en la que se puede tanto leer
como escribir informacin. Es una memoria voltil, es decir, pierde su contenido al
desconectar la energa elctrica. Se utiliza normalmente como memoria temporal
para almacenar resultados intermedios y datos similares no permanentes.
En estas memorias se accede a cada celda (generalmente se direcciona a
nivel de bytes) mediante un cableado interno, es decir, cada byte tiene un camino
prefijado para entrar y salir, a diferencia de otros tipos de almacenamiento, en las
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
Introduccin al Lenguaje Ensamblador
8
ITS Carrillo Puerto Lenguajes De Interfaz ISC-6B

que hay una cabeza lectograbadora que tiene que ubicarse en la posicin deseada
antes de leer el dato deseado.
Se dicen "de acceso aleatorio" porque los diferentes accesos son
independientes entre s. Por ejemplo, si un disco rgido debe hacer dos accesos
consecutivos a sectores alejados fsicamente entre s, se pierde un tiempo en mover
la cabeza hasta la pista deseada (o esperar que el sector pase por debajo, si ambos
estn en la misma pista), tiempo que no se pierde en la RAM.
Las RAM se dividen en estticas y dinmicas. Una memoria RAM esttica
mantiene su contenido inalterado mientras est alimentada. La informacin
contenida en una memoria RAM dinmica se degrada con el tiempo, llegando sta
a desaparecer, a pesar de estar alimentada. Para evitarlo hay que restaurar la
informacin contenida en sus celdas a intervalos regulares, operacin denominada
refresco.
Las memorias se agrupan en mdulos, que se conectan a la placa base del
computador. Segn los tipos de conectores que lleven los mdulos, se clasifican en
Mdulos SIMM (Single In-line Memory Module), con 30 o 72 contactos,
mdulos DIMM (Dual In-line Memory Module), con 168 contactos y
mdulos RIMM (RAMBUS In-line Memory Module) con 184 contactos.

1.4 Concepto De Interrupcin.

Un procesador no puede procesar simultneamente varios trozos de
informacin (procesa un trozo de informacin a la vez), un programa que est siendo
ejecutado puede, gracias al pedido de interrupcin, ser momentneamente
suspendido mientras se produce una interrupcin. El programa interrumpido puede
continuar ejecutndose luego. Existen 256 direcciones de interrupcin diferentes.
Una interrupcin se convierte en una interrupcin de hardware cuando es
solicitada por uno de los componentes de hardware del equipo. En efecto, existen
varios perifricos en un equipo. Estos perifricos necesitan generalmente utilizar los
recursos del sistema aunque slo sea para comunicarse con el sistema mismo.
Cuando un perifrico desea acceder a un recurso, enva un pedido de
interrupcin al procesador para llamar su atencin. Los perifricos cuentan con un
nmero de interrupcin que se denomina IRQ (Peticiones de Interrupcin. Es como
si cada perifrico tirara de un "hilo" que est atado a una campana para sealarle al
equipo que desea que le preste atencin.
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
Introduccin al Lenguaje Ensamblador
9
ITS Carrillo Puerto Lenguajes De Interfaz ISC-6B

Este "hilo" es, de hecho, una lnea fsica que conecta cada ranura de
expansin as como cada interfaz E/S a la placa madre. Para una ranura ISA de 8
bits, por ejemplo, hay 8 lneas IRQ que unen ranuras ISA de 8 bits a la placa madre
(IRQ0 a IRQ7). Estos IRQ estn controlados por un "controlador de interrupcin"
que se encarga de cederle la palabra al IRQ que posee la mayor prioridad.
Al aparecer las ranuras de 16 bits, se agregaron IRQ 8 a 15. En
consecuencia, fue necesario agregar un segundo controlador de interrupcin. Los
dos grupos de interrupciones estn unidos por IRQ 2 el cual se conecta (o "produce
una cascada") a IRQ 9. En cierto modo, esta cascada "inserta" IRQ 8 a 15 entre
IRQ1 y 3:

Dado que la prioridad va del IRQ inferior al superior y que se insertan IRQ 8
a 15 entre IRQ 1 y 3, el orden de prioridad es el siguiente:
0 > 1 > 8 > 9 > 10 > 11 > 12 > 13 > 14 > 15 > 3 > 4 > 5 > 6 > 7

1.5 Llamadas A Servicios Del Sistema.

Las llamadas al sistema comnmente usan una instruccin especial de
la CPU que causa que el procesador transfiera el control a un cdigo privilegiado.
Previamente especificado por el mismo cdigo. Esto permite al cdigo privilegiado
especificar donde va a ser conectado as como el estado del procesador.
Cuando una llamada al sistema es invocada, la ejecucin del programa que
invoca es interrumpida y sus datos son guardados, normalmente en su PCB (Bloque
de Control de Proceso del ingls Process Control Block), para poder continuar
ejecutndose luego. El procesador entonces comienza a ejecutar las instrucciones
de cdigo de alto nivel de privilegio, para realizar la tarea requerida. Cuando esta
finaliza, se retorna al proceso original, y contina su ejecucin. El retorno al proceso
demandante no obligatoriamente es inmediato, depende del tiempo de ejecucin de
la llamada al sistema y del algoritmo de planificacin de CPU.
Las llamadas son peticiones a ejecucin de rutinas y proporcionan la interfaz
entre el sistema operativo y un programa en ejecucin. Estas llamadas son
instrucciones de lenguaje ensamblador y se presentan en los manuales que
emplean los programadores de este lenguaje.
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
Introduccin al Lenguaje Ensamblador
10
ITS Carrillo Puerto Lenguajes De Interfaz ISC-6B

Las llamadas al sistema para ejecucin y el control de programas,
usualmente incluyen un conjunto completo de los servicios accesibles por la va del
lenguaje de rdenes, tales como: RUN, EXECUTE, ABORT y planificacin
relacionada con el tiempo, adems los usuarios con las llamadas del sistema
pueden suspender, establecer o cambiar atributos del tiempo de ejecucin de uno
o ms programas.
Las llamadas del sistema para el gestor de recursos, proporcionan servicios
para la asignacin, reserva y reclamacin de los recursos del sistema. Por ejemplo,
existen llamadas del sistema para extender o reducir la cantidad de memoria
poseda por el programa que se llama. Las llamadas del sistema pueden asignar o
reservar otros tipos de objetos del sistema y despus destruir o devolver su custodia
al sistema operativo.
Las llamadas al sistema se pueden agrupar en cinco categoras:
1. Control de proceso (Crear, cargar, ejecutar un proceso, obtener y
establecer atributos, esperar un suceso, liberar memoria, abortar y terminar
proceso).
2. Manipulacin de archivos (Crear, abrir, leer, obtener y establecer
atributos, cerrar y eliminar archivos).
3. Manipulacin de perifricos (Solicitar, escribir, leer, obtener y establecer
atributos, liberar perifrico).
4. Manipulacin de la informacin (Obtener fecha y hora, establecer fecha
y hora, obtener y establecer datos del sistema, obtener y establecer
atributos).
5. Comunicaciones (Crear conexin, enviar mensajes, recibir mensajes,
transferir informacin del estado y eliminar conexin.

1.6 Modos De Direccionamiento.

Los llamados modos de direccionamiento son las diferentes maneras de
especificar en informtica un operando dentro de una instruccin en lenguaje
ensamblador.
Un modo de direccionamiento especifica la forma de calcular la direccin de
memoria efectiva de un operando mediante el uso de la informacin contenida en
registros y / o constantes, contenida dentro de una instruccin de la mquina o en
otra parte.
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
Introduccin al Lenguaje Ensamblador
11
ITS Carrillo Puerto Lenguajes De Interfaz ISC-6B

Las operaciones se hacen entre registros o registros y memoria, pero nunca
entre memoria y memoria (salvo algunas operaciones con cadenas de caracteres).
Los modos de direccionamiento determinan el lugar en que reside un operando, un
resultado o la siguiente instruccin a ejecutar segn el caso.
Tenga en cuenta que no existe una forma generalmente aceptada de
nombrar a los distintos modos de direccionamiento. En particular, los distintos
autores y fabricantes de equipos pueden dar nombres diferentes para el modo de
hacer frente al mismo, o los mismos nombres, a los diferentes modos de
direccionamiento
Direccionamiento Inmediato.
En este modo el operando es especificado en la instruccin misma. En otras
palabras, una instruccin de modo inmediato tiene un campo de operando en vez
de un campo de direccin. El campo del operando contiene el operando actual que
se debe utilizar en conjunto con la operacin especificada en la instruccin. Las
instrucciones de modo inmediato son tiles para inicializar los registros en un valor
constante.
Cuando el campo de direccin especifica un registro del procesador, la
instruccin se dice que est en el modo de registro.

Direccionamiento Directo.

Es directo cuando la instruccin contiene el lugar donde se encuentra el
operando. Segn el lugar donde se encuentra el operando puede ser:
Direccionamiento directo a registro.
Direccionamiento directo a memoria
Direccin completa (p. ej. Z80 sobre 64 Kb con 16 bits)
Direccin sobre una pgina del mapa de memoria; tambin se
conoce como direccionamiento de pgina base.

C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
Introduccin al Lenguaje Ensamblador
12
ITS Carrillo Puerto Lenguajes De Interfaz ISC-6B



Direccionamiento Relativo.

La instruccin indica el desplazamiento del operando con respecto a un
puntero:
La direccin efectiva es calculada por la unidad de control sumando, o
restando, el desplazamiento al puntero de referencia que suele estar en un registro.
Dependiendo del puntero se tienen diferentes modos de direccionamiento.
Direccin efectiva = Reg. Referencia + desplazamiento.
Modo de direccionamiento / Registro de referencia / Clculo direccin efectiva:
Relativo a contador de programa Contador de programa (CP) DE = CP +
desplazamiento.
Relativo a registro base Un registro base (R B) DE = RB + desplazamiento.
Relativo a registro ndice Un registro ndice (R I) DE = RI +
desplazamiento.
Relativo a pila Registro de pila (SP) DE = SP + desplazamiento.

Ventajas
Las instrucciones son ms compactas.
El cdigo puede cambiar de lugar en el mapa de memoria con cambiar el
valor del puntero.
Gran facilidad de manejo de estructuras de datos.

Inconvenientes
Se requiere una operacin adicional para el clculo de la direccin del
operando.

Direccionamiento Indirecto.

La posicin indicada por la instruccin no es el operando sino la direccin de
memoria en la que se encuentra, por lo que se necesita un acceso adicional a
memoria.
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
Introduccin al Lenguaje Ensamblador
13
ITS Carrillo Puerto Lenguajes De Interfaz ISC-6B

La direccin de memoria se puede dar mediante:
Direccionamiento directo a memoria
Direccionamiento relativo
Es posible que se realicen mltiples niveles de indireccin.
Su utilidad ms comn es la de acceso a diversas informaciones mediante
tablas de punteros.



Direccionamiento Implcito.

En este modo de direccionamiento no es necesario poner ninguna direccin
de forma explcita, ya que en el propio cdigo de operacin se conoce la direccin
del (de los) operando(s) al (a los) que se desea acceder o con el (los) que se quiere
operar. Requiere que el programador conozca con que operandos se est
trabajando.

Direccionamiento de Registro.

Sirve para especificar operandos que estn en registros.

Direccionamiento Indirecto por Registro.

En este modo el campo de la direccin de la instruccin da la direccin en
donde la direccin efectiva se almacena en la memoria. El control localiza la
instruccin de la memoria y utiliza su parte de direccin para acceder a la memoria
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
Introduccin al Lenguaje Ensamblador
14
ITS Carrillo Puerto Lenguajes De Interfaz ISC-6B

de nuevo para leer una direccin efectiva. Unos pocos modos de direccionamiento
requieren que el campo de direccin de la instruccin sea sumado al control de un
registro especificado en el procesador. La direccin efectiva en este modo se
obtiene del siguiente clculo:
Dir. Efectiva = Dir. de la parte de la instruccin + Contenido del registro del
procesador.


1.7 Proceso de ensamblado y ligado

Para poder crear un programa se requieren varias herramientas: Primero un
editor para crear el programa fuente. Segundo un compilador que no es ms que un
programa que "traduce" el programa fuente a un programa objeto. Y tercero un
enlazador o 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 MASM (macro ensamblador de Microsoft) ya que es el
ms comn, y como enlazador utilizaremos el programa link.

La extensin usada para que MASM reconozca los programas fuente en
ensamblador es .ASM; una vez traducido el programa fuente, el MASM crea un
archivo con la extensin .OBJ, este archivo contiene un "formato intermedio" del
programa, llamado as porque an no es ejecutable pero tampoco es ya un
programa en lenguaje fuente. El enlazador genera, a partir de un archivo .OBJ o la
combinacin de varios de estos archivos, un programa ejecutable, cuya extensin
es usualmente .EXE aunque tambin puede ser .COM, dependiendo de la forma en
que se ensambl.


C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
Introduccin al Lenguaje Ensamblador
15
ITS Carrillo Puerto Lenguajes De Interfaz ISC-6B

1.8 Desplegado de mensajes en el monitor
Para poder desplegar mensajes en lenguaje ensamblador primero
debemos conocer la estructura del programa en ensamblador.
Comentarios En Lenguaje Ensamblador.
El uso de comentarios a lo largo de un programa puede mejorar su claridad,
en especial en lenguaje ensamblador, donde el propsito de un conjunto de
instrucciones con frecuencia no es claro. Un comentario empieza con punto y coma
(;) y, en donde quiera que lo codifique, el ensamblador supone que todos los
caracteres a la derecha de esa lnea son comentarios. Un comentario puede
contener cualquier carcter imprimible, incluyendo el espacio en blanco.
Un comentario puede aparecer solo en una lnea o a continuacin de una
instruccin en la misma lnea, como lo muestran los dos ejemplos siguientes:
Toda esta lnea es un comentario.
ADD AX, BX; Comentario en la misma lnea que la instruccin.
Ya que un comentario aparece solo en un listado de un programa fuente
en ensamblador y no genera cdigo de mquina, puede incluir cualquier cantidad
de comentarios sin afectar el tamao o la ejecucin del programa
ensamblado. Otra manera de proporcionar comentarios es por medio de la directiva
COMMENT.
Palabras Reservadas
Ciertas palabras en lenguaje ensamblador estn reservadas para sus
propsitos propios, y son usadas solo bajo condiciones especiales. Por categoras,
las palabras reservadas incluyen:
Instrucciones, como MOV y ADD, que son operaciones que la computadora
puede ejecutar.
Directivas como END o SEGMENT, que se emplean para proporcionar
comandos al ensamblador.
Operadores, como FAR y SIZE, que se utilizan en expresiones.
Smbolos predefinidos, como @Data y @Model, que regresan informacin a
su programa.
Identificadores.
Un identificador es un nombre que se aplica a elementos en el programa. Los
dos tipos de identificadores son: nombre, que se refiere a la direccin de un
elemento de dato y etiqueta, que se refiere a la direccin de una instruccin. Un
identificador puede usar los siguientes caracteres:
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
Introduccin al Lenguaje Ensamblador
16
ITS Carrillo Puerto Lenguajes De Interfaz ISC-6B

1. Letras del alfabeto: Desde la A hasta la Z(maysculas o minsculas)
2. Dgitos: Desde el 0 al 9 (no puede ser el primer carcter)
3. Caracteres especiales: Signo de interrogacin ( ? ) Subrayado ( _ ), Signo de
pesos ( $ ), Arroba ( @ ), Punto ( . ) (no puede ser el primer carcter)
El primer carcter de un identificador debe ser una letra o un carcter especial,
excepto punto. Ya que el ensamblador utiliza algunos smbolos especiales en
palabras que inician con el smbolo @, debe evitar usarlo en sus definiciones.
En consecuencia, en una instruccin tal como:
ADD AX, BX: El ensamblador sabe de forma automtica que AX y BX se
refieren a los registros. Sin embargo, en una instruccin como:
MOV REGSAVE, AX: El ensamblador puede reconocer el nombre REGSAVE
solo si se define en algn lugar del programa.
Identificador, operacin y operando pueden empezar en cualquier columna. Sin
embargo, si de manera consistente se inicia en la misma columna para estas tres
entradas se hace un programa ms legible.
IDENTIFICADOR: Como ya se explic, el termino nombre se aplica al
nombre de un elemento o directiva definida, mientras que el termino etiqueta
se aplica al nombre de una instruccin.
OPERACIN: La operacin, que debe ser codificada, es con mayor
frecuencia usada para la definicin de reas de datos y codificacin de
instrucciones. Para un elemento de datos, una operacin como DB o DW
define un campo, rea de trabajo o constante.
OPERANDO: El operando (si existe) proporciona informacin para la
operacin que acta sobre l. Para un elemento de datos, el operando
identifica su valor inicial. Por ejemplo, en la definicin siguiente de un
elemento de datos llamado COUNTER, la operacin DB significa "definir
byte", y el operando inicializa su contenido con un valor cero:

Para una instruccin, un operando indica en donde realizar la accin.
Un operando de una instruccin puede tener una, dos o tal vez ninguna entrada.
Aqu estn tres ejemplos:

C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
Introduccin al Lenguaje Ensamblador
17
ITS Carrillo Puerto Lenguajes De Interfaz ISC-6B

Directivas Para Listar: Page Y Title.

La directiva PAGE y TITLE ayudan a controlar el formato de un listado de un
programa en ensamblador. Este es su nico fin, y no tienen efecto sobre la
ejecucin subsecuente del programa.
PAGE. Al inicio de un programa, la directiva PAGE designa el nmero
mximo de lneas para listar en una pgina y el nmero mximo de caracteres en
una lnea. Su formato general es:
PAGE [longitud][, ancho]
El ejemplo siguiente proporciona 60 lneas por pgina y 132 caracteres por
lnea: PAGE 60, 132
El nmero de lneas por pgina puede variar desde 10 hasta 255, mientras
que el nmero de caracteres por lnea desde 60 hasta 132. La omisin de PAGE
causa que el ensamblador tome PAGE 50, 80.
TITLE. Se puede emplear la directiva TITLE para hacer que un ttulo para un
programa se imprima en la lnea 2 de cada pgina en el listado del programa. Puede
codificar TITLE de una vez, al inicio del programa. Su formato general es:
TITLE Texto.
Para el operando texto, una tcnica recomendada es utilizar el nombre del
programa como se registra en el disco. Por ejemplo:
TITLE Prog1 Mi primer programa en ensamblador
Directiva Segment.
Un programa ensamblado en formato .EXE consiste en uno o ms
segmentos. Un segmento de pila define el almacn de la pila, un segmento de datos
define los elementos de datos y un segmento de cdigo proporciona un cdigo
ejecutable. Las directivas para definir un segmento, SEGMENT y ENDS tienen el
formato siguiente:
El enunciado SEGMENT define el inicio de un segmento. El nombre del
segmento debe estar presente, ser nico y cumplir las convenciones para nombres
del lenguaje. EL enunciado ENDS indica el final del segmento y contiene el mismo
nombre del enunciado SEGMENT. El tamao mximo de un segmento es de 64K.
El operando de un enunciado SEGMENT puede tener tres tipos de opciones:
alineacin, combinar y clase, codificadas en este formato:
nombre SEGMENT alineacin combinar ' clase
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
Introduccin al Lenguaje Ensamblador
18
ITS Carrillo Puerto Lenguajes De Interfaz ISC-6B

TIPO ALINEACION. La entrada alineacin indica el lmite en el que inicia el
segmento. Para el requerimiento tpico, PARA, alinea el segmento con el lmite de
un prrafo, de manera que la direccin inicial es divisible entre 16, o 10H. En
ausencia de un operando hace que el ensamblador por omisin tome PARA.
TIPO COMBINAR. La entrada combinar indica si se combina el segmento
con otros segmentos cuando son enlazados despus de ensamblar. Los tipos de
combinar son STACK, COMMON, PUBLIC y la expresin AT. Por ejemplo, el
segmento de la pila por lo comn es definido como:
nombre SEGMENT PARA STACK
Puede utilizar PUBLIC y COMMON en donde tenga el propsito de combinar
de forma separada programas ensamblados cuando los enlaza. En otros casos,
donde un programa no es combinado con otros, puede omitir la opcin o codificar
NONE.
TIPO CLASE. La entrada clase, encerrada entre apstrofos, es utilizada para
agrupar segmentos cuando se enlazan. Se utiliza la clase 'code' para el segmento
de cdigos, 'data' por segmento de datos y 'stack' para el segmento de la pila. El
ejemplo siguiente define un segmento de pila con tipos alineacin, combinar y clase:
nombre SEGMENT PARA STACK 'Stack'

Directiva Assume.
Un programa utiliza el registro SS para direccionar la pila, al registro DS para
direccionar el segmento de datos y el registro CS para direccionar el segmento de
cdigo. Para este fin, usted tiene que indicar al ensamblador el propsito de cada
segmento en el programa.
La directiva para este propsito es ASSEME, codificada en el segmento de
cdigo como sigue:
Operacin Operando.
ASSUME SS:nompila, DS:nomsegdatos, CS: nomsegcodigo,. . .
Los operandos pueden aparecer en cualquier orden. Al igual que otras
directivas, ASSUME es solo un mensaje que ayuda al ensamblador a convertir
cdigo simblico a cdigo maquina; an puede tener que codificar instrucciones que
fsicamente cargan direcciones en registros de segmentos en el momento de la
ejecucin.
PAGE 60,132
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
Introduccin al Lenguaje Ensamblador
19
ITS Carrillo Puerto Lenguajes De Interfaz ISC-6B

TITLE P04ASM1 ESTRUCTURA DE UN PROGRAMA .EXE
;-------------------------------------------------------------------------------
STACKSG SEGMENT PARA STACK 'Stack'
...
STACKSG ENDS
-------------------------------------------------------------------------------
DATASG SEGMENT PARA 'Data'
...
DATASG ENDS
;-------------------------------------------------------------------------------
CODESG SEGMENT PARA 'Code'
BEGIN PROC FAR
ASSUME SS:STACKSG, DS:DATASG,CS:CODESG
MOV AX, DATASG ;Obtiene la direccin del segmento de datos
MOV DS, AX ;Almacena direccin en DS
...
MOV AX, 4C00H ;Peticion
INT 21H ;Salida al DOS
BEGIN ENDP
CODESG ENDS
END BEGIN


Directivas Simplificadas De Segmentos
Los ensambladores de Microsoft y de Borland proporcionan algunas formas
abreviadas para definir segmentos. Para usar estas abreviaturas, inicialice el
modelo de memoria antes de definir algn segmento. El formato general (incluyendo
el punto inicial) es:
.MODEL modelo de memoria
El modelo de memoria puede ser TINY, SMALL, MEDIUM, COMPACT o
LARGE. Los requisitos para cada modelo son:
Puede utilizar cualquiera de estos modelos para un programa autnomo (esto
es, un programa que no est enlazado con algn otro). El modelo TINY est
destinado para uso exclusivo de programas .COM, los cuales tienen sus datos,
cdigo y pila en un segmento.
El modelo SMALL exige que el cdigo quepa en un segmento de 64K y los datos en
otro segmento de 64K. La directiva .MODELL genera automticamente el enunciado
ASSUME necesario.
Los formatos generales (incluyendo el punto inicial) para las directivas que
define los segmentos de la pila, de datos y de cdigo son:
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
Introduccin al Lenguaje Ensamblador
20
ITS Carrillo Puerto Lenguajes De Interfaz ISC-6B

.STACK [tamao]
.DATA
.CODE [nombre]
Cada una de estas directivas hace que el ensamblador genere el enunciado
SEGMENT necesario y su correspondiente ENDS. Los nombres por omisin de los
segmentos (que usted no tiene que definir) son STACK, DATA y TEXT (para el
segmento de cdigo).


C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m
C
lic
k
t
o
b
u
y
N
O
W
! P
D
F
-
X
C
hange V
ie
w
e
r
w
w
w
. d
o
cu-trac
k
. c
o
m

También podría gustarte

  • Intro Ducci On
    Intro Ducci On
    Documento4 páginas
    Intro Ducci On
    VicTor HuGo Esquivel Garcia
    Aún no hay calificaciones
  • Diseño
    Diseño
    Documento4 páginas
    Diseño
    VicTor HuGo Esquivel Garcia
    Aún no hay calificaciones
  • Estructura Sistemas Operativos1455
    Estructura Sistemas Operativos1455
    Documento14 páginas
    Estructura Sistemas Operativos1455
    VicTor HuGo Esquivel Garcia
    Aún no hay calificaciones
  • Tabla de Interrupciones
    Tabla de Interrupciones
    Documento5 páginas
    Tabla de Interrupciones
    mrpitagory
    Aún no hay calificaciones
  • Cableados
    Cableados
    Documento8 páginas
    Cableados
    VicTor HuGo Esquivel Garcia
    Aún no hay calificaciones
  • Diseño y Aplicaciones Con Semiconductores
    Diseño y Aplicaciones Con Semiconductores
    Documento21 páginas
    Diseño y Aplicaciones Con Semiconductores
    dacplyl
    Aún no hay calificaciones
  • Diseño
    Diseño
    Documento4 páginas
    Diseño
    VicTor HuGo Esquivel Garcia
    Aún no hay calificaciones
  • Cableado Estructurado
    Cableado Estructurado
    Documento91 páginas
    Cableado Estructurado
    Sandra Linero
    Aún no hay calificaciones
  • Unidad I Lenguajes PDF
    Unidad I Lenguajes PDF
    Documento19 páginas
    Unidad I Lenguajes PDF
    VicTor HuGo Esquivel Garcia
    Aún no hay calificaciones
  • El Desarrollo Economico
    El Desarrollo Economico
    Documento2 páginas
    El Desarrollo Economico
    VicTor HuGo Esquivel Garcia
    Aún no hay calificaciones
  • N Navegador Web o de Internet
    N Navegador Web o de Internet
    Documento2 páginas
    N Navegador Web o de Internet
    VicTor HuGo Esquivel Garcia
    Aún no hay calificaciones
  • El Sentido de Aprender Sobre Etica Katy
    El Sentido de Aprender Sobre Etica Katy
    Documento19 páginas
    El Sentido de Aprender Sobre Etica Katy
    VicTor HuGo Esquivel Garcia
    Aún no hay calificaciones
  • Campo Magnetico
    Campo Magnetico
    Documento12 páginas
    Campo Magnetico
    VicTor HuGo Esquivel Garcia
    Aún no hay calificaciones
  • Proyecto
    Proyecto
    Documento18 páginas
    Proyecto
    VicTor HuGo Esquivel Garcia
    Aún no hay calificaciones
  • Ensayo
    Ensayo
    Documento2 páginas
    Ensayo
    VicTor HuGo Esquivel Garcia
    Aún no hay calificaciones
  • Guia Examen Fisica
    Guia Examen Fisica
    Documento4 páginas
    Guia Examen Fisica
    VicTor HuGo Esquivel Garcia
    50% (2)
  • Ensayo
    Ensayo
    Documento2 páginas
    Ensayo
    VicTor HuGo Esquivel Garcia
    Aún no hay calificaciones
  • Muar (Guia)
    Muar (Guia)
    Documento5 páginas
    Muar (Guia)
    bass1989
    Aún no hay calificaciones
  • LAB - GUI - C1 (1) - New
    LAB - GUI - C1 (1) - New
    Documento27 páginas
    LAB - GUI - C1 (1) - New
    VicTor HuGo Esquivel Garcia
    Aún no hay calificaciones