Вы находитесь на странице: 1из 16

INSTITUTO TEGNOLOGICO SUPERIOR DE LOS CABOS

MATERIA: LENGUAJES DE INTERFAZ

UNIDAD I INTRODUCCION AL LENGUAJE


ENSAMBLADOR
Introduccin
Un ensamblador es una aplicacin de sistema que se encarga de traducir un fichero fuente escrito
en un lenguaje ensamblador, a un fichero objeto que contiene cdigo mquina, entendible por la
mquina para la que se ha generado
Una PC, es un ordenador o una computadora, como ms nos guste, compuesto principalmente
por el procesador, chips de memoria, varios chips inteligentes o programables, y el bus de datos y
direcciones. Junto con todo esto, nos encontramos los perifricos como son monitor, disqueteras,
teclado, etc. que se comunican con el procesador.
Una computadora digital o, mejor dicho, su parte fsica, slo distingue datos de tipo binario, es
decir, constituidos por dos nicos valores a los que se denomina valor 0 y valor 1 y que,
fsicamente, se materializan con tensiones comprendidas entre 0 y 4.0 voltios y entre 4 y 5 voltios,
respectivamente. Para representar datos que contengan una informacin se utilizan una serie de
unos y ceros cuyo conjunto indica dicha informacin.
La informacin que hace que el hardware de la computadora realice una determinada actividad se
llama instruccin. Por consiguiente una instruccin es un conjunto de unos y ceros. Las
instrucciones as formadas equivalen a acciones elementales de la mquina, por lo que al conjunto
de dichas instrucciones que son interpretadas directamente por la mquina se denomina lenguaje
mquina.
Se denomina lenguaje mquina a la serie de datos que la parte fsica de la computadora o
hardware, es capaz de interpretar
El lenguaje mquina fue el primero que empleo el hombre para la programacin de las primeras
computadoras. Una instruccin en lenguaje mquina puede representarse de la siguiente forma:
011011001010010011110110
Esta secuencia es fcilmente ejecutada por la computadora, pero es de difcil interpretacin, siendo
aun ms difcil la interpretacin de un programa (conjunto de instrucciones) escrito de esta forma.
Esta dificultad hace que los errores sean frecuentes y la correccin de los mismos costosa, cuando
no imposible, al igual que la verificacin y modificacin de los programas.
La anterior secuencia de dgitos binarios (bits) puede indicar a la computadora

que:

<<Traslade el contenido de la posicin de memoria X a la posicin de memoria Y.>>


Si lo vemos escrito de esta forma, lo entenderemos fcilmente, ya que est en nuestro lenguaje
natural, pero la mquina elemental ser incapaz de entender nada. Vemos, pues, que la forma de
indicar a la mquina lo que debe hacer es totalmente diferente de la indicar a un ser humano lo
mismo, por lo que deben emplearse sistemas de traduccin de una forma a otra.
Con la prctica en el manejo de la mquina se cay en la cuenta de que se podra utilizar la propia
mquina para ayudar en la traduccin de estos programas. Es decir, que si a una mquina
elemental se le dotaba de un programa, tambin elemental, que tradujera un nmero determinado
de caracteres alfabticos en una secuencia de unos y ceros, se podra escribir un programa
constituido por una secuencia de grupos de caracteres alfabticos, en la que cada uno de los

M.S.C. Miguel Martin Milln Jimnez

INSTITUTO TEGNOLOGICO SUPERIOR DE LOS CABOS

MATERIA: LENGUAJES DE INTERFAZ

grupos indicara una accin a realizar por el ordenador y, una vez escrito el programa, sera la
propia mquina la que pasara los grupos de caracteres a bits.
Las ventajas de esto son evidentes, ya que para el hombre resulta ms fcil manipular grupos de
caracteres y la traduccin se hara de manera automtica.
Por ejemplo, se podra escribir:
TRASLADAR 11010110, 00011101
Esto indicara que el contenido de la posicin 11010110 haba que pasarlo a la posicin 00011101
si se sabe que al grupo alfabtico TRASLADAR le corresponde la secuencia de bits 11110101. La
mquina
traducira
la
anterior
instruccin
como:
11110101 11010110 00011101
Al grupo alfabtico se le denomina mnemotcnico, y existir un mnemotcnico por cada
instruccin. Se le da este nombre porque sirve para recordar con mayor facilidad el conjunto de
instrucciones de una determinada mquina.
De esta forma aparecieron los lenguajes ensambladores (Assembler, en ingls). Poco a poco, con
el avance de la programacin (Software), estas primeras y sencillas ayudas se fueron haciendo
ms complejas, permitiendo que, adems de los mnemotcnicos correspondientes a la operacin a
realizar, se pudieran emplear otros para indicar, por ejemplo, los operandos.
La anterior instruccin se podra escribir de la siguiente forma:

