Unidad I:
Introducción al lenguaje ensamblador
1.1 Importancia de la
programación en lenguaje ensamblador
Definición: El
lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para
escribir programas informáticos, y constituye la representación más directa del
código máquina específico 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 el se
puede realizar cualquier tipo de programas que en los lenguajes de alto nivel
no lo pueden realizar. Otro punto sería que los programas en ensamblador ocupan
menos espacio en memoria.
1.2 El procesador y
sus registros internos
Los registros del procesador se emplean para controlar
instrucciones en ejecución, manejar direccionamiento de memoria y proporcionar
capacidad aritmética. Los registros son direccionable por medio de un nombre.
Los bits por convención, 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 dirección inicial del segmento de código
de un programa en el registro CS. Esta dirección de segmento, mas un valor de
desplazamiento en el registro apuntador de instrucción (IP), indica la
dirección de una instrucción que es buscada para su ejecución.
Registro DS.
La dirección inicial de un segmento de datos de programa es
almacenada en el registro DS. En términos sencillos, esta dirección, más un
valor de desplazamiento en una instrucción, genera una referencia a la
localidad de un byte específico en el segmento de datos.
Registro SS.
El registro SS
permite la colocación en memoria de una pila, para almacenamiento temporal de
direcciones y datos. El DOS almacena la dirección de inicio del segmento de
pila de un programa en el registro SS. Esta dirección de segmento, más 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 con el registro DI (índice). Un programa que requiere
el uso del registro ES puede inicializarlo con una dirección de segmento
apropiada.
Registros FS y GS.
Son registros extra de segmento en los procesadores 80386 y
posteriores.
Registros de propósito
general. Los registros de propósito general AX, BX, CX y DX son los
caballos de batalla del sistema. 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 ultimo 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 aritmética. Por ejemplo, las
instrucciones para multiplicar, dividir y traducir suponen el uso del AX.
También, algunas operaciones generan código más 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 propósito
general que puede ser índice para direccionamiento indexado. También es común
emplear el BX para cálculos.
Registro DX. El
DX es conocido como l registro de datos.
Alguna operaciones de entrada/salida requieren uso, y las operaciones de
multiplicación y división con cifras grandes suponen al DX y al AX trabajando
juntos.
1.3 La memoria
principal (RAM)
La memoria principal o primaria,"Memoria Central
", es aquella memoria de un ordenador, donde se almacenan temporalmente
tanto los datos como los programas que la CPU está procesando o va a procesar
en un determinado momento. Por su función, es una amiga inseparable del
microprocesador, con el cual se comunica a través de los buses de datos. Por
ejemplo, cuando la CPU tiene que ejecutar un programa, primero lo coloca en la
memoria y después lo empieza a ejecutar. Lo mismo ocurre cuando necesita
procesar una serie de datos; antes de poder procesarlos los tiene que llevar a
la memoria principal. Esta clase de memoria es volátil, es decir que, cuando se
corta la energía eléctrica, se borra toda la información que estuviera
almacenada en ella. Por su función, la cantidad de memoria RAM de que disponga
una computadora es una factor muy importante; hay programas y juegos que
requieren una gran cantidad de memoria para poder usarlos. Otros andarán más
rápido si el sistema cuenta con más memoria RAM.
1.4 El concepto de
interrupciones
Definición: Una
interrupción es el rompimiento en la secuencia de un programa para ejecutar un
programa especial llamando una rutina de servicio cuya característica principal
es que al finalizar regresa al punto donde se interrumpió el programa.
Dentro de una computadora existen dos clases de
interrupciones: Interrupciones por software: Son aquellas programadas por el
usuario, es decir, el usuario decide cuando y donde ejecutarlas, generalmente
son usadas para realizar entrada y salida. Interrupciones por hardware: Son
aquellas que son provocadas por dispositivos externos al procesador su
característica principal es que no son programadas, esto es, pueden ocurrir en
cualquier momento en el programa. Existen dos clases de interrupciones de este
tipo:
·
Interrupciones por hardware enmascarables: Aquellas en las que el usuario
decide si quiere o no ser interrumpido.
·
Interrupciones por hardware no enmascarables (NMI): Aquellas que siempre
interrumpen al programa.
Las interrupciones por software se ejecutan con ayuda de las
instrucciones: INT e IRET, además se tiene 256 interrupciones: de la 00 a la
FF.
Asociado al concepto
de interrupción se tiene un área de memoria llamada vector de interrupciones;
la cual contiene las direcciones de las rutinas de servicio de cada
interrupción. Esta área se encuentra en el segmento 0000:0000.
No hay comentarios.:
Publicar un comentario