Está en la página 1de 28

Computación III

Unidad 1: Introducción al lenguaje


ensamblador
Objetivo específico: Conocer la arquitectura y organización de
un procesador y la estructura de un programa en ensamblador e
identifica la relación entre ambos.
oTema 1.1 Importancia del lenguaje
oTema 1.2 Microprocesador y sus registros.
oTema 1.3 Memoria RAM
oTema 1.4 Interrupciones

Ing. Víctor Alfonso Montalvo Rodríguez


1.1 Importancia del lenguaje
• Lenguaje ensamblador: Es un lenguaje traductor
que permite tener un control total sobre cada
instrucción generada por una máquina en
particular mediante el programa traductor, tal
programa traductor es llamado ensamblador o
programa ensamblador.
• Programa ensamblador: Es el programa que
realiza la traducción de un programa escrito en
ensamblador al lenguaje máquina, esta traducción
es directa e inmediata ya que las instrucciones en
ensamblador no son más que nemotécnica
(instrucciones) de las instrucciones máquina que
ejecuta directamente la CPU
• Lenguaje máquina: Cada tipo de CPU entiende su
propio lenguaje máquina, las instrucciones en
lenguaje de máquina son números almacenados
como bytes en memoria, cada instrucción tiene su
propio y único código llamado código de operación
u opcode, el opcode está siempre al inicio de la
instrucción, muchas instrucciones incluyen también
datos usados por las instrucciones.
• El lenguaje máquina es muy difícil de programar
directamente, descifrar el significado de las
instrucciones codificadas numéricamente es tedioso
para los humanos.
• Por ejemplo, la instrucción que suma los registros
EAX y EBX y almacena el resultado en EAX está
codificada por los siguientes códigos hexadecimales
03 C3

• La instrucción de suma descrita arriba podría ser


representada en lenguaje ensamblador como:
– add eax, ebx
el significado de la instrucción es mucho más claro
que el código de la máquina. La palabra add es el
nemónico para la instrucción de suma . La forma
general de una instrucción de ensamblador es:
mnemonico operando(s)
add eax, ebx
• Es un programa que lee un archivo
de texto con instrucciones de
Ensamblador ensamblador y convierte el
ensamblador en código de máquina.

• Son programas que hacen


Compiladores conversiones similares para lenguajes
de programación de alto nivel

Un ensamblador es mucho más simple que un compilador. Cada


instrucción de lenguaje ensamblador representa una sola
instrucción de la máquina. Las instrucciones de un lenguaje de
alto nivel son mucho más complejas y pueden requerir muchas
instrucciones de máquina.
• MOV Ax 0004
Hexadecimal
Registros de 8 bits
0 0 0 0 0 1 0 0

AH AL

Partes en las que se divide un registro


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 él 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.
Ventajas y desventajas

1. Velocidad 1. Tiempo de
programación
2. Eficiencia de
tamaño 2. Programas fuentes
grandes
3. Flexibilidad
3. Peligros de afectar
recursos inesperados
4. Falta de portabilidad
1.2 Microprocesador y sus registros.
• El procesador es un elemento importante del hardware de la
PC. Es la unidad del sistema, que contiene una tarjeta de
sistema, fuente de poder y ranuras de expansión para
tarjetas opcionales. Los elementos de la tarjeta de sistema
son un microprocesador, memoria de solo lectura (ROM) y
memoria de acceso aleatorio (RAM).
• Microprocesador más importantes:
– 8086, 8088

1er microprocesador 4004


La CPU.
• La Unidad Central de Procesamiento (CPU) es el dispositivo
físico que ejecuta las instrucciones. Las instrucciones que
ejecuta la CPU son por lo general muy simples. Las
instrucciones pueden requerir datos que estén en un lugar
especial de almacenamiento de la CPU en sí misma llamados
registros.

La familia de CPU 80x86


