Está en la página 1de 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:

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:

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:

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:

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:

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 INDE ADO. (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:

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: ".M )4gitos: !.M ,aracteres especiales )esde la 2 hasta la F )esde el # al $ -no puede ser el primer car=cter0 +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 )irectiva: ,*5J< .nstruccin: OPERACION OPERANDO )7 1 B*O 26, # CO-ENTARIO EJom, *p, *perando 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 2++5B( */(K2J)* ++: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 .,*)( 7(C.J /K*, B*O anterior0 B*O 2)) B*O B*O .J< 7(C.J (J)/ (J) E+e de1ine el segmento de cdigo H2K 26, Pdata 26, HL)2 26, HL)7 HL),, 26 26, ,##: "1: 7(C.J E+e asigna la direccin de )2<2+C -/rog. EBover #"5# a 26 E+umar #1"5 a 26 E2lmacenar suma en HL), E+alida a )*+ EHin de procedimiento 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) #1#1 ##11 ###1 *K #1#1 ##11 #111 6*K #1#1 ##11 #11#

Kesultado:

(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) ".M 2J) !.M 2J) .M *K 5.M *K '.M 6*K &.M 6*K 2L,7: E(stablece 2L a #1## #1## 2L,##: E(stablece 2L a #### #### 2L,#H: E(stablece 2L a #### #1#1 7:,2L E(stablece 7: a 11#1 11#1 ,L,,L E/one en uno +H y FH 2L,2L E(stablece 2L a #### #### 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 <(+< WJF ".M <(+< WJF !.M <(+< WJF 7L, 1111####7 ... 2L, #######17 ... )6, #HH: ... E 2lguno de los bits de mas a la E izquierda es 7L en di1erentes de ceroQ E 2L contiene E un numero imparQ E (l )6 contiene 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

También podría gustarte