You are on page 1of 11

COMPUTADORA DIGITAL

Un conjunto de instrucciones no siempre es un programa. Una variable: es una posición de memoria (para la computadora).
Los datos e instrucciones deben estar en memoria.
El modo de direccionamiento es la forma en que la maquina accede a la memoria para extraer los datos.
ORGANIZACIÓN DE COMPUTADORAS - Qué hacen los DISEÑO DE COMPUTADORAS – cómo Implementar: se
componentes (CPU, memoria, etc.), cómo lo hacen y cómo se encarga del diseño del hardware, es decir cual debe usarse y
conectan. Se refiere a la manera en que los componentes como debe conectarse sus partes, este proceso se llama
operan y a la forma en que se conectan para formar el sistema implantación de la computadora.
de la computadora.
ARQUITECTURA DE LA COMPUTADORA:
Se ocupa de la estructura y comportamiento de la computadora desde el punto de vista del usuario. Entre las tareas se puede
mencionar el establecimiento de formatos deinstrucción, el conjunto de instrucciones necesarias y las técnicas empleadas para el
direccionamiento dememoria. Diseñar una arquitectura significa ocuparse de las especificaciones generales de diversos módulos
(procesador y memoria) y estructurarlos conjuntamente en un sistema de computación.
U.C: Encargada de la organización general del sistema. Maneja el proceso de búsqueda y ejecución de instrucciones.
ALU: Resolver operaciones lógicas matemáticas.
Bus del Sistema: multiplexado (maneja diferentes tipos de información).
Proceso de ejecución de Instrucciones:
1. Extraer de la memoria la siguiente instrucción a ejecutar y depositarla en el registro de
instrucciones.
2. Se incrementa el puntero de instrucción o contador de programa de modo que se señale la
siguiente instrucción a ejecutar.
3. Se determina el tipo de instrucción que se acaba de extraer.
4. Verifica si la instrucción requiere datos de memoria y si es así determina donde está situado.
5. Extrae los datos que son requeridos y los carga en registros internos de la CPU (un acumulador).
6. Ejecuta la instrucción propiamente dicha.
7. Almacena el resultado en un lugar apropiado.
8. Retornar al paso 1 para ejecutar la siguiente instrucción

Organización de la CPU: La organización interna de una parte del diseño básico de la CPU se denomina camino de datos y consiste
en registros y en la ALU.
Procesamiento en Paralelo: permite buscar la dirección de la siguiente instrucción mientras se está ejecutando 1ª. La ventaja es el
aprovechamiento de los recursos, cuando el registro encargado de la búsqueda de una instrucción termina, y se pasa a la ejecución
de la instrucción, este no queda inactivo y comienza la búsqueda de la siguiente instrucción. En este caso 5 unidades determinan
que en cierto instante de tiempo todas las unidades se están utilizando.

Unidad de Control Funciones básicas:
1. Recibir de la memoria el código maquina 3. Controlar la ejecución de las instrucciones generando las señales
de la instrucción a ejecutar para la adecuadas en cada momento, para que los elementos de las
correcta recepción de las instrucciones restantes secciones, como ser memoria, camino de datos, unidad
hay que revisar el registro PC o IP según de E/S trabajen correctamente.
la arquitectura. 4. Debe ser capaz de resolver las instrucciones y atender las
2. Interpretar y ejecutar cada instrucción. interrupciones y la comunicación con los periféricos.
Un código de Instrucción es un grupo de bits que instruye a la computadora de
cómo ejecutar una operación específica, se divide en partes y cada uno tiene una
interpretación propia, siendo una parte básica de un código de instrucción el
OPCODE, el cual indica operaciones sencillas (sumar, complementar, mover, etc.).
El número de operaciones depende del número de operaciones definidas para la
arquitectura.
Un set de Instrucciones es un conjunto de instrucciones disponibles para un lenguaje de
programación.A veces al código de operación se lo denomina macrooperación porque especifica
un conjunto de micro operaciones (micro instrucciones) equivalentes. Donde existen muchas Nº de instrucciones =m
variaciones para componer el código binario de una instrucción, y cada computadora tiene un Nº de bits del código de
formato de código de instrucción particular. Los diseñadores reconocen un formato de código de n
operación=n 2 ≥m
instrucción y lo especifica la arquitectura de la computadora.
Organización del programa almacenado: la manera más simple de organizar una computadora
es teniendo al menos un registro acumulador y un formato de código de instrucción dividido en
2 partes. La primera parte especifica la operación que se va a realizar y la segunda especifica
una dirección.La dirección de memoria le dice a la unidad de control que debe buscar al dato en
la memoria. Se extrae este dato y se lo procesa junto con el dato contenido en el acumulador.