• Las PC de tipo IBM tienen una CPU de la familia Intel (o un
clon de ellas) Las CPU de esta familia todas tienen algunas
características comunes incluyendo el lenguaje de máquina
básico. Sin embargo los miembros más recientes amplían
mucho las características.
8888,8086: Estas CPU
desde el punto de vista de
la programación son
80286: Esta CPU se usa en
iguales. Ellas fueron las
los PC tipo AT. Agrega unas
CPU usadas en las primeras
instrucciones nuevas al
PC. Ellas suministran varios
lenguaje de máquina base
registros de 16 bits: AX, BX,
del 8080/86. Sin embargo
CX, DX, SI, DI, BP, SP, CS, DS,
la característica principal
SS, ES, IP, FLAGS. Ellas solo
nueva es el modo
soportan hasta 1 Mega
protegido de 16 bits. En
byte de memoria y sólo
este modo puede acceder
operan en modo real. En
hasta 16 Mega bytes de
este modo un programa
memoria y proteger a los
puede acceder a cualquier
programas del acceso de
dirección de memoria,
otros. Sin embargo los
¡aún a la memoria de otros
programas todavía están
programas! Esto hace la
divididos en segmentos
depuración y seguridad
que no pueden ser más
muy difícil. También la
grandes de 64K.
memoria del programa
tiene que ser dividida en
segmentos.
80386: Esta CPU es una gran ampliación del 80286. Primero extiende
muchos de los registros para almacenar 32 bits (EAX, EBX, ECX, EDX,
ESI, EDI, EBP, ESP, EIP) y añade dos nuevos registros de 16 bits FS y GS.
También añade un nuevo modo protegido de 32 bits. En este modo
pueden acceder hasta 4 Gigabytes.

80486/Pentium/Pentium Pro: Estos miembros de la familia 80x86


añaden muy pocas características nuevas. Ellos principalmente
aceleran la ejecución de las instrucciones.

Pentium MMX: Este procesador añade instrucciones MMX


(eXtensiones MultiMedia) al Pentium. Estas instrucciones pueden
acelerar instrucciones comunes graficas.

Pentium II: Este es el procesador Pentium Pro con las instrucciones


