Unidad I

Descargar como pptx, pdf o txt
Descargar como pptx, pdf o txt
Está en la página 1de 80

Introduccin al Lenguaje

Ensamblador
Lenguajes de Interfaz

OBJETIVO GENERAL DEL CURSO

Desarrollar software para establecer la interfaz hombre-mquina y mquina-


mquina.
Unidad I. Introduccin al lenguaje
ensamblador

Conocer cmo trabajan los microprocesadores con lenguaje ensamblador


y qu aplicacin pueden tener.
Sugerencias de evaluacin

La evaluacin de la asignatura se har con base en siguiente desempeo:


Ponderacin de tareas.
Participacin y desempeo en el aula y el laboratorio, a travs de dinmicas grupales, trabajo
individual o en equipo.
Dar seguimiento al desempeo en el desarrollo del programa (dominio de los conceptos,
capacidad de la aplicacin de los conocimientos en problemas reales, transferencia del
conocimiento).
Desarrollo de un proyecto que integre todas las unidades de aprendizaje.
Cumplimiento de los objetivos y desempeo en las prcticas.
Importancia de la programacin en
lenguaje ensamblador

Qu es un lenguaje ensamblador?

El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para


escribir programas informticos, y constituye la representacin ms directa del
cdigo mquina especfico 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 l se puede realizar
cualquier tipo de programas que en los lenguajes de alto nivel no lo pueden realizar.
Otro punto sera que los programas en ensamblador ocupan menos espacio en
memoria.
Ventajas del Lenguaje Ensamblador

A pesar del hecho de que codificar en un lenguaje de alto nivel es ms productivo,


alguna de las ventajas de codificar en lenguaje ensamblador son:
1. Como trabaja directamente con el microprocesador al ejecutar un programa, pues como
este lenguaje es el ms cercano a la mquina la computadora lo procesa ms rpido.
2. Eficiencia de tamao.- Un programa en ensamblador no ocupa mucho espacio en
memoria porque no tiene que cargan libreras y dems como son los lenguajes de alto
nivel.
3. Flexibilidad.- En lenguaje ensamblador se pueden hacer tareas especficas que en un
lenguaje de alto nivel no se pueden llevar acabo porque tienen ciertas limitantes que no se
lo permite.
Para programar en ensamblador debes conocer algunos aspectos extra:
debes comprender no slo las instrucciones que vas a usar sino tambin la
arquitectura de la mquina, necesitas saber cmo se almacenan los datos,
como el procesador manipula los datos, etc.

Cuando programas en lenguajes de bajo nivel debes hacer ms que solo


describir la solucin formal del programa, debes dividir el programa en pasos
pequeos y bsicos. Estos pasos le dirn al procesador que hacer, una
instruccin a la vez.
La recompensa de aprender y practicar con el lenguaje ensamblador es
desarrollar una idea slida de cmo opera una computadora, adems
de escribir programas rpidos y pequeos para ejecutar tareas que no
son prcticas (demasiado lentas) o no son posibles o demasiado
complejas en lenguajes de alto nivel.
Uso y aplicaciones del lenguaje
ensamblador

El uso del lenguaje ensamblador le permite al programador indicarle al


computador exactamente cmo llevar a cabo una tarea especfica
usando la menor cantidad de instrucciones.

Aun cuando el cdigo generado por los compiladores con opcin de


optimizacin es eficiente, la optimizacin manual puede resultar en una
mejora sustancial en trminos de rendimiento y consumo de memoria.
El lenguaje ensamblador es usualmente utilizado en las siguientes circunstancias:
Mejorar la eficiencia de una rutina especfica que se ha transformado en un cuello de
botella.
Obtener acceso a funciones de bajo nivel del procesador para realizar tareas que no son
soportadas por los lenguajes de alto nivel.
Escribir manejadores de dispositivos para comunicarse directamente con hardware
especial tales como tarjetas de red.
Trabajar en ambientes con recursos limitados puede requerir el uso del lenguaje
ensamblador pues el cdigo ejecutable puede ser menor que el generado por el
compilador.
Los lenguajes ensamblador tienen sus aplicaciones muy reducidas, se centran bsicamente
en aplicaciones de tiempo real, control de procesos y de dispositivos electrnicos.
El procesador y sus registros internos

