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 direccionables
por medio de un nombre. Los bits por convención, se numeran de derecha a
izquierda.
Los registros internos del
procesador se puede clasificar en 6 tipos diferentes
1. 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.
2. Registros de propósito
general:
Los registros de propósito general, como su nombre lo
indica, se utilizan en la forma en que lo desee el
programador. Cada uno de estos registros se puede
direccionar como un registro de 16 bits (AX, BX, CX,
DX) o como un registro de 8 bits (AH, AL, BH, BL, CH,
CL, DH, DL). Cada uno de los registros de 16 bits está
formado por la concatenación de dos registros de 8
bits: AX = AH:AL, BX = BH:BL, CX = CH:CL y DX =
DH:DL, donde el bit 0 del registro AH es el bit 8 del
registro AX.
AX, AH, AL (Acumulador): a menudo conserva el resultado temporal después de una operación aritmética o lógica.
BX, BH, BL (Base): Se utiliza para guardar la dirección base de listas de datos en la memoria.
CX, CH, CL (Contador): Contiene el conteo para ciertas instrucciones de corrimientos y rotaciones, de iteraciones en el ciclo loop y operaciones repetidas de cadenas.
DX, DH, DL (Datos): Contiene la parte más significativa de un producto después de una multiplicación; la parte más significativa del dividendo antes de la división.
AX, AH, AL (Acumulador): a menudo conserva el resultado temporal después de una operación aritmética o lógica.
BX, BH, BL (Base): Se utiliza para guardar la dirección base de listas de datos en la memoria.
CX, CH, CL (Contador): Contiene el conteo para ciertas instrucciones de corrimientos y rotaciones, de iteraciones en el ciclo loop y operaciones repetidas de cadenas.
DX, DH, DL (Datos): Contiene la parte más significativa de un producto después de una multiplicación; la parte más significativa del dividendo antes de la división.
3. Registros Apuntadores:
Los registros SP (apuntador de
la pila) Y BP (apuntador de base) están asociados con el registro SS y permiten
al sistema accesar datos en el segmento de la pila.
4. Registro de Banderas:
De los 16 bits del registro de
banderas, nueve son comunes a toda la familia de procesadores 8086, y sirven
para indicar el estado actual de la máquina y el resultado del procesamiento.
Muchas instrucciones que piden comparaciones y aritmética cambian el estado de
las banderas, algunas cuyas instrucciones pueden realizar pruebas para
determinar la acción subsecuente.
5. Registro de Apuntador de
Instrucciones:
El registro apuntador de
instrucciones (IP) de 16 bits contiene el desplazamiento de dirección de la
siguiente instrucción que se ejecuta. El IP está asociado con el registro CS en
el sentido de que el IP indica la instrucción actual dentro del segmento de
código que se está ejecutando actualmente. Los procesadores 80386 y posteriores
tienen un IP ampliado de 32 bits, llamado EIP.
6. Registros de PILA:
La pila es un área de
memoria importante y por ello tiene, en vez de uno, dos registros que se usan
como desplazamiento (offset) para apuntar a su contenido. Se usan como
complemento al registro.
Programas en lenguaje ensamblador
1)
2)
3) se incrementa el valor de bx
4) decremento el valor de Cx (el anterior ejemplo)
5)
No hay comentarios:
Publicar un comentario