TRASLADAR POS-A POS-B


Que nos resulta de ms fcil comprensin.

1.1. Importancia del Lenguaje Ensamblador

Un programa escrito en lenguaje ensamblador requiere considerablemente menos memoria y


se ejecuta ms rpidamente que un programa escrito en un lenguaje de alto nivel como Pascal
o C.
El lenguaje ensamblador ofrece al programador la posibilidad de realizar tareas muy
especficas que sera muy difcil llevar a cabo en un lenguaje de alto nivel.
El conocimiento del lenguaje ensamblador permite una comprensin de la arquitectura de la
mquina que ningn lenguaje de alto nivel puede ofrecer.
Desarrollar aplicaciones en lenguajes de alto nivel resulta mucho ms productivo que hacerlo
en ensamblador, pero este ltimo resulta especialmente atractivo cuando hay que optimizar
determinadas rutinas que suponen un cuello de botella para el rendimiento del sistema.
Los programas residentes y las rutinas de servicio de interrupcin casi siempre se escriben en
ensamblador.
La carga inicial de un S.O. debe realizarse en ensamblador, pues hacerlo con un lenguaje de
alto nivel supondra usar instrucciones que en ese momento no pueden ser ejecutadas por la
mquina.
Cundo programar en Ensamblador?

Hay algunas situaciones en las cuales los profesionales pudieran elegir utilizar el lenguaje
ensamblador:

M.S.C. Miguel Martin Milln Jimnez

INSTITUTO TEGNOLOGICO SUPERIOR DE LOS CABOS

MATERIA: LENGUAJES DE INTERFAZ

Interactuando directamente con el hardware, por ejemplo en drivers de dispositivo y


manejadores de interrupcin.
Es requerida la optimizacin extrema. Los programadores de juegos toman ventaja de las
habilidades de las caractersticas del hardware en los sistemas, permitiendo a los juegos correr
ms rpidamente. Tambin las grandes simulaciones cientficas requieren algoritmos
altamente optimizados.
Un sistema con severas limitaciones de recursos debe ser codificado a mano para maximizar
el uso de los limitados recursos.

1.2. El procesador y sus registros internos

Los registros del procesador tienen como misin fundamental: almacenar las posiciones de
memoria que van a sufrir repetidas manipulaciones, ya que los accesos a memoria son mucho
ms lentos que los accesos a los registros.

El 8086 dispone de 14 registros de 16 bits que se emplean para controlar la ejecucin de


instrucciones, direccionar la memoria y proporcionar capacidad aritmtica y lgica. Cada
registro puede almacenar datos o direcciones de memoria. Los registros son direccionables por
medio de un nombre.
Los diferentes registros del 8086 se clasifican en:
Registros de propsito general o de datos, registros de segmento, registro apuntador de
instrucciones (IP), registros apuntadores (SP y BP), registros ndice (SI y DI) y registro de
banderas, FLAGS o registro de estado (FL).

Registros de propsito general

Registro AX. Este registro es el acumulador principal, implicado en gran parte de las
operaciones de aritmticas y de E/S.
Registro BX. Recibe el nombre de registro base ya que es el nico registro de propsito
general que se usa como un ndice en el direccionamiento indexado. Se suele utilizar para
clculos aritmticos.
Registro CX. El CX es conocido como registro contador ya que puede contener un valor para
controlar el nmero de veces que se repite una cierta operacin.
Registro DX Se conoce como registro de datos. Algunas operaciones de E/S requieren su uso,
y las operaciones de multiplicacin y divisin con cifras grandes suponen que el DX y el AX

M.S.C. Miguel Martin Milln Jimnez

INSTITUTO TEGNOLOGICO SUPERIOR DE LOS CABOS

MATERIA: LENGUAJES DE INTERFAZ

trabajando juntos.
Los registros de propsito general se pueden direccionar como una palabra o como un byte. El
byte de la izquierda es la parte Alta y el byte de la derecha es la parte Baja.