Debe parecer un poco lento el que el procesador trabaje slo con la memoria primaria,
cada byte a ser usado debe ser transferido y regresado. Esta memoria consiste de 14
palabras de memoria read-write. Cada una de estas palabras es llamada un registro y cada
registro tiene su propio nombre y propsito.

Los registros del procesador se emplean para controlar instrucciones en ejecucin, manejar
direccionamiento de memoria y proporcionar capacidad aritmtica. Los registros son
direccionables por medio de un nombre. Los bits por convencin, se numeran de derecha a
izquierda, como en:
... 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Diagrama de bloque de los
microprocesadores Intel 8086 y 8088.
1. Bloque de registros de propsito
general
2. Bloque de registros de segmento
y registro IP
3. Sumador de direcciones
4. Bus de direcciones interno
5. Cola de instrucciones (4 bytes
para el 8088 y 6 bytes para el
8086)
6. Unidad de control (muy
simplificada)
7. Interfaz del bus
8. Bus de datos interno
9. Unidad aritmtico lgica (ALU)
10. 10, 11, 12 Bus de direcciones,
datos y control externos
Algunas caractersticas de los registros
internos

Cada Procesador contiene cierto nmero de estos.

Los registros son la memoria ms rpida de la PC.

La mayora de las operaciones se realizan en los registros.

El ancho de los registros (en bits), determina cuanta informacin puede manejar.

El tamao del procesador est ligado a los registros internos.


Los registros internos del procesador se pueden clasificar en 6
tipos diferentes:
Registros de segmento.
Registros de propsito general.
Registros de apuntadores.
Registros de banderas.
Registros de Puntero de instruccin.
Registros de Pila.
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 direccin inicial del segmento de cdigo de un
programa en el registro CS. Esta direccin de segmento, ms un valor de
desplazamiento en el registro apuntador de instruccin (IP), indica la direccin de una
instruccin que es buscada para su ejecucin.
Registro DS. La direccin inicial de un segmento de datos de programa es almacenada
en el registro DS. En trminos sencillos, esta direccin, ms un valor de desplazamiento
en una instruccin, genera una referencia a la localidad de un byte especifico en el
segmento de datos.
Registro SS. El registro SS permite la colocacin en memoria de una pila, para
almacenamiento temporal de direcciones y datos. El DOS almacena la direccin de
inicio del segmento de pila de un programa en el registro SS. Esta direccin de
segmento, ms un valor de desplazamiento en el registro del apuntador de pila (SP),
indica la palabra actual en la pila que est siendo direccionada.
Registro 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 direccin de segmento
apropiada.
Registros FS y GS. Son registros extra de segmento en los procesadores 80386 y
posteriores.
Registros de propsito general

Los registros de propsito 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 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
aritmtica. Por ejemplo, las instrucciones para multiplicar, dividir y traducir
suponen el uso del AX.

Registro BX. El BX es conocido como el registro base ya que es el nico


registro de propsito general que puede ser ndice para
direccionamiento indexado. Tambin es comn emplear el BX para
clculos.
Registro CX: Contiene el conteo para ciertas instrucciones de corrimiento
y rotaciones, de iteraciones en el ciclo loop y operaciones repetidas de
cadenas.

Registro DX. El DX es conocido como el registro de datos. Algunas


operaciones de entrada/salida requieren uso, y las operaciones de
multiplicacin y divisin 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 direccin de la siguiente instruccin que se ejecuta.

El IP est asociado con el registro CS en el sentido de que el IP indica la


instruccin actual dentro del segmento de cdigo 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) estn 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 automtica estos
registros.
Registro BP. El BP de 16 bits facilita la referencia de parmetros, los cuales
son datos y direcciones transmitidos va pila.

Registros ndice
Los registros SI y DI estn 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 tambin es requerido por algunas


operaciones con cadenas de caracteres. En este contexto, el DI est
asociado con el registro ES.
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 mquina y el resultado
del procesamiento.

Muchas instrucciones que piden comparaciones y aritmtica cambian el estado de las


banderas, algunas cuyas instrucciones pueden realizar pruebas para determinar la
accin subsecuente.

En resumen, los bits de las banderas comunes son como sigue:


OF (Overflow, desbordamiento). Indica desbordamiento de un bit de
orden alto (mas a la izquierda) despus de una operacin aritmtica.

