Sunteți pe pagina 1din 26

Arquitectura de Computadoras

REGISTROS INTERNOS DEL PROCESADOR.


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 1 1! 1" 11 1# $ % & ' 5 ! " 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.

Registro CS. (l )*+ almacena la direccin inicial del segmento de cdigo de
un programa en el registro ,+. (sta direccin de segmento, mas un valor de
desplazamiento en el registro apuntador de instruccin -./0, 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 )+. (n trminos sencillos, esta direccin, mas un
valor de desplazamiento en una instruccin, genera una re1erencia a la
localidad de un byte especi1ico en el segmento de datos.
Registro SS. (l registro ++ permite la colocacin en memoria de una pila, para
almacenamiento temporal de direcciones y datos. (l )*+ almacena la
direccin de inicio del segmento de pila de un programa en le registro ++. (sta
direccin de segmento, mas un valor de desplazamiento en el registro del
apuntador de pila -+/0, indica la palabra actual en la pila que esta siendo
direccionada.
Registros ES. 2lguna operaciones con cadenas de caracteres -datos de
caracteres0 utilizan el registro e3tra de segmento para manejar el
direccionamiento de memoria. (n este conte3to, el registro (+ esta asociado
con el registro ). -4ndice0. 5n programa que requiere el uso del registro (+
puede inicializarlo con una direccin de segmento apropiada.
Registros FS y GS. +on registros e3tra de segmento en los procesadores
%#!%' y posteriores.

Registros de propsito general.

Los registros de propsito general 26, 76, ,6 y )6 son los caballos de batalla
del sistema. +on 8nicos en el sentido de que se puede direccionarlos como una
palabra o como una parte de un byte. (l ultimo byte de la izquierda es la parte
9alta9, y el ultimo byte de la derecha es la parte 9baja9. /or ejemplo, el registro
,6 consta de una parte ,: -alta0 y una parte ,l -baja0, y usted puede re1erirse
a cualquier parte por su nombre.
/ag: 1
Arquitectura de Computadoras
Registro A. (l registro 26, el acumulador principal, es utilizado para
operaciones que implican entrada;salida y la mayor parte de la aritmtica. /or
ejemplo, las instrucciones para multiplicar , dividir y traducir suponen el uso del
26. <ambin, algunas operaciones generan cdigo mas e1iciente si se re1ieren
al 26 en lugar de a los otros registros.


Registro !. (l 76 es conocido como el registro base ya que es el 8nico
registro de propsito general que puede ser 4ndice para direccionamiento
inde3ado. <ambin es com8n emplear el 76 para c=lculos.
Registro D. (l )6 es conocido como l registro de datos. 2lguna operaciones
de entrada;salida requieren uso, y las operaciones de multiplicacin y divisin
con ci1ras grandes suponen al )6 y al 26 trabajando juntos.
/ude usar los registros de propsito general para suma y resta de ci1ras de %,
1' o !" bits.

Registro de Ap"ntador de Instr"##iones.
(l registro apuntador de instrucciones -./0 de 1' bits contiene el
desplazamiento de direccin de la siguiente instruccin que se ejecuta. (l ./
esta asociado con el registro ,+ en el sentido de que el ./ indica la instruccin
actual dentro del segmento de cdigo que se esta ejecutando actualmente. Los
procesadores %#!%' y posteriores tienen un ./ ampliado de !" bits, llamado
(./.
(n el ejemplo siguiente, el registro ,+ contiene "52>#?: y el ./ contiene
1":. /ara encontrar la siguiente instruccin que ser= ejecutada, el procesador
combina las direcciones en el ,+ y el ./:
+egmento de direccin en el registro ,+: "52#:
)esplazamiento de direccin en el registro ./: @ 1":
)ireccin de la siguiente instruccin: "5(5":

/ag: 2
Arquitectura de Computadoras
Registros Ap"ntadores.
Los registros +/ -apuntador de la pila0 A 7/ -apuntador de base0 est=n
asociados con el registro ++ y permiten al sistema accesar datos en el
segmento de la pila.

Registro SP. (l apuntador de la pila de 1' bits esta asociado con el registro ++
y proporciona un valor de desplazamiento que se re1iere a la palabra actual que
esta siendo procesada en la pila. Los procesadores %#!%' y posteriores tienen
un apuntador de pila de !" bits, el registro (+/. (l sistema maneja de 1orma
autom=tica estos registros.
(n el ejemplo siguiente, el registro ++ contiene la direccin de segmento
"&7!>#?: y el +/ el desplazamiento !1":. /ara encontrar la palabra actual que
esta siendo procesada en la pila, la computadora combina las direcciones en el
++ y el +/:
Registro !P. (l 7/ de 1' bits 1acilita la re1erencia de par=metros, los cuales
son datos y direcciones transmitidos v4a pila. Los procesadores %#!%' y
posteriores tienen un 7/ ampliado de !" bits llamado el registro (7/.

Registros Indi#e.
Los registros +. y ). est=n disponibles para direccionamiento inde3ado y para
sumas y restas.
Registro SI. (l registro 4ndice 1uente de 1' bits es requerido por algunas
operaciones con cadenas -de caracteres0. (n este conte3to, el +. esta asociado
con el registro )+. Los procesadores %#!%' y posteriores permiten el uso de un
registro ampliado de !" bits, el (+..

Registro DI. (l registro 4ndice destino tambin es requerido por algunas
operaciones con cadenas de caracteres. (n este conte3to, el ). esta asociado
con el registro (+. Los procesadores %#!%' y posteriores permiten el uso de un
registro ampliado de !" bits, el ()..

Registro de !anderas.
)e los 1' bits del registro de banderas, nueve son comunes a toda la 1amilia de
procesadores %#%', y sirven para indicar el estado actual de la maquina y el
/ag: 3
Arquitectura de Computadoras
resultado del procesamiento. Buchas instrucciones que piden comparaciones y
aritmtica cambian el estado de las banderas, algunas cuyas instrucciones
pueden realizar pruebas para determinar la accin subsecuente. (n resumen,
los bits de las banderas comunes son como sigue:
OF $O%er&lo'( des)ordamiento*. .ndica desbordamiento de un bit de orden
alto -mas a la izquierda0 despus de una operacin aritmtica.
DF $dire##in*. )esigna la direccin hacia la izquierda o hacia la derecha para
mover o comparar cadenas de caracteres.
IF $interr"p#in*. .ndica que una interrupcin e3terna, como la entrada desde
el teclado, sea procesada o ignorada.
TF $trampa*. /ermite la operacin del procesador en modo de un paso. Los
programas depuradores, como el )(75C, activan esta bandera de manera que
usted pueda avanzar en la ejecucin de una sola instruccin a un tiempo, para
e3aminar el e1ecto de esa instruccin sobre los registros de memoria.
SF $signo*. ,ontiene el signo resultante de una operacin aritmtica -# D
positivo y 1 D negativo0.
+F $#ero*. .ndica el resultado de una operacin aritmtica o de comparacin -#
D resultado di1erente de cero y 1 D resultado igual a cero0.
AF $a#arreo a",iliar*. ,ontiene un acarreo e3terno del bit ! en un dato de %
bits para aritmtica especializada.
PF $paridad*. .ndica paridad par o impar de una operacin en datos de % bits
de bajo orden -mas a la derecha0.
CF $a#arreo*. ,ontiene el acarreo de orden mas alto -mas a la izquierda0
despus de una operacin aritmticaE tambin lleva el contenido del ultimo bit
en una operacin de corrimiento o de rotacin.
Las banderas est=n en el registro de banderas en las siguientes posiciones:
Las banderas mas importantes para la programacin en ensamblador son *, +,
F y ,, para operaciones de comparacin y aritmticas, y ) para operaciones de
cadenas de caracteres. Los procesadores %#"%' y posteriores tienen algunas
banderas usadas para propsitos internos, en especial las que a1ectan al modo
protegido. Los procesadores %#"%' y posteriores tienen un registro e3tendido
de banderas conocido como (1lags.

/ag: 4
Arquitectura de Computadoras
SEG-ENTO
5n segmento es un =rea especial en un programa que inicia en un limite de un
p=rra1o, esto es, en una localidad de regularmente divisible entre 1', o 1#
he3adecimal. 2unque un segmento puede estar ubicado casi en cualquier lugar
de la memoria y, en modo real, puede ser hasta de 'G, solo necesita tanto
espacio como el programa requiera para su ejecucin.
5n segmento en modo real puede ser de hasta 'G. +e puede tener cualquier
numero de segmentosE para direccionar un segmento en particular basta
cambiar la direccin en el registro del segmento apropiado. Los tres segmentos
principales son los segmentos de cdigo, de datos y de la pila.

Segmento de #digo.
(l segmento de cdigo -,+0 contiene las instrucciones de maquina que son
ejecutadas por lo com8n la primera instruccin ejecutable esta en el inicio del
segmento, y el sistema operativo enlaza a esa localidad para iniciar la
ejecucin del programa. ,omo su nombre indica, el registro del ,+ direcciona
el segmento de cdigo. +i su =rea de cdigo requiere mas de 'G, su
programa puede necesitar de1inir mas de un segmento de cdigo.

Segmento de datos.
(l segmento de datos -)+0 contiene datos, constantes y =reas de trabajo
de1inidos por el programa. (l registro )+ direcciona el segmento de datos. +i
su =rea de datos requiere mas de 'G, su programa puede necesitar de1inir
mas de un segmento de datos.

Segmento de pila.
(n trminos sencillos, la pila contiene los datos y direcciones que usted
necesita guardar temporalmente o para uso de sus 9llamadas9 subrutinas. (l
registro de segmento de la pila -++0 direcciona el segmento de la pila.

LI-ITES DE LOS SEG-ENTOS.
Los registros de segmentos contienen la direccin inicial de cada segmento. La
1igura !.1 presenta un esquema de los registros ,+, )+ y ++E los registros y
segmentos no necesariamente est=n en el orden mostrado. *tros registros de
segmentos son el (+ -segmento e3tra0 y, en los procesadores %#!%' y
posteriores, los registros H+ y C+, que contienen usos especializados.
,oma ya dijimos, un segmento inicia en un limite de p=rra1o, que es una
direccin por lo com8n divisible entre el 1' decimal o 1# he3adecimal. +uponga
que un segmento de datos inicia en la localidad de memoria #5H#:.
Aa que en este y todos los dem=s casos el ultimo d4gito he3adecimal de la
derecha es cero, los diseIadores de computadora decidieron que seria
innecesario almacenar el d4gito cero en el registro del segmento. 2s4, #5H#:
se almacena como #5H, con el cero de la e3trema derecha sobrentendido. (n
donde sea apropiado, el te3to indica al cero de la derecha con corchetes, como
#5H>#?.


/ag: 5
Arquitectura de Computadoras
Figura 3.1. Segmentos y registros.
DESPLA+A-IENTO
(n un programa, todas la localidades de memoria est=n re1eridas a una
direccin inicial de segmento. La distancia en bytes desde la direccin del
segmento se de1ine como el desplazamiento -o11set0.
5n desplazamiento de dos bytes -1' bits0 puede estar en el rango de ####:
hasta HHHH:, o bien, desde cero hasta '5, 5!5. 2s4 el primer byte del
segmento de cdigo tiene un desplazamiento ##, el segundo byte tiene un
desplazamiento #1, etc. hasta el desplazamiento '5, 5!5. /ara re1erir cualquier
direccin de memoria en un segmento, el procesador combina la direccin del
segmento en un registro de segmento con un valor de desplazamiento.
(n el ejemplo siguiente, el registro )+ contiene la direccin de segmento del
segmento de datos en #5H>#?: y una instruccin hace re1erencia a una
localidad con un desplazamiento de ##!": bytes dentro del segmento de
datos.
/or lo tanto, la localidad real de memoria del byte re1erido por la instruccin es
#'"":E

)ireccin del segmento )+: #5H#:
)esplazamiento: @##!":
)ireccin real: #'"":
Jote que un programa tiene uno o mas segmentos, los cuales pueden iniciar
/ag: 6
Arquitectura de Computadoras
casi en cualquier lugar de memoria, variar en tamaIo y estar en cualquier
orden.

METODOS DE DIRECCIONAMIENTO
(l campo de operacin de una instruccin especi1ica la operacin que se va a
ejecutar. (sta 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. (l modo de direccionamiento especi1ica una
regla para interpretar o modi1icar el campo de direccin de la instruccin antes
de que se haga la re1erencia real al operando. Las computadoras utilizan
tcnicas de modo de direccionamiento para acomodar una o las dos siguientes
consideraciones:
1. /roporcionar al usuario versatilidad de programacin al o1recer
1acilidades como apuntadores a memoria, contadores para control de
ciclo, inde3acin de datos y reubicacin de datos.
". Keducir la cantidad de bits en el campo de direccionamiento de la
instruccin.
La disponibilidad de los modos de direccionamiento proporciona al
programador con e3periencia en lenguaje ensamblador la 1le3ibilidad para
escribir programas mas e1icientes en relacin con la cantidad de instrucciones y
el tiempo de ejecucin.
/ara comprender los di1erentes modos de direccionamiento que se presentaran
en esta seccin, es imperativo entender el ciclo de operacin b=sico de la
computadora. La unidad de control de una computadora esta diseIada para
recorrer un ciclo de instrucciones que se divide en tres 1ases principales:
1. 78squeda de la instruccin de la memoria.
". )ecodi1icar la instruccin.
!. (jecutar la instruccin.
:ay un registro en la computadora llamado contador de programa o /,, que
lleva un registro de las instrucciones del programa almacenado en la memoria.
/c 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
decodi1icacin realizada en el paso " determina la operacin que se va a
ejecutar, el modo de direccionamiento de la instruccin y la posicin de los
operandos.
)espus la computadora ejecuta la instruccin y regresa al paso 1 para hacer
la b8squeda de la siguiente instruccin en secuencia.
(n algunas computadoras el modo de direccionamiento de la instruccin se
especi1ica con un cdigo binario distinto, como se hace con el cdigo de
operacin. *tras computadoras utilizan un cdigo binario 8nico que representa
la operacin y el modo de la instruccin. /ueden de1inirse instrucciones con
diversos modos de direccionamiento y, en ocasiones, se combinan dos o mas
modos de direccionamiento en una instruccin.
/ag: 7
Arquitectura de Computadoras
2unque la mayor4a de los modos de direccionamiento modi1ican el campo de
direccin de la instruccin, hay dos modos que no necesitan el campo de
direccin. +on los modos impl4cito e inmediato.

-ODO I-PLICITO.
(n este modo se especi1ican los operandos en 1orma impl4cita en la de1inicin
de la instruccin. /or ejemplo, la instruccin 9complementar acumulador9 es
una instruccin de modo impl4cito porque el operando en el registro de
acumulador esta impl4cito en la de1inicin de la instruccin. )e hecho todas las
instrucciones de re1erencia a registro que utilizan un acumulador son
instrucciones de modo impl4cito.
Las instrucciones de direccin cero en una computadora organizada con pila
son instrucciones de modo impl4cito porque esta impl4cito que los operandos
est=n en la parte superior de la pila.

-ODO IN-EDIATO.
(n este modo se especi1ica el operando en la instruccin misma. (n otras
palabras, una instruccin de modo inmediato tiene un campo operando, en
lugar de una campo de direccin. 5n campo de operando contiene el operando
real que se va a usar junto con la operacin especi1icada en la instruccin. Las
instrucciones de modo inmediato son 8tiles para inicializar registros en un valor
constante.
+e menciono antes que el campo de direccin de una instruccin puede
especi1icar una palabra de memoria o un registro de procesador. ,uando el
campo de direccin especi1ica un registro de procesador se dice que la
instruccin esta en modo de registro.

-ODO DE REGISTRO.
(n este modo, los operandos est=n en registros que residen dentro de la ,/5.
+e selecciona el registro particular de un campo de registro en la instruccin.
5n campo L bits puede especi1icar cualquiera de " a la L registros.

-ODO INDIRECTO POR REGISTRO.
(n este modo la instruccin especi1ica un registro en la ,/5 cuyo contenido
proporciona la direccin del operando en la memoria. (n otras palabras, el
registro seleccionado contiene la direccin del operando en lugar del operando
mismo. 2ntes de utilizar una instruccin de modo indirecto por registro, el
programador debe asegurarse de que la direccin de memoria del operando
esta colocada en el registro del procesador con una instruccin previa.
(ntonces una re1erencia al registro es equivalente a especi1icar una direccin
de memoria. La ventaja de una instruccin de modo de registro indirecto es que
el campo de direccin de la instruccin utiliza menos bits para seleccionar un
registro de los que necesitar4a para especi1icar una direccin de memoria en
1orma directa.

-ODO DE DIRECCIONA-IENTO DIRECTO.
(n este modo la direccin e1ectiva es igual a la parte de direccin de la
instruccin. (l operando reside en memoria y su direccin la proporciona en
1orma directa el campo de direccin de la instruccin. (n una instruccin de tipo
/ag: 8
Arquitectura de Computadoras
brinco el campo de direccin especi1ica la direccin de trans1erencia de control
del programa real.

-ODO DE DIRECCIONA-IENTO INDIRECTO.
(n este modo, el campo de direccin de la instruccin proporciona la direccin
en que se almacena la direccin e1ectiva en la memoria. (l control recupera la
instruccin de la memoria y utiliza su parte de direccin para accesar la
memoria una vez m=s con el 1in de leer la direccin e1ectiva.
5nos cuantos modos de direccionamiento requieren que el campo de direccin
de la instruccin se sume al contenido de un registro espec41ico en la ,/5. (n
estos modos la direccin e1ectiva se obtiene del c=lculo siguiente:
)ireccin e1ectiva D /arte de la instruccin @ (l contenido de registro ,/5.
(L registro de ,/5 utilizado en el calculo puede ser el contador de programa,
un registro de 4ndice o un registro base. (n cualquier caso tenemos un modo
de direccionamiento di1erente que se utiliza para una aplicacin distinta.

-ODO DE DIRECCIONA-IENTO INDEADO.
(n este modo el contenido de un registro 4ndice se suma a la parte de direccin
de la instruccin para obtener la direccin e1ectiva. (l registro 4ndice es un
registro ,/5 especial que contiene un valor 4ndice. 5n campo de direccin de
la instruccin de1ine la direccin inicial del arreglo de datos en la memoria.
,ada operando del arreglo se almacena en la memoria en relacin con la
direccin inicial.
La distancia entre la direccin inicial y la direccin del operando es el valor del
4ndice almacenado en el registro de 4ndice. ,ualquier operando en el arreglo
puede accesarse con la misma instruccin siempre y cuando el registro 4ndice
contenga el valor de 4ndice correcto. (l registro 4ndice puede incrementarse
para 1acilitar el acceso a operandos consecutivos. Jtese que si una
instruccin de tipo 4ndice no incluye un campo de direccin en su 1ormato, la
instruccin se convierte al modo de operacin de indirecto por registro.
2lgunas computadoras dedican un registro de ,/5 para que 1uncione
e3clusivamente como un registro 4ndice. )e manera impl4cita este registro
participa cuando se utiliza una instruccin de modo 4ndice. (n las
computadoras con muchos registros de procesador, cualquiera de los registros
de la ,/5 pueden contener el numero de 4ndice. (n tal caso, el registro debe
estar especi1icado en 1orma e3pl4cita en una campo de registro dentro del
1ormato de instruccin.

-ODO DE DIRECCIONA-IENTO DE REGISTRO !ASE.
(n este modo, el contenido de un registro base se suma a la parte de direccin
de la instruccin para obtener la direccin e1ectiva. (sto es similar al modo de
direccionamiento inde3ado, e3cepto en que el registro se denomina ahora
registro base, en lugar de registro 4ndice. La di1erencia entre los dos modos
esta en la manera en que se usan mas que en la manera en que se calculan.
+e 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. (l modo de direccionamiento de registro base se utiliza en
las computadoras para 1acilitar la localizacin de los programas en memoria.

/ag: 9
Arquitectura de Computadoras
CONCEPTO DE INTERR.PCION
5na interrupcin es una operacin que suspende la ejecucin de un programa
de modo que el sistema pueda realizar una accin especial. La rutina de
interrupcin ejecuta y por lo regular regresa el control al procedimiento que 1ue
interrumpido, el cual entonces reasume su ejecucin.

TA!LA DE SER/ICIO DE INTERR.PCION.
,uando la computadora se enciende, el 7.*+ y el )*+ establecen una tabla
de servicios de interrupcin en las localidades de memoria ###:M!HH:. La
tabla permite el uso de "5' -1##:0 interrupciones, cada una con un
desplazamiento:segmento relativo de cuatro bytes en la 1orma ./:,+.
(l operando de una instruccin de interrupcin como .J< #5: identi1ica el tipo
de solicitud. ,omo e3isten "5' entradas, cada una de cuatro bytes, la tabla
ocupa los primeros 1, #" bytes de memoria, desde ###: hasta !HH:. ,ada
direccin en la tabla relaciona a una ruina de 7.*+ o del )*+ para un tipo
especi1ico de interrupcin. /or lo tanto los bytes #M! contienen la direccin para
la interrupcin #, los bytes M& para la interrupcin 1, y as4 sucesivamente:
E/ENTOS DE .NA INTERR.PCION.
5na interrupcin guarda en la pila el contenido del registro de banderas, el ,+,
y el ./. por ejemplo, la direccin en la tabla de .J< #5: -que imprime la que se
encuentra en la pantalla cuando el usuario presiona ,trl @ /rt+,0 es ##1:
-#5: 3 D 1:0. La operacin e3trae la direccin de cuatro bytes de la posicin
##1: y almacena dos bytes en el ./ y dos en el ,+.
La direccin ,+:./ entonces apunta al inicio de la rutina en el =rea del 7.*+,
que ahora se ejecuta. La interrupcin regresa v4a una instruccin .K(<
-regreso de interrupcin0, que saca de la pila el ./, ,+ y las banderas y regresa
el control a la instruccin que sigue al .J<.
TIPOS DE INTERR.PCIONES.
Las interrupciones se dividen en dos tipos las cuales son: (3ternas y .nternas.
5na interrupcin e3terna es provocada por un dispositivo e3terno al
procesador. Las dos l4neas que pueden seIalar interrupciones e3ternas son la
l4nea de interrupcin no enmascarable -JB.0 y la l4nea de peticin de
interrupcin -.J<K0.
La l4nea JB. reporta la memoria y errores de paridad de (;+. (l procesador
siempre act8a sobre esta interrupcin, aun si emite un ,L. para limpiar la
bandera de interrupcin en un intento por deshabilitar las interrupciones
e3ternas. La l4nea .J<K reporta las peticiones desde los dispositivos e3ternos,
en realidad, las interrupciones #5: a la #H:, para cronometro, el teclado, los
/ag: 1
Arquitectura de Computadoras
puertos seriales, el disco duro, las unidades de disco 1le3ibles y los puertos
paralelos.
5na interrupcin interna ocurre como resultado de la ejecucin de una
instruccin .J< o una operacin de divisin que cause desbordamiento,
ejecucin en modo de un paso o una peticin para una interrupcin e3terna, tal
como (;+ de disco. Los programas por lo com8n utilizan interrupciones
internas, que no son enmascarables, para accesar los procedimientos del 7.*+
y del )*+.
INTERR.PCION DE !IOS.
(l 7.*+ contiene un e3tenso conjunto de rutinas de entrada;salida y tablas que
indican el estado de los dispositivos del sistema. (l dos y los programas
usuarios pueden solicitar rutinas del 7.*+ para la comunicacin con los
dispositivos conectados al sistema. (l mtodo para realizar la inter1az con el
7.*+ es el de las interrupciones de so1tNare. 2 continuacin se listan algunas
interrupciones del 7.*+.
INT 0012 )ivisin entre cero. Llamada por un intento de dividir entre cero.
Buestra un mensaje y por lo regular se cae el sistema.
INT 0312 5n solo paso. 5sado por )(75C y otros depuradores para permitir
avanzar por paso a travs de la ejecucin de un programa.
INT 0412 .nterrupcin no enmascarare. 5sada para condiciones graves de
hardNare, tal como errores de paridad, que siempre est=n habilitados. /or lo
tanto un programa que emite una instruccin ,L. -limpiar interrupciones0 no
a1ecta estas condiciones.
INT 0512 /unto de ruptura. 5sado por depuracin de programas para detener
la ejecucin.
INT 0612 )esbordamiento. /uede ser causado por una operacin aritmtica,
aunque por lo regular no realiza accin alguna.
INT 0712 .mprime pantalla. :ace que el contenido de la pantalla se imprima.
(mita la .J< #5: para activar la interrupcin internamente, y presione las teclas
,ltr @ /rt+, para activarla e3ternamente. La operacin permite interrupciones y
guarda la posicin del cursor.
INT 0812 +istema del cronometro. 5na interrupcin de hardNare que actualiza
la hora del sistema y -si es necesario0 la 1echa. 5n chip temporizador
programable genera una interrupcin cada 5.$"5 milisegundos, casi 1%."
veces por segundo.
INT 0912 .nterrupcin del teclado. /rovocada por presionar o soltar una tecla
en el teclado.
INT O!1( INT OC12 ,ontrol de dispositivo serial. ,ontrola los puertos ,*B1 y
,*B", respectivamente.
/ag: 11
Arquitectura de Computadoras
INT 0D1( INT OF12 ,ontrol de dispositivo paralelo. ,ontrola los puertos L/<1 y
L/<", respectivamente.
INT 0E12 ,ontrol de disco 1le3ible. +eIala actividad de disco 1le3ible, como la
terminacin de una operacin de (;+.
INT 3012 )espliegue en v4deo. 2cepta el numero de 1unciones en el 2: para el
modo de pantalla, colocacin del cursor, recorrido y despliegue.
INT 3312 )eterminacin del equipo. )etermina los dispositivos opcionales en el
sistema y regresa el valor en la localidad #:1#: del 7.*+ al 26. -2 la hora de
encender el equipo, el sistema ejecuta esta operacin y almacena el 26 en la
localidad #:1#:0.
INT 3412 )eterminacin del tamaIo de la memoria. (n el 26, regresa el
tamaIo de la memoria de la tarjeta del sistema, en trminos de Lilobytes
contiguos.
INT 3512 (ntrada;salida de disco. 2cepta varias 1unciones en el 2: para el
estado del disco, sectores le4dos, sectores escritos, veri1icacin, 1ormato y
obtener diagnostico.

INTERR.PCION DEL DOS.

Los dos mdulos del )*+, .*.+A+ y B+)*+.+A+, 1acilitan el uso del 7.*+.
Aa que proporcionan muchas de las pruebas adicionales necesarias, las
operaciones del )*+ por lo general son mas 1=ciles de usar que sus
contrapartes del 7.*+ y por lo com8n son independientes de la maquina.
IO.S:S es una inter1az de nivel bajo con el 7.*+ que 1acilita la lectura de datos
desde la memoria hacia dispositivos e3ternos.
-SDOS.S:S contiene un administrador de archivos y proporciona varios
servicios. /or ejemplo, cuando un programa usuario solicita la .J< "1:, la
operacin env4a in1ormacin al B+)*+.+A+ por medio del contenido de los
registros. /ara completar la peticin, B+)*+.+A+ puede traducir la
in1ormacin a una o mas llamadas a .*.+A+, el cual a su vez llama al 7.*+.
Las siguientes son las relaciones impl4citas:




INTER.PCIONES DEL DOS.
/ag: 12
Arquitectura de Computadoras
Las interrupciones desde la "#: hasta la !H: est=n reservadas para
operaciones del )*+. 2 continuacin se mencionan algunas de ellas.
INT 4012 <ermina programa. Hinaliza la ejecucin de un programa .,*B,
restaura las direcciones para ,ltr @ 7reaL y errores cr4ticos, limpia los bu1er de
registros y regresa el control al )*+. (sta 1uncin por lo regular seria colocada
en el procedimiento principal y al salir de el, ,+ contendr4a la direccin del
/+/. La terminacin pre1erida es por medio de la 1uncin ,: de la .J< "1:.
INT 4312 /eticin de 1uncin al )*+. La principal operacin del )*+ necesita
una 1uncin en el 2:.
INT 4412 )ireccin de terminacin. ,opia la direccin de esta interrupcin en el
/+/ del programa -en el desplazamiento #2:0 cuando el )*+ carga un
programa para ejecucin. 2 la terminacin del programa, el )*+ trans1iere el
control a la direccin de la interrupcin. +us programas no deben de emitir esta
interrupcin.
INT 4512 )ireccin de ,ltr @ 7reaL. )iseIada para trans1erir el control a una
rutina del )*+ -por medio del /+/ desplazamiento #(:0 cuando usted
presiona ,tlt @ 7reaL o ,tlr @ c. La rutina 1inaliza la ejecucin de un programa o
de un archivo de procesamiento por lotes. +us programas no deben de emitir
esta interrupcin.
INT 4612 Banejador de error critico. 5sada por el dos para trans1erir el control
-por medio del /+/ desplazamiento 1":0 cuando reconoce un error critico -a
veces una operacin de disco o de la impresora0.+us programas no deben de
emitir esta interrupcin.
INT 4712 Lectura absoluta de disco. Lee el contenido de uno o mas sectores de
disco.
INT 4;12 (scritura absoluta de disco. (scribe in1ormacin desde la memoria a
uno o mas sectores de disco.
INT 4<12 <ermina pero permanece residente -reside en memoria0. :ace que un
programa .,*B al salir permanezca residente en memoria.
INT 4F12 .nterrupcin de multiple3ion. .mplica 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 )*+ tal como
2++.CJ o 2//(J).
INT 5512 Banejador del ratn. /roporciona servicios para el manejo del ratn.

ELE-ENTOS !ASICOS
/ag: 13
Arquitectura de Computadoras

CO-ENTARIOS EN LENG.A=E ENSA-!LADOR.
(l uso de comentarios a lo largo de un programa puede mejorar su claridad, en
especial en lenguaje ensamblador, donde el propsito de un conjunto de
instrucciones con 1recuencia no es claro. 5n comentario empieza con punto y
coma -E0 y, en donde quiera que lo codi1ique, el ensamblador supone que todos
los caracteres a la derecha de esa l4nea son comentarios. 5n comentario
puede contener cualquier car=cter imprimible, incluyendo el espacio en blanco.
5n comentario puede aparecer solo en una l4nea o a continuacin de una
instruccin en la misma l4nea, como lo muestran los dos ejemplos siguientes:

1. E <oda esta l4nea es un comentario.
". 2)) 26, 76 E ,omentario en la misma l4nea que la instruccin.
Aa que un comentario aparece solo en un listado de un programa 1uente en
ensamblador y no genera cdigo de maquina, puede incluir cualquier cantidad
de comentarios sin a1ectar el tamaIo o la ejecucin del programa ensamblado.
*tra manera de proporcionar comentarios es por medio de la directiva
,*BB(J<.

PALA!RAS RESER/ADAS.
,iertas palabras en lenguaje ensamblador est=n reservadas para sus
propsitos propios, y son usadas solo bajo condiciones especiales. /or
categor4as, las palabras reservadas incluyen:

.nstrucciones, como B*O y 2)), que son operaciones que la computadora
puede ejecutar.
)irectivas como (J) o +(CB(J<, que se emplean para proporcionar
comandos al ensamblador.
*peradores, como H2K y +.F(, que se utilizan en e3presiones.
+4mbolos prede1inidos, como P)ata y PBodel, que regresan in1ormacin a su
programa.
(l uso de una palabra reservada para un propsito equivocado provoca que el
ensamblador genere un mensaje de error.
Oer palabras reservadas.

IDENTIFICADORES.
5n identi1icador es un nombre que se aplica a elementos en el programa. Los
dos tipos de identi1icadores son: nombre, que se re1iere a la direccin de un
elemento de dato. y etiqueta, que se re1iere a la direccin de una instruccin.
Las mismas reglas se aplican tanto para los nombres como para las etiquetas.
5n identi1icador puede usar los siguientes caracteres:

1.M Letras del al1abeto: )esde la 2 hasta la F
".M )4gitos: )esde el # al $ -no puede ser el primer car=cter0
!.M ,aracteres especiales +igno de interrogacin - Q 0
+ubrayado - R 0
/ag: 14
Arquitectura de Computadoras
+igno de pesos - S 0
2rroba - P 0
/unto - . 0 -no puede ser el primer car=cter0

(l primer car=cter de un identi1icador debe ser una letra o un car=cter especial,
e3cepto el punto. Aa que el ensamblador utiliza algunos s4mbolos especiales
en palabras que inician con el s4mbolo P, debe evitar usarlo en sus
de1iniciones.
(l ensamblador trata las letras may8sculas y min8sculas como iguales. La
longitud m=3ima de un identi1icador es de !1 caracteres -"& desde el B2+B
'.#0. (jemplos de nombres validos son ,*5J<, /2C("5 y S(1#. +e
recomienda que los nombres sean descriptivos y con signi1icado. Los nombres
de registros, como 26, ). y 2L, est=n reservados para hacer re1erencia a esos
mismos registros. (n consecuencia, en una instruccin tal como:
2)) 26, 76
el ensamblador sabe de 1orma autom=tica que 26 y 76 se re1ieren a los
registros. +in embargo, en una instruccin como:
B*O K(C+2O(, 26
el ensamblador puede reconocer el nombre K(C+2O( solo si se de1ine en
alg8n lugar del programa.

INSTR.CCIONES.
5n programa en lenguaje ensamblador consiste en un conjunto de enunciados.
Los dos tipos de enunciados son:
1. .nstrucciones, tal como B*O y 2)), que el ensamblador traduce a
cdigo objeto.
". )irectivas, que indican al ensamblador que realiza una accin
especi1ica, como de1inir un elemento de dato.
2 continuacin esta el 1ormato general de un enunciado, en donde los
corchetes indican una entrada opcional:

>identi1icador? operacin >operando-s0? >Ecomentarios?

5n identi1icador -si e3iste0, una operacin y un operando -si e3iste0 est=n
separados por al menos un espacio en blanco o un car=cter tabulador. (3iste
un m=3imo de 1!" caracteres en una l4nea -51" desde el B2+B '.#0, aunque
la mayor4a de los programadores pre1iere permanecer en los %# caracteres ya
que es el numero m=3imo que cabe en la pantalla. 2 continuacin se presentan
dos ejemplos de enunciados:

IDENTIFICADOR OPERACION OPERANDO CO-ENTARIO
)irectiva: ,*5J< )7 1 EJom, *p, *perando
.nstruccin: B*O 26, # E*peracin, " *perand

/ag: 15
Arquitectura de Computadoras
.denti1icador, operacin y operando pueden empezar en cualquier columna. +in
embargo, si de manera consistente se inicia en la misma columna para estas
tres entradas se hace un programa mas legible.


IDENTIFICADOR
,omo ya se e3plico, el termino nombre se aplica al nombre de un elemento o
directiva de1inida, mientras que el termino etiqueta se aplica al nombre de una
instruccin.


OPERACION
La operacin, que debe ser codi1icada, es con mayor 1recuencia usada para la
de1inicin de =reas de datos y codi1icacin de instrucciones. /ara un elemento
de datos, una operacin como )7 o )T de1ine un campo, =rea de trabajo o
constante.

OPERANDO
(l operando -si e3iste0 proporciona in1ormacin para la operacin que act8a
sobre el. /ara un elemento de datos, el operando identi1ica su valor inicial. /or
ejemplo, en la de1inicin siguiente de un elemento de datos llamado
,*5J<(K, la operacin )7 signi1ica 9de1inir byte9, y el operando inicializa su
contenido con un valor cero:
/ara una instruccin, un operando indica en donde realizar la accin. 5n
operando de una instruccin puede tener una, dos o tal vez ninguna entrada.
2qu4 est=n tres ejemplos:
DIRECTI/AS PARA LISTAR2 PAGE : TITLE
La directiva /2C( y <.<L( ayudan a controlar el 1ormato de un listado de un
programa en ensamblador. (ste es su 8nico 1in, y no tienen e1ecto sobre la
ejecucin subsecuente del programa.
PAGE. 2l inicio de un programa, la directiva /2C( designa el numero m=3imo
de l4neas para listar en una pagina y el numero m=3imo de caracteres en una
l4nea. +u 1ormato general es:
/ag: 16
Arquitectura de Computadoras

/2C( >longitud?>, ancho?
(l ejemplo siguiente proporciona '# l4neas por pagina y 1!" caracteres por
l4nea:

/2C( '#, 1!"
(l numero de l4neas por pagina puede variar desde 1# hasta "55, mientras que
el numero de caracteres por l4nea desde '# hasta 1!". La omisin de /2C(
causa que el ensamblador tome /2C( 5#, %#.

TITLE. +e puede emplear la directiva <.<L( para hacer que un titulo para un
programa se imprima en la l4nea " de cada pagina en el listado del programa.
/uede codi1icar <.<L( de una vez, al inicio del programa. +u 1ormato general
es:

<.<L( <e3to.
/ara el operando te3to, una tcnica recomendada es utilizar el nombre del
programa como se registra en el disco. /or ejemplo:

<.<L( /rog1 Bi primer programa en ensamblador
DIRECTI/A SEG-ENT
5n programa ensamblado en 1ormato .(6( consiste en uno o mas segmentos.
5n segmento de pila de1ine el almacn de la pila, un segmento de datos de1ine
los elementos de datos y un segmento de cdigo proporciona un cdigo
ejecutable. Las directivas para de1inir un segmento, +(CB(J< y (J)+
tienen el 1ormato siguiente:
(l enunciado +(CB(J< de1ine el inicio de un segmento. (l nombre del
segmento debe estar presente, ser 8nico y cumplir las convenciones para
nombres del lenguaje. (L enunciado (J)+ indica el 1inal del segmento y
contiene el mismo nombre del enunciado +(CB(J<. (l tamaIo m=3imo de un
segmento es de 'G. (l operando de un enunciado +(CB(J< puede tener
tres tipos de opciones: alineacin, combinar y clase, codi1icadas en este
1ormato:

nombre +(CB(J< alineacin combinar U clase U
/ag: 17
Arquitectura de Computadoras
TIPO ALINEACION. La entrada alineacin indica el limite en el que inicia el
segmento. /ara el requerimiento t4pico, /2K2, alinea el segmento con el limite
de un p=rra1o, de manera que la direccin inicial es divisible entre 1', o 1#:.
(n ausencia de un operando hace que el ensamblador por omisin tome
/2K2.
TIPO CO-!INAR. La entrada combinar indica si se combina el segmento con
otros segmentos cuando son enlazados despus de ensamblar. Los tipos de
combinar son +<2,G, ,*BB*J, /57L., y la e3presin 2<. /or ejemplo, el
segmento de la pila por lo com8n es de1inido como:

nombre +(CB(J< /2K2 +<2,G
/uede utilizar /57L., y ,*BB*J en donde tenga el propsito de combinar
de 1orma separada programas ensamblados cuando los enlaza. (n otros
casos, donde un programa no es combinado con otros, puede omitir la opcin o
codi1icar J*J(.
TIPO CLASE. La entrada clase, encerrada entre apstro1os, es utilizada para
agrupar segmentos cuando se enlazan. +e utiliza la clase UcodeU para el
segmento de cdigos, UdataU por segmento de datos y UstacLU para el segmento
de la pila. (l ejemplo siguiente de1ine un segmento de pila con tipos alineacin,
combinar y clase:

nombre +(CB(J< /2K2 +<2,G U+tacLU
DIRECTI/A ASS.-E.
5n programa utiliza el registro ++ para direccionar la pila, al registro )+ para
direccionar el segmento de datos y el registro ,+ para direccionar el segmento
de cdigo. /ara este 1in, usted tiene que indicar al ensamblador el propsito de
cada segmento en el programa. La directiva para este propsito es 2++(B(,
codi1icada en el segmento de cdigo como sigue:

*/(K2,.*J */(K2J)*
2++5B( ++:nompila, )+:nomsegdatos, ,+: nomsegcodigo,. . .
Los operandos pueden aparecer en cualquier orden. 2l igual que otras
directivas, 2++5B( es solo un mensaje que ayuda al ensamblador a convertir
cdigo simblico a cdigo maquinaE aun puede tener que codi1icar
instrucciones que 14sicamente cargan direcciones en registros de segmentos en
el momento de la ejecucin.


1 /2C( '#,1!"
" <.<L( /#2+B1 (+<K5,<5K2 )( 5J /K*CK2B2 .(6(
!EMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
+<2,G+C +(CB(J< /2K2 +<2,G U+tacLU
5 ...
' +<2,G+C (J)+
/ag: 18
Arquitectura de Computadoras
&EMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
% )2<2+C +(CB(J< /2K2 U)ataU
$ ...
1# )2<2+C (J)+
11EMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
1" ,*)(+C +(CB(J< /2K2 U,odeU
1! 7(C.J /K*, H2K
1 2++5B( ++:+<2,G+C, )+:)2<2+C,,+:,*)(+C
15 B*O 26, )2<2+C E*btiene la direccin del
segmento de datos
1' B*O )+, 26 E2lmacena direccin en )+
1& ...
1% B*O 26, ,##: E/eticion
1$ .J< "1: E+alida al )*+
"# 7(C.J (J)/
"1 ,*)(+C (J)+
"" (J) 7(C.J

).K(,<.O2+ +.B/L.H.,2)2+ )( +(CB(J<*+
Los ensambladores de Bicro+o1t y de 7orland proporcionan algunas 1ormas
abreviadas para de1inir segmentos. /ara usar estas abreviaturas, inicialice el
modelo de memoria antes de de1inir alg8n segmento. (l 1ormato general
-incluyendo el punto inicial0 es:
.-ODEL modelo de memoria
(l modelo de memoria puede ser <.JA, +B2LL, B().5B, ,*B/2,< o
L2KC(. Los requisitos para cada modelo son:
/uede utilizar cualquiera de estos modelos para un programa autnomo -esto
es, un programa que no este enlazado con alg8n otro0. (l modelo <.JA esta
destinado para uso e3clusivo de programas .,*B, los cuales tienen sus datos,
cdigo y pila en un segmento. (l modelo +B2LL e3ige que el cdigo quepa en
un segmento de 'G y los datos en otro segmento de 'G. La directiva
.B*)(LL genera autom=ticamente el enunciado 2++5B( necesario.
Los 1ormatos generales -incluyendo el punto inicial0 para las directivas que
de1ine los segmentos de la pila, de datos y de cdigo son:
/ag: 19
Arquitectura de Computadoras
.STAC> ?tama@oA
.DATA
.CODE ?nom)reA
,ada una de estas directivas hace que el ensamblador genere el enunciado
+(CB(J< necesario y su correspondiente (J)+. Los nombres por omisin de
los segmentos -que usted no tiene que de1inir0 son +<2,G, )2<2 y <(6<
-para el segmento de cdigo0.
La 1igura .! proporciona un ejemplo haciendo uso de las directivas
simpli1icadas de segmento.
page '#,1!"
<.<L( /#2+B" -(6(0 *peraciones de mover y sumar
EMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
.B*)(L +B2LL
.+<2,G ' E+e de1ine la pila
.)2<2 E+e de1inen los datos
HL)2 )T "5#
HL)7 )T 1"5
HL), )T Q
EMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
.,*)( E+e de1ine el segmento de cdigo
7(C.J /K*, H2K
B*O 26, Pdata E+e asigna la direccin de )2<2+C -/rog.
anterior0
B*O 26, HL)2 EBover #"5# a 26
2)) 26, HL)7 E+umar #1"5 a 26
B*O HL),, 26 E2lmacenar suma en HL),
B*O 26, ,##: E+alida a )*+
.J< "1:
7(C.J (J)/ EHin de procedimiento
(J) 7(C.J EHin de programa
TRANSFERENCIA DE DATOS.

La instruccin de trans1erencia de datos por e3celencia es:
B*O destino, 1uente
(ntendiendo por 1uente el contenido que se va a trans1erir a una determinada
zona o registro de memoria denominada destino.
(sta instruccin, por tanto, nos va a permitir trans1erir in1ormacin entre
registros y memoria, memoria y registros y entre los propios registros utilizando
alguno de los di1erentes modos de direccionamiento. ,on la instruccin B*O
diremos que se pueden realizar todo tipo de movimientos teniendo en cuenta
las siguientes restricciones:
/ag: 2
Arquitectura de Computadoras
1.M Jo se puede realizar una trans1erencia de datos entre dos posiciones de
memoria
directamente, por esta razn, siempre que queramos e1ectuarlas tendremos
que utilizar un registro intermedio que haga de puente.
/or ejemplo, para hacer la operacion )2<*1 VMM )2<*",
la instruccin B*O )2<*",)2<*1
ser4a incorrecta. Lo que s4 ser4a correcto ser4a utilizar el registro )6, u otro,
como puente y hacer:
B*O )6,)2<*1
B*O )2<*",)6
".M <ampoco se puede hacer una trans1erencia directa entre dos registros de
segmento. /or eso, como en el caso anterior, si 1uera preciso se utilizar4a un
registro como puente.
!.M 2simismo, tampoco se puede cargar en los registros de segmento un dato
utilizando direccionamiento inmediato, es decir, una constante, por lo que
tambin habr= que recurrir a un registro puente cuando sea preciso.

5na instruccin util pero no imprescindible es:
6,:C )2<*1, )2<*"
que intercambia los contenidos de las posiciones de memoria o registros
representadospor )2<*1 y )2<*".
/or ejemplo, si queremos intercambiar los contenidos de los registros 26 y 76,
podemos hacer:

B*O 256, 26
B*O 26, 76
B*O 76, 256
en donde 256 es una variable au3iliar que hace de puente, o simplemente
utilizar:
6,:C 26, 76
Las restricciones que presenta esta operacin es que no se pueden e1ectuar
intercambios directamente entre posiciones de memoria ni tampoco entre
registros de segmento.
La instruccin 6L2< tabla carga en el registro 2L el contenido de la posicin
>76?>2L?, en donde el registro 76 ha de apuntar al comienzo de una tabla.
)ichio de otra manera, 2L hace de 4ndice de la tabla y de almacn destino del
contenido de la tabla.
/ag: 21
Arquitectura de Computadoras
/or ejemplo, el siguiente programa:
)2<*+ +(CB(J<
<27L2 )7 ",!,5,%,1',"!
)2<*+ (J)+
,*).C* +(CB(J<
B*O( 76, *HH+(< <27L2 E .nicializa 76 con la direccin donde
comienza la tabla
B*O( 2L, 5
6L2< <27L2
,*).C* (J)+
hace que al 1inal el contenido de 2L se 1' ya que es el 5to. elemento de la
tabla y 2L antes de 6L2< <27L2 contenia el valor 5.
/ara 1inalizar con las instrucciones de trans1erencia veremos un grupo de tres
instrucciones:
M L(2 o cargar direccin e1ectiva.
M L)+ o cargar el puntero en )+.
M L(+ o cargar el puntero en (+.
denominadas de trans1erencia de direcciones.
La primera, L(2, carga el desplazamiento u *HH+(< correspondiente al
operando 1uente en el operando destino. /or ejemplo, la instruccin B*O( 76,
*HH+(< <27L2 del ejemplo anterior ser4a equivalente a L(2 76, <27L2.
La segunda, L)+, se utiliza para cargar el valor del segmento de una variable
en el registro )+ y el desplazamiento correspondiente en el registro o posicin
de memoria indicada en la instruccin. /or ejemplo, la instruccin L)+ 76,
J5B1 har4a esquem=ticamente lo siguiente:
La tercera y ultima de las instrucciones, L(+, es similar a L)+, con la 8nica
salvedad de que el valor del segmento se carga sobre el registro de segmento
(+ en vez del )+.

/ag: 22
Arquitectura de Computadoras
S.-A : RESTA
Las instrucciones 2)) y +57 realizan sumas y restas sencillas de datos
binarios. Los n8meros binarios negativos est=n representados en la 1orma de
complemento a dos: .nvierta todos los bits del numero positivo y sume 1. Los
1ormatos generales para las instrucciones 2)) y +57 son:
,omo en otras instrucciones, no e3isten operaciones directas de memoria a
memoria. (l ejemplo siguiente utiliza el registro 26 para sumar T*K)2 a
T*K)7:

T*K)2 )T 1"! E)e1ine T*K)2
T*K)7 )T "5 E)e1ine T*K)7
. . .
B*O 26, T*K)2 EBueve T*K)2 al 26
2)) 26, T*K)7 E+uma T*K)7 al 26
B*O T*K)7, 26 EBueve 26 a T*K)7
La 1igura '.1. proporciona ejemplos de 2)) y +57 para el procesamiento de
valores en un byte y en una palabra. (l procedimiento 71#2)) utiliza 2))
para procesar bytes y el procedimiento ,1#+57 utiliza +57 para procesar
palabras.

<.<L( /1!2)) -,*B0 *peraciones 2)) y +57
.B*)(L +B2LL
.,*)(
*KC 1##:
7(C.J: WB/ +:*K< B2.J
EMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
7A<(2 )7 ': E)2<*+
7A<(7 )7 #:
7A<(, )7 1':
T*K)2 )T ###:
T*K)7 )T "###:
T*K), )T 1###:
EMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
B2.J /K*, J(2K E/rocedimiento principal:
,2LL 71#2)) ELlama a la rutina 2))
,2LL ,1#+57 ELlama a la rutina +57
.J< "1:
B2.J (J)/
E (jemplos de suma -2))0 de bytes:
EMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
71#2)) /K*,
/ag: 23
Arquitectura de Computadoras
B*O 2L, 7A<(2
B*O 7L, 7A<(7
2)) 2L, 7L Eregistro a registro
2)) 2L, 7A<(, Ememoria a registro
2)) 7A<(2, 7L Eregistro a memoria
2)) 7L, 1#: Einmediato a registro
2)) 7A<(2, "5: Einmediato a memoria
K(<
71#2)) (J)/
E (jemplos de resta -+570 de palabras:
EMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
,1#+57 /K*,
B*O 26, T*K)2
B*O 76, T*K)7
+57 26,76 EKegistro a registro
+57 26,T*K), EBemora de registro
+57 T*K)2, 76 EKegistro de memoria
+57 76, 1###: E.nmediato de registro
+57 T*K)2, "5': E.nmediato de memoria
K(<
,1#+57 (J)/
(J) 7(C.J

Des)ordamientos
(ste alerta con los desbordamientos en las operaciones aritmticas. Aa que un
byte solo permite el uso de un bit de signo y siete de datos -desde M1"% hasta
@1"&0, una operacin aritmtica puede e3ceder con 1acilidad la capacidad de
un registro de un byte. A una suma en el registro 2L, que e3ceda su capacidad
puede provocar resultados inesperados.
OPERANDOS LOGICOS.

La lgica booleana es importante en el diseIo de circuitos y tiene un paralelo
en la lgica de programacin. Las instrucciones para lgica booleana son 2J),
*K, 6*K, <(+< y J*<, que pueden usarse para poner bits en # o en 1 y para
manejar datos 2+,.. con propsitos aritmticos. (l 1ormato general para las
operaciones booleanas es:

>etiqueta :? X operacin X Yregistro;memoriaZ, Yregistro;memoria;inmediatoZX
(l primer operando se re1iere a un byte o palabra en un registro o memoria y es
el 8nico valor que es cambiado. (l segundo operando hace re1erencia a un
registro o a un valor inmediato. La operacin compara los bits de los dos
operandos re1erenciados y de acuerdo con esto establece las banderas ,H,
*H, /H, +H y FH.
2J). +i ambos bits comparados son 1, establece el resultado en 1. Las dem=s
condiciones dan como resultado #.
/ag: 24
Arquitectura de Computadoras
*K. +i cualquiera -o ambos0 de los bits comparados es 1, el resultado es 1. +i
ambos bits est=n en #, el resultado es #.
6*K. +i uno de los bits comparados es # y el otro 1, el resultado es 1. +i
ambos bits comparados son iguales -ambos # o ambos 10, el resultado es #.
<(+<. (stablece las banderas igual que lo hace 2J), pero no cambia los bits
de los operandos.
Las operaciones siguientes 2J), *K y 6*K ilustran los mismos valores de bits
como operandos:

2J) *K 6*K
#1#1 #1#1 #1#1
##11 ##11 ##11
Kesultado: ###1 #111 #11#


(s 8til recordar la siguiente regla: el empleo de 2J) con bits # es # y el de *K
con bits 1 es 1.
(jemplos de operaciones booleanas.
/ara los siguientes ejemplos independientes, suponga que 2L contiene
11###1#1 y el 7: contiene #1#111##:
1.M 2J) 2L,7: E(stablece 2L a #1## #1##
".M 2J) 2L,##: E(stablece 2L a #### ####
!.M 2J) 2L,#H: E(stablece 2L a #### #1#1
.M *K 7:,2L E(stablece 7: a 11#1 11#1
5.M *K ,L,,L E/one en uno +H y FH
'.M 6*K 2L,2L E(stablece 2L a #### ####
&.M 6*K 2L,#HH: E(stablece 2L a ##11 1#1#

Los ejemplos " y ' muestran 1ormas de limpiar un registro, y ponerlo a cero. (l
ejemplo ! pone a cero los cuatro bits mas a la izquierda de 2L.
<(+t act8a igual que 2J), pero solo establece las banderas. 2qu4 est=n
algunos ejemplos :

1.M <(+< 7L, 1111####7 E 2lguno de los bits de mas a la
WJF ... E izquierda es 7L en di1erentes de ceroQ
".M <(+< 2L, #######17 E 2L contiene
WJF ... E un numero imparQ
!.M <(+< )6, #HH: E (l )6 contiene
WJF ... E un valor ceroQ
La instr"##in NOT.
La instruccin J*< solo invierte los bits en un byte o palabra en un registro o
en memoriaE esto es, convierte los ceros en unos y los unos en ceros. (l
1ormato general es:

X >etiqueta:? X J*< X Yregistro;memoriaZ X

/ag: 25
Arquitectura de Computadoras
/or ejemplo si el 2L contiene 11###1#1, la instruccin J*< 2L cambia el 2L a
##111#1# -el resultado es el mismo de 6*K 2L, #HH:0. Las banderas no son
a1ectadas.

/ag: 26

S-ar putea să vă placă și