Siguiendo esta nomenclatura, es posible referirse a cada uno de los dos bytes, byte de orden
alto o ms significativo y byte de orden bajo o menos significativo, de cada uno de estos
registros. Por ejemplo: AH es el byte ms significativo del registro AX, mientras que AL es el
byte menos significativo.
Un segmento es un rea especial en un programa que inicia en un limite de un prrafo, esto
es, una localidad regularmente divisible entre 16 o 10 hex.
Un segmento en modo real puede ser de hasta 64k. Se puede tener cualquier nmero de
segmentos, para direccionar un segmento en particular basta cambiar la direccin en el
registro del segmento apropiado. Los tres principales segmentos son: segmentos de cdigo, de
datos y de la pila.
Los registros de segmento son registros de 16 bits que constituyen la implementacin fsica de
la arquitectura segmentada del 8086.

Registros de Segmento

Registro CS. Registro Segmento de Cdigo. Establece el rea de memoria dnde est el
programa durante su ejecucin.
Registro DS. Registro Segmento de Datos. Especifica la zona donde los programas leen y
escriben sus datos.
Registro SS. Registro Segmento de Pila. Permite la colocacin en memoria de una pila, para
almacenamiento temporal de direcciones y datos.
Registro ES. Registro Segmento Extra. Se suele utilizar en algunas operaciones con cadenas
de caracteres para direccionar la memoria.

Registros Apuntador de Instrucciones (IP)

Se trata de un registro de 16 bits que contiene el desplazamiento de la direccin de la siguiente


instruccin que se ejecutar. Est asociado con el registro CS en el sentido de que IP indica el
desplazamiento de la siguiente instruccin a ejecutar dentro del segmento de cdigo
determinado por CS:
Direccin del segmento de cdigo en CS: 25A40H
Desplazamiento dentro del segmento de cdigo en IP:
25A40H + 0412H = 25E52H

Direccin de la siguiente instruccin a ejecutar: 25E52H

Registros Apuntadores (SP y BP)

Los registros apuntadores estn asociados al registro de segmento SS y permiten acceder a


los datos almacenados en la pila:
Registro SP Proporciona un valor de desplazamiento que se refiere a la palabra actual que
est siendo procesada en la pila.
Registro BP Facilita la referencia a los parmetros de las rutinas, los cuales son datos y
direcciones transmitidos va la pila.

M.S.C. Miguel Martin Milln Jimnez

INSTITUTO TEGNOLOGICO SUPERIOR DE LOS CABOS

MATERIA: LENGUAJES DE INTERFAZ

Registros ndice (SI y DI)


Los registros ndice se utilizan fundamentalmente en operaciones con cadenas y para
direccionamiento indexado:
Registro SI Registro ndice fuente requerido en algunas operaciones con cadenas de
caracteres. Este registro est asociado con el registro DS.
Registro DI Registro ndice destino requerido tambin en determinadas operaciones con
cadenas de caracteres. Est asociado al registro DS o ES.
Registro de banderas, FLAGS, o registro de estado (FL)

Es un registro de 16 bits, pero slo se utilizan nueve de ellos. Sirven para indicar el estado
actual de la mquina y el resultado del procesamiento. La mayor parte de las instrucciones de
comparacin y aritmticas modifican este registro. Algunas instrucciones pueden realizar
pruebas sobre este registro para determinar la accin siguiente.
Los bits 0, 2, 4, 6, 7 y 11 son indicadores de condicin que reflejan los resultados de las
operaciones del programa; los bits 8 al 10 son indicadores de control que, modificados por el
programador, sirven para controlar ciertos modos de procesamiento, y el resto no se utilizan.
OF. Bit de Overflow o desbordamiento. Indica desbordamiento de un bit de orden alto (ms a la
izquierda), despus de una operacin aritmtica.
DF. Bit de Direccin. Designa la direccin, creciente (0) o decreciente (1), en operaciones con
cadenas de caracteres.
IF. Bit de Interrupcin. Indica que una interrupcin externa, como la entrada desde el teclado,
sea procesada o ignorada.
TF. Bit de Trap o Desvo. Procesa o ignora la interrupcin interna de trace (procesamiento
paso a paso).
SF. Bit de Signo. Indica el valor del bit ms significativo del registro despus de una operacin
aritmtica o de desplazamiento.
ZF. Bit Cero. Se pone a 1 si una operacin produce 0 como resultado.
AF. Bit de Carry Auxiliar. Se pone a 1 si una operacin aritmtica produce un acarreo del bit 3
al 4. Se usa para aritmtica especializada (ajuste BCD).
PF. Bit de Paridad. Se activa si el resultado de una operacin tiene paridad par.
CF. Bit de Acarreo. Contiene el acarreo de una operacin aritmtica o de desplazamiento de
bits.