DF (direccin). Designa la direccin hacia la izquierda o hacia la


derecha para mover o comparar cadenas de caracteres.

IF (interrupcin). Indica que una interrupcin externa, como la entrada


desde el teclado, sea procesada o ignorada.
TF (trampa). Permite la operacin del procesador en modo de un paso. Los
programas depuradores, como el DEBUG, activan esta bandera de manera que
usted pueda avanzar en la ejecucin de una sola instruccin a un tiempo, para
examinar el efecto de esa instruccin sobre los registros de memoria.

SF (signo). Contiene el signo resultante de una operacin aritmtica (0 = positivo y 1


= negativo).

ZF (cero). Indica el resultado de una operacin aritmtica o de comparacin (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 aritmtica especializada.

PF (paridad). Indica paridad par o impar de una operacin en datos de 8


bits de bajo orden (mas a la derecha).

CF (acarreo). Contiene el acarreo de orden ms alto (ms a la izquierda)


despus de una operacin aritmtica; tambin lleva el contenido del
ultimo bit en una operacin de corrimiento o de rotacin.
Las banderas ms importantes para la programacin en ensamblador
son O, S, Z y C, para operaciones de comparacin y aritmticas, y D para
operaciones de cadenas de caracteres. Los procesadores 80286 y
posteriores tienen algunas banderas usadas para propsitos internos, en
especial las que afectan al modo protegido.
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 y son:

SP- Stack Pointer: Se traduce como puntero de pila y es el que se reserva el procesador
para uso propio en instrucciones de manipulado de pila. Por lo general, el
programador no debe alterar su contenido.

BP- Base pointer: Se usa como registro auxiliar. El programador puede usarlo para su
provecho.
Indicadores (flags)

Hay nueve indicadores de un bit en este registro de 16 bits. Los cuatro bits ms
significativos estn indefinidos, mientras que hay tres bits con valores determinados: los
bits 5 y 3 siempre valen cero y el bit 1 siempre vale uno (esto tambin ocurra en los
procesadores anteriores).

CF (Carry Flag, bit 0): Si vale 1, indica que hubo "arrastre" (en caso de suma) hacia, o
"prstamo" (en caso de resta) desde el bit de orden ms significativo del resultado. Este
indicador es usado por instrucciones que suman o restan nmeros que ocupan varios
bytes.

Las instrucciones de rotacin pueden aislar un bit de la memoria o de un registro


ponindolo en el CF.
PF (Parity Flag, bit 2): Si vale uno, el resultado tiene paridad par, es decir, un
nmero par de bits a 1. Este indicador se puede utilizar para detectar errores en
transmisiones.

AF (Auxiliary carry Flag, bit 4): Si vale 1, indica que hubo "arrastre" o "prstamo"
del nibble (cuatro bits) menos significativo al nibble ms significativo. Este
indicador se usa con las instrucciones de ajuste decimal.

ZF (Zero Flag, bit 6): Si este indicador vale 1, el resultado de la operacin es cero.
SF (Sign Flag, bit 7): Refleja el bit ms significativo del resultado. Como los
nmeros negativos se representan en la notacin de complemento a
dos, este bit representa el signo: 0 si es positivo, 1 si es negativo.

TF (Trap Flag, bit 8): Si vale 1, el procesador est en modo paso a paso. En
este modo, la CPU automticamente genera una interrupcin interna
despus de cada instruccin, permitiendo inspeccionar los resultados del
programa a medida que se ejecuta instruccin por instruccin.
IF (Interrupt Flag, bit 9): Si vale 1, la CPU reconoce pedidos de interrupcin externas
enmascarables (por el pin INTR). Si vale 0, no se reconocen tales interrupciones. Las
interrupciones no enmascarables y las internas siempre se reconocen
independientemente del valor de IF.

OF (Overflow flag, bit 11): Si vale 1, hubo un desborde en una operacin aritmtica con
signo, esto es, un dgito significativo se perdi debido a que tamao del resultado es
mayor que el tamao del destino.
La memoria principal (RAM)

Se denomina Memoria a los circuitos que permiten almacenar y recuperar la


informacin. En un sentido ms amplio, puede referirse tambin a sistemas externos
de almacenamiento, como las unidades de disco o de cinta.

Memoria de acceso aleatorio o RAM (Random Access Memory) es la memoria


basada en semiconductores que puede ser leda y escrita por el microprocesador u
otros dispositivos de hardware.
La memoria RAM (Random Access Memory) o memoria de acceso aleatorio de
lectura/escritura voltil, se dispone como una hoja de trabajo para almacenamiento
temporal y ejecucin de programas.

En la memoria de acceso aleatorio (RAM), las celdas de la memoria pueden accesarse


para la transferencia de informacin en cualquier posicin aleatoria deseada.

Se dicen "de acceso aleatorio" porque los diferentes accesos son independientes entre s.
Por ejemplo, si un disco rgido debe hacer dos accesos consecutivos a sectores alejados
fsicamente entre s, se pierde un tiempo en mover la cabeza hasta la pista deseada (o
esperar que el sector pase por debajo, si ambos estn en la misma pista), tiempo que no se
pierde en la RAM.
Existen dos tipos de memorias RAM: Las RAM estticas o SRAM y las RAM dinmicas o DRAM.
En una RAM esttica (SRAM) el valor almacenado en una celda se mantiene mediante un
par de inversores y, mientras se suministre electricidad, el valor puede mantenerse
indefinidamente.

En una RAM dinmica (DRAM), el valor almacenado en una celda se mantiene como una
carga en un condensador. Para acceder a la carga almacenada se usa slo un transistor,
tanto para leer el valor como para sobrescribirlo.

Las memorias se agrupan en mdulos, que se conectan a la placa base del computador.
Segn los tipos de conectores que lleven los mdulos, se clasifican en Mdulos SIMM (Single
In-line Memory Module), con 30 o 72 contactos, mdulos DIMM (Dual In-line Memory
Module), con 168 contactos y mdulos RIMM (RAMBUS In-line Memory Module) con 184
contactos.
Caractersticas de la RAM

Un sistema de memoria se puede clasificar en funcin de muy diversas


caractersticas. En el caso de la memoria RAM (tambin denominada memoria
principal o primaria) se puede realizar la siguiente clasificacin:

Localizacin: Interna (se encuentra en la placa base)

Capacidad: Hoy en da no es raro encontrar ordenadores PC equipados con 64, 128


256 Mb de memoria RAM.
Mtodo de acceso: La RAM es una memoria de acceso aleatorio. Esto significa que
una palabra o byte se puede encontrar de forma directa, sin tener en cuenta los
bytes almacenados antes o despus de dicha palabra (al contrario que las memorias
en cinta, que requieren de un acceso secuencial). Adems, la RAM permite el
acceso para lectura y escritura de informacin.

Velocidad de acceso: Actualmente se pueden encontrar sistemas de memoria RAM


capaces de realizar transferencias a frecuencias del orden de los Gbps (gigabits por
segundo).
Tambin es importante anotar que la RAM es una memoria voltil, es decir,
requiere de alimentacin elctrica para mantener la informacin. En otras
palabras, la RAM pierde toda la informacin al desconectar el ordenador.

En la actualidad hemos de disponer de la mayor cantidad posible de sta, ya


que estamos supeditados al funcionamiento ms rpido o ms lento de
nuestras aplicaciones diarias.

La memoria RAM hace unos aos era muy cara, pero hoy en da su precio ha
bajado considerablemente.
El concepto de interrupciones

Una interrupcin no es ms que un evento que genera la ruptura de la ejecucin de


un programa para pasar a ejecutar otro relacionado con el evento causante de la
interrupcin.

Existen 256 direcciones de interrupcin diferentes.

La interrupcin, desde el punto de vista del mecanismo que la activa, puede ser de
tipo:
Hardware
Software
Las interrupciones de hardware, estn asociadas generalmente a un dispositivo fsico (reloj
del sistema, perifrico) y consisten en la activacin de una lnea para dar a conocer a la
UCP la Aparicin del evento asociado.

Los perifricos cuentan con un nmero de interrupcin que se denomina IRQ (Peticiones de
Interrupcin). Es como si cada perifrico tirara de un "hilo" que est atado a una campana
para sealarle al equipo que desea que le preste atencin.

Las interrupciones de software consisten en instrucciones cuyo efecto es la ejecucin de


una rutina de servicio de interrupcin (se suelen usar para llamadas al sistema operativo
porque aslan software de usuario y de sistema).
Tabla de servicio de interrupcin

Cuando la computadora se enciende, el BIOS y el DOS establecen una tabla de servicios


de interrupcin en las localidades de memoria 000H-3FFH. La tabla permite el uso de 256
(100H) interrupciones, cada una con un desplazamiento: segmento relativo de cuatro
bytes en la forma IP:CS.

El operando de una instruccin de interrupcin como INT 05H identifica el tipo de solicitud.
Como existen 256 entradas, cada una de cuatro bytes, la tabla ocupa los primeros 1, 024
bytes de memoria, desde 000H hasta 3FFH. Cada direccin en la tabla relaciona a una
rutina de BIOS o del DOS para un tipo especfico de interrupcin. Por lo tanto los bytes 0-3
contienen la direccin para la interrupcin 0, los bytes 4-7 para la interrupcin 1, y as
sucesivamente:
Eventos de una Interrupcin

Una interrupcin guarda en la pila el contenido del registro de banderas, el CS, y el


IP. Por ejemplo, la direccin en la tabla de INT 05H (que imprime la que se
encuentra en la pantalla cuando el usuario presiona Ctrl + PrtSC) es 0014H (05H x 4
= 14H). La operacin extrae la direccin de cuatro bytes de la posicin 0014H y
almacena dos bytes en el IP y dos en el CS.

La direccin CS: IP entonces apunta al inicio de la rutina en el rea del BIOS, que
ahora se ejecuta. La interrupcin regresa va una instruccin IRET (regreso de
interrupcin), que saca de la pila el IP, CS y las banderas y regresa el control a la
instruccin que sigue al INT.
Tipos de interrupciones

Las interrupciones se dividen en dos tipos las cuales son: Externas e Internas. Una
interrupcin externa es provocada por un dispositivo externo al procesador. Las dos
lneas que pueden sealar interrupciones externas son la lnea de interrupcin no
enmascarable (NMI) y la lnea de peticin de interrupcin (INTR).

La lnea NMI reporta la memoria y errores de paridad de E/S. El procesador siempre


acta sobre esta interrupcin, aun si emite un CLI para limpiar la bandera de
interrupcin en un intento por deshabilitar las interrupciones externas. La lnea INTR
reporta las peticiones desde los dispositivos externos, en realidad, las interrupciones 05H
a la 0FH, para cronometro, el teclado, los puertos seriales, el disco duro, las unidades
de disco flexibles y los puertos paralelos.
Una interrupcin interna ocurre como resultado de la ejecucin de una
instruccin INT o una operacin de divisin que cause desbordamiento,
ejecucin en modo de un paso o una peticin para una interrupcin
externa, tal como E/S de disco.
Interrupcin de BIOS

El BIOS contiene un extenso conjunto de rutinas de entrada/salida y tablas que


indican el estado de los dispositivos del sistema. A continuacin se listan algunas
interrupciones del BIOS.
INT 00H: Divisin entre cero. Llamada por un intento de dividir entre cero. Muestra un
mensaje y por lo regular se cae el sistema.
INT 01H: Un solo paso. Usado por DEBUG y otros depuradores para permitir avanzar por
paso a travs de la ejecucin de un programa.
INT 02H: Interrupcin no enmascarare. Usada para condiciones graves de hardware, tal
como errores de paridad, que siempre estn habilitados. Por lo tanto un programa que
emite una instruccin CLI (limpiar interrupciones) no afecta estas condiciones.
INT 03H: Punto de ruptura. Usado por depuracin de programas para detener la
ejecucin.
INT 04H: Desbordamiento. Puede ser causado por una operacin aritmtica, aunque por
lo regular no realiza accin alguna.
INT 05H: Imprime pantalla. Hace que el contenido de la pantalla se imprima. Emita la INT
05H para activar la interrupcin internamente, y presione las teclas Cltr + PrtSC para
activarla externamente. La operacin permite interrupciones y guarda la posicin del
cursor.
INT 08H: Sistema del cronometro. Una interrupcin de hardware que actualiza la hora del
sistema y (si es necesario) la fecha. Un chip temporizador programable genera una
interrupcin cada 54.9254 milisegundos, casi 18.2 veces por segundo.
INT 09H: Interrupcin del teclado. Provocada por presionar o soltar una tecla en el
teclado.
INT OBH, INT OCH: Control de dispositivo serial. Controla los puertos COM1 y COM2,
respectivamente.
INT 0DH, INT OFH: Control de dispositivo paralelo. Controla los puertos LPT1 y LPT2,
respectivamente.
INT 0EH: Control de disco flexible. Seala actividad de disco flexible, como la terminacin
de una operacin de E/S.
INT 10H: Despliegue en vdeo. Acepta el nmero de funciones en el AH para el modo de
pantalla, colocacin del cursor, recorrido y despliegue.
INT 11H: Determinacin del equipo. Determina los dispositivos opcionales en el sistema y
regresa el valor en la localidad 40:10H del BIOS al AX. (A la hora de encender el equipo, el
sistema ejecuta esta operacin y almacena el AX en la localidad 40:10H).
INT 12H: Determinacin del tamao de la memoria. En el AX, regresa el tamao de la
memoria de la tarjeta del sistema, en trminos de kilobytes contiguos.
INT 13H: Entrada/salida de disco. Acepta varias funciones en el AH para el estado del
disco, sectores ledos, sectores escritos, verificacin, formato y obtener diagnstico.
Interrupcin del DOS

Las operaciones del DOS por lo general son ms fciles de usar que sus
contrapartes del BIOS y por lo comn son independientes de la maquina.
IO.SYS es una interfaz de nivel bajo con el BIOS que facilita la lectura de datos
desde la memoria hacia dispositivos externos.
MSDOS.SYS contiene un administrador de archivos y proporciona varios servicios.
Por ejemplo, cuando un programa usuario solicita la INT 21H, la operacin enva
informacin al MSDOS.SYS por medio del contenido de los registros. Para
completar la peticin, MSDOS.SYS puede traducir la informacin a una o ms
llamadas a IO.SYS, el cual a su vez llama al BIOS. Las siguientes son las relaciones
implcitas:
Interrupciones del DOS

Las interrupciones desde la 20H hasta la 3FH estn reservadas para operaciones del
DOS. A continuacin se mencionan algunas de ellas.

INT 20H: Termina programa. Finaliza la ejecucin de un programa .COM, restaura las
direcciones para Cltr + Break y errores crticos, limpia los bfer de registros y regresa
el control al DOS.

INT 21H: Peticin de funcin al DOS. La principal operacin del DOS necesita una
funcin en el AH.
INT 22H: Direccin de terminacin. Copia la direccin de esta
interrupcin en el PSP del programa (en el desplazamiento 0AH) cuando
el DOS carga un programa para ejecucin.

INT 23H: Direccin de Cltr + Break. Diseada para transferir el control a


una rutina del DOS (por medio del PSP desplazamiento 0EH) cuando
usted presiona Ctlt + Break o Ctlr + c. Sus programas no deben de emitir
esta interrupcin.
INT 23H: Direccin de Cltr + Break. Diseada para transferir el control a una rutina del DOS (por medio del
PSP desplazamiento 0EH) cuando usted presiona Ctlt + Break o Ctlr + c. La rutina finaliza la ejecucin de un
programa o de un archivo de procesamiento por lotes. Sus programas no deben de emitir esta
interrupcin.
INT 24H: Manejador de error crtico. Usada por el dos para transferir el control (por medio del PSP
desplazamiento 12H) cuando reconoce un error critico (a veces una operacin de disco o de la
impresora).Sus programas no deben de emitir esta interrupcin.
INT 25H: Lectura absoluta de disco. Lee el contenido de uno o ms sectores de disco.
INT 26H: Escritura absoluta de disco. Escribe informacin desde la memoria a uno o ms sectores de disco.
INT 27H: Termina pero permanece residente (reside en memoria). Hace que un programa .COM al salir
permanezca residente en memoria.
INT 2FH: Interrupcin de multiplexion. Implica la comunicacin entre programas, como la comunicacin
del estado de un spooler de la impresora, la presencia de un controlador de dispositivo o un comando del
DOS tal como ASSIGN o APPEND.
INT 33H: Manejador del ratn. Proporciona servicios para el manejo del ratn.
Llamadas a servicios del sistema

La interfaz entre el sistema operativo y los programas de usuarios est definida por el
conjunto de llamadas al sistema ofrecidas por el sistema operativo. Las llamadas al sistema
con que cuenta la interfaz varan de un sistema operativo a otro.

Puesto que el mecanismo real para emitir una llamada al sistema depende mucho de la
mquina y muchas veces debe de expresarse en cdigo ensamblador.

En cierto sentido, efectuar una llamada al sistema es como efectuar una llamada a un
procedimiento especial, solo que las llamadas al sistema entran al kernel y las llamadas a
procedimientos no.
Se trata de que una aplicacin ejecute una rutina del sistema operativo, con
objeto de que la rutina le preste un servicio.

Por ejemplo, cuando un programa desea abrir un fichero de disco, llama a


un servicio del sistema que le permite llevar a cabo sta tarea. Debe tenerse
en cuenta que una aplicacin no puede acceder directamente al disco, y
debe hacerlo a travs del sistema operativo.
Hay dos tipos de instrucciones relacionados con la llamada a servicios del sistema
operativo:
Syscall. Instruccin de llamada a un servicio del sistema operativo, a travs de su API. Cuando
una tarea ejecuta esta instruccin pasa el control al sistema operativo.
Sysret. Instruccin de retorno de un servicio. El sistema operativo ejecuta esta instruccin justo
antes de devolver el control a la tarea que solicit el servicio.

Entre la ejecucin de las instrucciones Syscall y Sysret, el sistema operativo accede al


espacio de memoria de la tarea.
Las llamadas al sistema se pueden agrupar en cinco categoras:
1. Control de proceso (Crear, cargar, ejecutar un proceso, obtener y establecer atributos,
esperar un suceso, liberar memoria, abortar y terminar proceso).
2. Manipulacin de archivos (Crear, abrir, leer, obtener y establecer atributos, cerrar y
eliminar archivos).
3. Manipulacin de perifricos (Solicitar, escribir, leer, obtener y establecer atributos, liberar
perifrico).
4. Manipulacin de la informacin (Obtener fecha y hora, establecer fecha y hora, obtener y
establecer datos del sistema, obtener y establecer atributos).
5. Comunicaciones (Crear conexin, enviar mensajes, recibir mensajes, transferir informacin
del estado y eliminar conexin.
Modos de direccionamiento

El campo de operacin de una instruccin especifica la operacin que se va a


ejecutar. Esta operacin debe realizarse sobre algunos datos almacenados en
registros de computadora o en palabras de memoria.

La manera en que eligen los operandos durante la ejecucin del programa


depende del modo de direccionamiento de la instruccin.

El modo de direccionamiento especifica una regla para interpretar o modificar el


campo de direccin de la instruccin antes de que se haga la referencia real al
operando.
Las computadoras utilizan tcnicas de modo de direccionamiento para
acomodar una o las dos siguientes consideraciones:
Proporcionar al usuario versatilidad de programacin al ofrecer facilidades como
apuntadores a memoria, contadores para control de ciclo, indexacin de datos y
reubicacin de datos.
Reducir la cantidad de bits en el campo de direccionamiento de la instruccin.

La disponibilidad de los modos de direccionamiento proporciona al programador con


experiencia en lenguaje ensamblador la flexibilidad para escribir programas ms
eficientes en relacin con la cantidad de instrucciones y el tiempo de ejecucin.
Para comprender los diferentes modos de direccionamiento, es imperativo
entender el ciclo de operacin bsico de la computadora.

La unidad de control de una computadora est diseada para recorrer un


ciclo de instrucciones que se divide en tres fases principales:
Bsqueda de la instruccin de la memoria.
Decodificar la instruccin.
Ejecutar la instruccin.
Hay un registro en la computadora llamado contador de programa o PC, que
lleva un registro de las instrucciones del programa almacenado en la memoria.

PC contiene la direccin de la siguiente instruccin que se va a ejecutar y se


incrementa cada vez que se recupera una instruccin de la memoria. La
decodificacin realizada en el paso 2 determina la operacin que se va a
ejecutar, el modo de direccionamiento de la instruccin y la posicin de los
operandos.

Despus la computadora ejecuta la instruccin y regresa al paso 1 para hacer la


bsqueda de la siguiente instruccin en secuencia.
Pueden definirse instrucciones con diversos modos de direccionamiento y, en
ocasiones, se combinan dos o ms modos de direccionamiento en una
instruccin.

Aunque la mayora de los modos de direccionamiento modifican el campo


de direccin de la instruccin, hay dos modos que no necesitan el campo de
direccin. Son los modos implcito e inmediato.
Modo implcito

En este modo se especifican los operandos en forma implcita en


la definicin de la instruccin. Todas las instrucciones de
referencia a registro que utilizan un acumulador son instrucciones
de modo implcito.
Modo inmediato

En este modo se especifica el operando en la instruccin misma.


En otras palabras, una instruccin de modo inmediato tiene un
campo operando, en lugar de una campo de direccin.
Modo de registro

Cuando el campo de direccin especifica un registro de


procesador se dice que la instruccin est en modo de
registro.
Modo indirecto por registro

En este modo la instruccin especifica un registro en la CPU cuyo


contenido proporciona la direccin del operando en la memoria. En
otras palabras, el registro seleccionado contiene la direccin del
operando en lugar del operando mismo.
Proceso de ensamblado y ligado(1)

Para crear un programa


ejecutable utilizando lenguaje
ensamblador es necesario
realizar la serie de pasos,
conocida como ciclo de
desarrollo de programas, que se
muestra en la figura.
Proceso de ensamblado y ligado(2)

Un ensamblador es el programa que convierte un listado de cdigo fuente, escrito


en un fichero de texto, en cdigo objeto, es decir, lenguaje mquina (el que
finalmente interpretar el procesador) en el que slo le faltan las referencias a
rutinas externas.

El cdigo fuente es un fichero que contiene la secuencia de instrucciones en


lenguaje ensamblador que forma el programa.

El cdigo objeto consta del cdigo en lenguaje mquina y de la informacin


necesaria para enlazarlo con otros mdulos objeto.
Proceso de ensamblado y ligado(3)

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.
Desplegado de mensajes en el
monitor
La pantalla es una malla de posiciones direccionables, en cualquiera de las
cuales se puede colocar el cursor. El sistema proporcionara espacio en la
memoria para un rea de despliegue de video, o bfer. El rea de despliegue
monocromtico inicia en la localidad BISOS B000[0]H y permite utilizar 4K bytes de
memoria: 2KB disponibles para caracteres y 2K para atributos de cada carcter,
como video inverso, intermitencia, intensidad y subrayado.
Modo de direccionamiento directo

En este modo la direccin efectiva es igual a la parte de direccin de la


instruccin.

El operando reside en memoria y su direccin la proporciona en forma


directa el campo de direccin de la instruccin.

En una instruccin de tipo brinco el campo de direccin especifica la


direccin de transferencia de control del programa real.
Modo de direccionamiento indirecto

En este modo, el campo de direccin de la instruccin proporciona la direccin


en que se almacena la direccin efectiva en la memoria. El control recupera la
instruccin de la memoria y utiliza su parte de direccin para accesar la memoria
una vez ms con el fin de leer la direccin efectiva.

Unos cuantos modos de direccionamiento requieren que el campo de direccin


de la instruccin se sume al contenido de un registro especfico en la CPU. En estos
modos la direccin efectiva se obtiene del clculo siguiente:

Direccin efectiva = Parte de la instruccin + El contenido de registro CPU.


Modo de direccionamiento indexado

En este modo el contenido de un registro ndice se suma a la parte de direccin


de la instruccin para obtener la direccin efectiva.

El registro ndice es un registro CPU especial que contiene un valor ndice. Un


campo de direccin de la instruccin define la direccin inicial del arreglo de
datos en la memoria.

Cada operando del arreglo se almacena en la memoria en relacin con la


direccin inicial.
Algunas computadoras dedican un registro de CPU para que funcione
exclusivamente como un registro ndice.

De manera implcita este registro participa cuando se utiliza una instruccin de


modo ndice.

En las computadoras con muchos registros de procesador, cualquiera de los registros


de la CPU puede contener el nmero de ndice. En tal caso, el registro debe estar
especificado en forma explcita en un campo de registro dentro del formato de
instruccin.
Modo de direccionamiento de
registro base

En este modo, el contenido de un registro base se suma a la parte de direccin


de la instruccin para obtener la direccin efectiva.

Se considera que un registro base contiene una direccin base y que el campo
de direccin de la instruccin proporciona un desplazamiento en relacin con
esta direccin base.

El modo de direccionamiento de registro base se utiliza en las computadoras


para facilitar la localizacin de los programas en memoria.

También podría gustarte