MODOS DE DIRECCIONAMIENTO
En ocasiones es conveniente utilizar los bits del operando no
como una dirección de memoria sino como el operando o dato
mismo. En este caso se dice que la instrucción está definida en
modo inmediato.
En general cuando la segunda parte del formato de instrucción especifica la
dirección del operando se dice que la instrucción tiene modo de
direccionamiento directo. Existe una tercera posibilidad llamada
direccionamiento indirecto en el cual los bits de la segunda parte del formato
de instrucción representa una dirección de la palabra de memoria en la cual
se encuentra la dirección del operando. Se puede utilizar un bit del código de
instrucción para determinar el direccionamiento directo del indirecto.
Sin embargo existen instrucciones que no requieren operando para su
ejecución, se dice que son instrucciones en modo implícito.

CONTROLADORES
Es un circuito secuencial que suministra niveles lógicos apropiados
en los tiempos apropiados para controlar una secuencia de
operaciones lógicas sencillas que en conjunto realizan una
operación compleja. Niveles lógicos (0 y 1).
Operaciones sencillas: suma, complementación, transferencia.

Registro sensible a múltiples ordenes
Se pueden construir registros que respondan a una u otra orden, la
orden se transmite poniendo alguna terminal de control en el nivel
lógico que habilite la compuertao un arreglo de compuertas.
Como ejemplo de registro que pueda responder a varias órdenes,
diseñamos una que responda a cinco órdenes. Estas cinco órdenes
y sus símbolos asociados están listadas en la tablas siguiente. Así
nuestro registro tendrá cinco terminales de control W, R, I, C y Z.
en cualquier instante, solamente uno de ellos estará en 1 lógico
mientras los demás estarán en 0 lógico.

CONTROLADOR SIMPLE
Sistema para calcular el valor de la suma o diferencia aritmética de
dos números binarios de n bits. Todos los registros y el sumador
acomodan n bits. el registro de complementación e incrementación
(CI) se conecta al sumador, el sumador al acumulador y el
acumulador se vuelve a conectar al sumador, todas las conexiones
se realizan con las n líneas. Ya que estas conexiones de n bits son
dedicadas, cada una sirve para una sola función de transmisión, no
son buses. Hay un bus de n bits al y del cual podemos transferir los
contenidos de los registros α y β. Esta transferencia, factible de dos
formas, se indica por una flecha bidireccional. A todos los registros
se le aplica una señal de reloj común, no indicada. Cuando Wα=1,
en el flanco de disparo del reloj se transfiere una palabra del bus al
registro α. Cuando Rα=1, se lee una palabra del registro al bus.
Comentarios similares se aplica a los registros β a Wβ y Rβ.Cuando
WA=1, la salida del sumador se registrara en el acumulador y
cuando RA=1, el contenido del acumulador se colocara en el bus.
Los contenidos del acumulador están permanentemente conectados
a las conexiones de los n bits que vuelven al sumador. No hay
control sobre esa conexión. El acumulador se borra en la transición
de disparo de reloj si ZA=1. Para calcular α+β y almacenar el
resultado en el registro α. Se necesitan una serie de operaciones
elementales, denominadas microoperaciones, cada una de las
cuales requiere un ciclo de reloj.Tanto α como β pasaran a través
de CI.
ARQUITECTURA ELEMENTAL
El sistema tiene una memoria RAM de 64 palabras, cada una de 8 bits.
Una posición de memoria se direcciona con 6 bits (26=64). La memoria
tiene una entrada de habilitación y otra de lectura/escritura. Cuando la
habilitación=1, la memoria se conecta al bus (de 8 bits) y cuando la
habilitación=0, es bus se aísla de la memoria. Cuando la habilitación es
=1, la memoria leerá una palabra en el bus o escribirá una palabra en
memoria, dependiendo de que lectura/escritura sea 1 o 0. La posición de
memoria de la que se lee o en la que se escribe una palabra se
determina por los 6 bit de dirección. La transferencia de información
entre el bus y la memoria es bidireccional. Señalamos la presencia de un
registro contador de programa (PC) que debe contener siempre la
dirección de la próxima instrucción a ejecutar, Registro de instrucción
(IR) que almacena la instrucción (código de operación, dirección), Registro
de direcciones de memoria (MAR) que es un buffer de direcciones (contiene
una dirección de memoria), y un controlador que se encarga de activar una
o más de las terminales de control. La ALU puede aceptar una palabra del
bus sobre su lado de la entrada y suministrar una palabra al bus de su lado
de salida.El registro de instrucción (IR) puede aceptar una palabra del bus. El
registro de direcciones de memoria (MAR) tiene dos entradas de control que
pueden utilizarse para transferir al MAR la palabra de 6 bits del contador de
programa o los 6 bits de más a la derecha del registro de instrucción
Los dos bits de más a la izquierda del registro de instrucciones se hacen disponibles al controlador (no transferidos), esta conexión de dos
bits se indica a trazos en vez de por una línea de salida. La única operación que puede realizar el contador de programa es la de
incrementar. Finalmente el controlador tiene una línea de salida de control correspondiente a cada línea de entrada de control de cada
registro y la memoria. Cualquier micro-operación se realiza cuando la línea de control correspondiente adopte el nivel de habilitación. Con
la excepción de la memoria, todos los registros y el controlador tienen reloj.
TERMINALES DE CONTROL
IPC: Incrementa el PC
TPC: Transferir PC
TIR: Transferir IR (siempre y cuando sea una dirección).
E: Habilitación (1 conexión con el bus, 0 desconexión).
TB: la MAR le manda la dirección a la RAM (previamente habilitada). La RAM lee lo
envía al bus. Como se trata de una instrucción (se activa TB en IR) y entra en IR. Dado
que el registro de instrucción usa dos bits de control y 6 de direcciones, entonces se
utilizaran 4 instrucciones: suma, resta, transferencia y parada.