1.3 La memoria principal (RAM)


La organizacin de la memoria

La unidad de memoria es un componente esencial en cualquier computadora digital, porque


almacena programas y datos.
La capacidad total de memoria de una computadora puede considerarse como una jerarqua
de componentes que consiste de todos los sistemas de almacenamiento que se emplean.

M.S.C. Miguel Martin Milln Jimnez

INSTITUTO TEGNOLOGICO SUPERIOR DE LOS CABOS

MATERIA: LENGUAJES DE INTERFAZ

Memoria cache

Por lo general la velocidad de la CPU es mayor que el tiempo de acceso de la memoria


principal, con lo que resulta que la velocidad de procesamiento est limitada,
principalmente, por la velocidad de la memoria principal.
Para remediar esto se usa una pequea memoria cach extremadamente rpida, entre la
CPU y la memoria principal, cuyo tiempo de acceso se acerca a un tiempo de ciclo de reloj
del procesador.
Pone disponible para la CPU los programas y datos actuales a una velocidad rpida.
Es relativamente cara.
Almacena segmentos de programas que se ejecutan en ese momento en la CPU y datos
temporales que se necesitan con frecuencia en los clculos presentes.
Se comunica directamente con la CPU.

Memoria principal

Unidad de memoria que se comunica directamente con la CPU.


Almacena solo los programas y datos que necesita en ese momento el procesador.
Es relativamente rpida.
Se comunica directamente con los dispositivos de memoria auxiliar, mediante un
procesador de E/S.
Se comunica directamente con la memoria cach.
Tecnologa fundamental: circuitos integrados semiconductores (RAM). Una parte ms
pequea de la memoria principal es ROM.
La RAM tiene dos modos de operacin posibles:
RAM esttica: flips-flops internos que almacenan informacin binaria. La informacin
almacenada es vlida mientras la unidad est encendida.
RAM dinmica: conjunto de pequeos condensadores que pueden estar cargados o
descargados. Debe refrescarse cada pocos milisegundos para impedir la prdida de
informacin. Tienen mayor capacidad que las estticas.

Memoria RAM

Se puede acceder a las celdas de la memoria para la transferencia de informacin en


cualquier posicin aleatoria deseada.

M.S.C. Miguel Martin Milln Jimnez

10

INSTITUTO TEGNOLOGICO SUPERIOR DE LOS CABOS

MATERIA: LENGUAJES DE INTERFAZ

El proceso de ubicar una palabra en la memoria es igual y requiere la misma cantidad de


tiempo, sin importar la ubicacin fsica de las celdas en la memoria.
Es voltil.
El Procesador de E/S administra las transferencias entre las memorias principal y auxiliar.

n lneas de entrada de datos:


proporcionan la informacin que se va
almacenar en la memoria.
n lneas de salida de datos:
proporcionan la informacin que sale
de la memoria.
k lneas de direccionamiento:
proporcionan un nmero binario que k
bits que especifica una palabra
k
particular elegida entre las 2 palabras
disponibles dentro de la memoria.
lneas de control: lectura, escritura.

Operaciones que se pueden ejecutar con la RAM

Lectura
Aplicar la direccin binaria de la palabra deseada a las lneas de direccin.
Activar Lectura.
Escritura
Aplicar la direccin binaria de la palabra deseada a las lneas de direccin.
Aplicar los bits de los datos que deben almacenarse en la memoria a las lneas de
entada de datos.
Activar Escritura.

1.4 El concepto de interrupciones


Qu es una interrupcin ?

Una interrupcin es una situacin especial que suspende la ejecucin de un programa de


modo que el sistema pueda realizar una accin para tratarla. Tal situacin se da, por
ejemplo, cuando un perifrico requiere la atencin del procesador para realizar una
operacin de E/S.
Las interrupciones constituyen quiz el mecanismo ms importante para la conexin del
microcontrolador con el mundo exterior, sincronizando la ejecucin de programas con
acontecimientos externos.

