Está en la página 1de 106

UNIDAD I

INTRODUCCION AL LENGUAJE ENSAMBLADOR


1.1. Lenguaje de Bajo Nivel. 1.2. Ventajas de los Lenguajes Ensambladores.

Regresar a la Portada

Autoevaluacin

1.1. Lenguaje de Bajo Nivel.


Se denomina lenguaje mquina a la serie de datos que la parte fsica de la computadora o ard!are" es capa# de interpretar. $na computadora digital o" mejor dic o" su parte fsica" s%lo distingue datos de tipo binario" es decir" constituidos por dos &nicos valores a los que se denomina valor ' ( valor 1 ( que" fsicamente" se materiali#an con tensiones comprendidas entre ' ( ).' voltios ( entre ) ( * voltios" respectivamente. +ara representar datos que contengan una informaci%n se utili#an una serie de unos ( ceros cu(o conjunto indica dic a informaci%n. La informaci%n que ace que el ard!are de la computadora realice una determinada actividad de llama instruccin. +or consiguiente una instrucci%n es un conjunto de unos ( ceros. Las instrucciones as formadas equivalen a acciones elementales de la m,quina" por lo que al conjunto de dic as instrucciones que son interpretadas directamente por la m,quina se denomina lenguaje mquina. El lenguaje m,quina fue el primero que empleo el ombre para la programaci%n de las primeras computadoras. $na instrucci%n en lenguaje m,quina puede representarse de la siguiente forma'11'11''1'1''1''1111'11' Esta secuencia es f,cilmente ejecutada por la computadora" pero es de difcil interpretaci%n" siendo aun mas difcil la interpretaci%n de un programa .conjunto de instrucciones/ escrito de esta forma. Esta dificultad ace que los errores sean frecuentes ( la correcci%n de los mismos costosa" cuando no imposible" al igual que la verificaci%n ( modificaci%n de los programas. La anterior secuencia de dgitos binarios .bits/ puede indicar a la computadora que001raslade el contenido de la posici%n de memoria 2 a la posici%n de memoria 3.44 Si lo vemos escrito de esta forma" lo entenderemos f,cilmente" (a que est, en nuestro lenguaje natural" pero la m,quina elemental ser, incapa# de entender nada. Vemos" pues" que la forma de indicar a la m,quina lo que debe acer es totalmente diferente de la indicar a un ser umano lo mismo" por lo que deben emplearse sistemas de traducci%n de una forma a otra.

3a se a dic o que en un principio el programador empleaba directamente el lenguaje m,quina. En este caso el traductor era el programador5 pero vimos tambi6n los problemas que esto causaba. 7on la pr,ctica en el manejo de la m,quina se ca(% en la cuenta de que se podra utili#ar la propia m,quina para a(udar en la traducci%n de estos programas. Es decir" que si a una m,quina elemental se le dotaba de un programa" tambi6n elemental" que tradujera un n&mero determinado de caracteres de caracteres alfab6ticos en una secuencia de unos ( ceros" se podra escribir un programa constituido por una secuencia de grupos de caracteres alfab6ticos" en la que cada uno de los grupos indicara una acci%n a reali#ar por el ordenador (" una ve# escrito el programa" sera la propia m,quina la que pasara los grupos de caracteres a bits. Las ventajas de esto son evidentes" (a que para el ombre resulta mas f,cil manipular grupos de caracteres ( la traducci%n se ara de manera autom,tica. +or ejemplo" se podra escribir189SL9:98 11'1'11'" '''111'1 Esto indicara que el contenido de la posici%n 11'1'11' aba que pasarlo a la posici%n '''111'1 si se sabe que al grupo alfab6tico 189SL9:98 le corresponde la secuencia de bits 1111'1'1. La m,quina traducira la anterior instrucci%n como1111'1'1 11'1'11' '''111'1 9l grupo alfab6tico se le denomina mnemotcnico" ( e;istir, un mnemot6cnico por cada instrucci%n. Se le da este nombre porque sirve para recordar con ma(or facilidad el conjunto de instrucciones de una determinada m,quina. :e esta forma aparecieron los lenguajes ensambladores .9ssembler" en ingl6s/. +oco a poco" con el avance de la programaci%n .Soft!are/" estas primeras ( sencillas a(udas se fueron aciendo m,s complejas" permitiendo que" adem,s de los mnemot6cnicos correspondientes a la operaci%n a reali#ar" se pudieran emplear otros para indicar" por ejemplo" los operandos. La anterior instrucci%n se podra escribir de la siguiente forma189SL9:98 +<S=9 +<S=B >ue nos resulta de m,s f,cil comprensi%n. 1ambi6n se introdujo la posibilidad de indicar a la computadora la direcci%n de un salto en la secuencia de ejecuci%n de un programa mediante la utili#aci%n de etiquetas.

9 los programas que permiten pasar del programa escrito de esta manera .programa fuente" en ensamblador/ al lenguaje mquina tambi6n se les denomina normalmente ensambladores. Estos traductores" como (a se a dic o" se fueron complicando cada ve# m,s para que la labor del programador fuera m,s f,cil" inclu(endo los denominados directivos del ensamblador" que son %rdenes o informaciones que el programador da al traductor" no instrucciones de lenguaje m,quina. 9un con todas estas sofisticaciones ( a(udas" el programador de lenguaje ensamblador debe conocer perfectamente el sistema fsico .?ard!are/ de la m,quina con que trabaja" pues aunque emplee mnemot6cnicos" etiquetas" etc." 6stas sirven para indicar una posici%n de memoria determinada" un registro o cualquier otra parte de la m,quina. +or eso se dice que el lenguaje ensamblador es un lenguaje de bajo nivel" es decir" ligado con el 00 ard44 concreto de una determinada m,quina. 9qu radica la diferencia importante con los lenguajes m,s complejos" llamados de alto nivel" como el Basic" +ascal" 7obol" etc." (a que en 6stos el programador no tiene porque reconocer el 00 ard44 de la m,quina. 1rabaja con variables" constantes e instrucciones simb%licas" ( es el traductor quien las transforma en las direcciones apropiadas.

Pgina Anterior

Pgina Siguiente

1.2. VENTA AS !E L"S LEN#$A ES ENSA%BLA!"RES

El cora#%n de la computadora es el microprocesador" 6ste maneja las necesidades aritm6ticas" de l%gica ( de control de la computadora. El microprocesador tiene su origen en la d6cada de los sesenta" cuando se dise@o el circuito integrado .A7 por sus siglas en ingles/ al combinar varios componentes electr%nicos en un solo componente sobre un Bc ipB de silicio. Los fabricantes colocaron este diminuto c ip en un dispositivo parecido a un ciempi6s ( lo conectaron a un sistema en funcionamiento. 9 principios de los a@os setenta Antel introdujo el c ip C''C el cual" instalado en una computadora terminal" acompa@o a la primera generaci%n de microprocesadores. En 1DE) el C''C evoluciono en el C'C'" un popular microprocesador de la segunda generaci%n para prop%sitos generales. En 1DEC Antel produjo la tercera generaci%n de procesadores C'CF" para proporcionar alguna compatibilidad con el C'C' ( que representan un avance significativo de dise@o. :espu6s" Antel desarrollo una variaci%n del C'CF para ofrecer un dise@o sencillo ( compatibilidad con los dispositivos de entradaGsalida de ese momento. Este nuevo procesador" el C'CC" fue seleccionado por ABH para su computadora personal en 1DC1. $na versi%n mejorada del C'CC es el C'1CC" ( versiones mejoradas del C'CF" son los C'1CF" C'2CF" C'ICF" C')CF ( el +entium" cada uno de ellos permite operaciones adicionales ( m,s procesamiento. La variedad de microcomputadoras tambi6n ocasiono un renovado inter6s en el lenguaje ensamblado" cu(o uso conlleva a diferentes ventajas

$n programa escrito en el lenguaje ensamblador requiere considerablemente menos memoria ( tiempo de ejecuci%n que un programa escrito en los conocidos lenguajes de alto nivel" como +ascal ( 7. El lenguaje ensamblador da a un programador la capacidad de reali#ar tareas mu( t6cnicas que serian difciles" si no es que imposibles de reali#ar en un lenguaje de alto nivel. El conocimiento del lenguaje ensamblador permite una comprensi%n de la arquitectura de la maquina que ning&n lenguaje de alto nivel puede ofrecer.

9unque la ma(ora de los especialistas en Soft!are desarrolla aplicaciones en lenguajes de alto nivel" que son m,s f,ciles de escribir ( de dar mantenimiento" una practica com&n es recodificar en lenguaje ensamblador aquellas rutinas que an causado cuellos de botella en el procesamiento. Los programas residentes ( rutinas de servicio de interrupci%n casi siempre son desarrollados en el lenguaje ensamblador.

Los lenguajes de alto nivel fueron dise@ados para eliminar las particularidades de una computadora especifica" mientras que un lenguaje ensamblador esta dise@ado para una computadora especifica" o" de manera m,s correcta" para una familia especifica de microprocesadores. 9 continuaci%n se listan los requisitos para aprender el lenguaje ensamblador de la +7-

1ener acceso a una computadora personal de ABH .cualquier modelo/ o una compatible. $na copia del sistema operativo HS=:<S o +7=:<S ( estar familiari#ados con su uso. $na copia de un programa ensamblador. Las versiones de Hicrosoft son conocidas como H9SH ( >uicJ9ssembler- 19SH es de Borland ( <+19SH es de S(stem.

+ara el aprendi#aje de lenguaje ensamblador no es necesario lo siguiente

7onocimiento previo de un lenguaje de programaci%n" aunque tenerlo puede a(udarle a comprender algunos conceptos de programaci%n m,s r,pido. 7onocimiento previo de electr%nica o circuiteria. Pgina Siguiente

Pgina Anterior

UNIDAD II
EL PROCESADOR
2.1. Unidades Funcionales Bsicas. 2.1.1. Unidad Central de Procesos. 2.1.2. Unidad de Memoria Principal. 2.1.3. Unidad de Entradas y Salidas. 2.1.4. Intercone i!n de las Unidades Funcionales. 2.2. "e#istros Internos del Procesador.

Regresar a la Portada

Autoevaluacin

2.1. $N&!A!ES '$N(&"NALES

$n elemento importante del ard!are de la +7 es la unidad del sistema" que contiene una tarjeta de sistema" fuente de poder ( ranuras de e;pansi%n para tarjetas opcionales. Los elementos de la tarjeta de sistema son un microprocesador" memoria de solo lectura .8<H/ ( memoria de acceso aleatorio .89H/. El cerebro de la +7 ( compatibles es un microprocesador basado en la familia C'CF de Antel" que reali#a todo el procesamiento de datos e instrucciones. Los procesadores varan en velocidad ( capacidad de memoria" registros ( bus de datos. $n bus de datos transfiere datos entre el procesador" la memoria ( los dispositivos e;ternos. 9unque e;isten muc os tipos de computadoras digitales seg&n se tenga en cuenta su tama@o" velocidad de proceso" complejidad de dise@o fsico" etc." los principios fundamentales b,sicos de funcionamiento son esencialmente los mismos en todos ellos. Se puede decir que una computadora est, formada por tres partes fundamentales" aunque una de ellas es subdividida en dos partes no menos importantes. En la figura 2.1 se muestran dic as partes" llamadas gen6ricamente unidades funcionales debido a que" desde el punto de vista del funcionamiento" son independientes.

'igura 2.1. $nidades funcionales de una computadora. El nombre de cada parte nos indica la funci%n que reali#a. 9s" la $nidad 7entral de +roceso .7+$/ es la que coordina el funcionamiento conjunto de las dem,s unidades ( reali#a los c,lculos necesarios5 por eso la podemos subdividir en una $nidad de 7ontrol .$7/ ( en una unidad de c,lculo o $nidad 9ritm6tico=L%gica .$9L/. La unidad de Hemoria +rincipal .H+/ se encarga de almacenar las instrucciones que reali#ar, la $nidad de 7ontrol al ejecutar un programa ( los datos que ser,n procesados. La $nidad de Entradas ( Salidas ser, la encargada de la comunicaci%n con el e;terior a trav6s de los perif6ricos. Estos perif6ricos pueden ser- de entrada" como los teclados5 de salida"

como los tubos de ra(os cat%dicos" ( de entrada ( salida" como los discos magn6ticos.

Pgina Anterior

Pgina Siguiente

2.1.1. $N&!A! (ENTRAL !E PR"(ES".

La 7+$ constitu(e el cerebro de una computadora digital" pues reali#a todas las operaciones aritm6ticas ( l%gicas sobre los datos ( adem,s controla todos los procesos que se desarrollan en la computadora. +or ejemplo" para que se ejecute un a instrucci%n" 6sta debe estar en el interior de la 7+$" concretamente en la $7 ( si a( que reali#ar c,lculos" interviene la $9L. Veamos como funciona cada una de ellas.

$nidad de (ontrol.

+ara reali#ar su tarea la $7 necesita conocer" por un lado" la instrucci%n (" por otro" una serie de informaciones adicionales que deber, tener en cuenta para coordinar" de forma correcta" la ejecuci%n de la instrucci%n. El resultado de la interpretaci%n de dic as informaciones son una serie de %rdenes a los diferentes elementos de la computadora. La $7 no emite todas las %rdenes a la ve#" sino siguiendo una determinada secuencia. +ara ello utili#a un elemento que le va indicando el instante en que debe ejecutar una determinada fase de la instrucci%n. 9 este elemento se le denomina 8eloj" ( se dice que sincroni#a las acciones de la $75 cuanto m,s r,pido marque el tiempo" m,s r,pida ser, la ejecuci%n de la instrucci%n. Sin embargo" a( un limite" (a que" si marca e;cesivamente r,pido" es posible que no puedan cumplir adecuadamente las %rdenes de los diferentes elementos" por lo que se producir,n errores. En la figura 2.2 se esquemati#a el conjunto de se@ales que utili#a la $7 ( las que genera. 7omo informaciones adicionales a las instrucciones podemos ver los impulsos de reloj ( los indicadores de estado. Los indicadores de estado son una serie de bits que se modifican seg&n resultados de las operaciones anteriores guardando una memoria ist%rica de los acontecimientos precedentes para que" en funci%n de dic os acontecimientos" pueda la $7 tomar decisiones.

'igura 2.2. Se@ales que intervienen en la $7.

La unidad de control esta formada" b,sicamente por un elemento que interpreta las instrucciones ( varios elementos de memoria denominados registros. $no de estos registros almacena la instrucci%n mientras el int6rprete est, traduciendo su significado" por lo que se denomina 8egistro de Anstrucci%n .8A/. El resto de las instrucciones permanecen en la memoria" esperando que les toque su turno de ejecuci%n. La $7 por otra parte deber, conocer cu,l es la direcci%n de la pr%;ima instrucci%n" para poder ir a buscarla una ve# que finali#a la ejecuci%n de la instrucci%n en curso5 direcci%n que guarda el registro llamado 7ontador de +rograma .7+/. Los indicadores de estado est,n agrupados en un registro denominado 8egistro de Estado .8E/. La Kigura 2.I muestra los elementos que acabamos de nombrar.

'igura 2.). Elementos b,sicos de la $nidad de 7ontrol.

$nidad Arit*+tico , Lgica.

La unidad 9ritm6tico = L%gica .$9L/ es la encargada de reali#ar los c,lculos. Los datos sobre los que se reali#an la operaciones se denominan operandos. 9l elemento encargado de ejecutar las operaciones se le denomina operador" ( esta formado por una serie de circuitos electr%nicos que son capaces de sumar dos n&meros binarios o acer las operaciones l%gicas elementales- dis(unci%n" conjunci%n ( negaci%n5 incluso algunos operadores son tambi6n capaces de multiplicar" dividir ( reali#ar otras operaciones mas complejas.

+ara que el operador realice la operaci%n" los operandos se llevan a la $9L ( se guardan en unos registros denominados registros de trabajo. El resultado de la operaci%n se guarda tambi6n en un registro antes de ser llevado a la memoria o a la $nidad de Entradas ( Salidas. Krecuentemente se utili#a un mismo registro para guardar uno de los operandos (" tambi6n" el resultado" denominado registro 9cumulador. El operador" adem,s de calcular el valor de la operaci%n" modifica el registro de estado seg&n el resultado de la operaci%n. 9s" si el resultado es un valor negativo" se modifica un bit de dic o registro" llamado bit negativo o bit N" poni6ndose a 15 por el contrario" el bit N permanecer, en estado ' mientras el contenido del acumulador no sea negativo. :e igual forma indicara la $9L a la $7 si el resultado a sido cero" o si a producido alg&n acarreo" etc. En la figura 2.) se muestran los elementos de la $9L ( las se@ales que intervienen.

-a. -a. $9L con tres registros- 2 para los operandos ( 1 para el resultado.

-/. -/. $9L con acumulador. 'igura 2.0. Elementos ( se@ales de la 9$L.

Pgina Anterior

Pgina Siguiente

2.1.2. $N&!A! !E %E%"R&A PR&N(&PAL.

La memoria principal esta formada por un conjunto de unidades llamadas palabras. :entro de cada una de estas palabras se guarda la informaci%n que constitu(e una instrucci%n o parte de ella .puede darse el caso de que una sola instrucci%n necesite varia palabras/" o un dato o parte de un dato .tambi6n un dato puede ocupar varias palabras/. 9 la cantidad de palabras que forman la H+ se le denomina capacidad de memoria. :e este modo" cuanto ma(or sea el numero de palabras ma(or ser, el numero de instrucciones ( datos que podr, almacenar la computadora. $na palabra esta formada a su ve# de unidades mas elementales llamadas bits" del mismo modo que en el lenguaje natural una palabra esta formada por letras. 7ada bit solo puede guardar dos valores" el valor ' o el valor 15 por eso se dice que son elementos binarios. El numero de bits que forman una palabra se llama longitud de palabra. +or regla general" las computadoras potentes tienen memorias con longitud de palabra grande" mientras que las computadoras peque@as tienen memorias con longitud de palabra menor. En la figura 2.* se muestra como se puede estar organi#ada una Hemoria +rincipal.

'igura 2.1. <rgani#aci%n de una unidad de memoria.

Las palabras forman una matri# de 1' filas ( 1' columnas. La primera palabra corresponder, con la direcci%n ''" la segunda con la '1" ( la ultima" con la DD. La capacidad de la memoria ser, de 1' L 1' M 1'' palabras. 1ambi6n se muestra la longitud de la palabra IC" que es de C bits" al igual que las dem,s" ( la informaci%n que contiene" que es el valor binario 1''11'1'. Las palabras se distinguen entre si por la posici%n que ocupan en la H+" ( se puede guardar una informaci%n ( luego recuperarla indicando el numero de dic a posici%n. 9 los n&meros que se@alan las posiciones de memoria se les da el nombre de direcciones de memoria. La acci%n de guardar una informaci%n en una palabra de la memoria se llama acceso de escritura" ( la acci%n de recuperarla" acceso de lectura. Los accesos son coordinados por la $7. La secuencia de ordenes que debe generar la $7 se indica en la tabla 2.1.

En la tabla 2.1 .a/ se muestra un acceso de escritura. <bs6rvese que la $7 debe indicar" adem,s de la posici%n donde se debe guardar el dato" el valor del dato ( las indicaciones de control que le digan a la memoria que se desea guardar el dato ( el momento en que debe iniciarse la operaci%n de escritura. Esta ultima orden la dar, la $7 cuando este segura de que los datos anteriores an llegado correctamente a la H+. :espu6s de esta ultima orden" la $7 espera un tiempo para asegurar que se a escrito la informaci%n en la H+. En la tabla 2.1 .b/ se muestra como se reali#a un acceso de lectura. En este caso" la $7 no indica el dato" puesto es precisamente lo que espera recibir. Los dem,s pasos son id6nticos a los del acceso de escritura. :esde que se inicia la secuencia asta que finali#a transcurre un tiempo" denominado tiempo de acceso" cu(a duraci%n depende de la tecnologa con que esta fabricada la H+.

Ta/la 2.1. Secuencia de acceso a la memoria.

.a/ 9cceso de escritura.

.b/ 9cceso de lectura.

Pgina Anterior

Pgina Siguiente

2.1.) $N&!A! !E ENTRA!AS 2 SAL&!AS.


3a se a visto en las secciones precedentes como funcionan la 7+$ ( la H+" pero puede decirse que es necesaria la comunicaci%n entre el interior de la computadora ( su entorno o

periferia. Esta comunicaci%n se consigue a trav6s de dispositivos de mu( diversos tipos" como son- teclados" impresoras" pantallas" discos magn6ticos" etc. Es estos dispositivos se les conoce con el nombre gen6rico de perif6ricos. En la figura 2.F se muestran algunos perif6ricos conectados a la $nidad de EGS" la cual ace de intermediaria entre los perif6ricos ( la 7+$. Las flec as indican el sentido en que flu(e la informaci%n.

'igura 2.3. La unidad de EGS ace de intermediaria entre la $7+ ( los perif6ricos.

La coordinaci%n de la comunicaci%n entre los perif6ricos ( la 7+$ la reali#a la $nidad de EGS. <bs6rvese que esta no es un perif6rico sino un dispositivo que gestiona a los perif6ricos siguiendo las ordenes de la 7+$5 es decir" la $nidad de EGS recibe de la $nidad de 7ontrol informaci%n sobre el tipo de transferencia de datos que debe reali#ar .si es de entrada o de salida/ ( perif6rico que debe de utili#ar5 si es de salida recibir, tambi6n el dato que debe enviar ( el momento de la operaci%n.

Entonces" la $nidad de EGS seleccionara el perif6rico ( ejecutara la operaci%n teniendo en cuanta las caractersticas propias de cada perif6rico. $na ve# ejecutada la orden avisara a la $7 de la terminaci%n de la transferencia. 7ada perif6rico o parte de un perif6rico tendr, asignado un numero o direcci%n que servir, para identificarlo. 7uando la $7 quiera seleccionarlo enviara dic o numero a la $nidad de EGS. +ara solucionar el problema de la imposibilidad de saber cuanto tiempo durara una transferencia de informaci%n con un perif6rico se an desarrollado diversas t6cnicas de comunicaci%n entre la 7+$ ( los perif6ricos. Lo mas sencillo es que la 7+$" cuando desee acer una transferencia de informaci%n con un perif6rico" pregunte a la $nidad de EGS si dic o perif6rico se encuentra disponible. Si no lo esta" debe repetir la pregunta una ( otra ve# asta obtener una respuesta afirmativa" en cu(o caso se inicia la transferencia de informaci%n. Si se desea obtener ma(or rendimiento del ordenador" se puede emplear otro m6todo que se denomina sincroni#aci%n mediante interrupci%n. La caracterstica de este m6todo es que la 7+$" en lugar de dedicarse a preguntar a la $nidad de EGS por el perif6rico que desea utili#ar" lo que ace es indicar a la $nidad de EGS que desea acer una transferencia con el perif6rico" ( seguidamente" si no esta el perif6rico preparado" empie#a otra tarea" olvid,ndose moment,neamente del perif6rico. 7uando este preparado" la $nidad de EGS indicara a la 7+$ que puede reali#arse la transferencia5 entonces" la 7+$ interrumpir, la tarea que esta reali#ando ( atender, al perif6rico. :e esta forma" la 7+$ no pierde tiempo esperando al perif6rico.

Pgina Anterior

Pgina Siguiente

2.1.0. &NTER("NE4&"N !E LAS $N&!A!ES '$N(&"NALES.


En los apartados anteriores emos visto las funciones que reali#a cada unidad de la computadora" ( que se deben de comunicar entre ellas para pasarse informaci%n. Estas

informaciones se transmiten en forma de se@ales el6ctricas (" por tanto" circulan a trav6s de conductores el6ctricos. 3a sabemos que en un sistema digital las informaciones se encuentran codificadas en binario formando grupos de bits. 7ada bit de uno de estos grupos se suele enviar de una unidad a otra por un conductor diferente al del resto de los bits. :e esta forma" si el grupo esta constituido por C bits" ser,n necesarios C conductores5 si lo forman 1F bits" se emplearan 1F conductores5 etc. Se ace as para a orrar tiempo" (a que circulan todos los bits de un mismo grupo a la ve#" cada uno por su conductor. 9 esta forma de enviar los datos se denomina transmisi%n en paralelo. 7uando la 7+$ quiere leer o escribir en una determinada posici%n de memoria" enviara la direcci%n" en paralelo" a la memoria por un conjunto de conductores el6ctricos al que se denomina bus de direcciones" (a que se utili#a e;clusivamente para enviar direcciones. 9s mismo" los datos ledos o los que se quieren escribir se trasladan mediante un conjunto de conductores el6ctricos denominado bus de datos. Las ordenes de la 7+$ a la H+ ( las respuestas de la H+ a la 7+$ son enviadas por un tercer conjunto de conductores llamado bus de control. En la figura 2.E se muestran las cone;iones de la 7+$ con la H+. Se an dibujado en la figura 2.E .a/ todos los conductores el6ctricos suponiendo que se emplean C ilos para el bus de datos" 1F para el de direcciones ( I para el de control. En la practica no se dibujan todos los ilos para simplificar las figuras ( se ace como en las figuras 2.E .b/ ( 2.E .c/.

.b/ Andicando sobre una lnea el n&mero de conductores.

.a/ 8epresentando todos los ilos. .c/ Andicando el sentido de las informaciones.

'igura 2.5. Antercone;iones entre la $7+ ( la H+. E;isten varias formas de interconectar las unidades funcionales de la computadora entre si. $na de ellas emplea un &nico conjunto de buses" como puede apreciarse en la figura 2.C .a/" al que se conectan todas las unidades. Esto obliga a que" en un determinado instante" solo dos unidades puedan estar aciendo uso del mismo5 si a( que enviar algo a la tercera unidad" se deber, esperar a que quede libre. La principal ventaja de este sistema de intercone;i%n es su bajo costo" ( la principal desventaja" su ma(or lentitud. 9dem,s" si se emplea el mismo bus de direcciones para indicar la de un perif6rico ( la de una posici%n de memoria" no podr, coincidir el numero de ning&n perif6rico con ninguna direcci%n de memoria5 si as lo icieran" se producir,n errores al seleccionarse a la ve# el perif6rico ( la posici%n de memoria. +or lo tanto" se tendr, cuidado en asignar a los perif6ricos direcciones que no coincidan con las de la H+. En estos casos se dice que los perif6ricos est,n mapeados en memoria" (a que la 7+$ no distingue entre las transferencias a perif6ricos ( a H+. <tra forma de interconectar las unidades de la computadora consiste en emplear conjuntos de buses diferentes para la $nidad de EGS ( la H+. :e esta forma" aunque se encarece el sistema" se gana en velocidad ( se pueden emplear direcciones iguales para nombrar perif6ricos ( a posiciones de memoria. La 7+$" si quiere seleccionar un perif6rico" utili#a el bus de la $nidad de EGS" ( si quiere seleccionar una posici%n de memoria" utili#a el bus de memoria. En este caso se dice que los perif6ricos no est,n mapeados en memoria. En la figura 2.C .b/ se muestra una posible cone;i%n con el bus m&ltiple.

.a/ Empleando un solo conjunto de buses.

.b/ Empleando dos conjuntos de buses diferentes. 'igura 2.6. Kormas de intercone;i%n.

Pgina Anterior

Pgina Siguiente

2.2. RE#&STR"S &NTERN"S !EL PR"(ESA!"R.


Los registros del procesador se emplean para controlar instrucciones en ejecuci%n" manejar direccionamiento de memoria ( proporcionar capacidad aritm6tica. Los registros son direccionables por medio de un nombre. Los bits por convenci%n" se numeran de derec a a i#quierda" como en... 1* 1) 1I 12 11 1' D C E F * ) I 2 1 ' Registros de seg*ento $n registro de segmento tiene 1F bits de longitud ( facilita un ,rea de memoria para direccionamiento conocida como el segmento actual.

Registro (S. El :<S almacena la direcci%n inicial del segmento de c%digo de un programa en el registro 7S. Esta direcci%n de segmento" mas un valor de despla#amiento en el registro apuntador de instrucci%n .A+/" indica la direcci%n de una instrucci%n que es buscada para su ejecuci%n. Registro !S. La direcci%n inicial de un segmento de datos de programa es almacenada en el registro :S. En t6rminos sencillos" esta direcci%n" mas un valor de despla#amiento en una instrucci%n" genera una referencia a la localidad de un b(te especifico en el segmento de datos. Registro SS. El registro SS permite la colocaci%n en memoria de una pila" para almacenamiento temporal de direcciones ( datos. El :<S almacena la direcci%n de inicio del segmento de pila de un programa en le registro SS. Esta direcci%n de segmento" mas un valor de despla#amiento en el registro del apuntador de pila .S+/" indica la palabra actual en la pila que esta siendo direccionada. Registros ES. 9lguna operaciones con cadenas de caracteres .datos de caracteres/ utili#an el registro e;tra de segmento para manejar el direccionamiento de memoria. En este conte;to" el registro ES esta asociado con el registro :A .ndice/. $n programa que requiere el uso del registro ES puede iniciali#arlo con una direcci%n de segmento apropiada. Registros 'S 7 #S. Son registros e;tra de segmento en los procesadores C'ICF ( posteriores.

Registros de 8ro8sito general. Los registros de prop%sito general 92" B2" 72 ( :2 son los caballos de batalla del sistema. Son &nicos en el sentido de que se puede direccionarlos como una palabra o como una parte de un b(te. El ultimo b(te de la i#quierda es la parte BaltaB" ( el ultimo b(te de la derec a es la parte BbajaB. +or ejemplo" el registro 72 consta de una parte 7? .alta/ ( una parte 7l .baja/" ( usted puede referirse a cualquier parte por su nombre. Registro A4. El registro 92" el acumulador principal" es utili#ado para operaciones que implican entradaGsalida ( la ma(or parte de la aritm6tica. +or ejemplo" las instrucciones para multiplicar " dividir ( traducir suponen el uso del 92. 1ambi6n" algunas operaciones generan c%digo mas eficiente si se refieren al 92 en lugar de a los otros registros.

Registro B4. El B2 es conocido como el registro base (a que es el &nico registro de prop%sito general que puede ser ndice para direccionamiento inde;ado. 1ambi6n es com&n emplear el B2 para c,lculos.

Registro !4. El :2 es conocido como l registro de datos. 9lguna operaciones de entradaGsalida requieren uso" ( las operaciones de multiplicaci%n ( divisi%n con cifras grandes suponen al :2 ( al 92 trabajando juntos.

+ude usar los registros de prop%sito general para suma ( resta de cifras de C" 1F o I2 bits.

Registro de A8untador de &nstrucciones. El registro apuntador de instrucciones .A+/ de 1F bits contiene el despla#amiento de direcci%n de la siguiente instrucci%n que se ejecuta. El A+ esta asociado con el registro 7S en el sentido de que el A+ indica la instrucci%n actual dentro del segmento de c%digo que se esta ejecutando actualmente. Los procesadores C'ICF ( posteriores tienen un A+ ampliado de I2 bits" llamado EA+. En el ejemplo siguiente" el registro 7S contiene 2*9)N'O? ( el A+ contiene )12?. +ara encontrar la siguiente instrucci%n que ser, ejecutada" el procesador combina las direcciones en el 7S ( el A+Segmento de direcci%n en el registro 7S:espla#amiento de direcci%n en el registro A+:irecci%n de la siguiente instrucci%n2*9)'? P )12? 2*E*2?

Registros A8untadores.

Los registros S+ .apuntador de la pila/ 3 B+ .apuntador de base/ est,n asociados con el registro SS ( permiten al sistema accesar datos en el segmento de la pila. Registro SP. El apuntador de la pila de 1F bits esta asociado con el registro SS ( proporciona un valor de despla#amiento que se refiere a la palabra actual que esta siendo procesada en la pila. Los procesadores C'ICF ( posteriores tienen un apuntador de pila de I2 bits" el registro ES+. El sistema maneja de forma autom,tica estos registros. En el ejemplo siguiente" el registro SS contiene la direcci%n de segmento 2EBIN'O? ( el S+ el despla#amiento I12?. +ara encontrar la palabra actual que esta siendo procesada en la pila" la computadora combina las direcciones en el SS ( el S+-

Registro BP. El B+ de 1F bits facilita la referencia de par,metros" los cuales son datos ( direcciones transmitidos va pila. Los procesadores C'ICF ( posteriores tienen un B+ ampliado de I2 bits llamado el registro EB+.

Registros &ndice. Los registros SA ( :A est,n disponibles para direccionamiento inde;ado ( para sumas ( restas. Registro S&. El registro ndice fuente de 1F bits es requerido por algunas operaciones con cadenas .de caracteres/. En este conte;to" el SA esta asociado con el registro :S. Los procesadores C'ICF ( posteriores permiten el uso de un registro ampliado de I2 bits" el ESA. Registro !&. El registro ndice destino tambi6n es requerido por algunas operaciones con cadenas de caracteres. En este conte;to" el :A esta asociado con el registro ES. Los procesadores C'ICF ( posteriores permiten el uso de un registro ampliado de I2 bits" el E:A.

Registro de Banderas. :e los 1F bits del registro de banderas" nueve son comunes a toda la familia de procesadores C'CF" ( sirven para indicar el estado actual de la maquina ( el resultado del procesamiento. Huc as instrucciones que piden comparaciones ( aritm6tica cambian el estado de las banderas" algunas cu(as instrucciones pueden reali#ar pruebas para determinar la acci%n subsecuente. En resumen" los bits de las banderas comunes son como sigue"' -"ver9lo:; des/orda*iento.. Andica desbordamiento de un bit de orden alto .mas a la i#quierda/ despu6s de una operaci%n aritm6tica. !' -direccin.. :esigna la direcci%n acia la i#quierda o acia la derec a para mover o comparar cadenas de caracteres. &' -interru8cin.. Andica que una interrupci%n e;terna" como la entrada desde el teclado" sea procesada o ignorada. T' -tra*8a.. +ermite la operaci%n del procesador en modo de un paso. Los programas depuradores" como el :EB$Q" activan esta bandera de manera que usted pueda avan#ar en la ejecuci%n de una sola instrucci%n a un tiempo" para e;aminar el efecto de esa instrucci%n sobre los registros de memoria. S' -signo.. 7ontiene el signo resultante de una operaci%n aritm6tica .' M positivo ( 1 M negativo/. <' -cero.. Andica el resultado de una operaci%n aritm6tica o de comparaci%n .' M resultado diferente de cero ( 1 M resultado igual a cero/. A' -acarreo au=iliar.. 7ontiene un acarreo e;terno del bit I en un dato de C bits para aritm6tica especiali#ada. P' -8aridad.. Andica paridad par o impar de una operaci%n en datos de C bits de bajo orden .mas a la derec a/. (' -acarreo.. 7ontiene el acarreo de orden mas alto .mas a la i#quierda/ despu6s de una operaci%n aritm6tica5 tambi6n lleva el contenido del ultimo bit en una operaci%n de corrimiento o de rotaci%n. Las banderas est,n en el registro de banderas en las siguientes posiciones-

Las banderas mas importantes para la programaci%n en ensamblador son <" S" R ( 7" para operaciones de comparaci%n ( aritm6ticas" ( : para operaciones de cadenas de caracteres. Los procesadores C'2CF ( posteriores tienen algunas banderas usadas para prop%sitos internos" en especial las que afectan al modo protegido. Los procesadores C'2CF ( posteriores tienen un registro e;tendido de banderas conocido como Eflags.

Pgina Anterior

Pgina Siguiente

UNIDAD III
LA MEMORIA PRINCIPAL
3.1. Se#mento. 3.2. $espla%amiento. 3.3. M&todos de $ireccionamiento.

Regresar a la Portada

Autoevaluacin

).1. SE#%ENT".
$n segmento es un ,rea especial en un programa que inicia en un limite de un p,rrafo" esto es" en una localidad de regularmente divisible entre 1F" o 1' e;adecimal. 9unque un segmento puede estar ubicado casi en cualquier lugar de la memoria (" en modo real" puede ser asta de F)S" solo necesita tanto espacio como el programa requiera para su ejecuci%n. $n segmento en modo real puede ser de asta F)S. Se puede tener cualquier numero de segmentos5 para direccionar un segmento en particular basta cambiar la direcci%n en el registro del segmento apropiado. Los tres segmentos principales son los segmentos de c%digo" de datos ( de la pila.

Seg*ento de cdigo.

El segmento de c%digo .7S/ contiene las instrucciones de maquina que son ejecutadas por lo com&n la primera instrucci%n ejecutable esta en el inicio del segmento" ( el sistema operativo enla#a a esa localidad para iniciar la ejecuci%n del programa. 7omo su nombre indica" el registro del 7S direcciona el segmento de c%digo. Si su ,rea de c%digo requiere mas de F)S" su programa puede necesitar definir mas de un segmento de c%digo.

Seg*ento de datos.

El segmento de datos .:S/ contiene datos" constantes ( ,reas de trabajo definidos por el programa. El registro :S direcciona el segmento de datos. Si su ,rea de datos requiere mas de F)S" su programa puede necesitar definir mas de un segmento de datos.

Seg*ento de 8ila.

En t6rminos sencillos" la pila contiene los datos ( direcciones que usted necesita guardar temporalmente o para uso de sus BllamadasB subrutinas. El registro de segmento de la pila .SS/ direcciona el segmento de la pila. L&%&TES !E L"S SE#%ENT"S. Los registros de segmentos contienen la direcci%n inicial de cada segmento. La figura I.1 presenta un esquema de los registros 7S" :S ( SS5 los registros ( segmentos no necesariamente est,n en el orden mostrado. <tros registros de segmentos son el ES .segmento e;tra/ (" en los procesadores C'ICF ( posteriores" los registros KS ( QS" que contienen usos especiali#ados. 7oma (a dijimos" un segmento inicia en un limite de p,rrafo" que es una direcci%n por lo com&n divisible entre el 1F decimal o 1' e;adecimal. Suponga que un segmento de datos inicia en la localidad de memoria ')*K'?. 3a que en este ( todos los dem,s casos el ultimo dgito e;adecimal de la derec a es cero" los dise@adores de computadora decidieron que seria innecesario almacenar el dgito cero en el registro del segmento. 9s" ')*K'? se almacena como ')*K" con el cero de la e;trema derec a sobrentendido. En donde sea apropiado" el te;to indica al cero de la derec a con corc etes" como ')*KN'O.

'igura ).1. Segmentos ( registros.

Pgina Anterior

Pgina Siguiente

).2. !ESPLA<A%&ENT".
En un programa" todas la localidades de memoria est,n referidas a una direcci%n inicial de segmento. La distancia en b(tes desde la direcci%n del segmento se define como el despla#amiento .offset/. $n despla#amiento de dos b(tes .1F bits/ puede estar en el rango de ''''? asta KKKK?" o bien" desde cero asta F*" *I*. 9s el primer b(te del segmento de c%digo tiene un despla#amiento ''" el segundo b(te tiene un despla#amiento '1" etc. asta el despla#amiento F*" *I*. +ara referir cualquier direcci%n de memoria en un segmento" el procesador combina la direcci%n del segmento en un registro de segmento con un valor de despla#amiento. En el ejemplo siguiente" el registro :S contiene la direcci%n de segmento del segmento de datos en ')*KN'O? ( una instrucci%n ace referencia a una localidad con un despla#amiento de ''I2? b(tes dentro del segmento de datos.

+or lo tanto" la localidad real de memoria del b(te referido por la instrucci%n es ')F22?5 :irecci%n del segmento :S- ')*K'? :espla#amientoP''I2? :irecci%n real')F22? Note que un programa tiene uno o mas segmentos" los cuales pueden iniciar casi en cualquier lugar de memoria" variar en tama@o ( estar en cualquier orden.

Pgina Anterior

Pgina Siguiente

).). %ET"!"S !E !&RE((&"NA%&ENT".


El campo de operaci%n de una instrucci%n especifica la operaci%n que se va a ejecutar. Esta operaci%n debe reali#arse sobre algunos datos almacenados en registros de computadora o en palabras de memoria. La manera en que eligen los operandos durante la ejecuci%n del programa depende del modo de direccionamiento de la instrucci%n. El modo de direccionamiento especifica una regla para interpretar o modificar el campo de direcci%n de la instrucci%n antes de que se aga la referencia real al operando. Las computadoras utili#an t6cnicas de modo de direccionamiento para acomodar una o las dos siguientes consideraciones1.= +roporcionar al usuario versatilidad de programaci%n al ofrecer facilidades como apuntadores a memoria" contadores para control de ciclo" inde;aci%n de datos ( reubicaci%n de datos. 2.= 8educir la cantidad de bits en el campo de direccionamiento de la instrucci%n. La disponibilidad de los modos de direccionamiento proporciona al programador con e;periencia en lenguaje ensamblador la fle;ibilidad para escribir programas mas eficientes en relaci%n con la cantidad de instrucciones ( el tiempo de ejecuci%n. +ara comprender los diferentes modos de direccionamiento que se presentaran en esta secci%n" es imperativo entender el ciclo de operaci%n b,sico de la computadora. La unidad de control de una computadora esta dise@ada para recorrer un ciclo de instrucciones que se divide en tres fases principales1. B&squeda de la instrucci%n de la memoria. 2. :ecodificar la instrucci%n. I. Ejecutar la instrucci%n.

?a( un registro en la computadora llamado contador de programa o +7" que lleva un registro de las instrucciones del programa almacenado en la memoria. +c contiene la direcci%n de la siguiente instrucci%n que se va a ejecutar ( se incrementa cada ve# que se recupera una instrucci%n de la memoria. La decodificaci%n reali#ada en el paso 2 determina la operaci%n que se va a ejecutar" el modo de direccionamiento de la instrucci%n ( la posici%n de los operandos. :espu6s la computadora ejecuta la instrucci%n ( regresa al paso 1 para acer la b&squeda de la siguiente instrucci%n en secuencia. En algunas computadoras el modo de direccionamiento de la instrucci%n se especifica con un c%digo binario distinto" como se ace con el c%digo de operaci%n. <tras computadoras utili#an un c%digo binario &nico que representa la operaci%n ( el modo de la instrucci%n. +ueden definirse instrucciones con diversos modos de direccionamiento (" en ocasiones" se combinan dos o mas modos de direccionamiento en una instrucci%n. 9unque la ma(ora de los modos de direccionamiento modifican el campo de direcci%n de la instrucci%n" a( dos modos que no necesitan el campo de direcci%n. Son los modos implcito e inmediato. %"!" &%PL&(&T". En este modo se especifican los operandos en forma implcita en la definici%n de la instrucci%n. +or ejemplo" la instrucci%n Bcomplementar acumuladorB es una instrucci%n de modo implcito porque el operando en el registro de acumulador esta implcito en la definici%n de la instrucci%n. :e ec o todas las instrucciones de referencia a registro que utili#an un acumulador son instrucciones de modo implcito. Las instrucciones de direcci%n cero en una computadora organi#ada con pila son instrucciones de modo implcito porque esta implcito que los operandos est,n en la parte superior de la pila. %"!" &N%E!&AT". En este modo se especifica el operando en la instrucci%n misma. En otras palabras" una instrucci%n de modo inmediato tiene un campo operando" en lugar de una campo de direcci%n. $n campo de operando contiene el operando real que se va a usar junto con la operaci%n especificada en la instrucci%n. Las instrucciones de modo inmediato son &tiles para iniciali#ar registros en un valor constante. Se menciono antes que el campo de direcci%n de una instrucci%n puede especificar una palabra de memoria o un registro de procesador. 7uando el campo de direcci%n especifica un registro de procesador se dice que la instrucci%n esta en modo de registro. %"!" !E RE#&STR".

En este modo" los operandos est,n en registros que residen dentro de la 7+$. Se selecciona el registro particular de un campo de registro en la instrucci%n. $n campo J bits puede especificar cualquiera de 2 a la J registros. %"!" &N!&RE(T" P"R RE#&STR". En este modo la instrucci%n especifica un registro en la 7+$ cu(o contenido proporciona la direcci%n del operando en la memoria. En otras palabras" el registro seleccionado contiene la direcci%n del operando en lugar del operando mismo. 9ntes de utili#ar una instrucci%n de modo indirecto por registro" el programador debe asegurarse de que la direcci%n de memoria del operando esta colocada en el registro del procesador con una instrucci%n previa. Entonces una referencia al registro es equivalente a especificar una direcci%n de memoria. La ventaja de una instrucci%n de modo de registro indirecto es que el campo de direcci%n de la instrucci%n utili#a menos bits para seleccionar un registro de los que necesitara para especificar una direcci%n de memoria en forma directa. %"!" !E !&RE((&"NA%&ENT" !&RE(T". En este modo la direcci%n efectiva es igual a la parte de direcci%n de la instrucci%n. El operando reside en memoria ( su direcci%n la proporciona en forma directa el campo de direcci%n de la instrucci%n. En una instrucci%n de tipo brinco el campo de direcci%n especifica la direcci%n de transferencia de control del programa real. %"!" !E !&RE((&"NA%&ENT" &N!&RE(T". En este modo" el campo de direcci%n de la instrucci%n proporciona la direcci%n en que se almacena la direcci%n efectiva en la memoria. El control recupera la instrucci%n de la memoria ( utili#a su parte de direcci%n para accesar la memoria una ve# mas con el fin de leer la direcci%n efectiva. $nos cuantos modos de direccionamiento requieren que el campo de direcci%n de la instrucci%n se sume al contenido de un registro especifico en la 7+$. En estos modos la direcci%n efectiva se obtiene del calculo siguiente:irecci%n efectiva M +arte de la instrucci%n P El contenido de registro 7+$. EL registro de 7+$ utili#ado en el calculo puede ser el contador de programa" un registro de ndice o un registro base. En cualquier caso tenemos un modo de direccionamiento diferente que se utili#a para una aplicaci%n distinta. %"!" !E !&RE((&"NA%&ENT" &N!E4A!". En este modo el contenido de un registro ndice se suma a la parte de direcci%n de la instrucci%n para obtener la direcci%n efectiva. El registro ndice es un registro 7+$ especial que contiene un valor ndice. $n campo de direcci%n de la instrucci%n define la direcci%n

inicial del arreglo de datos en la memoria. 7ada operando del arreglo se almacena en la memoria en relaci%n con la direcci%n inicial. La distancia entre la direcci%n inicial ( la direcci%n del operando es el valor del ndice almacenado en el registro de ndice. 7ualquier operando en el arreglo puede accesarse con la misma instrucci%n siempre ( cuando el registro ndice contenga el valor de ndice correcto. El registro ndice puede incrementarse para facilitar el acceso a operandos consecutivos. N%tese que si una instrucci%n de tipo ndice no inclu(e un campo de direcci%n en su formato" la instrucci%n se convierte al modo de operaci%n de indirecto por registro. 9lgunas computadoras dedican un registro de 7+$ para que funcione e;clusivamente como un registro ndice. :e manera implcita este registro participa cuando se utili#a una instrucci%n de modo ndice. En las computadoras con muc os registros de procesador" cualquiera de los registros de la 7+$ pueden contener el numero de ndice. En tal caso" el registro debe estar especificado en forma e;plcita en una campo de registro dentro del formato de instrucci%n. %"!" !E !&RE((&"NA%&ENT" !E RE#&STR" BASE. En este modo" el contenido de un registro base se suma a la parte de direcci%n de la instrucci%n para obtener la direcci%n efectiva. Esto es similar al modo de direccionamiento inde;ado" e;cepto en que el registro se denomina a ora registro base" en lugar de registro ndice. La diferencia entre los dos modos esta en la manera en que se usan mas que en la manera en que se calculan. Se considera que un registro base contiene una direcci%n base ( que el campo de direcci%n de la instrucci%n proporciona un despla#amiento en relaci%n con esta direcci%n base. El modo de direccionamiento de registro base se utili#a en las computadoras para facilitar la locali#aci%n de los programas en memoria.

Pgina Anterior

Pgina Siguiente

UNIDAD IV
INTRODUCCION A LOS SERVICIOS DE INTERRUPCION
4.1. Concepto de Interrupci!n. 4.2. 'a(la de Ser)icios de Interrupci!n. 4.3. E)entos de una Interrupci!n. 4.*. Interrupci!n de BI+S. 4.,. Interrupci!n de $+S.

Regresar a la Portada

Autoevaluacin

0.1. ("N(EPT" !E &NTERR$P(&"N.


$na interrupci%n es una operaci%n que suspende la ejecuci%n de un programa de modo que el sistema pueda reali#ar una acci%n especial. La rutina de interrupci%n ejecuta ( por lo regular regresa el control al procedimiento que fue interrumpido" el cual entonces reasume su ejecuci%n.

Pgina Anterior

Pgina Siguiente

0.2. TABLA !E SERV&(&" !E &NTERR$P(&"N.


7uando la computadora se enciende" el BA<S ( el :<S establecen una tabla de servicios de interrupci%n en las localidades de memoria '''?=IKK?. La tabla permite el uso de 2*F .1''?/ interrupciones" cada una con un despla#amiento-segmento relativo de cuatro b(tes en la forma A+-7S. El operando de una instrucci%n de interrupci%n como AN1 '*? identifica el tipo de solicitud. 7omo e;isten 2*F entradas" cada una de cuatro b(tes" la tabla ocupa los primeros 1" '2) b(tes de memoria" desde '''? asta IKK?. 7ada direcci%n en la tabla relaciona a una ruina de BA<S o del :<S para un tipo especifico de interrupci%n. +or lo tanto los b(tes '=I contienen la direcci%n para la interrupci%n '" los b(tes )=E para la interrupci%n 1" ( as sucesivamente-

Pgina Anterior

Pgina Siguiente

0.). EVENT"S !E $NA &NTERR$P(&"N.


$na interrupci%n guarda en la pila el contenido del registro de banderas" el 7S" ( el A+. por ejemplo" la direcci%n en la tabla de AN1 '*? .que imprime la que se encuentra en la pantalla cuando el usuario presiona 7trl P +rtS7/ es ''1)? .'*? ; ) M 1)?/. La operaci%n e;trae la direcci%n de cuatro b(tes de la posici%n ''1)? ( almacena dos b(tes en el A+ ( dos en el 7S. La direcci%n 7S-A+ entonces apunta al inicio de la rutina en el ,rea del BA<S" que a ora se ejecuta. La interrupci%n regresa va una instrucci%n A8E1 .regreso de interrupci%n/" que saca de la pila el A+" 7S ( las banderas ( regresa el control a la instrucci%n que sigue al AN1.

Pgina Anterior

Pgina Siguiente

0.0. T&P"S !E &NTERR$P(&"NES.


Las interrupciones se dividen en dos tipos las cuales son- E;ternas ( Anternas. $na interrupci%n e;terna es provocada por un dispositivo e;terno al procesador. Las dos lneas que pueden se@alar interrupciones e;ternas son la lnea de interrupci%n no enmascarable .NHA/ ( la lnea de petici%n de interrupci%n .AN18/. La lnea NHA reporta la memoria ( errores de paridad de EGS. El procesador siempre act&a sobre esta interrupci%n" aun si emite un 7LA para limpiar la bandera de interrupci%n en un intento por des abilitar las interrupciones e;ternas. La lnea AN18 reporta las peticiones desde los dispositivos e;ternos" en realidad" las interrupciones '*? a la 'K?" para cronometro" el teclado" los puertos seriales" el disco duro" las unidades de disco fle;ibles ( los puertos paralelos. $na interrupci%n interna ocurre como resultado de la ejecuci%n de una instrucci%n AN1 o una operaci%n de divisi%n que cause desbordamiento" ejecuci%n en modo de un paso o una petici%n para una interrupci%n e;terna" tal como EGS de disco. Los programas por lo com&n utili#an interrupciones internas" que no son enmascarables" para accesar los procedimientos del BA<S ( del :<S.

Pgina Anterior

Pgina Siguiente

0.1. &NTERR$P(&"N !E B&"S.


El BA<S contiene un e;tenso conjunto de rutinas de entradaGsalida ( tablas que indican el estado de los dispositivos del sistema. El dos ( los programas usuarios pueden solicitar rutinas del BA<S para la comunicaci%n con los dispositivos conectados al sistema. El m6todo para reali#ar la interfa# con el BA<S es el de las interrupciones de soft!are. 9 continuaci%n se listan algunas interrupciones del BA<S. &NT >>?@ :ivisi%n entre cero. Llamada por un intento de dividir entre cero. Huestra un mensaje ( por lo regular se cae el sistema. &NT >1?@ $n solo paso. $sado por :EB$Q ( otros depuradores para permitir avan#ar por paso a trav6s de la ejecuci%n de un programa. &NT >2?@ Anterrupci%n no enmascarare. $sada para condiciones graves de ard!are" tal como errores de paridad" que siempre est,n abilitados. +or lo tanto un programa que emite una instrucci%n 7LA .limpiar interrupciones/ no afecta estas condiciones. &NT >)?@ +unto de ruptura. $sado por depuraci%n de programas para detener la ejecuci%n. &NT >0?@ :esbordamiento. +uede ser causado por una operaci%n aritm6tica" aunque por lo regular no reali#a acci%n alguna. &NT >1?@ Amprime pantalla. ?ace que el contenido de la pantalla se imprima. Emita la AN1 '*? para activar la interrupci%n internamente" ( presione las teclas 7ltr P +rtS7 para activarla e;ternamente. La operaci%n permite interrupciones ( guarda la posici%n del cursor. &NT >6?@ Sistema del cronometro. $na interrupci%n de ard!are que actuali#a la ora del sistema ( .si es necesario/ la fec a. $n c ip tempori#ador programable genera una interrupci%n cada *).D2*) milisegundos" casi 1C.2 veces por segundo. &NT >A?@ Anterrupci%n del teclado. +rovocada por presionar o soltar una tecla en el teclado. &NT "B?; &NT "(?@ 7ontrol de dispositivo serial. 7ontrola los puertos 7<H1 ( 7<H2" respectivamente. &NT >!?; &NT "'?@ 7ontrol de dispositivo paralelo. 7ontrola los puertos L+11 ( L+12" respectivamente. &NT >E?@ 7ontrol de disco fle;ible. Se@ala actividad de disco fle;ible" como la terminaci%n de una operaci%n de EGS. &NT 1>?@ :espliegue en vdeo. 9cepta el numero de funciones en el 9? para el modo de pantalla" colocaci%n del cursor" recorrido ( despliegue.

&NT 11?@ :eterminaci%n del equipo. :etermina los dispositivos opcionales en el sistema ( regresa el valor en la localidad )'-1'? del BA<S al 92. .9 la ora de encender el equipo" el sistema ejecuta esta operaci%n ( almacena el 92 en la localidad )'-1'?/. &NT 12?@ :eterminaci%n del tama@o de la memoria. En el 92" regresa el tama@o de la memoria de la tarjeta del sistema" en t6rminos de Jilob(tes contiguos. &NT 1)?@ EntradaGsalida de disco. 9cepta varias funciones en el 9? para el estado del disco" sectores ledos" sectores escritos" verificaci%n" formato ( obtener diagnostico.

Pgina Anterior

Pgina Siguiente

0.3. &NTERR$P(&"N !EL !"S.

Los dos m%dulos del :<S" A<.S3S ( HS:<S.S3S" facilitan el uso del BA<S. 3a que proporcionan muc as de las pruebas adicionales necesarias" las operaciones del :<S por lo general son mas f,ciles de usar que sus contrapartes del BA<S ( por lo com&n son independientes de la maquina. &".S2S es una interfa# de nivel bajo con el BA<S que facilita la lectura de datos desde la memoria acia dispositivos e;ternos. %S!"S.S2S contiene un administrador de arc ivos ( proporciona varios servicios. +or ejemplo" cuando un programa usuario solicita la AN1 21?" la operaci%n enva informaci%n al HS:<S.S3S por medio del contenido de los registros. +ara completar la petici%n" HS:<S.S3S puede traducir la informaci%n a una o mas llamadas a A<.S3S" el cual a su ve# llama al BA<S. Las siguientes son las relaciones implcitas-

&NTER$P(&"NES !EL !"S. Las interrupciones desde la 2'? asta la IK? est,n reservadas para operaciones del :<S. 9 continuaci%n se mencionan algunas de ellas. &NT 2>?@ 1ermina programa. Kinali#a la ejecuci%n de un programa .7<H" restaura las direcciones para 7ltr P BreaJ ( errores crticos" limpia los bufer de registros ( regresa el control al :<S. Esta funci%n por lo regular seria colocada en el procedimiento principal ( al salir de el" 7S contendra la direcci%n del +S+. La terminaci%n preferida es por medio de la funci%n )7? de la AN1 21?. &NT 21?@ +etici%n de funci%n al :<S. La principal operaci%n del :<S necesita una funci%n en el 9?. &NT 22?@ :irecci%n de terminaci%n. 7opia la direcci%n de esta interrupci%n en el +S+ del programa .en el despla#amiento '9?/ cuando el :<S carga un programa para ejecuci%n. 9 la terminaci%n del programa" el :<S transfiere el control a la direcci%n de la interrupci%n. Sus programas no deben de emitir esta interrupci%n. &NT 2)?@ :irecci%n de 7ltr P BreaJ. :ise@ada para transferir el control a una rutina del :<S .por medio del +S+ despla#amiento 'E?/ cuando usted presiona 7tlt P BreaJ o 7tlr P c. La

rutina finali#a la ejecuci%n de un programa o de un arc ivo de procesamiento por lotes. Sus programas no deben de emitir esta interrupci%n. &NT 20?@ Hanejador de error critico. $sada por el dos para transferir el control .por medio del +S+ despla#amiento 12?/ cuando reconoce un error critico .a veces una operaci%n de disco o de la impresora/.Sus programas no deben de emitir esta interrupci%n. &NT 21?@ Lectura absoluta de disco. Lee el contenido de uno o mas sectores de disco. &NT 23?@ Escritura absoluta de disco. Escribe informaci%n desde la memoria a uno o mas sectores de disco. &NT 25?@ 1ermina pero permanece residente .reside en memoria/. ?ace que un programa .7<H al salir permane#ca residente en memoria. &NT 2'?@ Anterrupci%n de multiple;ion. Amplica la comunicaci%n entre programas" como la comunicaci%n del estado de un spooler de la impresora" la presencia de un controlador de dispositivo o un comando del :<S tal como 9SSAQN o 9++EN:. &NT ))?@ Hanejador del rat%n. +roporciona servicios para el manejo del rat%n.

Pgina Anterior

Pgina Siguiente

UNIDAD V
ESTRUCTURA DE UN PROGRAMA EN LENGUAJE ENSAMBLADOR
*.1. Elementos Bsicos. *.2. $irecti)as de Se#mento.

Regresar a la Portada

Autoevaluacin

1.1.ELE%ENT"S BAS&("S.

("%ENTAR&"S EN LEN#$A E ENSA%BLA!"R.

El uso de comentarios a lo largo de un programa puede mejorar su claridad" en especial en lenguaje ensamblador" donde el prop%sito de un conjunto de instrucciones con frecuencia no es claro. $n comentario empie#a con punto ( coma .5/ (" en donde quiera que lo codifique" el ensamblador supone que todos los caracteres a la derec a de esa lnea son comentarios. $n comentario puede contener cualquier car,cter imprimible" inclu(endo el espacio en blanco. $n comentario puede aparecer solo en una lnea o a continuaci%n de una instrucci%n en la misma lnea" como lo muestran los dos ejemplos siguientes1. 5 1oda esta lnea es un comentario. 2. 9:: 92" B2 5 7omentario en la misma lnea que la instrucci%n. 3a que un comentario aparece solo en un listado de un programa fuente en ensamblador ( no genera c%digo de maquina" puede incluir cualquier cantidad de comentarios sin afectar el tama@o o la ejecuci%n del programa ensamblado. <tra manera de proporcionar comentarios es por medio de la directiva 7<HHEN1.

PALABRAS RESERVA!AS.

7iertas palabras en lenguaje ensamblador est,n reservadas para sus prop%sitos propios" ( son usadas solo bajo condiciones especiales. +or categoras" las palabras reservadas inclu(en

Anstrucciones" como H<V ( 9::" que son operaciones que la computadora puede ejecutar. :irectivas como EN: o SEQHEN1" que se emplean para proporcionar comandos al ensamblador. <peradores" como K98 ( SARE" que se utili#an en e;presiones. Smbolos predefinidos" como T:ata ( THodel" que regresan informaci%n a su programa.

El uso de una palabra reservada para un prop%sito equivocado provoca que el ensamblador genere un mensaje de error. Ver palabras reservadas.

&!ENT&'&(A!"RES.

$n identificador es un nombre que se aplica a elementos en el programa. Los dos tipos de identificadores son- nombre" que se refiere a la direcci%n de un elemento de dato. ( etiqueta" que se refiere a la direcci%n de una instrucci%n. Las mismas reglas se aplican tanto para los nombres como para las etiquetas. $n identificador puede usar los siguientes caracteres1.= Letras del alfabeto2.= :gitosI.= 7aracteres especiales :esde la 9 asta la R :esde el ' al D .no puede ser el primer car,cter/ Signo de interrogaci%n . U / Subra(ado . V / Signo de pesos . W / 9rroba . T / +unto . . / .no puede ser el primer car,cter/

El primer car,cter de un identificador debe ser una letra o un car,cter especial" e;cepto el punto. 3a que el ensamblador utili#a algunos smbolos especiales en palabras que inician con el smbolo T" debe evitar usarlo en sus definiciones. El ensamblador trata las letras ma(&sculas ( min&sculas como iguales. La longitud m,;ima de un identificador es de I1 caracteres .2)E desde el H9SH F.'/. Ejemplos de nombres validos son 7<$N1" +9QE2* ( WE1'. Se recomienda que los nombres sean descriptivos ( con significado. Los nombres de registros" como 92" :A ( 9L" est,n reservados para acer referencia a esos mismos registros. En consecuencia" en una instrucci%n tal como9:: 92" B2 el ensamblador sabe de forma autom,tica que 92 ( B2 se refieren a los registros. Sin embargo" en una instrucci%n comoH<V 8EQS9VE" 92

el ensamblador puede reconocer el nombre 8EQS9VE solo si se define en alg&n lugar del programa.

&NSTR$((&"NES.

$n programa en lenguaje ensamblador consiste en un conjunto de enunciados. Los dos tipos de enunciados son1. Anstrucciones" tal como H<V ( 9::" que el ensamblador traduce a c%digo objeto.

2. :irectivas" que indican al ensamblador que reali#a una acci%n especifica" como definir un elemento de dato. 9 continuaci%n esta el formato general de un enunciado" en donde los corc etes indican una entrada opcionalNidentificadorO operaci%n Noperando.s/O N5comentariosO $n identificador .si e;iste/" una operaci%n ( un operando .si e;iste/ est,n separados por al menos un espacio en blanco o un car,cter tabulador. E;iste un m,;imo de 1I2 caracteres en una lnea .*12 desde el H9SH F.'/" aunque la ma(ora de los programadores prefiere permanecer en los C' caracteres (a que es el numero m,;imo que cabe en la pantalla. 9 continuaci%n se presentan dos ejemplos de enunciados&!ENT&'&(A!"R :irectiva- 7<$N1 Anstrucci%n"PERA(&"N "PERAN!" :B 1 H<V 92" ' ("%ENTAR&" 5Nom" <p" <perando 5<peraci%n" 2 <perand

Adentificador" operaci%n ( operando pueden empe#ar en cualquier columna. Sin embargo" si de manera consistente se inicia en la misma columna para estas tres entradas se ace un programa mas legible.

&!ENT&'&(A!"R

7omo (a se e;plico" el termino nombre se aplica al nombre de un elemento o directiva definida" mientras que el termino etiqueta se aplica al nombre de una instrucci%n.

"PERA(&"N

La operaci%n" que debe ser codificada" es con ma(or frecuencia usada para la definici%n de ,reas de datos ( codificaci%n de instrucciones. +ara un elemento de datos" una operaci%n como :B o :X define un campo" ,rea de trabajo o constante.

"PERAN!"

El operando .si e;iste/ proporciona informaci%n para la operaci%n que act&a sobre el. +ara un elemento de datos" el operando identifica su valor inicial. +or ejemplo" en la definici%n

siguiente de un elemento de datos llamado 7<$N1E8" la operaci%n :B significa Bdefinir b(teB" ( el operando iniciali#a su contenido con un valor cero-

+ara una instrucci%n" un operando indica en donde reali#ar la acci%n. $n operando de una instrucci%n puede tener una" dos o tal ve# ninguna entrada. 9qu est,n tres ejemplos-

!&RE(T&VAS PARA L&STAR@ PA#E 2 T&TLE La directiva +9QE ( 1A1LE a(udan a controlar el formato de un listado de un programa en ensamblador. Este es su &nico fin" ( no tienen efecto sobre la ejecuci%n subsecuente del programa. PA#E. 9l inicio de un programa" la directiva +9QE designa el numero m,;imo de lneas para listar en una pagina ( el numero m,;imo de caracteres en una lnea. Su formato general es+9QE NlongitudON" anc oO El ejemplo siguiente proporciona F' lneas por pagina ( 1I2 caracteres por lnea+9QE F'" 1I2 El numero de lneas por pagina puede variar desde 1' asta 2**" mientras que el numero de caracteres por lnea desde F' asta 1I2. La omisi%n de +9QE causa que el ensamblador tome +9QE *'" C'.

T&TLE. Se puede emplear la directiva 1A1LE para acer que un titulo para un programa se imprima en la lnea 2 de cada pagina en el listado del programa. +uede codificar 1A1LE de una ve#" al inicio del programa. Su formato general es1A1LE 1e;to. +ara el operando te;to" una t6cnica recomendada es utili#ar el nombre del programa como se registra en el disco. +or ejemplo1A1LE +rog1 Hi primer programa en ensamblador !&RE(T&VA SE#%ENT $n programa ensamblado en formato .E2E consiste en uno o mas segmentos. $n segmento de pila define el almac6n de la pila" un segmento de datos define los elementos de datos ( un segmento de c%digo proporciona un c%digo ejecutable. Las directivas para definir un segmento" SEQHEN1 ( EN:S tienen el formato siguiente-

El enunciado SEQHEN1 define el inicio de un segmento. El nombre del segmento debe estar presente" ser &nico ( cumplir las convenciones para nombres del lenguaje. EL enunciado EN:S indica el final del segmento ( contiene el mismo nombre del enunciado SEQHEN1. El tama@o m,;imo de un segmento es de F)S. El operando de un enunciado SEQHEN1 puede tener tres tipos de opciones- alineaci%n" combinar ( clase" codificadas en este formatonombre SEQHEN1 alineaci%n combinar Y clase Y

T&P" AL&NEA(&"N. La entrada alineaci%n indica el limite en el que inicia el segmento. +ara el requerimiento tpico" +989" alinea el segmento con el limite de un p,rrafo" de manera que la direcci%n inicial es divisible entre 1F" o 1'?. En ausencia de un operando ace que el ensamblador por omisi%n tome +989. T&P" ("%B&NAR. La entrada combinar indica si se combina el segmento con otros segmentos cuando son enla#ados despu6s de ensamblar. Los tipos de combinar son S197S" 7<HH<N" +$BLA7 ( la e;presi%n 91. +or ejemplo" el segmento de la pila por lo

com&n es definido comonombre SEQHEN1 +989 S197S

+uede utili#ar +$BLA7 ( 7<HH<N en donde tenga el prop%sito de combinar de forma separada programas ensamblados cuando los enla#a. En otros casos" donde un programa no es combinado con otros" puede omitir la opci%n o codificar N<NE. T&P" (LASE. La entrada clase" encerrada entre ap%strofos" es utili#ada para agrupar segmentos cuando se enla#an. Se utili#a la clase YcodeY para el segmento de c%digos" YdataY por segmento de datos ( YstacJY para el segmento de la pila. El ejemplo siguiente define un segmento de pila con tipos alineaci%n" combinar ( clasenombre SEQHEN1 +989 S197S YStacJY

!&RE(T&VA ASS$%E. $n programa utili#a el registro SS para direccionar la pila" al registro :S para direccionar el segmento de datos ( el registro 7S para direccionar el segmento de c%digo. +ara este fin" usted tiene que indicar al ensamblador el prop%sito de cada segmento en el programa. La directiva para este prop%sito es 9SSEHE" codificada en el segmento de c%digo como sigue<+E897A<N 9SS$HE <+E89N:< SS-nompila" :S-nomsegdatos" 7S- nomsegcodigo". . .

Los operandos pueden aparecer en cualquier orden. 9l igual que otras directivas" 9SS$HE es solo un mensaje que a(uda al ensamblador a convertir c%digo simb%lico a c%digo maquina5 aun puede tener que codificar instrucciones que fsicamente cargan direcciones en registros de segmentos en el momento de la ejecuci%n.

1 +9QE F'"1I2 2 1A1LE +')9SH1 ES18$71$89 :E $N +8<Q89H9 .E2E I5=============================================================================== ) S197SSQ SEQHEN1 +989 S197S YStacJY * ... F S197SSQ EN:S E5=============================================================================== C :919SQ SEQHEN1 +989 Y:ataY D ... 1' :919SQ EN:S 115===============================================================================

12 1I 1) 1* 1F 1E 1C 1D 2' 21 22

7<:ESQ SEQHEN1 BEQAN +8<7 9SS$HE H<V H<V ... H<V AN1 BEQAN EN:+ 7<:ESQ EN:S EN:

+989 Y7odeY K98 SS-S197SSQ" :S-:919SQ"7S-7<:ESQ 92" :919SQ 5<btiene la direcci%n del segmento de datos :S" 92 59lmacena direcci%n en :S 92" )7''? 21? BEQAN 5+eticion 5Salida al :<S

Pgina Anterior

Pgina Siguiente

1.2. !&RE(T&VAS S&%PL&'&(A!AS !E SE#%ENT"S

Los ensambladores de HicroSoft ( de Borland proporcionan algunas formas abreviadas para definir segmentos. +ara usar estas abreviaturas" inicialice el modelo de memoria antes de definir alg&n segmento. El formato general .inclu(endo el punto inicial/ es.%"!EL *odelo de *e*oria El modelo de memoria puede ser 1AN3" SH9LL" HE:A$H" 7<H+971 o L98QE. Los requisitos para cada modelo son-

+uede utili#ar cualquiera de estos modelos para un programa aut%nomo .esto es" un programa que no este enla#ado con alg&n otro/. El modelo 1AN3 esta destinado para uso e;clusivo de programas .7<H" los cuales tienen sus datos" c%digo ( pila en un segmento. El modelo SH9LL e;ige que el c%digo quepa en un segmento de F)S ( los datos en otro segmento de F)S. La directiva .H<:ELL genera autom,ticamente el enunciado 9SS$HE necesario. Los formatos generales .inclu(endo el punto inicial/ para las directivas que define los segmentos de la pila" de datos ( de c%digo son.STA(B Cta*aDoE .!ATA .("!E Cno*/reE 7ada una de estas directivas ace que el ensamblador genere el enunciado SEQHEN1 necesario ( su correspondiente EN:S. Los nombres por omisi%n de los segmentos .que usted no tiene que definir/ son S197S" :919 ( 1E21 .para el segmento de c%digo/. La figura ).I proporciona un ejemplo aciendo uso de las directivas simplificadas de segmento. page F'"1I2 +')9SH2 .E2E/

1A1LE

<peraciones de mover ( sumar

5========================================================================= .H<:EL SH9LL .S197S F) 5Se define la pila .:919 5Se definen los datos KL:9 :X 2*' KL:B :X 12* KL:7 :X U 5========================================================================= .7<:E BEQAN +8<7 H<V H<V 9:: H<V H<V AN1 BEQAN EN:+ EN: 5Se define el segmento de c%digo K98 92" Tdata 92" KL:9 92" KL:B KL:7" 92 92" )7''? 21? BEQAN 5Se asigna la direcci%n de :919SQ .+rog. anterior/ 5Hover '2*' a 92 5Sumar '12* a 92 59lmacenar suma en KL:7 5Salida a :<S 5Kin de procedimiento 5Kin de programa

Pgina Anterior

Pgina Siguiente

UNIDAD VI
INTRUCCIONES BASICAS
,.1. 'rans-erencia de $atos. ,.2. Suma y "esta. ,.3. +peraciones .!#icas. ,.4. Corrimiento y "otaci!n. ,.*. Multiplicaci!n y $i)isi!n. ,.,. Comparaci!n. ,./. Saltos Condicionales e Incondicionales.

Regresar a la Portada

Autoevaluacin

3.1. TRANS'EREN(&A !E !AT"S.


La instrucci%n de transferencia de datos por e;celencia es-

H<V destino" fuente entendiendo por fuente el contenido que se va a transferir a una determinada #ona o registro de memoria denominada destino. Esta instrucci%n" por tanto" nos va a permitir transferir informacion entre registros ( memoria" memoria ( registros ( entre los propios registros utili#ando alguno de los diferentes modos de direccionamiento. 7on la instrucci%n H<V diremos que se pueden reali#ar todo tipo de movimientos teniendo en cuenta las siguientes restricciones1.= No se puede reali#ar una transferencia de datos entre dos posiciones de memoria directamente" por esta ra#%n" siempre que queramos efectuarlas tendremos que utili#ar un registro intermedio que aga de puente. +or ejemplo" para acer la operacion :91<1 0== :91<2" la instrucci%n H<V :91<2":91<1 sera incorrecta. Lo que s sera correcto sera utili#ar el registro :2" u otro" como puente ( acerH<V :2":91<1 H<V :91<2":2 2.= 1ampoco se puede acer una transferencia directa entre dos registros de segmento. +or eso" como en el caso anterior" si fuera preciso se utili#ara un registro como puente. I.= 9simismo" tampoco se puede cargar en los registros de segmento un dato utili#ando direccionamiento inmediato" es decir" una constante" por lo que tambi6n abr, que recurrir a un registro puente cuando sea preciso. $na instrucci%n util pero no imprescindible es27?Q :91<1" :91<2 que intercambia los contenidos de las posiciones de memoria o registros representadospor :91<1 ( :91<2. +or ejemplo" si queremos intercambiar los contenidos de los registros 92 ( B2" podemos acerH<V 9$2" 92 H<V 92" B2 H<V B2" 9$2 en donde 9$2 es una variable au;iliar que ace de puente" o simplemente utili#ar-

27?Q 92" B2 Las restricciones que presenta esta operaci%n es que no se pueden efectuar intercambios directamente entre posiciones de memoria ni tampoco entre registros de segmento. La instrucci%n 2L91 tabla carga en el registro 9L el contenido de la posici%n NB2ON9LO" en donde el registro B2 a de apuntar al comien#o de una tabla. :ic io de otra manera" 9L ace de ndice de la tabla ( de almac6n destino del contenido de la tabla. +or ejemplo" el siguiente programa:91<S SEQHEN1 19BL9 :B 2"I"*"C"1F"2I :91<S EN:S 7<:AQ< SEQHEN1 H<VE B2" <KKSE1 19BL9 5 Aniciali#a B2 con la direcci%n donde comien#a la tabla H<VE 9L" * 2L91 19BL9 7<:AQ< EN:S ace que al final el contenido de 9L se 1F (a que es el *to. elemento de la tabla ( 9L antes de 2L91 19BL9 contenia el valor *. +ara finali#ar con las instrucciones de transferencia veremos un grupo de tres instrucciones= LE9 o cargar direcci%n efectiva. = L:S o cargar el puntero en :S. = LES o cargar el puntero en ES. denominadas de transferencia de direcciones. La primera" LE9" carga el despla#amiento u <KKSE1 correspondiente al operando fuente en el operando destino. +or ejemplo" la instrucci%n H<VE B2" <KKSE1 19BL9 del ejemplo anterior sera equivalente a LE9 B2" 19BL9. La segunda" L:S" se utili#a para cargar el valor del segmento de una variable en el registro :S ( el despla#amiento correspondiente en el registro o posici%n de memoria indicada en la instrucci%n. +or ejemplo" la instrucci%n L:S B2" N$H1 ara esquem,ticamente lo siguiente-

La tercera ( ultima de las instrucciones" LES" es similar a L:S" con la &nica salvedad de que el valor del segmento se carga sobre el registro de segmento ES en ve# del :S.

Pgina Anterior

Pgina Siguiente

3.2. S$%A 2 RESTA.


Las instrucciones 9:: ( S$B reali#an sumas ( restas sencillas de datos binarios. Los n&meros binarios negativos est,n representados en la forma de complemento a dos- Anvierta todos los bits del numero positivo ( sume 1. Los formatos generales para las instrucciones 9:: ( S$B son-

7omo en otras instrucciones" no e;isten operaciones directas de memoria a memoria. El ejemplo siguiente utili#a el registro 92 para sumar X<8:9 a X<8:BX<8:9 :X 12I 5:efine X<8:9 X<8:B :X 2* 5:efine X<8:B ... H<V 92" X<8:9 5Hueve X<8:9 al 92 9:: 92" X<8:B 5Suma X<8:B al 92 H<V X<8:B" 92 5Hueve 92 a X<8:B La figura F.1. proporciona ejemplos de 9:: ( S$B para el procesamiento de valores en un b(te ( en una palabra. El procedimiento B1'9:: utili#a 9:: para procesar b(tes ( el procedimiento 71'S$B utili#a S$B para procesar palabras. 1A1LE +1I9:: .7<H/ <peraciones 9:: ( S$B .H<:EL SH9LL .7<:E <8Q 1''? BEQANZH+ S?<81 H9AN 5============================================================================ B31E9 :B F)? 5:91<S B31EB :B )'? B31E7 :B 1F? X<8:9 :X )'''? X<8:B :X 2'''? X<8:7 :X 1'''? 5============================================================================ H9AN +8<7 NE98 5+rocedimiento principal79LL B1'9:: 5Llama a la rutina 9:: 79LL 71'S$B 5Llama a la rutina S$B AN1 21? H9AN EN:+ 5 Ejemplos de suma .9::/ de b(tes5============================================================================ B1'9:: +8<7 H<V 9L" B31E9

H<V BL" B31EB 9:: 9L" BL 5registro a registro 9:: 9L" B31E7 5memoria a registro 9:: B31E9" BL 5registro a memoria 9:: BL" 1'? 5inmediato a registro 9:: B31E9" 2*? 5inmediato a memoria 8E1 B1'9:: EN:+ 5 Ejemplos de resta .S$B/ de palabras5========================================================== 71'S$B +8<7 H<V 92" X<8:9 H<V B2" X<8:B S$B 92"B2 58egistro a registro S$B 92"X<8:7 5Hemora de registro S$B X<8:9" B2 58egistro de memoria S$B B2" 1'''? 5Anmediato de registro S$B X<8:9" 2*F? 5Anmediato de memoria 8E1 71'S$B EN:+ EN: BEQAN

!es/orda*ientos Este alerta con los desbordamientos en las operaciones aritm6ticas. 3a que un b(te solo permite el uso de un bit de signo ( siete de datos .desde =12C asta P12E/" una operaci%n aritm6tica puede e;ceder con facilidad la capacidad de un registro de un b(te. 3 una suma en el registro 9L" que e;ceda su capacidad puede provocar resultados inesperados.

Pgina Anterior

Pgina Siguiente

3.). "PERAN!"S L"#&("S.


La l%gica booleana es importante en el dise@o de circuitos ( tiene un paralelo en la l%gica de programaci%n. Las instrucciones para l%gica booleana son 9N:" <8" 2<8" 1ES1 ( N<1" que pueden usarse para poner bits en ' o en 1 ( para manejar datos 9S7AA con prop%sitos aritm6ticos. El formato general para las operaciones booleanas es-

Netiqueta -O [ operaci%n [ \registroGmemoria]" \registroGmemoriaGinmediato][ El primer operando se refiere a un b(te o palabra en un registro o memoria ( es el &nico valor que es cambiado. El segundo operando ace referencia a un registro o a un valor inmediato. La operaci%n compara los bits de los dos operandos referenciados ( de acuerdo con esto establece las banderas 7K" <K" +K" SK ( RK. AN!. Si ambos bits comparados son 1" establece el resultado en 1. Las dem,s condiciones dan como resultado '. "R. Si cualquiera .o ambos/ de los bits comparados es 1" el resultado es 1. Si ambos bits est,n en '" el resultado es '. 4"R. Si uno de los bits comparados es ' ( el otro 1" el resultado es 1. Si ambos bits comparados son iguales .ambos ' o ambos 1/" el resultado es '. TEST. Establece las banderas igual que lo ace 9N:" pero no cambia los bits de los operandos. Las operaciones siguientes 9N:" <8 ( 2<8 ilustran los mismos valores de bits como operandos9N: '1'1 ''11 '''1 <8 2<8 '1'1 '1'1 ''11 ''11 '111 '11'

8esultado-

Es &til recordar la siguiente regla- el empleo de 9N: con bits ' es ' ( el de <8 con bits 1 es 1. Ejemplos de operaciones booleanas. +ara los siguientes ejemplos independientes" suponga que 9L contiene 11'''1'1 ( el B? contiene '1'111''1.= 9N: 2.= 9N: I.= 9N: ).= <8 *.= <8 F.= 2<8 E.= 2<8 9L"B? 5Establece 9L a '1'' '1'' 9L"''? 5Establece 9L a '''' '''' 9L"'K? 5Establece 9L a '''' '1'1 B?"9L 5Establece B? a 11'1 11'1 7L"7L 5+one en uno SK ( RK 9L"9L 5Establece 9L a '''' '''' 9L"'KK? 5Establece 9L a ''11 1'1'

Los ejemplos 2 ( F muestran formas de limpiar un registro" ( ponerlo a cero. El ejemplo I pone a cero los cuatro bits mas a la i#quierda de 9L. 1ESt act&a igual que 9N:" pero solo establece las banderas. 9qu est,n algunos ejemplos 1.= 1ES1 ZNR 2.= 1ES1 ZNR I.= 1ES1 ZNR BL" 1111''''B ... 9L" '''''''1B ... :2" 'KK? ... 5 9lguno de los bits de mas a la 5 i#quierda es BL en diferentes de ceroU 5 9L contiene 5 un numero imparU 5 El :2 contiene 5 un valor ceroU

La instruccin N"T. La instrucci%n N<1 solo invierte los bits en un b(te o palabra en un registro o en memoria5 esto es" convierte los ceros en unos ( los unos en ceros. El formato general es[ Netiqueta-O [ N<1 [ \registroGmemoria] [

+or ejemplo si el 9L contiene 11'''1'1" la instrucci%n N<1 9L cambia el 9L a ''111'1' .el resultado es el mismo de 2<8 9L" 'KK?/. Las banderas no son afectadas.

Pgina Anterior

Pgina Siguiente

6.4. CORRIMIENTO Y ROTACION.

("RR&%&ENT" !E B&TS.

Las instrucciones de corrimiento" que son parte de la capacidad l%gica de la computadora" pueden reali#ar las siguientes acciones1. ?acer referencia a un registro o direcci%n de memoria. 2. 8ecorre bits a la i#quierda o a la derec a.

I. 8ecorre asta C bits en un b(te" 1F bits en una palabra ( I2 bits en una palabra doble. ). 7orrimiento l%gico .sin signo/ o aritm6tico .con signo/. El segundo operando contiene el valor del corrimiento" que es una constante .un valor inmediato/ o una referencia al registro 7L. +ara los procesadores C'CCGC'CF" la constante inmediata solo puede ser 15 un valor de corrimiento ma(or que 1 debe estar contenido en el registro 7L. +rocesadores posteriores permiten constantes de corrimiento inmediato asta I1. El formato general para el corrimiento es

[ Netiqueta-O [ 7orrim. [ \registroGmemoria]" \7LGinmediato] [

(orri*iento de /its Facia la derecFa. Los corrimientos acia la derec a .S?8 ( S98/ mueven los bits acia la derec a en el registro designado. El bit recorrido fuera del registro mete la bandera de acarreo. Las instrucciones de corrimiento a la derec a estipulan datos l%gicos .sin signo/ o aritm6ticos .con signo/-

Las siguientes instrucciones relacionadas ilustran S?8 ( datos con signo-

&NSTR$((&"N H<V 7L" 'I H<V 9L" 1'11'111B S?8 9L" '1 S?8 9L" 7L S?8 92" 'I

AL

("%ENTAR&"

5 1'11'111 5 11'11'11 $n corrimiento a la derec a 5 ''''1'11 1res corrimientos adicionales a la derec a 5 V,lido para C'1CF ( procesadores posteriores

El primer S?8 despla#a el contenido de 9L un bit acia la derec a. El bit de mas a la derec a es enviado a la bandera de acarreo" ( el bit de mas a la i#quierda se llena con un

cero. El segundo S?8 despla#a tres bits mas al 9L. La bandera de acarreo contiene de manera sucesiva 1" 1 ( '5 adem,s" tres bits ' son colocados a la i#quierda del 9L. S98 se difiere de S?8 en un punto importante- S98 utili#a el bit de signo para llenar el bit vacante de mas a la i#quierda. :e esta manera" los valores positivos ( negativos retienen sus signos. Las siguientes instrucciones relacionadas ilustran S98 ( datos con signo en los que el signo es un bit 1&NSTR$((&"N H<V 7L" 'I H<V 9L" 1'11'111B S?8 9L" '1 S?8 9L" 7L S?8 92" 'I AL ("%ENTAR&"

55 1'11'111 5 11'11'11 $n corrimiento a la derec a 5 ''''1'11 1res corrimientos adicionales a la derec a 5 V,lido para C'1CF ( procesadores posteriores

En especial" los corrimientos a la derec a son &tiles para .dividir entre 2/ obtener mitades de valores ( son muc o mas r,pidas que utili#ar una operaci%n de divisi%n. 9l terminar una operaci%n de corrimiento" puede utili#ar la instrucci%n Z7 .Salta si a( acarreo/ para e;aminar el bit despla#ado a la bandera de acarreo.

(orri*iento de /its a la iGHuierda. Los corrimientos acia la i#quierda .S?L ( S9L/ mueven los bits a la i#quierda" en el registro designado. S?L ( S9L son id6nticos en su operaci%n. El bit despla#ado fuera del registro ingresa a la bandera de acarreo. Las instrucciones de corrimiento acia la i#quierda estipulan datos l%gicos .sin signo/ ( aritm6ticos .con signo/S?L- :espla#amiento l%gico a la i#quierda S9L- :espla#amiento aritm6tico a la i#quierda

Las siguientes instrucciones relacionadas ilustran S?L para datos sin signo&NSTR$((&"N H<V 7L" 'I H<V 9L" 1'11'111B S?8 9L" '1 AL 5 1'11'111 5 '11'111' ("%ENTAR&"

$n corrimiento a la i#quierda

S?8 S?8

9L" 7L 92" 'I

5 '111'''' 1res corrimientos mas 5 V,lido para C'1CF ( procesadores posteriores

El primer S?L despla#a el contenido de 9L un bit acia la i#quierda. El bit de mas a la i#quierda a ora se encuentra en la bandera de acarreo" ( el ultimo bit de la derec a del 9L se llena con cero. El segundo S?L despla#a tres bits mas a el 9L. La bandera de acarreo contiene en forma sucesiva '" 1 ( 1" ( se llena con tres ceros a la derec a del 9L. Los corrimientos a la i#quierda llenan con cero el bit de mas a la derec a. 7omo resultado de esto" S?L ( S9L don id6nticos. Los corrimientos a la i#quierda en especial son &tiles para duplicar valores ( son muc o mas r,pidos que usar una operaci%n de multiplicaci%n. 9l terminar una operaci%n de corrimiento" puede utili#ar la instrucci%n Z7 .Salta si a( acarreo/ para e;aminar el bit que ingreso a la bandera de acarreo.

R"TA(&"N !E B&TS -!es8laGa*iento circular.

Las instrucciones de rotaci%n" que son parte de la capacidad l%gica de la computadora" pueden reali#ar las siguientes acciones1. ?acer referencia a un b(te o a una palabra. 2. ?acer referencia a un registro o a memoria. I. 8eali#ar rotaci%n a la derec a o a la i#quierda. El bit que es despla#ado fuera llena el espacio vacante en la memoria o registro ( tambi6n se copia en la bandera de acarreo. ). 8eali#ar rotaci%n asta C bits en un b(te" 1F bits en una palabra ( I2 bits en una palabra doble. *. 8eali#ar rotaci%n l%gica .sin signo/ o aritm6tica .con signo/. El segundo operando contiene un valor de rotaci%n" el cual es una constante .un valor inmediato/ o una referencia al registro 7L. +ara los procesadores C'CCGC'CF" la constante inmediata solo puede ser 15 un valor de rotaci%n ma(or que 1 debe estar contenido en el registro 7L. +rocesadores posteriores permiten constantes inmediatas asta el I1. El formato general para la rotaci%n es-

[ Netiqueta-O [ 8otaci%n [ \registroGmemoria]" \7LGinmediato] [

Rotacin a la derecFa de /its Las rotaciones a la derec a .8<8 ( 878/ despla#an a la derec a los bits en el registro designado. Las instrucciones de rotaci%n a la derec a estipulan datos l%gicos .sin signo/ o aritm6ticos .con signo/-

Las siguientes instrucciones relacionadas ilustran 8<8&NSTR$((&"N H<V 7L" 'I H<V B?" 1'11'111B S?8 B?" '1 S?8 B?" 7L S?8 B2" 'I B? ("%ENTAR&"

5 1'11'111 5 11'11'11 $na rotaci%n a la derec a 5 ''''1'11 1res rotaciones a la derec a 5 V,lido para C'1CF ( procesadores posteriores

El primer 8<8 despla#a el bit de mas a la derec a del B? a la posici%n vacante de mas a la i#quierda. La segunda ( tercera operaciones 8<8 reali#an la rotaci%n de los tres bits de mas a la derec a. 878 provoca que la bandera de acarreo participe en la rotaci%n. 7ada bit que se despla#a fuera de la derec a se mueve al 7K ( el bit del 7K se mueve a la posici%n vacante de la i#quierda. Rotacin a la iGHuierda de /its Las rotaciones a la i#quierda .8<L ( 87L/ despla#an a la i#quierda los bits del registro designado. Las instrucciones de rotaci%n a la i#quierda estipulan datos l%gicos .sin signo/ ( aritm6ticos .con signo/-

Las siguientes instrucciones relacionadas ilustran 8<L&NSTR$((&"N H<V 7L" 'I H<V BL" 1'11'111B S?8 BL" '1 S?8 BL" 7L S?8 B2" 'I BL ("%ENTAR&"

5 1'11'111 5 11'11'11 $na rotaci%n a la i#quierda 5 ''''1'11 1res rotaciones a la i#quierda 5 V,lido para C'1CF ( procesadores posteriores

El primer 8<L despla#a el bit de mas a la i#quierda del BL a la posici%n vacante de mas a la derec a. La segunda ( tercera operaciones 8<L reali#an la rotaci%n de los tres bits de mas a la i#quierda. :e manera similar a 878" 87L tambi6n provoca que la bandera de acarreo participe en la rotaci%n. 7ada bit que se despla#a fuera por la i#quierda se mueve al 7K" ( el bit del 7K se mueve a la posici%n vacante de la derec a. +uede usar la instrucci%n Z7 .salta si a( acarreo/ para comprobar el bit rotado acia la 7K en el e;tremo de una operaci%n de rotaci%n.

Pgina Anterior

Pgina Siguiente

3.1. %$LT&PL&(A(&"N 2 !&V&S&"N.

%$LT&PL&(A(&"N

+ara la multiplicaci%n" la instrucci%n H$L maneja datos sin signo ( la instrucci%n AH$L .multiplicaci%n entera/ maneja datos con signo. 9mbas instrucciones afectan las banderas de acarreo ( de desbordamiento. 7omo programador" usted tiene el control sobre el formato de los datos que procesa" ( tiene la responsabilidad de seleccionar la instrucci%n de multiplicaci%n apropiada. El formato general de H$L e AH$L es [ Netiqueta-O [ H$LGAH$L [ registroGmemoria [

Las operaciones de multiplicaci%n b,sicas son b(te a b(te" palabra por palabra ( palabras dobles por palabra dobles. B7te 8or /7te +ara multiplicar dos n&meros de un b(te" el multiplicando esta en el registro 9L ( el multiplicador es un b(te en memoria o en otro registro. +ara la instrucci%n H$L :L" la operaci%n multiplica el contenido del 9L por el contenido del :L. El producto generado esta en el registro 92. La operaci%n ignora ( borra cualquier informaci%n que pueda estar en el 9?.

Pala/ra 8or 8ala/ra +ara multiplicar dos n&meros de una palabra" el multiplicando esta en el registro 92 ( el multiplicador es una palabra en memoria o en otro registro. +ara la instrucci%n H$L :2" la operaci%n multiplica el contenido del 92 por el contenido del :2. El producto generado es una palabra doble que necesita dos registros- la parte de orden alto .mas a la i#quierda/ en el :2 ( la parte de orden bajo .mas a la derec a/ en el 92. La operaci%n ignora ( borra cualquier informaci%n que puede estar en el :2.

Pala/ra do/le 8or 8ala/ra do/le +ara multiplicar dos n&meros de palabras dobles" el multiplicando esta en el registro E92 ( el multiplicador es una palabra doble en memoria o en otro registro. El producto es generado en el par E:2-E92. La operaci%n ignora ( borra cualquier informaci%n que (a este en el E:2.

En los ejemplos siguientes" el multiplicador esta en un registro" el cual especifica el tipo de operaci%n&NSTR$((&"N H$L 7L H$L B2 H$L EB2 %$LT&PL&(A!"R b(te palabra palabra doble %$LT&PL&(AN!" 9L 92 E92 PR"!$(T" 92 :2-92 E:2-E92

En los ejemplos siguientes" los multiplicadores est,n definidos en memoriaB31E1 :B X<8:1 :X :X<8:1 :: "PERA(&"N H$L B31E1 H$L X<8:1 H$L :X<8:1 U U U %$LT&PL&AN!" 9L 92 E92 PR"!$(T" 92 :2-92 E:2-E92

%$LT&PL&(A!"R B31E1 X<8:1 :X<8:1

!&V&S&"N

+ara la divisi%n" la instrucci%n :AV .dividir/ maneja datos sin signo ( la A:AV .divisi%n entera/ maneja datos con signo. $sted es responsable de seleccionar la instrucci%n apropiada. El formato general para :AVGA:AV es[ Netiqueta-O [ A:AVG:AV [ \registroGmemoria] [

Las operaciones de multiplicaci%n b,sicas son b(te entre b(te" palabra entre palabra ( palabras dobles entre palabra dobles. Pala/ra entre 8ala/ra 9qu el dividendo esta en el 92 ( el divisor es un b(te en memoria o en otro registro. :espu6s de la divisi%n" el residuo esta en el 9? ( el cociente esta en el 9L. 3a que un cociente de un b(te es mu( peque@o =si es sin signo" un m,;imo de P2** .KK?/ ( con signo P12E .EK?/= esta operaci%n tiene un uso limitado.

Pala/ra do/le entre 8ala/ra +ara esta operaci%n" el dividendo esta en el par :2-92 ( el divisor es una palabra en memoria o en otro registro. :espu6s de la divisi%n" el residuo esta en el :2 ( el cociente esta en el 92. El cociente de una palabra permite para datos sin signo un m,;imo de PI2" EFE .KKKK?/ ( con signo P1F" ICI .EKKK?/. 1enemos-

Pala/ra cudru8le entre 8ala/ra do/le 9l dividir una palabra cu,druple entre una palabra doble" el dividendo esta en el par E:2-E92 ( el divisor esta en una palabra doble en memoria o en otro registro. :espu6s de la divisi%n" el residuo esta en el E:2 ( el cociente en el 9E2.

En los ejemplos siguientes" de :AV" los divisores est,n en un registro" que determina el tipo de operaci%n"PERA(&"N :AV 7L :AV 72 :AV EB2 !&V&S"R b(te palabra palabra doble !&V&!EN!" 92 :2-92 E:2-E92 ("(&ENTE 9L 9; E92 RES&!$" 9? :2 E:2

En los ejemplos siguientes de :AV" los divisores est,n definidos en memoriaB31E1 :B X<8:1 :X :X<8:1 :: ... U U U !&V&S"R !&V&!EN!" 92 :2-92 E:2-E92 ("(&ENTE RES&!$" 9? :2 E:2 9L 92 E92

:AV B31E1 B31E1 :AV X<8:1 X<8:1 :AV :X<8:1 :X<8:1

Pgina Anterior

Pgina Siguiente

3.3. ("%PARA(&"N.

LA &NSTR$((&"N (%P

La instrucci%n 7H+ pro lo com&n es utili#ada para comparar dos campos de datos" uno de los cuales est,n contenidos en un registro. El formato general para 7H+ es[ Netiqueta-O [ 7H+ [ \registroGmemoria]" \registroGmemoriaGinmediato] [ El resultado de una operaci%n 7H+ afecta la banderas 9K" 7K" <K" +K" SK ( RK" aunque no tiene que probar estas banderas de forma individual. El c%digo siguiente prueba el registro B2 por un valor cero-

2 7H+ B2" '' 57ompara B; con cero ZR B*' 5Si es cero salta aB*' . 5.9cci%n si es diferente de cero/ . B*'- ... 5:estino del salto" si B2 es cero Si el B2 tiene cero" cmp establece RK a 1 ( puede o no cambiar la configuraci%n de otras banderas. La instrucci%n ZR .salta si es cero/ solo prueba la bandera RK. 3a que RK tiene 1 .que significa una condici%n cero/" ZR transfiere el control .salta/ a la direcci%n indicada por el operando B*'. <bserve que la operaci%n compara el primer operando con el segundo5 por ejemplo" el valor del primer operando es ma(or que" igual o menor que el valor del segundo operandoU

LA &NSTR$((&"N (%PS

7H+S compara el contenido de una localidad de memoria .direccionada por :S-SA/. :ependiendo de la bandera de direcci%n" 7H+S incrementa o disminu(e tambi6n los registros SA ( :A en 1 para b(tes" en 2 para palabras ( en ) para palabras dobles. La operaci%n establece las banderas 9K" 7K" <K" +K" SK ( RK. 7uando se combinan con un prefijo 8E+ ( una longitud en el 72" de manera sucesiva 7H+S puede comparar cadenas de cualquier longitud. +ero observe que 7H+S proporciona una comparaci%n alfanum6rica" esto es" una comparaci%n de acuerdo a con los valores 9S7AA. 7onsidere la comparaci%n de dos cadenas que contienen ZE9N ( Z<9N. $na comparaci%n de i#quierda a derec a" tiene el resultado siguienteZ-Z Aguales E-< :iferentes .E es menor/ 9-9 Aguales N-N Aguales $na comparaci%n de los ) b(tes termina con una comparaci%n de N con N .iguales/. 9 ora (a que los dos nombres no son id6nticos" la operaci%n debe terminar tan pronto como la comparaci%n entre 2 caracteres sea diferente. 9lgunas derivaciones de 7H+S son las siguientes

7H+SB. 7ompara b(tes. 7H+S:. 7ompara palabras dobles. 7H+SX. 7ompara palabras.

9 continuaci%n se muestra la codificaci%n del uso del 7H+S ( sus derivaciones1A1LE +127H+S1 .7<H/ $so de 7H+S para operaciones en cadenas .H<:EL SH9LL .7<:E <8Q 1''? BEQAN- ZH+ S?<81 H9AN 5===================================================================================== N<H1 :B Y9ssemblersY 5Elementos de datos N<H2 :B Y9ssemblersY N<HI :B 1' :$+ .Y Y/ 5===================================================================================== H9AN +8<7 NE98 5+rocedimiento principal 7L: 5A#quierda a derec a H<V 72" 1' 5Aniciar para 1' b(tes LE9 :A" N<H2 LE9 SA" N<H1 8E+E 7H+SB 57ompare N<H1-N<H2 ZNE Q2' 5No es igual" saltarlo H<V B?"'1 5Agual" fijar B? Q2'H<V LE9 LE9 8E+E ZE H<V QI'H<V AN1 H9AN EN:+ EN: 92" )7''? 21? BEQAN 5Salir a :<S 72" 1' :A" N<HI SA" N<H2 7H+SB QI' BL" '2 5Aniciar para 1' b(tes 57ompare N<H2-N<HI 5Agual" salir 5No es igual" fijar BL

Pgina Anterior

Pgina Siguiente

3.5. SALT"S ("N!&(&"NALES E &N("N!&(&"NALES.


?asta este punto los programas que emos e;aminado an sido ejecutados en forma lineal" esto es con una instrucci%n secuencialmente a continuaci%n de otra. Sin embargo" rara ve# un programa programable es tan sencillo. La ma(ora de los programas constan de varios ciclos en los que una serie de pasos se repite asta alcan#ar un requisito especifico ( varias pruebas para determinar que acci%n se reali#a de entre varias posibles. 8equisitos como este implican la transferencia de control a la direcci%n de una instrucci%n que no sigue de inmediato de la que se esta ejecutando actualmente. $na transferencia de control puede ser acia adelante" para ejecutar una serie de pasos nuevos" o acia atr,s" para volver a ejecutar los mismos pasos.

7iertas instrucciones pueden transferir el control fuera del flujo secuencial normal a@adiendo un valor de despla#amiento al A+. !irecciones (orta; cercana 7 lejana $na operaci%n de salto alcan#a una direcci%n corta por medio de un despla#amiento de un b(te" limitado a una distancia de =12C a 12E b(tes. $na operaci%n de salto alcan#a una direcci%n cercana por medio de un despla#amiento de una palabra" limitado a una distancia de =I2" EFC a I2" EFE b(tes dentro del mismo segmento. $na direcci%n lejana puede estar en otro segmento ( es alcan#ada por medio de una direcci%n de segmento ( un despla#amiento5 79LL es la instrucci%n normal para este prop%sito. La tabla siguiente indica las reglas sobre distancias para la operaciones ZH+" L<<+ ( 79LL. ?a( poca necesidad de memori#ar estas reglas" (a que el uso normal de estas instrucciones en rara ocasi%n causa problemas.

EtiHuetas de instrucciones Las instrucciones ZH+" Znnn .salto condicional/ ( L<<+ requieren un operando que se refiere a la etiqueta de una instrucci%n. El ejemplo siguiente salta a 9D'" que es una etiqueta dada a una instrucci%n H<VZH+ 9D' ... 9D'- H<V 9?" '' ... La etiqueta de una instrucci%n" tal como 9D'-" terminada con dos puntos .-/ para darle atributo de cercana = esto es" la etiqueta esta dentro de un procedimiento en el mismo segmento de c%digo.

(uidado- $n error com&n es la omisi%n de los dos puntos. Note que una etiqueta de direcci%n en un operando de instrucci%n .como ZH+ 9D'/ no tiene un car,cter de dos puntos. La instruccin %P -Salto incondicional. $na instrucci%n usada com&nmente para la transferencia de control es la instrucci%n ZH+ .jump" salto" bifurcaci%n/. $n salto es incondicional" (a que la operaci%n transfiere el control bajo cualquier circunstancia. 1ambi6n ZH+ vaca el resultado de la instrucci%n previamente procesada5 por lo que" un programa con muc as operaciones de salto puede perder velocidad de procesamiento. El formato general para ZH+ es[ NetiquetaO [ ZH+ [ direcci%n corta" cercana o lejana [

$na operaci%n ZH+ dentro del mismo segmento puede ser corta o cercana .o de manera t6cnica" lejana" si el destino es un procedimiento con el atributo K98/. En su primer paso por un programa fuente" el ensamblador genera la longitud de cada instrucci%n. Sin embargo" una instrucci%n ZH+ puede ser de dos o tres b(tes de longitud. $na operaci%n ZH+ a una etiqueta dentro de =12C a P 12E b(tes es un salto corto. El ensamblador genera un b(te para la operaci%n .EB/ ( un b(te para el operando. El operando act&a como un valor de despla#amiento que la computadora suma al registro A+ cuando se ejecuta el programa. El ensamblador (a puede aber encontrado el operando designado .un salto acia atr,s/ dentro de =12C b(tes" como en9*'... ZH+ 9*' En este caso" el ensamblador genera una instrucci%n de maquina de dos b(tes. $na ZH+ que e;cede =12C a 12E b(tes se convierte en un salto cercano" para que el ensamblador genere un c%digo de maquina diferente .ED/ ( un operando de dos b(tes .procesadores C'CCGC'CF/ o un operando de cuatro b(tes .procesadores C'ICF ( posteriores/. En un salto acia adelante" el ensamblador aun no a encontrado el operando designadoZH+ 9D' ... 9D'3a que algunas versiones del ensamblador no saben en este punto si el salto es corto o

cercano" generan de forma autom,tica una instrucci%n de tres b(tes. +age F'"1I2 +'CZ$H+ .7<H/ $so de ZH+ para iterar .H<:EL SH9LL .7<:E <8Q 1''? +8<7 NE98 H<V 92"'1 5Aniciaci%n de 92" H<V B2"'1 5B2 ( H<V 72"'1 572 a '1 9:: 9:: S?L ZH+ EN:+ EN: 92" '1 B2" 92 72" 1 92' H9AN 5Sumar '1 a 92 5Sumar 92 a B2 5Hultiplicar por dos a 72 5Saltar a la etiqueta 92'

1A1LE

H9AN

92'-

H9AN

La instruccin L""P La instrucci%n L<<+" requiere un valor inicial en el registro 72. En cada iteraci%n" L<<+ de forma autom,tica disminu(e 1 de 72. Si el valor en el 72 es cero" el control pasa a la instrucci%n que sigue5 si el valor en el 72 no es cero" el control pasa a la direcci%n del operando. La distancia debe ser un salto corto" desde =12C asta P12E b(tes. +ara una operaci%n que e;ceda este limite" el ensamblador enva un mensaje como Bsalto relativo fuera de rangoB. El formato general de la instrucci%n L<<+ es[ Netiqueta-O [ L<<+ [ direcci%n corta [

El siguiente programa muestra el funcionamiento de la instrucci%n L<<+.

1A1LE

+age F'"1I2 +'CL<<+ .7<H/ Alustraci%n de L<<+ .H<:EL SH9LL .7<:E <8Q 1''?

H9AN

+8<7 H<V H<V H<V H<V 9:: 9:: S?L L<<+ H<V EN:+ EN:

NE98 92"'1 B2"'1 72"'1 72"1' 92" '1 B2" 92 :2" 1 92' 92" )7''? H9AN

92'-

5Aniciaci%n de 92" 5B2 ( 572 a '1 5Aniciar 5N&mero de iteraciones 5Sumar '1 a 92 5Sumar 92 a B2 5Hultiplicar por dos a :2 5Aterar si es diferente de cero 5Salida a :<S

H9AN

E;isten dos variaciones de la instrucci%n L<<+" ambas tambi6n decrementan el 72 en 1. L<<+EGL<<+R .repite el ciclo mientras sea igual o repite el ciclo mientras sea cero/ continua el ciclo mientras que el valor en el 72 es cero o la condici%n de cero esta establecida. L<<+NEGL<<+NR .repite el ciclo mientras no sea igual o repite el ciclo mientras sea cero/ continua el ciclo mientras el valor en el 72 no es cero o la condici%n de cero no esta establecida. &NSTR$((&"NES !E SALT" ("N!&(&"NAL El ensamblador permite usar una variedad de instrucciones de salto condicional que transfieren el control dependiendo de las configuraciones en el registro de banderas. +or ejemplo" puede comparar dos campos ( despu6s saltar de acuerdo con los valores de las banderas que la comparaci%n establece. El formato general para el salto condicional es[ Netiqueta-O [ Znnn [ direcci%n corta [

7omo (a se e;plico la instrucci%n L<<+ disminu(e el registro 725 si es diferente de cero" transfiere el control a la direcci%n del operando. podra reempla#ar el enunciado L<<+ 92' de la figura anterior con dos enunciados = uno que decremente el 72 ( otro que realice un salto condicional:E7 72 5Equivalente a L<<+ ZNR 92' ...

:E7 ( ZNR reali#an e;actamente lo que ace L<<+. :E7 decrementa en 1 72 ( pone a 1 o a ' la bandera de cero .RK/ en el registro de banderas. :espu6s ZNR prueba la configuraci%n de la bandera de cero5 si el 72 es diferente de cero" el control pasa a 92'" ( si el 72 es cero el control pasa a la siguiente instrucci%n acia abajo !atos con signo 7 sin signo :istinguir el prop%sito de los saltos condicionales debe clarificar su uso. El tipo de datos .sin signo o con signo/ sobre los que se reali#an las comparaciones o la aritm6tica puede determinar cual es la instrucci%n a utili#ar. $n dato sin signo trata todos los bits como bits de datos5 ejemplos tpicos son las cadenas de caracteres" tal como nombres o direcciones" ( valores num6ricos tal como n&meros de cliente. $n dato con signo trata el bit de mas a la i#quierda como un signo" en donde ' es positivo ( 1 es negativo. En el ejemplo siguiente" el 92 contiene 11'''11' ( el B2 contiene '''1'11'. La siguiente instrucci%n 7H+ 92" B2 compara el contenido de 92 con el contenido del B2. +ara datos sin signo" el valor 92 es ma(or5 sin embargo" para datos con signo el valor 92 es menor a causa del signo negativo. Saltos con base en datos sin signo Las instrucciones siguientes de salto condicional se aplican a datos sin signo-

7ada una de estas pruebas las puede e;presar en uno de dos c%digos simb%licos de operaci%n.

Saltos con /ase en datos con signo Las instrucciones siguientes de salto condicional se aplican a datos con signo-

Prue/as arit*+ticas es8eciales Las siguientes instrucciones de salto condicional tienen usos especiales-

No espere memori#ar todas estas instrucciones5 sin embargo" como recordatorio note que un salto para datos sin signo es igual" superior o inferior" mientras que un salto para datos con signo es igual" ma(or que o menor. Los saltos que prueban banderas de acarreo" de desbordamiento ( de paridad tienen prop%sitos &nicos.

Pgina Anterior

Pgina Siguiente

UNIDAD VII
PROCEDIMIENTOS
/.1. $e-inici!n. /.2. .lamada.

Regresar a la Portada

Autoevaluacin

5.1. !E'&N&(&"N.
El segmento de c%digo contiene el c%digo ejecutable de un programa. 1ambi6n tiene uno o mas procedimientos" definidos con la directiva +8<7. $n segmento que tiene solo un procedimiento puede aparecer como sigueN"%BRE nomsegmento nomproc "PERA(&"N SEQHEN1 +8<7 . . . EN:+ EN:S "PERAN!" +989 K98 ("%ENTAR&" 5$n 5procedimiento 5dentro 5del segmento 5de c%digo

nomproc nomsegmento

El nombre del procedimiento debe estar presente" ser &nico ( seguir las reglas para la formaci%n de nombres del lenguaje. El operando far en este caso esta relacionado con la ejecuci%n del programa. 7uando usted solicita la ejecuci%n de un programa" el cargador de programas del :<S utili#a este nombre de procedimiento como el punto de entrada para la primera instrucci%n a ejecutar. La directiva EN:+ indica el fin de un procedimiento ( contiene el mismo nombre que el enunciado +8<7 para permitir que el ensamblador relacione a los dos. 3a que los procedimientos deben estar por completo dentro de un segmento" EN:+ define el final de un

procedimiento antes que EN:S defina el final de un segmento.

Pgina Anterior

Pgina Siguiente

5.2. LLA%A!A !E PR"(E!&%&ENT"S.


?asta a ora los segmentos de c%digo an consistido solo en un procedimiento" codificado comoBEQAN +8<7 K98 . . . BEQAN EN:+ En este caso el operador K98 informa al sistema que la direcci%n indicada es el punto de entrada para la ejecuci%n del programa" mientras que la directiva EN:+ define el final del procedimiento. Sin embargo" un segmento de c%digo puede tener cualquier numero de procedimientos" todos distinguidos por +8<7 ( EN:+. $n procedimiento llamado .o subrutina/ es una secci%n de c%digo que reali#a una tarea definida ( clara .tal como ubicar el cursor o bien obtener entrada del teclado/. La organi#aci%n de un programa en procedimientos proporciona los beneficios siguientes1. 8educe la cantidad de c%digo" (a que un procedimiento com&n puede ser llamado desde cualquier lugar en el segmento de c%digo. 2. Kortalece la mejor organi#aci%n del programa. I. Kacilita la depuraci%n del programa" (a que los errores pueden ser aislados con ma(or claridad.

). 9(uda en el mantenimiento progresivo de programas" (a que los procedimientos son identificados de forma r,pida para su modificaci%n. "8eraciones (ALL 7 RET La instrucci%n 79LL transfiere el control a un procedimiento llamado" ( la instrucci%n 8E1 regresa del procedimiento llamado al procedimiento original que i#o la llamada. 8E1 debe ser la ultima instrucci%n en un procedimiento llamado. Los formatos generales para 79LL ( 8E1 son-

El c%digo objeto particular que 79LL ( 8E1 generan depende de si la operaci%n implica un procedimiento NE98 .cercano/ o un procedimiento K98 .lejano/. Lla*ada 7 regreso cercanos. $na llamada .79LL/ a un procedimiento dentro del mismo segmento es cercana ( reali#a lo siguiente

:isminu(e el S+ en 2 .una palabra/ Hete el A+ .que contiene el despla#amiento de la instrucci%n que sigue al 79LL/ en la pila. Anserta la direcci%n del despla#amiento del procedimiento llamado en el A+ .esta operaci%n vaca el resultado de la instrucci%n previamente procesada/"

$n 8E1 que regresa desde un procedimiento cercano reali#a lo siguiente

Saca el antiguo valor de A+ de la pila ( lo enva al A+ .lo cual tambi6n vaca el resultado de la instrucci%n previamente procesada/. Ancrementa el S+ en 2.

9 ora el 7S-A+ apunta a la instrucci%n que sigue al 79LL original en la llamada del procedimiento" en donde se reasume la ejecuci%n. Lla*ada 7 regreso lejanos. $na llamada .79LL/ lejana llama a un procedimiento etiquetado con K98" tal ve# en un segmento de c%digo separado. $n 79LL lejano mete a la pila al 7S ( al A+" ( 8E1 los saca de la pila. page F'"1I2 +'C79LL+ .E2E/ Llamada a procedimientos

1A1LE

.H<:EL SH9LL .S197S F) .:919 5===================================================================== .7<:E BEQAN +8<7 K98 79LL B1' 5Llama a B1' 5 ... H<V 92")7''? 5Salida a :<S AN1 21? BEQAN EN:+ 5===================================================================== B1' +8<7 NE98 79LL 71' 5Llama a 71' 5 ... 8E1 5:e regreso B1' EN:+ 5>uien llama 5===================================================================== EN: BEQAN

Pgina Anterior

Pgina Siguiente

UNIDAD VIII
MACROS
0.1. Introducci!n. 0.2. $e-inici!n de una Macro. 0.3. Mane1o de Param&tros. 0.4. Mane1o de Eti2uetas .ocales. 0.*. Bi(liotecas de Macros.

Regresar a la Portada

Autoevaluacin

6.1. &NTR"!$((&"N.
+ara cada instrucci%n simb%lica que usted codifica" el ensamblador genera una instrucci%n de lenguaje de maquina. El ensamblador tiene facilidades que el programador puede utili#ar para definir macros. +rimero a( que definir un nombre especifico para la macro" junto con el conjunto de instrucciones en lenguaje ensamblador que la macro va a generar. :espu6s" siempre que necesite codificar el conjunto de instrucciones" solo a( que codificar el nombre de la macro ( el ensamblador genera de forma autom,tica las instrucciones que an sido definidas en la macro. Las macros son &tiles para los siguientes prop%sitos

Simplificar ( reducir la cantidad de codificaci%n repetitiva. 8educir errores causados por la codificaci%n repetitiva. Lineali#ar un programa en lenguaje ensamblador para acerlo mas legible.

Pgina Anterior

Pgina Siguiente

6.2. !E'&N&(&"N !E $NA %A(R".


$na definici%n de macro aparece antes de que cualquier definici%n de segmento. E;aminemos una definici%n de una macro sencilla que iniciali#a los registros de segmento para un programa.E2EANA7A98EQS H978< H<V 92" Tdata H<V :S" 92 H<V ES" 92 EN:H 5:efine macro 5 ] 7uerpo de 5 ] la definici%n 5 ] de la macro 5 Kin de la macro

El nombre de esta macro es ANA7A98EQS" aunque es aceptable cualquier otro nombre valido que sea &nico. La directiva H978< en la primer lnea indica al ensamblador que las instrucciones que siguen" asta EN:H .Bfin de la macroB/" son parte de la definici%n de la macro. La directiva EN:H termina la definici%n de la macro. Los nombres a que se ace referencia en la definici%n de la macro" Tdata" 92" :S ( ES" deben estar definidos en alguna parte del programa o deben ser dados a conocer de alguna otra forma al ensamblador. En forma subsecuente se puede usar la macro=instruccion ANA7A98EQS en el segmento de c%digo en donde quiera iniciali#ar los registros. 7uando el ensamblador encuentra la macra= instruccion ANA7A98EQS" busca en una tabla de instrucciones simb%licas (" a falta de una entrada" busca macroinstrucciones. 3a que el programa contiene una definici%n de la macro ANA7A98EQS" el ensamblador sustitu(e el cuerpo de la definici%n generando instrucciones- la e;pansi%n de la macro. $n programa usara la macroinstruccion ANA7A98EQS solo una ve#" aunque otras macros est,n dise@adas para ser utili#adas cualquier numero de veces ( cada ve# el ensamblador genera la misma e;pansi%n.

Pgina Anterior

Pgina Siguiente

6.). %ANE " !E PARA%ETR"S.


+ara acer una macro fle;ible" puede definir nombres en ella como argumentos mudos .ficticios/.La definici%n de la macro siguiente" llamada :ES+LEQ98VHSQ" proporciona el uso de la funci%n 'D? del :<S para desplegar cualquier mensaje. 7uando se usa la macroinstrucci%n el programador tiene que proporcionar el nombre del mensaje" el cual ace referencia a un ,rea de datos terminada por un signo de d%lar. :ES+LEQ98VHSQ H978< HENS9ZE 5 9rgumento mudo H<V 9?" 'D? LE9 :2" HENS9ZE AN1 21? EN:H 5 Kin de la macro $n argumento mudo en una definici%n de macro indica al ensamblador que aga coincidir su nombre con cualquier aparici%n del mismo nombre en el cuerpo de la macro. +or ejemplo" el argumento mudo HENS9ZE tambi6n aparece en la instrucci%n LE9. 7uando utili#a la macroinstrucci%n :ES+LEQ98VHSQ" usted proporciona un par,metro como el nombre real del mensaje que ser, desplegado" por ejemplo:ES+LEQ98VHSQ HENS9ZE2 En este caso" HENS9ZE2 tiene que estar apropiadamente definido en el segmento de dato. El par,metro en la microinstrucci%n corresponde al argumento mudo en la definici%n original de la macro:efinici%n de macro- :ES+LEQ98VHSQ H978< HENS9ZE Hacroinstruccin:ES+LEQ98VHSQ HENS9ZE2 .9rgumento/ .+arametro/

El ensamblador (a a ec o corresponder el argumento en la definici%n original de la macro con la instrucci%n LE9 en el cuerpo de la macro. 9 ora sustitu(e el .los/ par,metro.s/ de la macroinstrucci%n HENS9ZE2 por la presencia de HENS9ZE en la instrucci%n LE9 ( la sustitu(e por cualquier otra aparici%n de HENS9ZE. $n argumento mudo puede contener cualquier nombre valido" inclu(endo un nombre de registro tal como 72. +uede definir una macro con cualquier numero de argumentos mudos" separados por coma" asta la columna 12' de una lnea. El ensamblador sustitu(e los par,metros de la macro instrucci%n por los argumentos mudos en la definici%n de la macro" entrada por entrada" de i#quierda a derec a.

Pgina Anterior

Pgina Siguiente

6.0. %ANE " !E ET&I$ETAS L"(ALES.


9lgunas macros necesitan que se definan elementos de datos ( etiquetas de instrucciones dentro de la definici%n de la macro. Si utili#a la macro mas de una ve# en el mismo programa ( el ensamblador define los elementos de datos para cada aparici%n" los nombres duplicados aran que el ensamblador genere un mensaje de error. +ara asegurar que cada nombre generado es &nico" a( que codificar la directiva L<79L inmediatamente despu6s de la instrucci%n H978<. Su formato general esL<79L Etiqueta1" Etiqueta2...Etiquetan.

Pgina Anterior

Pgina Siguiente

6.1.B&BL&"TE(AS !E %A(R"S.
:efinir una macro ( usarla solo una ve# en un programa no es mu( productivo. El enfoque abitual es catalogar las macros en una biblioteca en disco bajo un nombre descriptivo" como H978<.LAB. $sted solo tiene que reunir todas las definiciones de sus macros en un arc ivo ( almacenar el arc ivo en discoHacro1 H978< .... EN:H Hacro2 H978< .... EN:H +ara usar cualquiera de las macros catalogadas" en lugar de codificar las definiciones H978< al inicio del programa utilice la directiva AN7L$:E asAN7L$:E 7- H978<.LAB Hacro1 Hacro2 El ensamblador accesa el arc ivo llamado H978< en la unidad 7 e inclu(e ambas definiciones de macro" Hacro1 ( Hacro2" en el programa. El listado ensamblado contendr, una copia de las definiciones de las macros. La !irectiva P$R#E. La ejecuci%n de una instrucci%n AN7L$:E ace que el ensamblador inclu(a todas las definiciones de macros que est,n especificadas en la biblioteca. Sin embargo" suponga que una biblioteca contiene las macros S$H9" 8ES19" :AVA:E" pero que el programa solo necesita S$H9. La directiva +$8QE permite que usted BelimineB la macros 8ES19 ( :AVA:E que no necesita del ensamblado actualAK1 AN7L$:E 7-^H978<.LAB EN:AK +$8QE 8ES19" :AVA:E

5Anclu(e la biblioteca completa 5Elimina la macros no necesarias

$na operaci%n +$8QE facilita solo el ensamblado de un programa ( no tiene efecto sobre las macros almacenadas en la biblioteca.

Pgina Anterior

Pgina Siguiente

BIBLIOGRAFIA
Lenguaje Ensa*/lador 7 Progra*acion 8ara P( &B% 7 (o*8ati/les. Peter A/el. Editorial Prentice ?all. Tercera Edicin Lenguajes Ensa*/ladores 'uster (a/aDero J PereG Aliaga Editorial %c #ra: ?ill Pri*era Edicin P( &ntern %icFael TiscFer J Bruno ennricF Editorial A/acus

Regresar a la Portada

UNIDAD I

Autoevaluacin

1.- A la ser e !e !a"#s $%e la &ar"e '(s )a !e la )#*&%"a!#ra # +ar!,arees )a&a. !e /"er&re"ar se le !e/#* /a0
3 3 3 .en#ua1e de 4lto ni)el. .en#ua1e Ma2uina. .en#ua1e ensam(lador.

"ESP.. B

1.- La /'#r*a) 2/ $%e +a)e $%e el +ar!,are !e la )#*&%"a!#ra real )e %/a !e"er* /a!a a)" 3 !a! se lla*a0
3 3 3 Comando. Pro#rama. Instrucci!n.

"ESP. C

4.- A l#s &r#5ra*as $%e &er* "e/ &asar !el &r#5ra*a '%e/"e a le/5%a6e *a$% /a se les !e/#* /a /#r*al*e/"e0
3 3 3 Ensam(ladores. .i#adores. Con)ertidores.

"ESP. 4

4.- El le/5%a6 E/sa*7la!#r es )#/s !era!# )#*#0


3 3 3 Un len#ua1e de alto ni)el. .en#ua1e de (a1o ni)el. .en#ua1e de ni)el medio.

"ESP. C

8.- Se le !a es"e /#*7re &#r$%e s r3e &ara re)#r!ar )#/ *a9#r 'a) l !a! el )#/6%/"# !e /s"r%)) #/es !e %/a !e"er* /a!a *:$% /a 0
3 3 3 Instruccion (sica. Instrucci!n. Mnemot&cnico.

"ESP. C

UNIDAD II

Autoevaluacin

1.- 0 L#s &r /) &ales ele*e/"#s !e la "ar6e"a !e s s"e*a s#/


3 3 3 "anuras de e pansion para tar1etas adicionales5 unidades de disco -i1o y e trai(le. Un microprocesador5 memoria de solo lectura 6"+M7 y memoria de acceso aleatorio 6"4M7. .eds indicadores5 -uente de poder.

"ESP. B

1.- El )ere7r# !e la PC 9 )#*&a" 7les es %/0


3 3 3 Memoria. 'ar1eta de sistema.. Microprocesador.

"ESP. C

4.- Se e/)ar5a !e "ra/s'er r !a"#s e/"re el &r#)esa!#r- la *e*#r a 9 l#s ! s&#s " 3#s e;"er/#s0
3 3 3 Un (us de datos. Un (us de control. El cac8&.

"ESP. 4

4.- Las %/ !a!es '%/) #/ales !e la )#*&%"a!#ra s#/0


3 Unidad central de proceso5 unidad de control5 unidad aritm&tico9l!#ica5 unidad aritm&tico9l!#ica5 unidad de control y unidades de discos. 3 Unidad central de proceso5 unidad de control5 unidad aritm&tico9l!#ica5 unidad aritm&tico9l!#ica5 unidad de control y unidad de entradas y salidas. 3 Unidad de re#ulacion de )olta1es5 unidad de control5 unidad aritm&tico9l!#ica5 unidad aritm&tico9l!#ica5 unidad de control y unidad de entradas y salidas. "ESP. B

8.- Es"e ele*e/"# se e/)ar5a !e s /)r#/ .ar )a!a %/a !e las a)) #/es !e la U/ !a! !e C#/"r#l0
3 3 3 $ispositi)os de control. Contador. "elo1.

"ESP. C

UNIDAD III

Autoevaluacin

1.- Es %/ area es&e) al e/ %/ &r#5ra*a $%e / ) a e/ %/ l * "e !e %/ &arra'#- es"# es- e/ %/a l#)al !a! !e re5%lar*e/"e ! 3 s 7le e/"re 16# 1< +e;a!e) *al0
3 3 3 Procedimiento. Se#mento. $espla%amiento.

"ESP. B

1.- L#s "res se5*e/"#s &r /) &ales s#/ l#s se5*e/"#s !e0
3 3 3 Codi#o5 de datos y de (us. Procedimientos5 macros y eti2uetas. Codi#o5 de datos y de la pila.

"ESP. C

4.- La ! s"a/) a e/ 79"es !es!e la ! re)) #/ !el se5*e/"# se !e' /e )#*#0


3 3 3 $espla%amiento. Con1unto. Su(con1unto.

"ESP. 4

4.- E/ es"e *#!# se e&e) ' )a/ l#s #&era/!#s e/ '#r*a *&l ) "a e/ la !e' / ) 2/ !e la /s"r%)) 2/0
3 3 3 Modo e plicito. Modo Implicito. Modo direccionado.

"ESP. B

8.- E/ es"e *#!#- el )a*&# !e ! re)) 2/ !e la /s"r%)) 2/ &r#&#r) #/a la ! re)) 2/ e/ $%e se al*a)e/a la ! re)) 2/ e'e)" 3a e/ la *e*#r a0
3 3 3 Modo de usuario. Modo inmediato . Modo indirecto .

"ESP. C

UNIDAD IV

Autoevaluacin

1.-Es %/a #&era) #/ $%e s%s&e/!e la e6e)%) #/ !e %/ &r#5ra*a !e *#!# $%e el s s"e*a &%e!a real .ar %/a a)) #/ es&e) al0
3 3 3 Instrucci!n . Interrupci!n. Macroinstrucci!n .

"ESP. 4

1.- Las /"err%&) #/es se ! 3 !e/ e/ !#s " &#s las )%ales s#/0
3 3 3 Internas y alternas. E ternas y su(yascentes. E ternas e internas.

"ESP. C

4.- I/"err%&) #/ &r#3#)a!a &#r %/ ! s&#s " 3# e;"er/# al &r#)esa!#r0


3 3 3 E terna . Interna. 4lterna

"ESP. 4

4.- I/"err%&) #/ $%e #)%rre )#*# res%l"a!# !e la e6e)%) #/ !e %/a #&era) #/ !e ! 3 s #/ $%e )a%se !es7#r!a* e/"#- e6e)%) #/ e/ *#!# !e %/ &as#- e")0
3 3 3 4lterna . Interna . :in#una.

"ESP. B

8.- Las /"err%&) #/es &%e!e/ ser !e0

3 3 3

Solo de BI+S. Solo de $+S. BI+S y $+S.

"ESP. C

UNIDAD V
Autoevaluacin

1.-Es %/ /#*7re $%e se a&l )a a ele*e/"#s e/ el &r#5ra*a0


3 3 3 Pala(ra reser)ada . Identi-icador . Constante.

"ESP. B

1.- L#s !#s " &#s !e !e/" ' )a!#res e/ e/sa*7la!#r s#/0
3 3 3 :om(re y macro. Eti2ueta y macro . :om(re y eti2ueta .

"ESP. C

4.- U/ &r#5ra*a e/ le/5%a6e e/sa*7la!#r )#/s s"e e/ %/ )#/6%/"# !e0


3 3 3 Enunciados. Eti2uetas . :in#una de las anteriores.

"ESP. 4

4.- U/ )#*e/"ar # e/ le/5%a6e e/sa*7la!#r / ) a )#/0


3 3 3 Coma . Punto y coma . $ia#onal ;.

"ESP. B

8.- Es"as ! re)" 3as a9%!a/ a )#/"r#lar el '#r*a"# !e %/ l s"a!# !e %/ &r#5ra*a e/ e/sa*7la!#r0
3 3 Mo) e Int. 'itle y Se#ment.

'itle y Pa#e .

"ESP. C

UNIDAD VI

Autoevaluacin

1.- Las /s"r%)) #/es $%e real .a/ s%*as 9 res"as se/) llas !e !a"#s 7 /ar #s s#/0
3 3 3 Mdd y sus . 4dd y su( . Mul y su(.

"ESP. B

1.- El O&era/!# l#5 )# A/! !e' /e 0


3 es 1. 3 es <. 3 Si cual2uiera 6o am(os7 de los (its comparados es <5 el resultado es <. Si am(os (its estan en 15 el resultado Si cual2uiera 6o am(os7 de los (its comparados es 15 el resultado es 1. Si am(os (its estan en <5 el resultado Si am(os (its comparados son 15 esta(lece el resultado en 1. .as demas condiciones dan como resultado < .

"ESP. C

4.- Es"a /s"r%)) #/ &#r l# )#*%/ es %" l .a!a &ara )#*&arar !#s )a*&#s !e !a"#s- %/# !e l#s )%ales es"a/ )#/"e/ !#s e/ %/ re5 s"r#0
3 3 3 Cmp. =ne. =le.

"ESP. 4

4.- I/s"r%)) #/ $%e re$% ere %/ 3al#r /) al e/ el re5 s"r# C=0


3 3 3 Call. .oop. :in#una de las anteriores.

"ESP. B

8.- U/ !a"# s / s 5/# "ra"a "#!#s l#s 7 "s )#*#0


3 3 3 Bits de acarreo. Bits de control. Bits de datos.

"ESP. C

UNIDAD VII

Autoevaluacin

1.-U/ &r#)e! * e/"# es !e' / !# &#r la ! re)" 3a0


3 3 3 Endp. Proc. Be#in.

"ESP. B

1.- I/s"r%)) #/ $%e "ra/s' ere el )#/"r#l a %/ &r#)e! * e/"# lla*!#0


3 3 3 "et. Proc. Call.

"ESP. C

4.- I/s"r%)) #/ $%e re5resa !el &r#)e! * e/"# lla*a!# al &r#)e! * e/"# #r 5 /al0
3 3 3 "et. Endp. Ends.

"ESP. 4

4.- I/! )a %/a ! re)) #/ )er)a/a 0


3 3 3 Fear. :ear. Far.

"ESP. B

8.- >a)e re'ere/) a a %/a ! re)) #/ le6a/a0

3 3 3

Fear. :ear. Far .

"ESP. C

UNIDAD VIII

Autoevaluacin

1.- De7e !e a&are)er a/"es !e $%e )%al$% er !e' / ) #/ !e se5*e/"#0


3 3 3 Una eti2ueta . Una macro . Un procedimiento .

"ESP. B

1.- T &# !e ar5%*e/"# $%e /! )a al e/sa*7la!#r $%e +a5a )# /) ! r s% /#*7re )#/ )%al$% er a&ar ) #/ !el * s*# /#*7re e/ el )%er&# !e la *a)r#0
3 3 3 4r#umento acti)o. 4r#umento indicador . 4r#umento mudo .

"ESP. C

4.- I/s"r%)) #/ $%e se %" l .a &ara !e' / r e" $%e"as l#)ales a %/a *a)r#00
3 3 3 .ocal . .oc> . .oc>e.

"ESP. 4

4.- U/a *a)r# !e7e !e / ) ar )#/0


3 3 3 .a directi)a macro . Un nom(re . :in#una de las anteriores.

"ESP. B

8.- Las *a)r#s se ' *al .a/ )#/ la /s"r%)) #/0

3 3 3

Ends. Endp . Endm .

"ESP. C

También podría gustarte