CICLO DE INSTRUCCIÓN - 2 instrucciones no pueden tener el mismo ciclo de instrucción.
Conjunto necesarios de pasos para ejecutar una determinada instrucción. Se divide en ciclo de búsqueda y ciclo de ejecución.

Hemos trasladado las primeras instrucciones de memoria al registro de instrucciones. Esta parte del ciclo de operaciones de la
maquina se denomina ciclo de búsqueda. La búsqueda siempre se realiza de la misma forma, es común a todas las instrucciones.
Ahora que la primera instrucción está disponible, la maquina procederá a responder a las instrucciones. El ciclo de operaciones por
el que realiza esta respuesta de denomina ciclo de ejecución.
ARQUITECTURA BASICA MEJORADA En esta arquitectura la memoria almacena palabras de 12
bits. Tendrá un repertorio de 16 instrucciones, por lo cualse
requieren 4 bits de instrucción. La memoria está equipada
con dos terminales de control, leer (R) y escribir (W).
CuandoW=1, la palabra presente en los terminales de datos
de memoria se escribe en la memoria y cuando R=1, la
palabra en memoria es leída y colocada en los terminales de
datos. Cuando W=R=0 no tiene lugar ni lectura ni escritura,
mientras que W=R=1 es una configuración no permitida.
Tenemos un contador de programa (PC) y un registro de
direcciones de memoria (MAR). También tiene un registro de
propósito general (GPR) de 12bits y un registro de
operaciones (OPR) de 4 bits que contendrá la parte
operación de la instrucción. Cuando una instrucción (que
consta de una parte operación y una parte dirección de
operando) se lee de la memoria, va a pasar primero al GPR.
La parte operación de la instrucción será transmitida al OPR.
La parte dirección del operando será transmitida al MAR. Se
ha incorporado al PC la capacidad de ser incrementado.
Además hemos proporcionado conexión directa entre el PC y
el GPR para que puedan transmitirse sus contenidos. Más
aún, hemos proporcionado dos caminos separados,
unodesde el PC al GPR y otro desde el GPR al PC, de tal
manera que sus contenidos puedan ser intercambiados
durante un simple ciclo de reloj.

El GPR es capaz de 4 micro-operaciones: La nueva ALU tiene un único registro de 12 bits más un registro extra F
1. Puede transmitirse asimismo la palabra de de un bit, o sea, un flip-flop. La ALU puede realizar 8 micro-
memoria direccionada. Para efectuar esta operaciones:
transmisión pondremos 1 lógico en la terminal 1. Puede sumar a su contenido presente el número de 12 bits
de control del GPR marcando GPR y que viene por la línea de 12 bits del GPR.
simultáneamente 1 lógico en la terminal R de la 2. Puede limpiar el acumulador.
memoria. Este terminal se usa sólo para 3. Puede limpiar F.
permitir que una palabra de memoria sea leída 4. Puede complementar F.
en el GPR. 5. Puede complementar el acumulador.
2. Puede transmitir a él mismo el contenido del 6. Puede incrementar el acumulador.
acumulador. 7. Puede desplazar cíclicamente a la derecha el acumulador
3. Puede transmitir a él mismo los 8 bits del PC. incluyendo F (ROR F, Acc).
4. Puede ser incrementado. 8. Ídem al anterior, pero a la izquierda (ROL F, Acc).
En la operación ROR F, Acc todos los bits del acumulador son desplazados una posición a la derecha. El bit del flip-flop F se coloca
en la posición más a la izquierda del acumulador, y el bit originariamente en la posición más a la derecha del acumulador se coloca
en el flip-flop F.

CICLO DE INSTRUCCIÓN
Cuando el controlador comience a trabajar, lo hará cíclicamente, tomando una instrucción, ejecutándola, trayendo otra instrucción,
etc. Supongamos que ponemos manualmente en el PC la dirección de la primera instrucción. La secuencia de micro-operaciones
que hay que seguir ahora para buscar una instrucción es la siguiente:
Ciclo de Reloj Microoperación Explicación
1 PC  MAR Transmitir la posición de la instrucción desde el PC al MAR.
2 M  GPR Transmitir la palabra direccionada al GPR.
PC + 1  PC Incrementar al PC.
3 GPR(OP)  OPR Transmitir la parte de la operación de la instrucción al OPR.
Cuando la secuencia de microoperaciones de búsqueda se ha completado, la parte operación de la instrucción ha sido transmitida
al registro de operación. Si la instrucción involucra a un operando, la dirección de este operando se deja en la parte dirección del
registro de propósito general GPR(AD).
Ejecuta la instrucción MA2(P)  M’  M – Acc – 2 = M – (Acc + 2) Ejemplo: Acc’ Acc – 4 (Modo Implícito)
en modo indirecto.