M.S.C. Miguel Martin Milln Jimnez

11

INSTITUTO TEGNOLOGICO SUPERIOR DE LOS CABOS

MATERIA: LENGUAJES DE INTERFAZ

Tratamiento de interrupciones

Cuando se produce una peticin de interrupcin, se desencadena una secuencia de acciones:


Finalizar la ejecucin de la instruccin en curso.
Almacenar en la pila el registro de estado.
Almacenar en la pila la direccin de retorno: registros CS e IP.
Inhibir las interrupciones.
Colocar en CS: IP la direccin de comienzo de la rutina que tratar la interrupcin.
La rutina toma el control y almacenar todos los registros que utilice.
Tratamiento de la interrupcin.
Se recuperan de la pila los registros previamente apilados.
Con la instruccin IRET la rutina devuelve el control, ya que se restituye el registro de estado y
la direccin de retorno CS:IP almacenada previamente.
Se ejecuta la instruccin que sigue a aquella que estaba ejecutndose cuando se produjo la
interrupcin.
La rutina de tratamiento de la interrupcin debe almacenar en la pila todos aquellos registros
que vaya a utilizar antes de comenzar su tarea y restituirlos al finalizar, de modo que cuando
se reanude la tarea interrumpida, se mantengan los valores que haba en los registros.

Tipos de Interrupciones

Las interrupciones hardware hacen referencia a aquellas peticiones de interrupcin, que


llegan al procesador mediante una lnea externa denominada INTR, procedentes de algn
dispositivo perifrico (por ejemplo, el teclado).
Una peticin de interrupcin sobre este pin es enmascarable mediante el bit IF del registro de
estado, es decir, si se pone a cero IF no se reconocern las peticiones de interrupcin,
mientras que si est a uno s se admiten tales peticiones. En ese momento la CPU termina la
ejecucin de la instruccin en curso y realiza las siguientes operaciones:

Finaliza la ejecucin de la instruccin en curso.


Almacena en la pila el registro de estado.
Almacena en la pila la direccin de retorno: registros CS e IP.
Inhibe las interrupciones.
Activa el pin INTA (a nivel bajo). El dispositivo al comprobar la activacin de INTA sabe

M.S.C. Miguel Martin Milln Jimnez

12

INSTITUTO TEGNOLOGICO SUPERIOR DE LOS CABOS

MATERIA: LENGUAJES DE INTERFAZ

que su peticin ha sido reconocida.


El dispositivo perifrico pone en el bus de datos el nmero de vector de interrupcin, y
ste es ledo por la CPU.
Multiplica el nmero de vector ledo por cuatro para obtener la direccin de la tabla
donde se encuentra el vector de interrupcin.
Coloca en CS:IP la direccin de comienzo de la rutina que tratar la interrupcin.
Se ejecuta la rutina de servicio de interrupcin que finaliza en IRET, restituyndose el
registro de estado, y los registros CS e IP.

Existe una coleccin de procedimientos en cdigo mquina que forman parte del sistema
operativo y que pueden ser usados por el programador de aplicaciones. Para acceder a estos
procedimientos contamos con las correspondientes entradas en la tabla de vectores de
interrupcin. Todos los procedimientos finalizan con la instruccin IRET, por lo que la llamada a
estos procedimientos no se realiza con la instruccin CALL sino con la instruccin INT N donde
N es el nmero del vector de interrupcin. Estos procedimientos llamados mediante INT
reciben el nombre de interrupciones software.
Las Interrupciones de software se pueden clasificar en procedimientos BIOS (10H a 1FH) y
procedimientos DOS (20H a 3FH) (el BIOS contiene un conjunto de rutinas que se encuentran
en un chip de memoria ROM, o memoria de slo lectura, para dar soporte a los dispositivos).

Llamada a procedimientos DOS y BIOS

Las interrupciones internas o excepciones son generadas por el propio procesador


cuando se produce una situacin anormal:
INT 0: error de divisin, generada automticamente cuando el cociente no cabe en
el registro o el divisor es cero. Slo se puede producir cuando se ejecutan DIV o
IDIV.
INT 1: paso a paso, se produce tras cada instruccin cuando el procesador est en
modo traza (utilizada en la depuracin de programas).
La INT 2 o interrupcin no enmascarable (NMI) es una interrupcin externa que tiene
prioridad absoluta y se produce incluso aunque estn inhibidas las interrupciones (con CLI)
para indicar un hecho muy urgente (fallo de alimentacin o error de paridad en la

M.S.C. Miguel Martin Milln Jimnez

13

INSTITUTO TEGNOLOGICO SUPERIOR DE LOS CABOS

MATERIA: LENGUAJES DE INTERFAZ

memoria).

