martes, 5 de marzo de 2019

Introduccion al Lenguaje ensamblador


1.1 IMPORTANCIA DE LA PROGRAMACIÓN EN LENGUAJE 

ENSAMBLADOR
El lenguaje ensamblador como cualquier lenguaje de programación es un conjunto de palabras que le indican al ordenador lo que tiene que hacer. Sin embargo la diferencia fundamental es que cada instrucción escrita en lenguaje ensamblador tiene una correspondencia exacta con una operación en el procesador. Por lo que son operaciones muy sencillas tales como: “Cargar 32 en el registro BX” o “Transferir el contenido del registro CL al CH”. Así pues, las palabras del lenguaje ensamblador son nemotécnicas que representan el código máquina, lenguaje que entiende el procesador.
En el 8086/88 se definen los siguientes tamaños de datos:
4 bits - nibble
8 bits - byte
16 bits - word
32 bits – dword

1.2 EL PROCESADOR Y SUS REGISTROS
La Unidad Central de Proceso (CPUpor sus siglas en inglés) tiene 14 registros internos cada uno de 16 bits. Los primeros cuatro, AXBXCX DX, son de uso general y se pueden usar también como registros de bits. Es decir, AX se puede dividir en AH AL (AH es el byte alto, high, y AL es el byte bajo, low) Lo mismo es aplicable a los otros tres (BX en BH BLCX en CH CL DX en DH DL)
Estos son los únicos registros que pueden usarse de modo dual (en 8 o 16 bits)

Los registros de la CPU son conocidos por sus nombres propios, que son:

AX (acumulador)
BX (registro base)
CX (registro contador)
DX (registro de datos)
DS (registro del segmento de datos)
ES (registro del segmento extra)
SS (registro del segmento de pila)
CS (registro del segmento de código)
BP (registro de apuntadores base)
SI (registro índice fuente)
DI (registro índice destino)
SP (registro del apuntador de pila)
IP (registro del apuntador de siguiente instrucción)
F (registro de banderas)

El registro AX se usa para almacenar resultados, lectura o escritura desde o hacia los puertos.
El BX sirve como apuntador base o índice.
El CX se utiliza en operaciones de iteración, como un contador que automáticamente se incrementa o decrementa de acuerdo con el tipo de instrucción usada.
El DX se usa como puente para el acceso de datos.
El DS es un registro de segmento cuya función es actuar como policía donde se encuentran los datos. Cualquier dato, ya sea una variable inicializada o no, debe estar dentro de este segmento. La única excepción es cuando tenemos programas del tipo *.com, ya que en éstos sólo puede existir un segmento. El registro ES tiene el propósito general de permitir operaciones sobre cadenas, pero también puede ser una extensión del DS
Ejemplo de código usando AX, DS y DX:

.MODEL SMALL
.STACK
.DATA                
CADENA1 DB "HOLAMUNDO"."$"
.CODE
PROGRAMA:
MOV AX,@DATA
MOV DS, AX
MOV DX, OFFSET CADENA1
MOV AH, 9
 INT 21H
END PROGRAMA

1.3 LA MEMORIA PRINCIPAL (RAM)
Este tipo de memoria puede ser borrada y grabada las veces que deseemos. La única desventaja es que la información grabada en ella solo puede ser utilizada mientras tenga energía. En cuanto se corte la alimentación, los datos que se grabaron se borrarán instantáneamente. Se usan solo como almacenamiento temporal.

1.4 EL CONCEPTO DE INTERRUPCIONES
Una interrupción es una situación especial que suspende la ejecución de un programa de modo que el sistema pueda realizar una acción para tratarla. Tal situación se da, por ejemplo, cuando un periférico requiere la atención del procesador para realizar una operación de E/S.
Las interrupciones constituyen quizá el mecanismo más importante para la conexión del microcontrolador con el mundo exterior, sincronizando la ejecución de programas con acontecimientos externos.

Ejemplos de interrupciones

int 01h-->un solo paso
int 02h-->Interrupción no enmascarable
int 03h--> Punto de interrupción
int 04h-->Desbordamiento
int 05h-->Impresión de pantalla
int 08h-->Cronometro
int 15h-->Servicios del sistema
int 16h-->Funciones de entrada del teclado
int 18h-->Entrada con el Basic de Rom
int 19h-->Cargador de arranque
int 20h-->Invoca al servicio de terminación de programa del DOS
int 21h-->Invoca a todos los servicios de llamada a función DOS
int 1Ah-->Leer y establecer la hora
int 1Bh-->Obtener el control con una interrupción de teclado.
int 2oh-->Terminar un programa
int 33h-->Funciones del Ratón

1.5 LLAMADAS AL SERVICIO DE SISTEMAS
Una llamada al sistema es un método o función que puede invocar un proceso para solicitar un cierto servicio al sistema operativo. Dado que el acceso a ciertos recursos del sistema requiere la ejecución de código en modo privilegiado, el sistema operativo ofrece un conjunto de métodos o funciones que el programa puede emplear para acceder a dichos recursos. En otras palabras, el sistema operativo actúa como intermediario, ofreciendo una interfaz de programación (API) que el programa puede usar en cualquier momento para solicitar recursos gestionados por el sistema operativo.

1.6 MODOS DE DIRECCIONAMIENTO
Los modos de direccionamiento indican la manera de obtener los operandos y son:
Direccionamiento de registro
Direccionamiento inmediato
Direccionamiento directo
Direccionamiento indirecto mediante registro
Direccionamiento indirecto por registro base
Direccionamiento indexado
Direccionamiento indexado respecto a una base
El tipo de direccionamiento se determina en función de los operandos de la instrucción.
La instrucción MOV realiza transferencia de datos desde un operando origen a un operando Su formato es el siguiente:

MOV destino, origen

1.7 PROCESO DE ENSAMBLADO Y LIGADO
1. El programa utiliza un editor de texto para crear un archivo de texto ASCII, conocido como archivo de código fuente.
2. El ensamblador lee el archivo de código fuete y produce un archivo de código objeto, una traducción del programa a lenguaje máquina. De manera opcional, produce un archivo de listado. Si ocurre un error, el programador debe regresar al paso 1 y corregir el programa.
3. El enlazador lee el archivo de código objeto y verifica si el programa contiene alguna llamada a los procedimientos en una biblioteca de enlace. El enlazador copia cualquier procedimiento requerido de la biblioteca de enlace, lo combina con el archivo de código objeto y produce el archivo ejecutable. De manera opcional, el enlazador puede producir un archivo de mapa.
4. La herramienta cargador (loader) del sistema operativo lee el archivo ejecutable y lo carga en memoria, y bifurca la CPU hacia la dirección inicial del programa, para que éste empiece a ejecutarse.

1.8 DESPLEGADO DE MENSAJES DEL MONITOR
Todos los gráficos y el texto que se muestran en el monitor se escriben en la RAM de visualización de video, para después enviarlos al monitor mediante el controlador de video. El controlador de video es en sí un microprocesador de propósito especial, que libera a la CPU principal del trabajo de controlar el hardware de video.

No hay comentarios.:

Publicar un comentario

Unidad 3 - Configuracion y Administracion del Espacio en Disco

3.1 Estructuras logicas de almacenamiento. Para la gestión del almacenamiento de una base de datos existen 4 conceptos bien definidos que ...