Академический Документы
Профессиональный Документы
Культура Документы
que:
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:
Hay algunas situaciones en las cuales los profesionales pudieran elegir utilizar el lenguaje
ensamblador:
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.
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
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.
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.
Memoria cache
Memoria principal
Memoria RAM
10
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.
11
Tratamiento de interrupciones
Tipos de Interrupciones
12
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).
13
memoria).
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.
14
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
15
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
16
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]
17
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)
18
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.
19
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.
20