Pasos para el procesamiento de una IRQ:


1) Terminar la ejecucin de la instruccin mquina en curso.
2) Salva el valor de contador de programa, IP, en la pila, de manera que en la CPU, al
terminar el proceso, pueda seguir ejecutando el programa a partir de la ltima instruccin.
3) La CPU salta a la direccin donde est almacenada la rutina de servicio de interrupcin
(ISR, Interrupt Service Routine) y ejecuta esa rutina que tiene como objetivo atender al
dispositivo que gener la interrupcin.
4) Una vez que la rutina de la interrupcin termina, el procesador restaura el estado que
haba guardado en la pila en el paso 2 y retorna al programa que se estaba usando
anteriormente.

1.5 Llamadas a servicios del sistema


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. Algunos
sistemas permiten efectuar llamadas al sistema directamente desde un programa realizado en el
lenguaje de mayor nivel, normalmente estas llamadas se asemejan a una funcin o sub-rutinas
predefinidas, que generan una llamada a una ruta en especial de tiempo de ejecucin, que realice
efectivamente la llamada al sistema, o bien pueden generarla directamente en la lnea.

Los programadores de sistemas de aplicacin invocan con frecuencia los servicios del sistema
operativo desde sus programas mediante llamadas del sistema. Las ordenes del sistema emitidas
por los usuarios que manejan el lenguaje de ordenes (lenguaje de control JCL) normalmente se
convierten a lenguaje de mquina y se ejecutan como una serie de llamadas del sistema.
Adems de proporcionar la mayora de la funcionalidad accesible a los usuarios del lenguaje de
rdenes, las llamadas del sistema usualmente permiten un control ms fino sobre las operaciones
del sistema y un acceso ms directo a las facilidades del hardware especialmente el sistema de
E/S. Pero para algunas operaciones de entrada en comunicacin y funciones de gestin del
sistema, las llamadas del sistema representan usualmente un sper conjunto de las funciones
accesibles a nivel de rdenes.

El conjunto de instrucciones del 8086


El conjunto de instrucciones primitivas que puede realizar un microprocesador es conocido como
su conjunto de instrucciones.
El conjunto de instrucciones del 8086 consiste de seis tipos de instrucciones, que estn resumidas
en la tabla 2.5. Programar satisfactoriamente en lenguaje ensamblador del 8086 requiere un
entendimiento de todos estos tipos de instrucciones.
1. Instrucciones de transferencia de datos
MOV
Mover
PUSH, POP
Operaciones de la pila (stack)
XCHG
Intercambio
IN, OUT
Puertos de E/S

M.S.C. Miguel Martin Milln Jimnez

14

INSTITUTO TEGNOLOGICO SUPERIOR DE LOS CABOS

MATERIA: LENGUAJES DE INTERFAZ

2. Instrucciones aritmticas
ADD
Adicin
INC
Incremento
SUB
Substraccin
DEC
Decremento
NEG
Negatividad
CMP
Comparar
MUL
Multiplicar
DIV
Dividir
3. Instrucciones lgicas
NOT
Complemento
AND
AND
OR
OR inclusivo
XOR
OR exclusivo
TEST
Prueba de bits
SHL, SHR
Desplazamiento izquierda/derecha
ROL, ROR
Rotacin izquierda/derecha
4. Instrucciones de manipulacin de cadenas
MOVS
Mover cadena
CMPS
Comparar cadenas
SCAS
Inspeccionar cadena
LODS
Cargar de cadena
STOS
Almacenar en cadena
5. Instrucciones de transferencia de control
CALL
Llamada a una subrutina
RET
Retorno de una subrutina
JMP
Salto
JN, JNZ, Etc. Saltos condicionales
LOOP
Iteracin
LOOPNE..
Iteracin condicional
INT
Interrupcin
IRET
Retorno de interrupcin
6. Instrucciones de control del procesador
CLC,STC, Etc. Aclarar/establecer banderas

1.6 Modos de direccionamiento