Aplicaciones para ROR Y ROL:
ROR F, Acc: Desplaza cíclicamente a la derecha
al Acc junto con F. Sirve cuando hay que dividir
por 2.
Ejemplo: Acc=4=0100; si lo dividimos por 2
debe dar Acc=2=0010.Debemos colocar en 0 en
F y hacer un ROR F, Acc.

ROL F, Acc: Desplaza cíclicamente a la
izquierda el Acc junto con F. Sirve para
multiplicar por 2. Ejemplo: Acc=2=0100; si lo
multiplicamos por 2 debe dar Acc=8=1000.
Debemos colocar en 0 a F y hacer un ROL F,
Acc.

SET DE INSTRUCCIONES
1. CRA borrar el acumulador. 9. ADD sumar al acumulador.
2. CTA complementar el acumulador. 10. ADDI sumar indirecto al acumulador.
3. ITA incrementar el acumulador. 11. STA almacenar en memoria de acumulador.
4. CRF borrar el flip-flop F. 12. JMP bifurcar.
5. CTF complementar el flip-flop F. 13. JMPI bifurcar indirecto.
6. SFZ saltar a la siguiente instrucción si F=0. 14. CSR llamada a subrutina.
7. ROR desplazar cíclicamente a la derecha. 15. ISZ incrementar y saltar si Z=0.
8. ROL desplazar cíclicamente a la izquierda. 16. HLT alto.
ADD, dirección: suma el contenido actual del acumulador el numero (operando) que se encuentra en la dirección de memoria
especificada como parte de la instrucción. Después de la secuencia de microoperaciones de búsqueda de instrucción, la parte
operación de la misma queda en el registro de operación (OPR) y la parte de operando de la instrucción queda en la parte dirección
del registro de propósito general GPR(AD). La instrucción se ejecuta a partir de ese momento siguiendo la secuencia de
microoperaciones:
Ciclo de Reloj Microoperación Explicación
1 GPR(AD)  MAR Transmite la dirección del operando desde GPR(AD) al MAR.
2 M  GPR Lee desde la memoria la palabra de la celda cuya dirección está en el MAR.
3 GPR + AccAcc Suma el contenido del GPR al contenido del Acc, dejando la suma en Acc.
ADDI, dirección: suma indirecta. en lugar de proporcionar la dirección del operando, almacene más bien la dirección del lugar de
memoria donde está la dirección del operando.
Ciclo de Reloj Microoperación Explicación
1 GPR(AD)  MAR Transmite la direccion del GPR al MAR.
2 M GPR Transmite el contenido de la celda de memoria direccionada al GPR (el GPR tendrá
entonces la dirección del operando).
3 GPR(AD)  MAR Transmite la dirección del operando al MAR.
4 M GPR Transmite el operando direccionado al GPR.
5 GPR + AccAcc Suma el contenido del GPR al Acc.
STA, dirección: almacena el contenido del acumulador en la dirección de memoria especificada.
Ciclo de Reloj Microoperación Explicación
1 GPR(AD)  MAR Transmite la dirección del GPR al MAR.
2 Acc GPR Transmite el contenido del Acc al GPR.
3 GPR  M Escribe el contenido del GPR en la dirección de memoria retenida en el MAR.
JMP, dirección: bifurca (JuMP) a la dirección almacenada en la celda de memoria especificada en la instrucción.
Ciclo de Reloj Microoperación Explicación
1 GPR(AD)  PC Transmite la dirección de la siguiente instrucción desde el GPR al PC.
ISZ, dirección: incrementar y saltar si cero (Increment and Skipif Zero). Leer el número de la celda especificada de memoria,
incrementarlo y devolverlo a su celda original. Si después de incrementarlo, el numero es cero, saltar a la siguiente instrucción.
Ciclo de Reloj Microoperación Explicación
1 GPR(AD)  MAR Transmite al MAR la dirección donde está el número que debe ser
incrementado.
2 M GPR Leer de la memoria el número
3 GPR+1  GPR Incrementar el número.
4 GPR  M Devolver el número a la memoria.
5 PC + 1  PC (si GPR = 0) Saltar a la siguiente instrucción si GPR = 0.
Para realizar esta instrucción el controlador tiene que saber cuándo está en cero el registro GPR. Tal información se tiene
disponible sobre la línea marcada Z (Zero). (ver esquema).

MICROPROGRAMACION
Las microoperaciones tienen lugar en respuesta a las señales aplicadas a los terminales de control de los registros de la ALU y de la
Memoria. Se llaman señales de mando. Hay 18 entradas terminales de control que en cualquier instante, requerirán una señal de
mando para llegar a estar activas. Tiene una memoria de solo lectura en las que las palabras tienen 18 bits de longitud, de forma
que podemos establecer una asociación uno a uno entre los bits de la palabra y las entradas de control de los terminales. En este
caso el bit 3 de la palabra de memoria al terminal de control que, cuando esta activado, realiza la microoperaciónGPR(AD) 
MAR, el bit 7 a M GPR y el bit 11 GPR+ AccAcc. El registro de direcciones de memoria de control CMAR sirve como
direccionamiento de la ROM de Control (CROM).
La CMAR se posiciona en al CROM y extrae
los 18 bits. Ejemplo ADDI P (ver
Instrucciones). Las cinco micropalabras
sucesivas de la ROM que proporcionan las
microinstrucciones para causar laejecución de
la microoperaciones requeridas por la
instrucción ADDI.