MMX añadidas (El Pentium III es esencialmente solo un Pentium II
rápido.
Registros internos del procesador
• Registros: Conjuntos de flip-flops capaz de almacenar y en
algunos casos modificar información binaria.
• La CPU tiene 14 registros internos. Los primeros 4 Ax, Bx, Cx, Dx,
son de uso general y se pueden usar también como registros
tanto de 8 bits como de 16 bits. Es decir, Ax se puede dividir en
AH y AL qu serían las partes altas y bajas de cada registro. A
estos registros también se le llama de propósito general

Ax • Acumulador

Bx • Base

Cx • Contador

Dx • Datos
Tipos
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, más 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 especifico 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.

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 último 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 el registro de


datos. Algunas 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.
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.
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.
• Registro SP. El apuntador de la pila de 16 bits está asociado
con el registro SS y proporciona un valor de desplazamiento
que se refiere a la palabra actual que está siendo procesada
en la pila. El sistema maneja de forma automática estos
registros.
• Registro BP. El BP de 16 bits facilita la referencia de
parámetros, los cuales son datos y direcciones transmitidos
vía pila.
Registros Índice.

• Los registros SI y DI están disponibles para


direccionamiento indexado y para sumas y restas.
• Registro SI. El registro índice fuente de 16 bits es requerido
por algunas operaciones con cadenas (de caracteres). En
este contexto, el SI está asociado con el registro DS.
• Registro DI. El registro índice destino también es requerido
por algunas operaciones con cadenas de caracteres. En este
contexto, el DI está asociado con el registro ES
• Registro de Banderas.

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:

1. OF (Overflow, desbordamiento). Indica desbordamiento de un bit de


orden alto (mas a la izquierda) después de una operación aritmética.
2. DF (dirección). Designa la dirección hacia la izquierda o hacia la
derecha para mover o comparar cadenas de caracteres.
3. IF (interrupción). Indica que una interrupción externa, como la entrada
desde el teclado, sea procesada o ignorada.
4. TF (trampa). Permite la operación del procesador en modo de un paso.
Los programas depuradores, como el DEBUG, activan esta bandera de
manera que usted pueda avanzar en la ejecución de una sola
instrucción a un tiempo, para examinar el efecto de esa instrucción
sobre los registros de memoria.
SF (signo). Contiene el signo resultante de una
operación aritmética (0 = positivo y 1 = negativo).

ZF (cero). Indica el resultado de una operación


aritmética o de comparación (0 = resultado diferente de
cero y 1 = resultado igual a cero).

AF (acarreo auxiliar). Contiene un acarreo externo del


bit 3 en un dato de 8 bits para aritmética especializada.

PF (paridad). Indica paridad par o impar de una


operación en datos de 8 bits de bajo orden (mas a la
derecha).

CF (acarreo). Contiene el acarreo de orden más alto (más a la


izquierda) después de una operación aritmética; también lleva el
contenido del último bit en una operación de corrimiento o de
rotación.
1.3 Memoria RAM
• RAM es el acrónimo inglés de Random Access
Memory (memoria de acceso aleatorio). Se trata de
una memoria de semiconductor en la que se puede
tanto leer como escribir información. Es una
memoria volátil, es decir, pierde su contenido al
desconectar la energía eléctrica. Se utiliza
normalmente como memoria temporal para
almacenar resultados intermedios y datos similares
no permanentes.
Se dicen "de acceso
En estas memorias se aleatorio" porque los
accede a cada celda diferentes accesos son
(generalmente se independientes entre sí.
direcciona a nivel de Por ejemplo, si un disco
bytes) mediante un rígido debe hacer dos
cableado interno, es decir, accesos consecutivos a
cada byte tiene un camino sectores alejados
prefijado para entrar y físicamente entre sí, se
salir, a diferencia de otros pierde un tiempo en
tipos de almacenamiento, mover la cabeza hasta la
en las que hay una cabeza pista deseada (o esperar
lecto grabadora que tiene que el sector pase por
que ubicarse en la debajo, si ambos están en
posición deseada antes de la misma pista), tiempo
leer el dato deseado. que no se pierde en la
RAM.
La información
Las RAM se dividen en Para evitarlo hay que
contenida en una
estáticas y dinámicas. restaurar la
memoria RAM
Una memoria RAM contenida
dinámica se degrada información
estática mantiene su en sus celdas a
con el tiempo, llegando
contenido inalterado intervalos regulares,
ésta a desaparecer, a
mientras esté operación denominada
pesar de estar
alimentada. refresco.
alimentada.
1.4 Interrupciones

El hardware de un computador provee un mecanismo llamado


interrupción para manipular estos eventos. Por ejemplo cuando
se mueve el ratón la interrupción de hardware del ratón es el
programa actual para manejar el movimiento del ratón (para
mover el cursor del mouse, etc.) Las interrupciones hacen que
el control se pase a un manipulador de interrupciones.

Los manipuladores de interrupciones son rutinas que procesan


la interrupción. A cada tipo de interrupción se le asigna un
número entero. En el comienzo de la memoria física una tabla
de vectores de interrupción que contiene la dirección del
segmento de los manipuladores de la interrupción. }
Las interrupciones externas son
levantadas desde el exterior de la
CPU (el ratón es un ejemplo de
este tipo de interrupción).
Muchos dispositivos de E/S
levantan interrupciones (teclado,
temporizador, disco duro CD ROM
y tarjetas de sonido)

Las interrupciones internas son


levantadas desde la CPU, por una
instrucción de error o por una
instrucción de interrupción. Las
instrucciones de error también se
llaman trampas.

Las interrupciones generadas


desde la instrucción de
interrupción son llamadas
interrupciones de software

También podría gustarte