El 8086 ofrece una multitud de vas para direccionar la informacin: registro a registro,
direccionamiento inmediato, direccionamiento directo y varios tipos diferentes de direccionamiento
indirecto. Cada modo tiene siempre un operando fuente y uno destino. El operando destino est
ubicado a la izquierda de la coma; y el fuente a la derecha. Adicionalmente, los modos directo e
indirecto involucran el uso de un registro de segmento. (1231)
Direccionamiento Registro
Es aquel en el cual la operacin se lleva a cabo entre los contenidos de dos
registros. Por ejemplo, la instruccin
mov AX,BX
Indica que el contenido del registro BX sea copiado en el registro AX. (1231)

M.S.C. Miguel Martin Milln Jimnez

15

INSTITUTO TEGNOLOGICO SUPERIOR DE LOS CABOS

MATERIA: LENGUAJES DE INTERFAZ

Direccionamiento Inmediato
En este modo de direccionamiento, uno de los operndoos est presente en el o
los bytes siguientes al cdigo de operacin. Por ejemplo, la instruccin
add AX,3064h
Indica que el nmero 3064h sea sumado al contenido del registro AX y el resultado
almacenado en dicho registro. (1231)
Direccionamiento Directo
EL 8086 implementa el direccionamiento directo a memoria, sumando un
desplazamiento de 16 bits, indicado por los dos bytes que siguen al cdigo de operacin, al
contenido del registro de segmento de datos. La suma es pues, la posicin de memoria
direccionada. Por ejemplo, la instruccin:
mov AH,TABLA
Seala que el contenido de la posicin de memoria cuya direccin est indicada por el
identificador TABLA, sea copiado en el registro AH. (1231)
Direccionamiento Indirecto
El modo de direccionamiento indirecto es el ms difcil de comprender, pero
tambin el ms poderoso.
Existen cuatro mtodos de direccionamiento indirecto: indirecto a registro, relativo
a base, indexado e indexado a base. (1231)
Indirecto a Registro
En el modo de direccionamiento indirecto a registro, la direccin de memoria
donde se encuentra uno de los operndoos es indicada a travs del contenido de los registros BX,
BP, SI o DI. La instruccin
mov AX,[DI]
Establece que el contenido de la palabra de memoria cuya direccin est indicada por el
contenido del registro DI, sea copiado en el registro AX. (1231)

Relativo a Base
El direccionamiento a la memoria de datos, relativo a base simplemente usa el
contenido del registro BX o BP como base para la posicin efectiva de memoria. La instruccin
mov CL,[BP]+DESP
Copia el contenido de la posicin de memoria cuya direccin est determinada por la suma
del contenido de BP y DESP, en el registro CL. (1231)
Indexado
El direccionamiento indexado directo est permitido especificando los registros SI o
DI como ndices.
Empleando este modo de direccionamiento es posible acceder a los elementos de
un vector. La instruccin

M.S.C. Miguel Martin Milln Jimnez

16

INSTITUTO TEGNOLOGICO SUPERIOR DE LOS CABOS

MATERIA: LENGUAJES DE INTERFAZ

sub AH,MATRIZ[SI]
Resta del contenido del registro AH, el valor contenido en la posicin de memoria
especificada por la suma del desplazamiento indicado por el identificador MATRIZ y el contenido
del registro SI. (1231)
Indexado a Base
Resulta de la combinacin de los modos de direccionamiento Relativo a Base e
Indexado Directo. La instruccin
mov DH,VECTOR[BX][DI]
Seala que el contenido de la posicin de memoria cuya direccin viene indicada por la
suma de los contenidos de los registros BX y DX y del desplazamiento establecido por el
identificador VECTOR, sea copiado en DH. (1231)

No.
1
2
3
4

Modo
Registro
Inmediato
Directo
Inmediato a
registro

Operando
Registro
Valor
Variable

Relativo a base

Indexado

Indexado a base

[BX]
[BP]
[DI]
[SI]
[BX]+desp
[BP]+desp
[DI]+desp
[SI]+desp
[BX][SI]+desp
[BX][DI]+desp
[BP][SI]+desp
[BP][DI]+desp

DS

Segmento
Ejemplo
mov ax,bx
mov ax,500
mov ax,TABLA
DS
DS
SS
DS
DS
SS
DS
DS

DS
DS
SS
SS