Leyendo conjuntamente una sucesión de palabras llamadas
palabras de control o micropalabras, realizamos una secuencia
de microoperaciones almacenadas en la memoria de solo
lectura y el resultado final es que se ejecuta la operación que
se requiere. Las palabras que se identifican en la ROM se
llaman también microinstrucciones. Una computadora cuyo
controlador opera como aquí se ha descripto se llama
computadora microprogramada. Notar que en tal
computadora tiene dos memorias: 1) como todas las
computadoras tiene una RAM, que contiene las instrucciones y
los datos, y 2) tiene una ROM en su controlador, que contiene
las microinstrucciones para ejecutar las instrucciones (CROM)
y su registro de direcciones (CMAR).

BIFURCACIÓN EN MICROPROGRAMA
Tenemos una ROM cuya longitud de palabra es N+M+1 bits. N bits son
de mando, y M bits constituyen la dirección a la que hay que bifurcar
cuando ocurra una bifurcación. El bit extra se usa para indicar para
indicar cuándo se invoca una bifurcación o no. Este bit extra es el bit
de control de carga. Si el bit esta en 0 lógico, la entrada incremento
esta en 1 lógico y el registro de direcciones será incrementado en cada
intervalo de reloj. Si por lo contrario el bit de control de carga está en 1
lógico, no tendrá lugar el incremento. En su lugar tendremos un 1
lógico, en la terminal de entrada de dirección de bifurcación y carga del
registro de direcciones, y durante el flanco de los impulsos de reloj la
dirección de M bits a la que queremos bifurcar será cargada en el
registro de direcciones.
BIFURCACION CONDICIONAL
El controlador introduce flexibilidad adicional.
Disponemos de dos bits de selección de control de
carga S1, S0. Los bits C1 y C2 son los bits de status que
derivan de algún sitio de la computadora y se proponen
para indicar si se satisface o no alguna condición. Por
ejemplo, el bit C1 puede ser la entrada del controlador
Z. si C1(=Z) es C1=1, el GPR se borra. Si C1=0 este
registro no se borra. Así el bit C1 da información del
status del GPR. Análogamente, C2 puede dar
información del status de otras componentes de la
computadora. El bloque de lógica es un circuito
combinacional cuya tabla de verdad se dio. Registro de
conducción: tiene la finalidad de permitir establecer una
nueva micropalabra de salida de la CROM antes que el
sistema controlado haya completado su respuesta a la
micropalabra previa. La adiciondel registro de
conducción sirve para incrementar la velocidad a la cual
puede operar el controlador.

CONTROLADOR MICROPROGRAMADO
En alguna posición de la CROM escribimos la rutina de búsqueda. El controlador gobernará la secuencia através de la rutina de
búsqueda, incrementando el CMAR después de cada microoperacion. Al final de larutina de búsqueda, la operación indicada por la
instrucción buscada habrá sido cargada en el registro deoperación. La rutina para ejecutar la instrucción se cargara en la CROM
comenzando en la posición DIR 1.Además es necesario al finalizar la rutina de búsqueda que haya un salto a la rutina a ejecutar
quecomienza en la DIR 1. Esta dirección se determina, por supuesto, por el código de operación en el registrode operación.
Interpuesto entre el registro de operación y el CMAR se encuentra un bloque combinacional(lógica de correspondencia) que acepta
el código OP como entrada y suministra como salida la direcciónde comienzo a esa rutina. a este proceso se denomina
correspondencia (mapeo).

MAPEO:
Es el proceso por el cual se convierte el código de operación de una
instrucción un una dirección dememoria de la CROM, donde se inicia
el ciclo de ejecución de la instrucción (1ª dirección del ciclo de
ejecución de la instrucción).
Por ejemplo: una computadora con un formato de instrucción que
tiene un código de operación de 4 bits que puede especificar hasta
16 instrucciones diferentes. La memoria tiene una capacidad de 256
palabras, lo que requiere una dirección de 8 bits, para cada código de
operación existe una rutina de microprograma en la CROM que
ejecuta la microinstrucción. El mapeo convierte al OPCODE de 4 bits
en una dirección de 8 bits para la CROM. Se coloca un 0 en el bit más
significativo de la dirección, se transfieren 4 bits del OP y se borran
los bits menos significativos de la CMAR. En este ejemplo se
proporciona una rutina de microprograma con capacidad de 8
microinstrucciones para cada instrucción.
PROGRAMACION EN ENSAMBLADOR
IMPORTANCIA DEL LENGUAJE ENSAMBLADOR
El lenguaje ensamblador es la forma más básica de programar un microprocesador para que éste sea capaz de realizar las tareas o
los cálculos que se le requieran. El lenguaje ensamblador es conocido como un lenguaje de bajo nivel, esto significa que nos
permite controlar el 100% de las funciones de un microprocesador, así como los periféricos asociados a éste. A diferencia de los
lenguajes de alto nivel, el lenguaje ensamblador no requiere de un compilador, esto es debido a que las instrucciones en lenguaje
ensamblador son traducidas directamente a código binario y después son colocadas en memoria para que el microprocesador las
tome directamente. Aprender a programar en lenguaje ensamblador no es fácil, se requiere un cierto nivel de conocimiento de la
arquitectura y organización de las computadoras, además del conocimiento de programación en algún otro lenguaje.
Ventajas Desventajas
Mayor velocidad de ejecución de los programas. Tiempos de programación.
Genera módulo ejecutables más pequeños. Programas fuentes más grandes.
Proporciona más control sobre el manejo particular del Peligro de afectar recursos inesperadamente.
hardware. Falta de portabilidad.

SINTAXIS DE UNA LINEA EN ENSAMBLADOR
Un programa fuente en ensamblador contiene dos tipos de sentencias: las instrucciones y las directivas.
Las instrucciones se aplican en tiempo de ejecución, pero las directivas sólo son utilizadas durante elensamblaje.
El formato de una instrucción es la siguiente: [Identificador] nombre_instrucción [operando/s] [comentarios]