mov ax,[bx]
mov ax,[bp]
mov ax,[di]
mov ax,[si]
mov ax,[bx+4]
mov ax,[bp+6]
mov ax,TABLA[di]
mov ax,TABLA[si]
mov ax,TABLA[bx][si]
mov ax,TABLA[bx][di]
mov ax,TABLA[bp][si]
mov ax,TABLA[bp][di]

1.7 Proceso de ensamblado y ligado


Procedimiento de ensamble, enlace y ejecucin
Proceso de ensamblaje
Un ensamblador es el programa que convierte un listado de cdigo fuente en cdigo objeto, es
decir, lenguaje mquina (el que finalmente interpretar el procesador) en el que slo le faltan las
referencias a rutinas externas. El cdigo fuente es un fichero que contiene la secuencia de
instrucciones en lenguaje ensamblador que forma el programa, as como ciertas directivas o
comandos.
Enlace y Ejecucin

M.S.C. Miguel Martin Milln Jimnez

17

INSTITUTO TEGNOLOGICO SUPERIOR DE LOS CABOS

MATERIA: LENGUAJES DE INTERFAZ

Al construir un programa algunos de sus mdulos pueden colocarse en el mismo mdulo fuente y
ensamblarse juntos, otros pueden estar en mdulos diferentes y ser ensamblados separadamente.
Si se ensamblan por separado, el mdulo principal, que contiene la primera instruccin que se va a
ejecutar, debe acabar con una sentencia END que indique el punto de entrada al programa, y cada
uno de los otros mdulos deben terminar con una sentencia END sin ningn operando. En
cualquier caso, los mdulos objeto resultantes, algunos de los cuales pueden estar agrupados en
libreras, deben ser enlazados para formar el mdulo de carga, antes de que se pueda ejecutar el
programa. Adems de dar como salida el mdulo de carga, el linker o enlazador imprime un mapa
de memoria que indica donde sern cargados los mdulos objeto en la memoria. Despus de
crearse el mdulo de carga, ste es cargado por el cargador en la memoria del ordenador y
comienza la ejecucin.
Independientemente del sistema, la combinacin linker/cargador debe crear todos los segmentos y
asignaciones de direccin necesarios para permitirle al programa funcionar correctamente. En
concreto, esta combinacin debe:
Encontrar los mdulos que van a ser enlazados
Construir el mdulo de carga asignando las posiciones de todos los segmentos de todos los
mdulos objeto que se estn enlazando.
Rellenar todos los desplazamientos de segmento que no pudieron ser determinados por el
ensamblador.
Rellenar todas las direcciones de los segmentos.
Cargar el programa para su ejecucin. (151)

Procedimiento de ensamble, enlace y ejecucin


Paso 1: Cosiste en instalar el programa tasm, ya que lo tienes adentro de la carpeta tasm estars
guardando los programas que vayas a realizar.

Paso 2: Realizar o capturar el programa de ensamblador en bloc de notas, al terminar la


realizacin de dicho cdigo se debers guardar en la carpeta creada de tasm, este tendr que

M.S.C. Miguel Martin Milln Jimnez

18

INSTITUTO TEGNOLOGICO SUPERIOR DE LOS CABOS

MATERIA: LENGUAJES DE INTERFAZ

llevar un nombre x a su vez este tendr una extensin .asm que servir para que el cdigo sea
ejecutable.

Pas 3: Despus da guarda el cdigo con extensin .asm, se abre el archivo en la ruta especfica
del smbolo de sistemas (MS-DOS) ya que en este programa compilaremos y ligaremos nuestro
programa y pondremos la ruta del tasm para trabajar dentro de ella.

Paso 4: Ya estando en smbolo de sistemas empezamos la compilacin del programa dando las
siguientes instrucciones.
c:\tasm40>tasm hola.asm
Esta es la direccin donde se encuentra guardado el cdigo tasm.

M.S.C. Miguel Martin Milln Jimnez

19

INSTITUTO TEGNOLOGICO SUPERIOR DE LOS CABOS

MATERIA: LENGUAJES DE INTERFAZ

Paso 5: Ligamento del cdigo que est guardado en tasm. Para poder ligar el cdigo usaremos
una instruccin tlink como se ver a continuacin.
c:\tasm40>tlink hola
El tlink se utiliza para encontrar la direccin y mostrara la ejecucin del programa
c:\tasm40>Hola
Muestra el programa en ejecucin.

M.S.C. Miguel Martin Milln Jimnez

20

Вам также может понравиться