Un Identificador puede ser: Letras de alfabeto (a – z).
Nombre: se refiere a la dirección de un elemento de dato. Digito (0 – 9) por lo general no pueden empezar con un digito.
Etiqueta: hace referencia a la dirección de una instrucción. Caracteres especiales: (- ? $ @ .(punto) no puede ser el primer
carácter.
Campo nombre: contiene el mnemotécnico de la instrucción o bien una directiva.
Campo de operando: indica cuales son los datos implicados en la operación.
Campo de comentarios: cuando en una línea hay un punto y coma (;) todo lo que sigue en la línea es uncomentario que realiza
aclaraciones sobre lo que está haciendo en ese programa. Resulta de gran utilidadde cara a realizar futuras modificaciones al
mismo.
DIRECTIVAS PARA LISTAS
DIRECTIVAS SEGMENT (para programas .EXE)
 SEGMENT – ENDS: indica el comienzo de un segmento (código, datos, pila, etc.) y ENDS su final.
Junto a SEGMENT pueden aparecer opcionalmente, el tipo de alineamiento, combinación y clase.
Nombre SEGMENT [alineamiento] [combinación] [clase]
……………
Nombre ENDS
DIRECTIVA PROC (procedimiento)
 PROC – ENDP: permite dar nombre a una subrutina marcando con claridad su inicio y su fin.
Nombre PROC FAR
…………….(código)
Nombre PROC ENDP
El atributo FAR indica que es un procedimiento lejano. También puede ser NEAR (cercano).
DIRECTIVA ASSUME (suponer): indica al ensamblador el registro de segmento que se va a utilizar para direccionar cada segmento
dentro del modulo. El programa más sencillo necesita que se <<suponga>> CS como mínimo para el segmento de código, de lo
contrario el ensamblador empezara a protestar al no saber que registro de segmento asociar al código generado.
ASSUME reg_segmento: nombre_segmento*…+
Ejemplo: ASSUME SS:nombre_pila, DS:nombre_datos, CS:nombre_código, ES:nombre_extra

Ejemplo: desarrollar un programa que sume 2 elementos de datos y los almacene en otro elemento definido en el segmento
correspondiente.
Page 80, 132 Código SEGMENT
Title primer programa Inicio PROC far
;****************************** Asume ss:pila, ds:datos, cs:código
Pila SEGMENT Mov Ax, data56
Dw 32 dup(0) Mov ds, Ax
Pila ENDS Mov Ax, D1
;****************************** Add Ax, D2
Datos SEGMENT Mov D3, Ax
D1 dw 120 Mov Ah, 4Ch
D2 dw 250 Int 21h
D3 dw ? Inicio ENDP
Datos ENDS Código ENDS
;****************************** END inicio

MACROENSAMBLADOR
UTILIZACION DEL MASM:
El proceso consta de lo siguiente: Para ensamblar
1. Se debe escribir el programa fuente empleando cualquier editor de texto que genere C:>MASM nombre[.ASM]; (enter)
archivos txtbel archivo fuente deberá contar de un nombre valido seguido de .asm. C:>TLINK nombre[.OBJ] (enter)
2. El paso del ensamble consiste en la traducción del código fuente en código objeto y la C:>nombre[.EXE] (enter)
generación de un archivo intermedio con la extensión .obj, unas de las tareas del
ensamblador es calcular el desplazamiento de cada elemento en el segmento de datos y de
cada instrucción en el segmento de código, el ensamblador también crea el encabezado al
frente del modulo objeto general. El modulo objeto no está en modo ejecutable.
3. El paso de enlace implica convertir el modulo (OBJ) en modulo de código de máquina .exe
o ejecutable.
4. Cargar el programa para su ejecución. El cargador desecha el encabezado, y crea el PSP
(prefijo de segmento de programa inmediatamente antes de ser cargado.

INTERRUPCIONES
Hardware Software
Internas, Externas (NMI, IQ) BIOS (o de S.O.) / DOS
Interrupciones por software: son activada por el ensamblador invocando el Nº de interrupción, mediante la instrucción (INT) el uso
de las interrupciones nos ayuda al diseño de programas más cortos, más comprensibles y usualmente tienen mejor desempeño
básicamente por el reducido tamaño de código.
La diferencia entre ambas es que las de D.O.S. son más fáciles de usar pero son más lentas ya que hacen uso de interrupciones de
BIOS para lograr su cometido, y por el contrario las interrupciones de BIOS son más rápidas, pero son muy dependientes del
hardware, por lo cual suele ser especifica dependiendo del fabricante del circuito. La elección de un tipo de interrupción software
dependerá de la característica que se le quiera dar a un programa. Si es velocidad se utilizara una interrupción de BIOS o si se
quiere portabilidad será una interrupción D.O.S.
BIOS: contiene un conjunto de rutinas de E/S y tablas que indican el estado de los dispositivos del sistema. La interfaz con el BIOS
se logra con las interrupciones de software.
Las interrupciones del BIOS van desde 00h hasta 1Fh e incluyen división por cero, impresión por pantalla, cronometro, control de
video, control de disco flexible, E/S de video, determinación de equipo y tamaño de memoria, E/S de disco, E/S de comunicaciones,
entrada desde teclado, salida a la impresora y cargador de arranque.
Ejemplo interrupción de BIOS Interrupciones del D.O.S.: van desde 20h hasta 3Fh.
Int 00h división por cero. Ejemplo:
Int 01h un solo paso. Int 20h termina programa.
Int 04h desbordamiento. Int 21h petición de función al D.O.S.
Int 09h interrupción del teclado Int 27h termina pero queda residente.
Int 10h despliegue del video Int 33h manejador de raton.
Int 12h determinación del tamaño de memoria.
Int 16h entrada desde el teclado.
Int 17h salida a la impresora.
El propósito de la int 21h es llamar a diversas funciones del Int 10h: sus funciones más importantes:
D.O.S. para ello se vale de múltiples funciones debiéndose 02h selección de posición de cursor.
setear una específica de ellas con su número de función en el 09h escriben atributo y carácter en el cursor.
registro AH. Int 16h: funciones más importantes:
Ejemplo:Nº de función 00h lee un carácter del teclado.
01h entrada desde el teclado con repetición en la pantalla. Int 17h: funciones más importantes:
02h despliega un carácter a la pantalla. 00h imprime un carácter ASCII.
05h salida a la impresora. 01h inicializa la impresora.
07h teclado directo sin repetición en la pantalla. 02h proporciona el estado de la impresora.
09h impresión de una cadena.
2Ch obtiene la hora del sistema.

PROCEDIMIENTOS
Un procedimiento es un conjunto de instrucciones a donde podemos dirigir el flujo de nuestro programa y una vez terminada la
ejecución de dicha instrucciones se devuelve el control a la siguiente instrucción a procesar del código que mando llamar al
procedimiento. En consecuencia el uso de procedimiento permite modularizar la solución para de esta forma obtener programas
legibles y fáciles de mantener. Al momento de invocar a un procedimiento se guarda en la pila la dirección de la siguiente
instrucción del programa para que, una vez transferido el flujo del programa y terminado el procedimiento, se pueda regresar a la
línea siguiente del programa original (el que llamo al procedimiento).
Existen dos tipos de procedimientos:
Intrasegmentos: que se encuentran en el mismo segmento Intersegmentos: pueden ser almacenandos en diferentes
de instrucciones. Cuando se utilizan los procedimientos segmentos de memoria. Los procedimientos intersegmentos se
intrasegmentos se almacena en la pila el valor de IP. almacenan en la pila el valor de CS:IP.
Para desviar el flujo a un procedimiento (llamarlo) se utiliza la directiva:
CALL Nombre_Procedimiento
Las partes que componen a un procedimiento son:
 Declaración del procedimiento.
 Código del procedimiento.
 Directiva de regreso.
 Terminación del procedimiento.
Nombre PROC [NEAR o FAR] Invocación: Ejemplo:
….. cuerpo de procedimient ------- Guardar PROC
…... ------- Push Ax
RET directiva de retorno CALL Nombre Push Bx
Nombre ENDP ------- Push Cx
------- Push Dx
RET
Guardar ENDP

MACRO
Cuando un conjunto de instrucciones en ensamblador aparecen frecuentemente repetidas a lo largo de un listado, es conveniente
agruparlas bajo un nombre simbólico que las sustituirá en aquellos puntos dondeaparezcan. Esta es la misión de las macros. No
conviene confundir las macros con subrutinas; en estas últimas, el conjunto de instrucciones aparece una sola vez en todo el
programa y luego se invoca con CALL. Sin embargo, cada vez que se referencia a una MACRO, el código que representa se
expande en el programa definitivo, duplicándose tantas veces como se use la macro.
Formato:Nombre MACRO [parámetro] Ejemplo: Sumar MACRO a,b,total
------- Push Ax
------- cuerpo de la macro Mov Ax, a
------- Add Ax, b
ENDM Mov total, Ax
Pop Ax
ENDM
Código programa
-------
------- push Ax
------- mov Ax, positivo
Sumar positivo,negativo,total -------
------- -------
------- -------
ORGANIZACIÓN Y TIPO DE MEMORIA VIRTUAL

Existen diferentes modelos que se diferencian por sus políticas  Memoria paginada.
de solape y por los métodos que se emplea en la organización  Memoria segmentada.
de memoria. Los más importantes son:  Memoria de segmentos paginados.
Todos los sistemas encuentran como problema critico que los requerimientos de memoria de algunos programas son difíciles de
predecir y por ello la asignación de memoria a un programa es variable en cada caso. La política de solape o partición deben tener
ciertas características internas del programa que invariablemente determinan una construcción modular y estructural del mismo.
Dichas características son:
 Localización temporal: es la tendencia de un proceso a referirse en un futuro próximo a elementos usados recientemente.
 Localización espacial: es la tendencia que tiene ciertos procesos a referirse a elementos próximos en el espacio virtual
antes recorrido.
 Localización secuencial: es la tendencia de los procesos a referenciar elementos de la secuencia inmediata.
Para decidir que porción de la MP ha de ser destruida o cargada en disco si ha sido modificada cuando se necesita leer otro objeto,
los criterios más usados son: RANDOM, FIFO, LIFO, LRU, LFU.

Memoria Paginada: este modelo organiza la memoria virtual física en bloque de tamaño fijo llamada página. En un determinado
momento la MP contendrá algunos bloques lógicos. Como las distintas posiciones de un bloque físico y lógico están ordenadas de la
misma manera, simplemente hay que introducir el nº de bloque lógico al correspondiente del bloque físico.
Memoria Segmentada: este modelo explota la técnica de la modularidad de los programas escritos en forma estructurada. Los
módulos son conjuntos de informaciones que pueden tratarse independientemente y que se relacionan mediante llamadas
interprocedimiento a dicho modulo se lo llama segmento. La segmentación organiza el espacio virtual bloques de tamaño variable
pero limitado y son colocados en la memoria mediante algoritmo de localización de espacio libre. Los elementos de un segmento se
identifican con la dirección del segmento al que pertenece y un desplazamiento dentro del mismo. Existe un registro base de la
tabla de los segmentos que direcciona el comienzo de la tabla de segmento de la que existe una por cada proceso activo. La
información de la entrada de la tabla de segmento contiene:
 Código de acceso autorizado (CAA): indica el modo que se puede acceder al segmento.
 Campo longitud (L): indica la longitud del segmento.
 Bit memoria-disco (D): indica si el segmento está o no en la memoria principal.
 Campo de direcciones de segmento (DS): contiene la dirección absoluta de la dirección de donde se inicia el segmento en
la memoria principal o la posición en el disco según el valor de D.
Dado que la longitud de los segmentos es variable se necesita un algoritmo que localice los espacios libres para que acceda el
segmento. Ya que no es común encontrar espacios contiguos y vacíos en la memoria principal es necesario buscarlos. Entonces se
usa mejor ajuste, peor ajuste o primer ajuste.

Memoria con segmentos paginados: combina la ventaja de los 2 métodos anteriores, cada segmento se divide en páginas de
manera que para acceder a un objeto de un segmento, el sistema accede a la tabla de página de dicho segmento.
Sistemas Multitarea: cuando el sistema atiende a más de una tarea por vez y al producirse una conmutación de tarea, la tarea
que abandona el procesador debe almacenar en algún lugar (sitio de memoria) el contexto de la CPU al momento de abandono. Se
denomina contexto al conjunto de valores correspondiente al registro interno del proceso que es necesario para determinar las
mismas condiciones del procesador al momento de producirse la conmutación de tarea. Una vez producido la conmutación, están
los recursos que la soportan, la conmutación de tarea debe ser capaz de cargar al procesador el contexto de la nueva tarea con el
cual se reanuda la ejecución. En un sistema multitarea, tanto el procesador como el sistema operativo deberán proveer los
registros físicos y lógicos para soportar la conmutación de tarea. Los registros que se almacenan son: contenido IP, registro de
segmento (dato y pila), registro de banderas, registros acumuladores).
Mecanismo de protección: un espacio de memoria protegido deben de estar completamente especificados el tamaño, dirección
base del segmento. Tanto para las áreas locales como el área global compartida. Los objetos que residan en distintas áreas deben
quedar perfectamente determinados.
El esquema de protección que diseño INTEL para su µP 386, 486, consta de 4 niveles de privilegio siendo cero el de mayor
privilegio donde reside el núcleo, el nivel 3 menor prioridad donde reside las aplicaciones de usuario.