ASCII generalmente se pronuncia "aski", es un acrnimo de American Standard
Code for Information Interchange. Este cdigo asigna a las letras del alfabeto, a los dgitos decimales del 0 al ! a "arios smbolos adicionales un n#mero binario de $ bits %poni&ndose el bit ' en su estado de apagado o 0(. )e esta forma cada letra, dgito o car*cter especial ocupa un b!te en la memoria de la computadora. +odemos obser"ar ,ue este m&todo de representacin de datos es mu! ineficiente en el aspecto num&rico, !a ,ue en formato binario nos basta un solo b!te para representar n#meros de 0 a -.., en cambio con el cdigo ASCII un b!te puede representar #nicamente un dgito. )ebido a esta ineficiencia, el cdigo ASCII es principalmente utili/ado en la memoria para representar te0to. 2.1 Mtodo de BCD Cuando se representan n#meros, letras o palabras por medio de un grupo especial de smbolos, se dice ,ue se encuentran codificados, ! al grupo de smbolos se le llama cdigo. +robablemente uno de los m*s conocidos es el 1orse, en el cual las series de puntos ! ra!as representan letras de alfabeto. 2emos "isto ,ue en cual,uier n#mero decimal se puede representar por medio de un n#mero binario e,ui"alente. El grupo de ceros ! unos contenidos en el n#mero binario se puede considerar como un cdigo ,ue representa el n#mero decimal. Cuando un n#mero decimal se representa con su n#mero binario e,ui"alente, recibe el nombre de codificacin binaria directa. 3odos los sistemas digitales emplean alguna forma de n#meros binarios para su operacin interna, aun,ue el mundo e0tremo es naturale/a decimal. Ello significa ,ue las con"ersiones entre los sistemas decimal ! binario lle"an acabo con frecuencia. 2emos "isto ,ue estas con"ersiones pueden ser largas ! complicadas si se traba4a con n#meros grandes. +or esta ra/n, se emplea, en ciertas situaciones, un medio de codificacin de n#meros decimales ,ue combina caractersticas de los sistemas decimal ! binario. Cdigo decimal codificado en binario Si cada digito de un n#mero decimal se representa con su e,ui"alente binario, el resultado es un cdigo llamado decimal codificado en binario %en lo sucesi"o se abre"iara 5C) es un acrnimo de 5inar! Coded )ecimal(, !a ,ue el ma!or digito decimal es el , se necesitan 6 bits para codificar cada digito %el cdigo binario correspondiente de es 7007(. +ara ilustrar el cdigo 5C) tomemos un n#mero decimal como '$6. Cada digito se cambia por su e,ui"alente binario de la siguiente manera8 8 7 4 (decimal) 1000 0111 0100 (BCD) +ara poner otro e4emplo, cambiemos 69 por su representacin en el cdigo binario 9 4 3 (decimal) 1001 0100 0011 (BCD) :na "e/ m*s, cada digito decimal se cambia por su e,ui"alente binario directo. ;tese ,ue siempre se usan 6 bits por cada digito. El cdigo 5C), por lo tanto, representa cada digito del n#mero decimal por medio de un n#mero binario de 6 bits. )e hecho, solo se utili/a n#meros binarios de 6 bits del 0000 al 7007. El cdigo 5C) no se usa los n#meros 7070, 7077, 7700, 7770, ! 7777. En otras palabras, solo se emplean 70 de los 7< posibles grupos del cdigo binario de 6 bits. Si alguno de estos n#meros =prohibidos> de 6 bits aparece en una ma,uina ,ue emplee el cdigo 5C) es una indicacin, por lo general, de ,ue se ha cometido un error. Este m&todo es mucho m*s pr*ctico para representacin de n#meros en la memoria en comparacin al ASCII, toda"a se ,ueda por deba4o del binario, !a ,ue con un b!te en el m&todo 5C) solo podemos representar dgitos del 0 al , en cambio, en formato binario podemos representar todos los dgitos desde 0 hasta -... Este formato es utili/ado principalmente para representar n#meros mu! grandes en aplicaciones mercantiles !a ,ue facilita las operaciones con los mismos e"itando errores de redondeo. 2.3 Representacin de pnto flotante Esta representacin esta basada en la notacin cientfica, esto es, representar un n#mero en dos partes8 su mantisa ! su e0ponente. +oniendo como e4emplo el n#mero 7-96000, podemos representarlo como 7.7-9?70@<, en esta #ltima notacin el e0ponente nos indica el n#mero de espacios ,ue ha! ,ue mo"er el espacio hacia la derecha para obtener el resultado original. En caso de ,ue el e0ponente fuera negati"o nos estara indicando el n#mero de espacios ,ue ha! ,ue recorrer el punto decimal hacia la i/,uierda para obtener el original. CA!I"#$% III I&"R%D#CCI%& A$ $'&(#A)' '&SAMB$AD%R 3.1 Importancia del $enga*e 'nsamblador. Aa importancia del lengua4e ensamblador radica principalmente ,ue se traba4a directamente con el microprocesadorB por lo cual se debe de conocer el funcionamiento interno de este, tiene la "enta4a de ,ue en el se puede reali/ar cual,uier tipo de programas ,ue en los lengua4es de alto ni"el no lo pueden reali/ar. Ctro punto sera ,ue los programas en ensamblador ocupan menos espacio en memoria. Es importante como se puede "er, el Aengua4e Ensamblador es directamente traducible al Aengua4e de 1*,uina, ! "ice"ersaB simplemente, es una abstraccin ,ue facilita su uso para los seres humanos. +or otro lado, la computadora no entiende directamente al Aengua4e EnsambladorB es necesario traducirle a Aengua4e de 1*,uina. +ero, al ser tan directa la traduccin, pronto aparecieron los programas Ensambladores, ,ue son traductores ,ue con"ierten el cdigo fuente %en Aengua4e Ensamblador( a cdigo ob4eto %es decir, a Aengua4e de 1*,uina. Surge como una necesidad de facilitar al programador la tarea de traba4ar con lengua4e m*,uina sin perder el control directo con el hardDare. El Aengua4e Ensamblador es la forma m*s b*sica de programar un microprocesador para ,ue &ste sea capa/ de reali/ar las tareas o los c*lculos ,ue se le re,uieranB es conocido como un lengua4e de ba4o ni"el, esto significa ,ue nos permite controlar el 700 E de las funciones de un microprocesador, as como los perif&ricos asociados a &ste. A diferencia de los lengua4es de alto ni"el, por e4emplo "+ascal", el lengua4e ensamblador no re,uiere de un compilador, esto es debido a ,ue las instrucciones en lengua4e ensamblador son traducidas directamente a cdigo binario ! despu&s son colocadas en memoria para ,ue el microprocesador las tome directamente. 3. 2 +enta*as , des-enta*as del $enga*e 'nsamblador. +enta*as Aa primera ra/n para traba4ar con ensamblador es ,ue proporciona la oportunidad de conocer m*s a fondo la operacin de su +C, lo ,ue permite el desarrollo de softDare de una manera m*s consistente. Aa segunda ra/n es el control total de la +C ,ue se tiene con el uso del mismo. Ctra ra/n es ,ue los programas de ensamblador son m*s r*pidos, m*s compactos ! tienen ma!or capacidad ,ue los creados en otros lengua4es. +or #ltimo el ensamblador permite una optimi/acin ideal en los programas tanto en su tamaFo como en su e4ecucin. -elocidad.. Como traba4a directamente con el microprocesador al e4ecutar un programa, pues como este lengua4e es el m*s cercano a la m*,uina la computadora lo procesa m*s r*pido. 1a!or control sobre el hardDare de la computadora 'ficiencia de tama/o.. :n programa en ensamblador no ocupa mucho espacio en memoria por,ue no tiene ,ue cargar libreras ! dem*s como son los lengua4es de alto ni"el. 0le1ibilidad.. Es fle0ible por,ue todo lo ,ue puede hacerse con una m*,uina, puede hacerse en el lengua4e ensamblador de esta m*,uinaB los lengua4es de alto ni"el tienen en una u otra forma limitante para e0plotar al m*0imo los recursos de la m*,uina. C sea ,ue en lengua4e ensamblador se pueden hacer tareas especficas ,ue en un lengua4e de alto ni"el no se pueden lle"ar acabo por,ue tienen ciertas limitantes ,ue no se lo permiten. Des-enta*as
Gepeticin constante de grupos de instrucciones ;o e0iste una sinta0is estandari/ada )ificultad para encontrar errores en los programas %bugs( "iempo de programacin.. Como es un lengua4e de ba4o ni"el re,uiere m*s instrucciones para reali/ar el mismo proceso, en comparacin con un lengua4e de alto ni"el. +or otro lado, re,uiere de m*s cuidado por parte del programador, pues es propenso a ,ue los errores de lgica se refle4en m*s fuertemente en la e4ecucin. !rogramas fente grandes.. +or las mismas ra/ones ,ue aumenta el tiempo, crecen los programas fuentesB simplemente re,uerimos m*s instrucciones primiti"as para describir procesos e,ui"alentes. Esto es una des"enta4a por,ue dificulta el mantenimiento de los programas, ! nue"amente reduce la producti"idad de los programadores. !eligro de afectar recrsos inesperadamente.. 3enemos la "enta4a de ,ue todo lo ,ue se puede hacer en la m*,uina, se puede hacer con el Aengua4e Ensamblador %fle0ibilidad(. El problema es ,ue todo error ,ue podamos cometer, o todo riesgo ,ue podamos tener, podemos afectar los recursos de la ma,uina, programar en este lengua4e lo m*s com#n ,ue pueda pasar es ,ue la m*,uina se blo,uee o se reiniciali/e. +or,ue con este lengua4e es perfectamente posible %! sencillo( reali/ar secuencias de instrucciones in"*lidas, ,ue normalmente no aparecen al usar un lengua4e de alto ni"el. En ciertos casos e0tremos, puede llegarse a sobrescribir informacin del C1CS de la m*,uinaB esto puede causar ,ue de4emos de ""er" el disco duro, 4unto con toda su informacin. 0alta de portabilidad.. +or,ue para cada m*,uina e0iste un lengua4e ensambladorB por ello, e"identemente no es una seleccin apropiada de lengua4e cuando deseamos codificar en una m*,uina ! luego lle"ar los programas a otros sistemas operati"os o modelos de computadoras. 3.3 Relacin del lenga*e ensamblador con los componentes internos del procesador En la memoria se almacena la informacin en celdas especiales llamados registros los cuales tienen un ni"el alto ! un ni"el ba4o. #nidad aritmtica , lgica2 es la responsable de reali/ar como su nombre lo indica operaciones aritm&ticas ! lgicas. #nidad de control2 Se encarga de coordinar los componentes se e4ecuten las operaciones correctamente. Bs2 interno son los canales por donde pasa la informacin ,ue la m*,uina "a a procesar %bus de entrada( o procesada %bus de salida(. Aa :C+ contiene registros para el mane4o de comunicacin con el microprocesador los cuales son8 Registros de so general A3 H Gegistro acumulador, di"idido en A2 ! AA %' bits cada uno(.I Inter"iene en las operaciones aritm&ticas ! lgicas, despu&s de la operacin arro4a un resultado. B3 H Gegistro base, di"idido en 52 ! 5A.I Se utili/a en transferencias de datos entre la memoria ! el procesador. C3 H Gegistro contador, di"idido en C2 ! CA.I Se utili/a como contador en bucles %ACC+(, en operaciones con cadenas %GE+(, ! en despla/amientos %CA(. D3 H Gegistro de datos, di"idido en )2 ! )A.I Se utili/a en operaciones de multiplicacin ! di"isin 4unto con A0 ! en operaciones de entrada ! salida de puertos, su mitad inferior )A contiene el n#mero de puertos. Registros de 'stado 2a! nue"e indicadores de un bit en este registro de 7< bits. Aos cuatro bits m*s significati"os est*n indefinidos, mientras ,ue ha! tres bits con "alores determinados8 los bits . ! 9 siempre "alen cero ! el bit 7 siempre "ale uno. C0 4Carr, 0lag5 bit 672 Si "ale 7, indica ,ue hubo "arrastre" %en caso de suma( o "pr&stamo" %en caso de resta(. Este indicador es usado por instrucciones ,ue suman o restan n#meros ,ue ocupan "arios b!tes. Aas instrucciones de rotacin pueden aislar un bit de la memoria o de un registro poni&ndolo en el CJ. !0 4!arit, 0lag5 bit 272 Si "ale uno, el resultado tiene paridad par, es decir, un n#mero par de bits a 7. Este indicador se puede utili/ar para detectar errores en transmisiones. A0 4A1iliar, carr, 0lag5 bit 872 Si "ale 7, indica ,ue hubo "arrastre" o "pr&stamo" del nibble %cuatro bits( menos significati"o al nibble m*s significati"o. Este indicador se usa con las instrucciones de a4uste decimal. 90 49ero 0lag5 bit :72 Si este indicador "ale 7, el resultado de la operacin es cero. S0 4Sign 0lag5 bit ;72 Gefle4a el bit m*s significati"o del resultado. Como los n#meros negati"os se representan en la notacin de complemento a dos, este bit representa el signo8 0 si es positi"o, 7 si es negati"o. "0 4"rap 0lag5 bit <72 Si "ale 7, el procesador est* en modo paso a paso. En este modo, la C+: autom*ticamente genera una interrupcin interna despu&s de cada instruccin, permitiendo inspeccionar los resultados del programa a medida ,ue se e4ecuta instruccin por instruccin. I0 4Interrpt 0lag5 bit =72 Si "ale 7, la C+: reconoce pedidos de interrupcin e0ternas. Si "ale 0, no se reconocen tales interrupciones D0 4Direction 0lag5 bit 1672 Si "ale 7, las instrucciones con cadenas sufrir*n "autoIdecremento", esto es, se procesar*n las cadenas desde las direcciones m*s altas de memoria hacia las m*s ba4as. Si "ale 0, habr* "autoIincremento", lo ,ue ,uiere decir ,ue las cadenas se procesar*n de "i/,uierda a derecha". %0 4%-erflo> flag5 bit 1172 Si "ale 7, hubo un desborde en una operacin aritm&tica con signo, esto es, un dgito significati"o se perdi debido a ,ue tamaFo del resultado es ma!or ,ue el tamaFo del destino. Relacin entre el cdigo binario , el lenga*e ensamblador En el cdigo binario se utili/an ceros ! unos, mientras ,ue el lengua4e ensamblador es una coleccin de smbolos mnemnicos ,ue representan8 operaciones, nombres simblicos, operadores ! smbolos especiales. Aa relacin entre estos dos lengua4es sera ,ue el binario es el lengua4e ,ue la m*,uina entiende ! el ensamblador se acerca mas lengua4e de esta. 3.8 Mane*o de la memoria2 Direccionamiento 4interno , e1terno7. El mane4o de la memoria depende de ,ue procesador tenga la m*,uina, entre los cuales a continuacin se mencionan los siguientes8
1emoria de +rograma 1emoria E0terna de )atos 1emoria Interna de )atos Gegistros de funciones Especiales 1emoria de 5it. El espacio de la 1emoria de +rograma contiene todas las instrucciones, datos, tablas ! cadenas de caracteres %strings( usadas en los programas. Esta memoria se direcciona principalmente usando el registro de 7< bits llamado )ata +ointer. El tamaFo m*0imo de la 1emoria de +rograma es de <6 Kb!tes. Aa 1emoria E0terna de )atos contiene todas las "ariables ! estructuras de datos ,ue no caben en la memoria interna del 1icroprocesador. Esta memoria se direcciona principalmente por el registro de 7< bits )ata +ointer , aun,ue tambi&n se puede direccionar un banco de 1emoria E0terna de )atos de -.< b!tes usando los dos primeros registros de propsito general . El espacio de 1emoria Interna de )atos funcionalmente es la memoria de datos m*s importante, !a ,ue ah es donde residen cuatro bancos de registros de propsito generalB la pila o stack del programaB 7-' bits de los -.< bits de un *rea de memoria direccionable por bit ! todas las "ariables ! estructuras de datos operadas directamente por el programa. El tamaFo m*0imo de la 1emoria Interna de )atos es de -.< b!tes. Contiene un espacio para los denominados Gegistros de funciones Especiales destinado para los puertos de entrada L salida, tempori/adores ! puerto serie del circuito integrado. Estos registros inclu!en al Stack +ointerB al registro de la palabra de estado del programa ! al Acumulador. Aa cantidad m*0ima de Gegistros de Junciones Especiales es 7-'. 3odos los Gegistros de Junciones Especiales tienen direcciones ma!ores a 7-$ ! se ubican en los 7-' b!tes superiores de la 1emoria Interna de )atos. Estas dos *reas de la 1emoria Interna de )atos se diferencian por el modo de direccionamiento usado para accesarlas. Aos Gegistros de Junciones Especiales solo se pueden accesar usando el modo de direccionamiento )irecto, mientras ,ue los 7-' b!tes superiores solo se pueden accesar con el modo de direccionamiento Indirecto. +or otra parte, el espacio de 1emoria de 5it se usa para almacenar "ariables ! banderas de un bit. El tamaFo m*0imo de la 1emoria de 5it es de -.< bits, 7-' de los bits comparten su espacio con 7< b!tes del espacio de la 1emoria Interna de )atos ! los otros 7-' bits lo hacen con los Gegistros de Junciones Especiales. CA!I"#$% I+ I&"R%D#CCI%& A$ MICR%!R%C'SAD%R 8.1 $a e-olcin del microprocesador Antes de comentar los microprocesadores modernos, se debe primero entender ,ue fue lo ,ue puso a estos dispositi"os en primer plano. Aa historia dice ,ue los antiguos babilonios empe/aron a usar el *baco,%calculadora primiti"a hecha con cuentas o esferas ahuecadas(, alrededor del aFo .00 a de MC. Con el tiempo, esta sencilla calculadora, estimulo a la humanidad para perfeccionar una ma,uinaria calculadora en ,ue se utili/aban engranes ! ruedas %5las +ascal en 7<6-(. Se continuaron los progresos con las gigantescas ma,uinas computadoras de las d&cadas de 760 ! 7.0, construidas con rele"adores ! tubos de "acio %bulbos(. 1as adelante, se utili/aron los transistores ! los componentes electrnicos de estado slido para construir las poderosas computadoras de la d&cada de 7<0. Con el ad"enimiento de los circuitos integrados se llego el perfeccionamiento del microprocesador ! de los sistemas de microcomputadoras. Con la aparicin de las computadoras personales %+C( ! la reduccin en el costo de las mismas, el microprocesador se con"irti en uno de los dispositi"os electrnicos m*s importantes en la historia de la electrnica. 5*sicamente, un microprocesador es un circuito electrnico de mu! alta escala de integracin, capa/ de reali/ar una infinidad de tareas de forma repetiti"a a "elocidades mu! altas. Esto se logra por medio de la lgica dictada por un con4unto de instrucciones ,ue el microprocesador interpreta ! e4ecuta ! ,ue recibe el nombre de programa. )esde su aparicin en 7$7 el microprocesador ha sufrido una gran cantidad de cambios, todos ellos hacia el lado de aumentar su capacidad ! "elocidad de procesamiento. +ara poder utili/ar todo el potencial ,ue encierra un microprocesador, es necesario conocer ! comprender su lengua4e natural, esto es8 el lenga*e ensamblador. 'l microprocesador de 8 bits. En 7$7, Intel Corporation ! el talento creati"o de 1arcian E. Cff, lan/aron el primer microprocesador8 el 6006, de 6 bits. Este controlador integrado. +rogramable en un solo encapsulado era suficiente, seg#n las normas actuales, por,ue solo direccionaba 60< localidades de 6 bits en la memoria. El 6006 contena un con4unto de instrucciones ,ue ofrecan solo 6. instrucciones diferentes. Como consecuencia, el 6006 solo se odia emplear en aplicaciones limitadas, como en los primeros 4uegos de "ideo ! en controladores pe,ueFos basadas en microprocesadores. Cuando surgieron aplicaciones m*s comple4as para el microprocesador, el 6006 resulto inadecuado. 'l microprocesador de < bits. 1as tarde, en 7$7, al percatarse ,ue el microprocesador era un producto "iable para comerciali/acin, Intel Corporation produ4o el '00', el primer microprocesador de ' bits. El tamaFo ampliado de la memoria %7<K '( ! las instrucciones adicionales %un total de 6'( en este nue"o microprocesador brindaron la oportunidad de muchas aplicaciones mas a"an/adas %7 K es igual a 70-6 b!te es un numero de ' bits(. Conforme los ingenieros desarrollaban usos mas demandantes para el microprocesador, la memoria ! el 4uego de instrucciones, m*s o menos pe,ueFos del '00' pronto limitaron su utilidad. +or lo tanto, en 7$9, Intel Corporation introdu4o el '0'0, el primero de los microprocesadores modernos de ' bits. +ronto, otras empresas empe/aron a lan/ar sus propias "ersiones de los procesadores de 6 ! de ' bits. N+ero ,ue tenia en especial el '0'0O ;o solo direccionaba mas en la memoria ! e4ecutaba mas instrucciones, ! con die/ "eces mas rapide/ ,ue el '00'. :na suma ,ue tardaba -0 ms en un sistema basado en un '0'0. Adem*s, el '0'0 era compatible con la lgica transistorItransistor %33A( lo cual significaba ,ue se poda interconectar con componentes de lgica 33A est*ndar. 3odas estas "enta4as introdu4eron la era del '0'0 ! la &poca siempre en e0pansin del microprocesador. Intel Corporation introdu4o en 7$$, una nue"a "ersin del '0'08 el '0'.. Aun,ue solo ligeramente mas a"an/ado ,ue el '0'0, el '0'. direcciona la misma cantidad de memoria, e4ecuta mas o menos el mismo n#mero de instrucciones ! suma en 7.9 ms en lugar de -.0 ms. Aas principales "enta4as del '0'. son el generador de relo4 ! el controlador del sistema integrados, ,ue eran componentes e0ternos en un sistema basado en el '0'0. 3an solo Intel ha "endido mas de 700 millones de pie/as del microprocesador '0'.. Estas caractersticas han hecho del '0'. uno de los microprocesadores Intel mas conocidos. 'l microprocesador de 1: bits. En 7$', Intel Corporation lan/o el microprocesador '0'< ! mas o menos un aFo mas tarde, el '0''. Ambos dispositi"os son microprocesadores de 7< bits, e4ecutan instrucciones en escasos 600 nsB una gran me4ora en la relacin con la "elocidad de e4ecucin del '0'.. El '0'< ! el '0'' tienen tambi&n capacidad para direccionar a un 7 1 b!te %' bits( o una memoria de .7-K palabra %7< bits de ancho(. Aas "elocidades m*s altas de e4ecucin ! el tamaFo de memoria m*s grande, permitieron al '0'< ! al '0'' sustituir mini computadoras pe,ueFas en muchas aplicaciones. :na necesidad importante ,ue acelero la e"olucin del microprocesador de 7< bits fue la multiplicacin ! la di"isin por hardDare. Estas funciones no est*n disponibles en la ma!or parte de los microprocesadores de ' bits, e0cepto el motorola 1C<'0, ,ue puede multiplicar, pero no di"idir. +ero el microprocesador de 7< bits e"olucion tambi&n por otras ra/ones. Cfrece un espacio direccionable de memoria mas grande ,ue el microprocesador de ' bits, lo cual le permite le permite efectuar operaciones mu! comple4as para los cuales no ha! espacios en <6k b!tes de memoria. El '0'< ! el '0'' tienen un gran n#mero de registros internos, accesibles a -00 ns, por comparacin con los '0 ,ue se necesitan para llegar hasta un registro en un microprocesador de ' bits. Estos registros adicionales permiten escribir softDare con mucha m*s eficiencia. Asimismo, los programas de aplicacin del softDare %sistemas administrati"os basados en datos, listados, procesadores de palabra ! "erificaciones de ortografa( empe/aron a re,uerir m*s de <6k b!tes de memoria disponibles en el microprocesador de ' bits. El momento llegado para el microprocesador de 7< bits. Aa e"olucin del microprocesador de 7< bits no termino en el '0'< ! el '0'', sino ,ue contin#o con la introduccin del '07'<, una "ersin altamente integrada del '0'<. El microprocesador '07'< de 7< bits es uno de los m*s conocidos del Intel. El '07'< se utili/a en muchas aplicaciones de sistemas de control, pero no como el microprocesador principal en los sistemas de computadoras personales. Si se encuentra el '07'< en un a computadora personal es solo en una tar4eta enchufable en la tar4eta madre ,ue podra controlar una memoria en disco duro o una interface para comunicaciones. El mas reciente microprocesador de 7< bits producido por Intel es el '0-'<, una "ersin me4orada del '0'<, ,ue contiene una unidad de administracin de memoria ! direcciona a una memoria de 7<1 en lugar de 71 b!te. Aa "elocidad de relo4 del '0-'< se ha aumentado tambi&n a 7< 12/, en las #ltimas "ersiones producidas por Intel. Aa "ersin b*sica del '0'< ! del '0'' e4ecutaba hasta -.. 1I+ %millones de instrucciones por segundo(, en tanto la "ersin b*sica del '0-'< e4ecuta hasta ' 1I+. 'l microprocesador de 32 bits. Aa "ersin mas reciente del microprocesador es el de 9- bits. %Consulte en la tabla 6I7 la lista de todos los microprocesadores Intel. Intel produce en la actualidad dos "ersiones principales8 el '09'< ! el '06'<. El '09'< fue el primer microprocesador de 9- bits producido por Intel, cu!a principal "enta4a es una frecuencia de relo4 mucho mas alta %99 12/ en el '09'< ! << 12/ en la "ersin doble relo4 del '06'<(, as como un espacio mucho ma!or en la memoria %6P b!tes(. El microprocesador '06'< contiene b*sicamente un '09'< me4orado, un coprocesador aritm&tico %para la "ersin )Q del '06'<( ! una memoria cach& interna de 'K b!tes. El '09'< e4ecuta muchas instrucciones en - ciclos de relo4, mientras ,ue el '06'<, ,ue e4ecuta muchas instrucciones en un solo ciclo de relo4. Estas me4oras, combinadas con un relo4 de << 12/ %'06'<)Q-( permiten ,ue las instrucciones se e4ecuten a .6 1I+, de acuerdo con Intel Corporation. Esto puede compararse con el '0'., presentando 7- aFos antes ,ue el '06'<, ,ue e4ecutaba las instrucciones a una "elocidad de alrededor de 0.. 1I+. Estas me4oras en la "elocidad continuaron con las "ersiones m*s nue"as del microprocesador de 9- bits conforme sea disponible. Aa pr0ima generacin %+entium( promete lograr "elocidades de 700 1I+. &mero de pie?a Anc@o del canal de datos "ama/o de memoria '06' ' -K interna '0.7 ' 'K interna '0'.A ' <6K '0'< 7< 71 '0'' ' 71 '0< 7< 'K interna '07'< 7< 71 '07'' ' 71 '0-'< 7< 7<1 '09'<)Q 9- 6P '09'<)A 7< 9-1 '09'<SQ 7< 7<1 '06'<)Q 9- 6P '06'<SQ 9- 6P +entium ? 9-L<6 6P 8.2 ArAitectra BBsica del microprocesador. Aa programacin e interface eficiente re,uiere una comprensin clara de la ar,uitectura b*sica de la familia de microprocesadores de Intel en esta seccin se presenta una descripcin detallada de la ar,uitectura b*sica de estos microprocesadores. ArAitectra interna bBsica Aos microprocesadores modernos, igual ,ue los anteriores, buscan instrucciones en la memoria, pero lo hacen en una forma totalmente nue"a. Aos microprocesadores modernos est*n estructurados de modo ,ue contengan muchas mas unidades internas de procesamiento, cada una de la cuales efect#an una tarea especifica. %3&ngase en cuenta ,ue cada una de estas unidades de procesamiento es, realidad, un microprocesador para fines especiales.( Esto significa ,ue el microprocesador moderno puede a menudo procesar cierto n#mero de instrucciones en forma simult*nea, en di"ersas etapas de la e4ecucin. Esta capacidad recibe a menudo el nombre de paralelismo. En la figura 6I7%a( se ilustra el funcionamiento normal de un '0'., ,ue es tpico de la ma!or parte de los microprocesadores de ' bits. ;tese ,ue las instrucciones se recuperan de la memoria con una operacin de lectura. Auego, mientras el '0'. e4ecuta la instruccin, el sistema de memoria esta ocioso. Aa familia de los microprocesadores Intel, empe/ando con el '0'< ! el '0'', apro"echa este tiempo de memoria ociosa buscando con anticipacin la siguiente instruccin mientras e4ecuta la actual. Esto acelera la e4ecucin total de un programa. En la figura 6I7%b( se ilustra la secuencia de e"entos en el microprocesador '06'<. Se anotara ,ue el canal esta casi siempre ocupado. Se "era tambi&n ,ue el '06'< tiene mas de una unidad interna. Cada unidad esta destinada a funcionar en paralelo con instrucciones en di"ersas fases de la e4ecucin. 1icroprocesador Canal %a( :nidad de Interface de canal :nidad de Instruccin :nidad de e4ecucin :nidad de direccionamiento %b( Figura 4-1 (a) Funcionamiento de un microprocesador antiguo como el 8085A (!) Funcionamiento del microprocesador 8048" con ar#uitectura paralela (pipeline)$ Ccupado Ccioso Ccupado Ccupado Ccioso Ccupado Ccupado Ccioso Ccupado Gecuperar 7 Gecuperar - Gecuperar 9 Gecuperar 6 Almacenar 7 Gecuperar . Gecuperar < Aeer - Gecuperar $ )ecodificar 7 )ecodificar - )ecodificar 9 )ecodificar 6 Cciosa )ecodificar . )ecodificar < Cciosa E4ecutar 7 E4ecutar - E4ecutar 9 E4ecutar 6 Cciosa E4ecutar . E4ecutar < Penerar direccin 7 Penerar direccin -
Aa unidad de interface del canal %5I:(, es la ,ue tiene la funcin de leer las instrucciones ! de leer o escribir datos entre el microprocesador ! la memoria. Aa salida de la 5I: se conecta con la memoria cach& de 'K b!tes, en donde se Cach& alimenta un prerrecuperador con una cola de 9- b!tes de instrucciones sin e4ecutar en el prerrecuperador. En la salida del prerrecuperador se encuentra un decodificador de instrucciones ,ue decodifica las instrucciones para ,ue la utilicen las di"ersas unidades de e4ecucin dentro del microprocesador. Estas unidades de e4ecucin inclu!en la unidad de punto flotante, la unidad de control ! prueba de proteccin ! la unidad de paginacin, la unidad de segmentacin ! el despla/ador de barril, ! la AA:. Aa figura 6I- ilustra la multitud de unidades ,ue est*n dentro del microprocesador '06'<. Aos microprocesadores mas antiguos tenan una sola unidad ,ue controlaba la interface del canal ! efectuaba todas las operaciones. El '06'< contiene unidades especiali/adas ,ue en, forma indi"idual, efect#an estas funciones a fin de poder reali/ar m*s de una operacin a la "e/. 0I(#RA 8.2 Aa estructura interna del microprocesador '06'< ArAitectra del sistema En la figura 6I9 se ilustra la ar,uitectura del sistema de un microprocesador moderno. Se "era ,ue en las comunicaciones entre el sistema ! el microprocesador ocurren por medio de estos canales8 direcciones, datos ! control. El canal de direcciones suministra una direccin en la memoria para la memoria del sistema o el espacio de entradaL salida %ELS( para los dispositi"os de ELS del sistema. El canal de datos transfiere estos entre el microprocesador, la memoria ! los dispositi"os de ELS conectados en el sistema. El canal de control suministra seFales de control ,ue hacen ,ue la memoria o el espacio de ELS efect#en una operacin de lectura ! escritura. Aas seFales de control se hacen posible la lectura ! escritura en la memoria o el espacio de ELS. 0I(#RA 8.3 Sistemas 5*sicos '0'< ! '0''. %a( El sistema '0'< ilustra el canal de datos de 7< bits, el canal de direccionamiento de -0 bits ! el canal de control. %b( El sistema del '0'' ilustra el canal de datos de ' bits, el canal d e direcciones de -0 bits ! el canal de control. :n e0amen cuidadoso de la figura 6I9 re"elar* ,ue el ancho del canal de datos ! el de direcciones "ara entre una "ersin ! otra del microprocesador. En la tabla 6I9 se enumeran esta "ariaciones para comparacin ! tambi&n la "elocidad de relo4 cuando hi/o su aparicin el microprocesador. )espu&s de la "ersin inicial de cada microprocesador, se pusieron a disposicin "ersiones con frecuencias de relo4 m*s altas. "AB$A 8.3 Microprocesador Anc@o de canal de datos 4bits7 Anc@o del canal del direcciones 4bits7 Relo* 4MC?7 '0'< 7< -0 . '0'' ' -0 . '07'< 7< -0 < '0-'< 7< -6 ' '09'<)Q 9- 9- 7< '09'<SQ 7< -6 7< '09'<SA 7< -. 7< '06'<)Q 9- 9- -. '06'<SQ 9- 9- -0 El ancho del canal de datos determina cuantos b!tes se transfieren a la "e/ entre el microprocesador ! la memoria, mientras ,ue el ancho del canal de direcciones determina cuanta memoria direcciona el microprocesador. En general, cuanto mas ancho sea el canal de datos, mas r*pido es el microprocesador. 8.3 $a memoria , el microprocesador Se le denomina memoria lgica o memoria fsica al espacio de direccionamiento de un sistema basado en un microprocesador. Aa estructura de la memoria lgica es diferente, en casi todos los casos, ,ue la estructura de la memoria fsica. Aa memoria fsica es la estructura real en el hardDare en el sistema de memoriaB la memoria lgica es el sistema de memoria tal como lo "e el programador. Memoria lgica El espacio b*sico de la memoria lgica es el mismo en todos los microprocesadores Intel. Aa memoria lgica se numera por b!tes. En la figura 6I6 se ilustra la memoria lgica de todos los miembros de la familia Intel. Se "era ,ue la #nica diferencia es ,ue algunos miembros contienen mas memoria ,ue otros. Adem*s, se debe tener en cuenta ,ue la memoria fsica puede diferir de la memoria lgica en muchos sistemas. Aa memoria lgica del '0'<, '0'' ! '07'< empie/a en la localidad 000002 ! llega hasta la JJJJJ2. Este inter"alo de direcciones especifica el 71 de b!tes de memoria disponible en estos sistemas. Aa memoria lgica del '0-'< ! el '09'<SQ empie/a en la localidad de memoria 0000002 ! llega hasta la ubicacin JJJJJJ2 para tener un total de 7<1 b!tes de memoria. El '09'<SA contiene 9-1 b!tes de memoria ,ue empie/an en la localidad 7JJJJJJ2. El '09'<)Q, '06'<SQ ! '06'<)Q contienen memoria ,ue empie/a en la localidad 000000002 ! termina JJJJJJJ2, para un total de 6P b!tes de memoria %7PH 7,0-61 ! 71H 70-6K(. Cuando estos microprocesadores direccionan una palabra de 7< bits en la memoria, se accesan dos b!tes consecuti"os. +or e4emplo, la palabra en la localidad 007--2 se almacena en los b!tes 007--2 ! 007-92B el b!te menos significati"o se almacena en la localidad 007--2. Si se accesa a una palabra doble de 9- bits, esta palabra doble la contienes cuatro b!tes consecuti"os. +or e4emplo, la doble palabra almacenada en la localidad 007-02 se almacena en los b!tes 007-02, 007-72, 007--2 ! 007-92B el b!te menos significati"o se almacena en 007-02 ! el b!te mas significati"o en 007-92. Memoria fDsica Aas memorias fsicas de los miembros de la familia Intel difieren en ancho. Aa memoria del '0'' es de ' bits de anchoB las memorias del '0'<, '07'<, '0-'< ! '09'<SQ tienen 7< bits de anchoB las memorias del '09'<)Q ! '06'< son de 9- bits de ancho. +ara la programacin, no ha! diferencia en el ancho de la memoria por,ue la memoria lgica siempre es de ' bits de anchoB pero como se puede "er en la figura 6I., ha! una diferencia para el diseFador del hardDare. Aa memoria esta organi/ada en bancos de memoria en todas las "ersiones del microprocesador, e0cepto '0'' ,ue tiene un solo banco de memoria. :n banco de memoria es una seccin de ' bits de ancho. Aos microprocesadores de 7< bits tienen dos bancos de memoria para formar una seccin de memoria de 7< bits de ancho, a la cual se direcciona por b!tes o por palabras. Aos microprocesadores de 9- bits tienen cuatro de bancos de memoria, pero se le direcciona como b!tes, palabras o dobles palabras. 0I(#RA 8.E Aos sistemas de memoria fsica de la familia de microprocesadores '0'<I '06'<. $a memoria en la comptadora personal Cual,uier estudio de la familia Intel re,uiere entender la estructura de la memoria de la computadora personal. )ebido a ,ue la computadora personal original estu"o basada en el microprocesador '0'', se considera ,ue su memoria principal tiene una longitud de 71 b!te. Esta memoria principal se le llama memoria real. 1*s tarde AI1 %AotusIIntelI1icrosoft( crearon un est*ndar para un sistema de memoria ampliada %E1S(. Aa memoria ampliada se coloc en un marco en un marco de pagina "aco %<6K b!tes( ubicado entre la memoria de solo de lectura %GC1( del 5ICS %Sistema b*sico de entradaLsalida( en el sistema. Con este marco de pagina de <6K b!tes, el est*ndar AI1 permite acceso a un n#meros ilimitado de paginas de memoria ampliada de <6K b!tes, si bien el acceso a esas paginas es lento. El sistema de memoria ampliada se "ol"i obsoleto con el ad"enimiento del microprocesador '0-'< ! otros mas nue"os, aun,ue toda"a esta soportando por los antiguos sistemas basados en '0'< ! '0''. Con los nue"os '0-'<, '09'< ! '06'< se pueden direccionar memorias por encima del primer b!te 71. Esta memoria adicional, llamada sistema de memoria extendida %Q1S( contiene 7.1 b!tes adicionales en el sistema de '0-'< ! '09'<SQ, ! 6,0.1 b!tes en los sistemas de '09'<)Q ! '06'<. El sistema Q1S ha sustituido al sistema E1S de las primeras computadoras personales. En la figura 6I< se ilustra de la memoria de una computadora personal con la memoria eti,uetada por /onas. Aos primeros <60K b!tes del sistema de memoria en todas las computadoras personales, se llama el rea de programa transitorio %3+A(. El 3+A contiene una memoria GA1 %lectura ! escritura( para almacenar las aplicaciones de softDare, el sistema operati"o ! di"ersos programas ,ue controlan los dispositi"os de ELS. )espu&s del 3+A esta almacenada la /ona de sistemas ,ue contiene "arios 5ICS %sistema bsico de entrada/salida( para controlar el sistema, una GA1 de "ideo ! /onas abiertas ,ue se pueden utili/ar para un marco de p*gina de E1S ! con opciones instalables en el sistema de la computadora. Encima de esta /ona de memoria de 71 b!te, est* el sistema de memoria e0tendida, ,ue tiene sistemas para discos en cacheo ! otros segmentos de datos definidos por el sistema operati"o. 0I(#RA 8.: 1emoria de un sistema de computadora personal. 8.8 Modelo de programacin Aa programacin re,uiere un conocimiento claro de la estructura de los registros internos de la familia de microprocesadores Intel. En esta seccin se describe la estructura de los registros del microprocesador ! se e0plica la forma en ,ue se direcciona la memoria por medio de los registros de segmentos ! de los despla/amientos de direccin. En la figura 6I$ se ilustra el arreglo de registros internos del microprocesador. Este arreglo se aplica a todas las "ersiones del microprocesador. 3enga en cuenta ,ue las partes sombreadas slo est*n disponibles en los microprocesadores '09'< ! '06'<. El arreglo de registros internos consta de tres grupos de registros8 registros de uso general, apuntadores ! registros de ndice ! registros de segmentos. Adem*s esos grupos, ha! tambi&n un registro de banderas ,ue seFala las condiciones respecto al funcionamiento de la unidad aritm&tica ! lgica %AA:(. 0I(#RA 8.; Arreglo de registros internos %modelo de programacin( de todas las "ersiones de los microprocesadores. Aa :C+ tiene 76 registros internos, cada uno de 7< bits. Aos primeros cuatro, AQ, 5Q, CQ, ! )Q son registros de uso general como lo hemos mencionado en el capitulo anterior ! tambi&n pueden ser utili/ados como registros de ' bits, para utili/arlos como tales es necesario referirse a ellos como por e4emplo8 A2 ! AA, ,ue son los b!tes alto %high( ! ba4o %loD( del registro AQ. Esta nomenclatura es aplicable tambi&n a los registros 5Q, CQ ! )Q. Aos registros son conocidos por sus nombres especficos8 A3 Acumulador B3 Gegistro base C3 Gegistro contador D3 Gegistro datos DS Gegistro de segmento de datos 'S Gegistro de segmento e0tra SS Gegistro de segmento de pila CS Gegistro de segmento de cdigo B! Gegistro de apuntadores base SI Gegistro indice fuente DI Gegistro indice destino S! Gegistro del apuntador de la pila I! Gegistro de apuntador de siguiente instruccin 0 Gegistro de banderas Registro de propsito general Aos registros de propsito general se utili/an en la forma en ,ue desee el programador. Cada registro de uso general se puede direccionar como un registro de 9- bits %EAQ, E5Q, ECQ ! E)Q(, como uno de los 7< bits %AQ, 5Q, CQ, ! )Q( o como uno de ' bits %A2, AA, 52, 5A, C2, CA, )2A, ! )A(. Se debe tener en cuenta ,ue slo el '09'< ! el '06'< contienen el grupo de registros de 9- bits. En algunas de las instrucciones ,ue se e0plican en captulos anteriores tambi&n se los registros de uso general para tarea especficas. +or esta ra/n, a cada uno se le da su nombre %Acumulador, 5ase, Contar ! datos(. En el lengua4e ensamblador, al registro de uso general siempre se le denomina con combinaciones de dos o de tres letras. +or e4emplo al acumulador se le denomina EAQ, AQ, A2 o AA. Aas funciones primarias de los registros de propsito general inclu!en8 A3 4Acmlador72 a menudo conser"a el resultado temporal despu&s de una operacin aritm&tica o lgica. 3ambi&n se le direcciona como EAQ, A2 o AA. B3 4Base72 conser"a la direccin base %despla/amiento( de los datos ,ue ha! en la memoria o la direccin base de una tabla de datos referenciados por la instruccin para con"ertir %QAA3(. 3ambi&n se le direcciona como, E5Q, 52 o 5A. C3 4Contador72 contiene el conteo de ciertas instrucciones para corrimientos %CA( ! rotaciones del numero de b!tes %CQ( para las operaciones repetidas de cadena ! un contador %CQ o ECQ( para la instruccin ACC+. 3ambi&n se le direcciona como ECQ, C2 o CA. D3 4Datos72 es un registro de uso general ,ue tambi&n contiene la parte mas significati"a de un producto despu&s de una multiplicacin de 7< o de 9- bitsB la parte mas significati"a del di"idendo antes de la di"isin ! el numero de puerto de ELS para la instruccin "ariable de ELS. 3ambi&n se le direcciona como E)Q, )2 o )A. Registros apntadores e Dndices Aun,ue los registros apuntadores e ndices son tambi&n de uso general, se utili/an mas a menudo para apuntar a la localidad de la memoria ,ue contiene los datos del operando de muchas instrucciones. Aos registros apuntadores e ndices8 S! 4Apntador de pila72 Se emplea para direccionar datos en una pila de memoria de AIJC %#ltimo en entrar, primero en salir(. Esto ocurre cuando se e4ecutan las instrucciones +:S2 ! +C+ cuando se llama %CAAA( o se regresa %GE3( de una subrutina desde un programa principal. Este registro es tambi&n el registro ES+ de 9- bits. B! 4Apntador de base72 Es un apuntador de uso general ,ue se utili/a para direccionar a una matri/ de datos en una pila de memoria. Este registro es tambi&n el registro E5+ de 9- bits. SI 4Indice de fente72 Se emplea para direccionar datos fuente en forma indirecta para utili/arlos con las instrucciones de cadenas o arreglos. Este registro es tambi&n el registro ESI de 9- bits. DI 4Indice de destino72 Se emplea para direccionar datos destino en forma indirecta, para utili/arlos con las instrucciones de cadenas o arreglos. Es tambi&n el registro E)I de 9- bits. I! 4Apntador de instrcciones72 Se utili/a siempre para direccionar a la siguiente instruccin ,ue "a a e4ecutar el microprocesador. +ara formar la localidad real de la siguiente instruccin se suma el contenido de I+ con CS %por( 702, como se describe en la siguiente seccin. Este registro es tambi&n el registro EI+ de 9- bits. Se hace direccionamiento indirecto de datos por medio de cuatro de estos cinco registros de 7< bits, pero nunca con el apuntador de instrucciones. 'l registro de banderas Aas banderas indican la condicin del microprocesador a la "e/ ,ue controlan su funcionamiento. En la figura 6I' se ilustran los registros de banderas de todas las "ersiones de los microprocesadores '0'< a '06'<. Se debe tener en cuenta ,ue las banderas son compatibles hacia arriba desde el '0'<L'0'' hasta el '06'<. El '0'<I'0-'< contiene un registro de banderas, JAAP %7< bits( ! los '09'<I'06'< contienen un registro EJAAP %registro de banderas e0tendido, de 9- bits(. Aos bits de bandera cambian despu&s de e4ecutar muchas de las instrucciones aritm&ticas ! lgicas. Algunas de las banderas se utili/an para controlar ciertas caractersticas del microprocesador. A continuacin aparece una lista con cada bit de bandera, con una bre"e descripcin e su funcin. A medida ,ue se han a conocer instrucciones en captulos posteriores, se dar*n detalles adicionales de los bits indicadores. C 4Acarreo7. Indica un acarreo despu&s de una suma o un pr&stamo despu&s de una resta. Aa bandera de acarreo tambi&n indica condiciones de error en ciertos programas ! procedimientos. ! 4!aridad7. Es un cero par una paridad impar ! un 7 para paridad par. Aa paridad es un conteo de =unos> e0presado como un n#mero par o impar. +or e4emplo, si un n#mero contiene 9 bits con uno binario, tiene paridad impar. Si un n#mero contiene cero bits de uno, se considera ,ue tiene paridad par. A 4Acarreo a1iliar7. 3iene un acarreo despu&s de una suma o un =pr&stamo> despu&s de una resta entre las posiciones de los bits 9 ! 6 en el resultado. Este indicador especiali/ado se prueba con las instrucciones )AA ! )AS para a4ustar el "alor de AA despu&s de una suma o resta 5C). El microprocesador, no utili/a en otra forma el bit de bandera A. 9 4Cero7. Indica ,ue el resultado de una operacin aritm&tica o lgica es cero, Si RH 7, el resultado es cero ! si RH 0, el resultado no es cero. " 4"rampa7. Cuando se acti"a la bandera de trampa. Se habilita la caracterstica de depuracin del microprocesador. D 4Direccin7. Controla la seleccin de incremento o decremento de los registros )I o SI durante las instrucciones de cadenas o arreglos. Si )H 7 ha! decremento autom*tico en los registros ! si )H 0 ha! incremento. Aa bandera ) se acti"a con las instrucciones S3) %acti"ar direccin( o se borra con %CA)( ,uitar direccin. % 4Sobrefl*o7. Es una condicin ,ue ocurre cuando se suman o restan n#meros con signo. :n sobreflu4o indica ,ue el resultado a e0cedido de la capacidad de la ma,uina. +or e4emplo, si se suma un $J2%S7-$( a 072%S7( el resultado es '02 %I7-'(. Este resultado representa una situacin de sobreflu4o seFalado por la bandera para la suma con signo. +ara operaciones sin signo, no se toma en cuenta esta bandera. I%!$ 4&i-el de pri-ilegio de entradaFsalida7. Se utili/a en el funcionamiento en modo protegido para seleccionar el ni"el de pri"ilegio de los dispositi"os de ELS. Si el ni"el de pri"ilegio actual es de ma!or prioridad ,ue el de IC+A, entonces se e4ecuta la operacin de ELS. Si el ni"el del IC+A es menor ,ue el ni"el de pri"ilegio actual, ocurre una interrupcin ! ocasiona ,ue se suspenda la e4ecucin. Se debe tener en cuenta ,ue un IC+A de 00 es el de ma!or prioridad ! un IC+A de 77 es de menor prioridad. &" 4"area anidada7. Indica ,ue la tarea ,ue esta en curso esta anidada dentro de otra tarea en el funcionamiento en modo protegido. Esta bandera se acti"a cuando el softDare anida la tarea. R0 4Reandar7. Se emplea con la depuracin para controlar la reanulacin de la e4ecucin despu&s de la siguiente instruccin. +M 4Modo -irtal7. Selecciona el funcionamiento en modo "irtual en un sistema con modo protegido. :n sistema de modo "irtual permite particiones de la memoria con )CS. AC 4Comprobacin de alineacin7. Si se direcciona a una palabra o palabra doble en una direccin impar %b!te( o no m#ltiplo de cuatro para doble palabra, se acti"a esta bandera. Solo el microprocesador '06'<SQ contiene el bit de comprobacin de alineacin cu!o empleo primordial es con el coprocesador num&rico ane0o. Registros de segmentos :nos registros adicionales, a los ,ue se da el nombre de registros de segmentos, generan direcciones en la memoria 4untos con otros registros en el microprocesador. 2a! 6 o < registros de segmentos en las di"ersas "ersiones de los microprocesadores '0'<I'06'<. :n registro de segmento funciona de una manera diferente en el modo real, por comparacin con el funcionamiento del microprocesador en modo protegido. CS 4Cdigo7. El segmento de cdigo es una seccin de la memoria ,ue tiene los programas ! procedimientos utili/ados por los programas. El registro de segmento de cdigo define la direccin inicial de la seccin de memoria de <6K b!tes ! en el modo protegido selecciona un descriptor ,ue describe la direccin inicial ! la longitud de la seccin de memoria ,ue tiene el cdigo. El segmento de cdigo esta limitado a <6K b!tes de longitud en el '0''I'0-'< ! a 6P b!tes en el '09'<L'06'<. DS 4datos7. Segmento de datos es una seccin de la memoria ,ue contiene la ma!or parte de los datos utili/ados por un programa. Se les accesa en el segmento de datos con un despla/amiento o con el contenido de otros registros ,ue tienen la direccin del despla/amiento. 'S 4'1tra o adicional7. El segmento e0tra o adicional de datos lo utili/an algunas instrucciones para cadenas. SS 4!ila7. El segmento de pila define la superficie de la memoria utili/ada para la pila. Aa ubicacin del punto inicial de entrada a la pila, se determina por el registro apuntador de la pila. El registro 5+ tambi&n direcciona los datos ,ue ha! dentro del segmento de pila. 0S , (S. Estos registros de segmento adicionales est*n disponibles en los microprocesadores '09'< ! '06'< a fin de contar con dos segmentos adicionales de memoria para acceso con los programas. 8.E Direccionamiento de la memoria en modo real. Aos microprocesadores '0-'<I'06'< funcionan en e l modo real o en el protegido. Aos '0'' ! '07'< solo funcionan en el modo real. El funcionamiento en el modo real permite ,ue el microprocesador solo direccione al primer 71 b!te de espacio en la memoria, aun,ue sea un microprocesador'06'<. En los sistemas de funcionamiento 1S)CS o +C)CS se supone ,ue el microprocesador funciona en el modo real en todo momento. El funcionamiento en el modo real permite ,ue el softDare de aplicacin escrito para el '0'< u '0'' ,ue solo contienen 71 b!te de memoria, funcionan con los microprocesadores '0-'<, '09'< ! '06'<. En todos los casos, cada uno de los microprocesadores empie/a a funcionar en modo real en forma implcita %default(, siempre ,ue se aplica la corriente o si se restablece el microprocesador. Segmentos , despla?amientos :na direccin de segmento ! una direccin de despla/amiento, generan una direccin en la memoria en el modo real. 3odas las direcciones en la memoria en modo real consisten de un segmento ! un despla/amiento. El segmento ubicado en unos de los registros de segmento, define la direccin inicial de cual,uier segmento de memoria de <6K b!tes. Aa direccin de despla/amiento selecciona una localidad dentro del segmento de memoria de <6K b!tes. En la 6I figura se ilustra como el es,uema de direccionamiento de segmento de memoria mas despla/amiento selecciona una localidad en la memoria. Esta ilustracin se muestra un segmento de memoria ,ue empie/a en la localidad 70002 ! termina en la 7JJJJ2, de <6K b!tes de longitud. 3ambi&n se muestra la forma en ,ue un despla/amiento de J0002 selecciona la localidad 7 J0002 en el sistema de la memoria. Se "er* ,ue la direccin de despla/amiento es la distancia desde el inicio del segmento.
0I(#RA 8.= 1odo de direccionamiento en modo real con el empleo de una direccin en el segmento m*s un despla/amiento. El registro de segmento de la figura 6I, contiene 70002, con lo ,ue apunta una direccin inicial 700002. En el modo real, a cada registro de segmento se le agrega un 02 en su e0tremo derecho, para formar una direccin de memoria de -0 bits ,ue le permite colocar el inicio del segmento en casi cual,uier localidad dentro del primer 1b!te de memoria. +or e4emplo, si un segmento de registro contiene una 7-002, direcciona a un segmento de memoria de <6K b!tes ,ue empie/a en la localidad 7-0002. Asimismo, si un registro de segmento contiene una 7-072 direcciona a un segmento de memoria ,ue comien/a en la localidad 7-072. )ebido al 02, ,ue se agrega en forma interna, los segmentos pueden empe/ar en cual,uier m#ltiplo de 7< b!tes en el sistema de memoria. Este lmite de 7< b!tes se le llama un prrafo de memoria. )ebido ,ue aun segmento de memoria a modo real tiene <6K b!tes de longitud, una "e/ ,ue se conoce la direccin inicial, para encontrar la direccin final se agrega una JJJJ2 a la direccin inicial. +or e4emplo, si un registro de segmento contiene 90002, la primera direccin en el segmento es 900002 ! la ultima direccin es 900002 SJJJJ2 o 9JJJJ2. En la tabla 6I6 se presentan algunos e4emplos de contenidos de registros de segmentos ! las direcciones inicial ! final de los segmentos de memoria, seleccionadas por cada direccin de segmento. "AB$A 8.8 Gegistros de segmentos ! las direcciones inicial ! final Registro de segmento Direccin inicial Direccin final -0002 -00002 -JJJJ2 -7002 -70002 -0JJJ2 A5002 A50002 5AJJJ2 7-962 7-9602 --99J2 Aa direccin de despla/amiento se suma a la del segmento para ubicar una direccin en el segmento. +or e4emplo, si la direccin de segmento es 70002 ! la direccin de despla/amiento es -0002, el microprocesador direcciona la localidad de memoria 7-0002. Aa direccin del segmento ! del despla/amiento, a "eces, se escribe 70008-000 para una direccin de segmento de 70002 ! un despla/amiento de -0002. Registros de segmento , despla?amiento implDcitos El microprocesador tiene un grupo de reglas ,ue se aplican siempre ,ue se direcciona a la memoria. Estas reglas, ,ue se aplican en el modo real o en el protegido, definen la combinacin de registro de segmento ! de despla/amiento, ,ue se utili/an en ciertos modos de direccionamiento. +or e4emplo, el registro de segmentos de cdigos se emplea siempre con el apuntador de instrucciones para direccionar la siguiente instruccin a e4ecutar en un programa. Esta combinacin es CS8 I+ o CS8 EI+, seg#n sean el microprocesador ! el modo de funcionamiento. El registro de segmento de cdigo define el principio de un segmento de cdigo ! el apuntador de instrucciones apunta a la siguiente instruccin dentro del segmento de cdigo a e4ecutar por el microprocesador. +or e4emplo, si CS H 76002 I+LEI+ H 7-002, El microprocesador busca ! lee la siguiente instruccin en la localidad 760002 S7-002 o sea 7.-002 en la memoria. Ctro direccionamiento implcito es el de la pila. Se hace referencia a los datos de la pila por medio del segmento de pila ! por localidad de la memoria a la cual direcciona el apuntador de la pila %S+LES+( o el apuntador de base. Esta combinaciones se refieren como SS8S+ %SS8ES+( o SS85+ %SS8E5+(. +or e4emplo, si SS H -0002 ! 5+LE5+ H 90002, el microprocesador direcciona a la localidad -90002 en la memoria del segmento de pila direccionada por el registro 5+LE5+. Se debe tener en cuenta ,ue en el modo real, solo los 7< bits en la e0trema derecha del registro e0tendido direccionan a una localidad dentro del segmento de memoria. ;unca ponga un n#mero ma!or ,ue JJJJ2 en un registro de despla/amiento si el microprocesador funciona en el modo real. Si el modo real se direcciona a una memoria ma!or ,ue 7000002 %0 70JJEJ2 si esta instalado en sistema 2I1E1( ocasionara ,ue el microprocesador interrumpa el programa e indi,ue un error.
"AB$A 8.E Segmento ! despla/amiento implcitos del '0'<I'0-'< En la tabla 6I. se ilustran otros direccionamientos implcitos para la memoria para microprocesadores '0'<I'0-'<. En la tabla 6I< se muestran los direccionamientos implcitos en los microprocesadores '09'< ! '06'<. Se debe tener en cuenta ,ue los microprocesadores '09'< ! '06'< tienen una seleccin mucho ma!or de las combinaciones del segmento ! despla/amiento ,ue los microprocesadores '0'<I'0-'<. "AB$A 8.: Segmento ! despla/amientos, implcitos del '09'< ! '06'< Segment os Despla?amiento CS EI+ SS ES+ o E5+ Segmentos )espla/amiento CS I+ SS S+ o 5+ )S 5Q, )I, SI o un n#mero de bits ES )I para instrucciones para cadenas. )S EAQ, E5Q, ECQ, E)Q, E)I, ESI, un n#mero de ' bits o un n#mero de 9- bits. ES E)I para instrucciones para cadenas JS ;o implcito PS ;o implcito Aos '0'<I'0-'< permiten tener cuatro segmentos de memoriaB el '09'< ! el '06'< permiten tener < segmentos de memoria. En la figura 6I70 se ilustra un sistema ,ue contiene cuatro segmentos de memoria. Se debe tener en cuenta ,ue los segmentos de memoria pueden tocarse o incluso traslaparse si no se re,uieren <6K b!tes de memoria para un segmento. +iense ,ue los segmentos son como "entanas ,ue se pueden mo"er en cual,uier superficie de la memoria para accesar a datos o cdigos. 0I(#RA 8.16 :n e4emplo de sistema de memoria ! se ilustran cuatro segmentos de memoria. Supongamos ,ue un programa de aplicacin re,uiere 70002 b!tes de memoria para su cdigo 702 b!tes de memoria para sus datos ! -002 b!tes de memoria de pila. Esta aplicacin no re,uiere un segmento adicional. Cuando el dos coloca este programa en memoria, se carga el 3+A en la primera /ona disponible encima de los mane4adores ! otros programas de la 3+A. En la figura 6I77 se muestra la forma en ,ue esta aplicacin se almacena en el sistema de memoria. Aos segmentos muestran un superposicin o traslape debido a ,ue la cantidad de datos ,ue ha! en ellos no re,uiere de <6K b!tes de memoria, la "ista lateral de los segmentos muestran con claridad el traslape ! la forma en ,ue los segmentos se pueden despla/ar a cual,uier parte de la memoria. 0I(#RA 8.11 1apa de memoria de una aplicacin, en ,ue se ilustran segmentos traslapados. 'l direccionamiento de segmento , despla?amiento permite la relocali?aciGn El sistema de direccionamiento de segmento ! despla/amiento, permite el cambio de lugar de los programas en el sistema de memoria. :n programa relocali/able es el ,ue puede poner en cual,uier /ona de la memoria ! e4ecutarlo sin cambio. Aos datos relocali/ables son los ,ue se pueden colocar en cual,uier /ona de memoria ! utili/arlos sin ning#n cambio en el programa. El sistema de direccionamiento de segmento ! despla/amiento permite relocali/ar los programas ! los datos si cambiar nada en un programa o datos. 8.: Direccionamiento de la memoria en modo protegido El direccionamiento de la memoria en modo protegido % solo '0-'<,'09'< ! '06'<( permite acceso a los datos ! programas ubicados arriba del primer 1b!te de memoria. El direccionamiento de esta seccin e0tendida del sistema de memoria %la memoria encima del primer 1b!te de memoria se denomina memoria e0tendida o Q1S(, re,uiere un cambio en el sistema de direccionamiento de segmento ! despla/amiento, utili/ando con el direccionamiento de la memoria en el modo real. Aa diferencia entre los modos de real ! protegido esta en la forma en ,ue el registro de segmento accesa el segmento de memoria. Selectores , descriptores El selector ubicado en el registro del segmento selecciona a uno de los '7- descriptores en la tabla descriptores. El descriptor describe la ubicacin, longitud ! derechos de acceso de un segmento de memoria. El registro de segmento, en forma indirecta, toda"a selecciona un segmento de memoria, pero lo hace en forma directa como en el modo real. Se utili/a dos tablas de descriptores con los registros de segmento8 una contiene descriptores globales !, la otra, contiene descriptores locales. Aos descriptores globales contienen segmentos ,ue se aplican a todos los programas, mientras ,ue los descriptores locales suelen ser e0clusi"os de una aplicacin. Cada tabla de descriptores contiene ',7- descriptores con lo cual ha! disponible en cual,uier momento un total de 7<, 9'6 descriptores. )ebido a ,ue un descriptor describe un segmento de memoria, ello permite describir hasta 7<, 9'6 segmentos de memoria para cada aplicacin. En la figura 6I7- se muestra el formato de un descriptor para los microprocesadores '0-'< ! '09'<L'06'<. Se "era ,ue cada descriptor tiene una longitud de ' b!tes, con lo cual las tablas de descriptores globales ! locales tiene, cada una, una longitud m*0ima de <6K b!tes. Aos descriptores para el '0-'< ! los '09'<L'06'< tienen ligeras diferencias entre s, pero el descriptor '0-'< es compatible en forma ascendente con los microprocesadores '09'< ! '06'<. Aa parte de direccin base del descriptor, se utili/a para indicar la ubicacin del inicio del segmento de memoria. En el microprocesador '0-'<, la direccin de base es una direccin de -6 bits, con lo cual los segmentos pueden empe/ar en cual,uiera de sus 7<1 b!tes de memoria. En el '09'< ! '06'< se utili/a una direccin base de 9- bits, ,ue permite ,ue los segmentos ,ue empiecen en cual,uiera de las localidades de los 6P b!tes de memoria. Aa direccin base del descriptor del '0-'< es compatible hacia arriba con el descriptor del '09'<L'06'<. 0I(#RA 8.12 Aos formatos del descriptor para los microprocesadores '0-'<L'06'<. El lmite del segmento contiene la #ltima direccin de despla/amiento ,ue se encuentre en un segmento. +or e4emplo si un segmento empie/a en la localidad de memoria J000002 ! termina en la ubicacin J000JJ2, la direccin base es J000002 ! el lmite es JJ2. En el microprocesador '0-'<, la direccin base es J000002 ! el limite es 00JJ2. En los microprocesadores '09'<L'0-'< es de 7< bits ! el limite para '09'<L'06'< es de -0 bits. El '0-'< accesa a los segmentos de memoria ,ue tengan longitud entre 7 b!te ! <6K b!tes. El '09'<L'06'< accesan a los segmentos de memoria con longitud desde un b!te hasta 71 b!te o desde 6K b!tes hasta 6P b!tes. En el descriptor de '09'<L'06'< ha! una caracterstica ,ue no tiene el descriptor del '0-'<8 el bit G de granularidad. Si P H 0, el limite especifica un limite de segmento con longitud entre 7 b!te ! 71 b!te de longitud. Si P H 7, el "alor del limite se multiplica por 6K b!tes. Si P H 7, el limite puede ser cual,uier m#ltiplo de 6K b!tes. Esto permite tener una longitud de segmento entre 6K ! 6P b!tes, en etapas de 6K b!tes. Aa ra/n en ,ue esta longitud de segmento sea de <6K b!tes en el '0-'<, es ,ue la direccin de despla/amiento de 7< bits, mientras ,ue la direccin de despla/amiento cuando se traba4a con '09'<L'06'< en modo de protegido, es de 9- bits. Esta direccin de despla/amiento de 9- bits permite tener longitudes de segmento de 6P b!tes ! la direccin de despla/amiento de 7< bits, permite tener segmentos de <6K b!tes de longitud. El bit AT en el descriptor de '09'<L'06'< lo utili/a el sistema operati"o e indica ,ue el segmento esta disponible %AT H7( o no disponible %AT H 0(. El bit ) indica la forma en ,ue las instrucciones del '09'<L'06'< accesan al registro ! a los datos de memoria en el modo protegido. Si ) H 0, entonces en el '09'<L'06'< se supone ,ue las instrucciones son de 7< bits, compatibles con los microprocesadores '0'<I'0-'<. Esto significa ,ue las instrucciones emplean direcciones de despla/amiento de 7< bits ! registros de 7< bits. Este modo, a menudo, se llama modo de instruccin de 7< bits. Si ) H 7, entonces en el '09'<L'06'< supone ,ue las instrucciones son de 9- bits. El modo de instruccin de 9- bits, supone ,ue todos los despla/amientos, as como todos los registros, son de 9- bits. El sistema operati"o 1S)CS o el +C)CS re,uieren ,ue las instrucciones se utilicen siempre en el modo de instruccin de 7< bits. 8.; 0ormatos de datos En la programacin depende tambi&n de un entendimiento claro de los formatos de datos. En esta seccin se describen los formatos comunes de datos utili/ados con la familia microprocesadores '0'<I'06'<. los datos se presentan como ASCII, 5C), enteros con signo ! sin signos de ' bits %un b!te(, enteros con signo ! sin signo de 9- bits %una palabra( ! enteros sin signo ! n#meros reales largos ! cortos % o n#meros con punto decimal, flotante(. Datos ASCII Aos datos en cdigo ASCII %Siglas en ingles de cdigo est*ndar Estadounidense para Intercambio de Informacin( se suelen utili/ar para representar caracteres alfanum&ricos en la memoria de un sistema de computadora. El cdigo ASCII es de $ bits ! el octa"o bit, ,ue es el m*s significati"o, se emplea para mantener la paridad en algunos sistemas. En la tabla 6I$ se presentan los caracteres de control de ASCII, 4unto con una bre"e descripcin de la funcin de cada cdigo. "AB$A 8.; EA cdigo ASCII Segundo Q0 Q7 Q- Q9 Q6 Q. Q< Q$ Q Q' QA Q5 QC Q) QE QJ +rimero 0Q ;:A SC2 S3Q E3Q EC3 E;U ACK 5EA 5S 23 AJ T3 JJ CG SC SI 7Q )AE )C7 )C- )C9 )C6 ;AK SV; E35 CA; E1 S:5 ESC JS PS GS :S -Q S+ W = X E Y Z % ( ? S , I . L 9Q 0 7 - 9 6 . < $ ' 8 B [ H \ O 6Q ] A 5 C ) E J P 2 I M K A 1 ; C .Q + ^ G S 3 : T ^ Q V R % u & @ _ <Q ` a b c d e f g h i 4 k l m n o $Q p , r s t u " D 0 ! / ' ( ) * + BCD Aa informacin decimal codificada en binario se almacena en forma empacada o no empacada en la memoria. Aa informacin 5C) empacada, almacena dos dgitos 5C) por cada b!te de memoriaB la 5C) sin empacar almacena un digito de 5C) por cada b!te. Con los datos de 5C) los cdigos binarios "alidos de 6 bits son 0000%0( a 700%(. En la tabla se muestra algunos n#meros decimales en formatos 5C) empacado ! no empacado. "AB$A 8.= )atos de 5C) empacados ! sin empacar ;#meros Empacados Sin empacar -9 00700077 00000070 00000077 -9$ 00000070 00770777 00000070 00000077 00000777 <7- 00000770 00070070 00000770 00000007 00000070 7-96 00070070 00770700 00000007 00000070 00000077 00000700 BH"' Aos datos se almacenan en dos formas8 enteros con signo ! sin signo. En la figura 6I7$ se ilustran los formatos de enteros con signo ! sin signo de ancho de un b!te. Aa #nica diferencia entre las formas con signo ! sin signo es la ponderacin de la m*0ima posicin de bit hacia la i/,uierda. En la forma con signo, el bit mas a la i/,uierda es negati"o ! en la forma sin signo, es positi"o o sin signo. +or e4emplo un '02 es igual a un "alor sin signo de 7-' ! a un "alor con signo de a7-'. un '72 es igual a un "alor con signo de a7-$. 0I(#RA 8.1; Enteros de ' bits. %a( :n entero de ' bits sin signoB %b( un entero de ' bits con signo. Aun,ue los n#meros con signo negati"o se representan con el bits de a7-' m*0imo a la i/,uierda, se almacenan en forma de complemento a dos. Este m&todo para e"aluar un n#mero con signo %el bit m*0imo a la i/,uierda de a 7-'( es mucho m*s f*cil ,ue el acto de complementar a dos el n#mero para determinar su "alor, en especial en donde se emplean calculadoras destinadas a los programadores. Si se desea, se puede hacer uso del complemento a dos para con"ertir un n#mero negati"o a uno positi"o a fin de determinar su "alor. +ara formar el complemento a dos de un n#mero, se in"ierte cada bit, ! luego se suma un uno al resultado. !alabra :na palabra %7< bits( se forma con - b!tes de datos. El b!te menos significati"o se almacena en la localidad de memoria ,ue tenga el numero mas ba4o ! el b!te mas significati"o, en la mas alta. En la figura 6I7'%a( se ilustra los "alores ponderados de cada bit en una palabra de datos ! en la figura 6I7'%b( se ilustran como se almacena un 7-962 en la memoria. Aa #nica diferencia entre un numero con signo ! uno sin signo es el bit de la posicin mas a la i/,uierda. El numero con signo su ponderacin es negati"a ! el numero sin signo no es significati"a. 3ambi&n en este caso el bit mas a la i/,uierda es el mismo ,ue para los datos de b!te, e0cepto ,ue su "alor posicional es diferente. 0I(#RA 8.1< Enteros de 7< bits. %a( ponderaciones binarias de cada posicin de bit en una palabra de datos de 7< bits. Gecuerde si el n#mero tiene signo, la ponderacin del bit mas a la i/,uierda es negati"a. %b( :n 7-962 almacenado en la memoria, a partir de la ubicacin en 700002. Dobles palabras El formato de doble palabra se utili/a para almacenar n#meros de 9- bits %6 b!tes(, ,ue son el producto despu&s de la multiplicacin o el di"idendo antes de una di"isin. Aas dobles palabras tambi&n se utili/an en los '09'< ! '06'< para la ma!or parte de las operaciones, por,ue estos microprocesadores m*s modernos funcionan con datos de 9- bits as como datos de ' ! 7< bits. 8.< Con*nto de instrcciones En esta seccin se presenta un bre"e panorama de cada categora general de con4unto de instrucciones de la familia '0'<L'0''. "ransferencia de datos El con4unto de instrucciones de la familia '0'<L'0'' inclu!e instrucciones para la transferencia de datos ,ue transfieren b!tes, palabras, o dobles palabras de datos entre la memoria ! los registros as como el acumulador ! los puertos de ELS. Aas trasferencias dobles de palabras solo se pueden hacer en el '09'< ! el '06'<. En siguiente la tabla se muestra las instrucciones ! caractersticas del mismo. "AB$A 8.11 Instrucciones para transferencia de datos Cdigo %p. 0ncin I; 1ete datos al acumulador desde un dispositi"o de ELS AA2J Carga de banderas en A2 AEA Carga de direccin efecti"a A)S Carga )S ! registro de 7< bits con los datos de memoria de 9- bits AES Carga ES ! registro de 7< bits con los datos de memoria de 9- bits ??AJS Carga JS ! registro de 7< bits con los datos de memoria de 9- bits ??APS Carga PS ! registro de 7< bits con los datos de memoria de 9- bits ?ASS Carga SS ! registro de 7< bits con los datos de memoria de 9- bits 1CT Carga b!te, palabra o doble palabra C:3 Saca datos del acumulador a un ELS +C+ Gecupera una palabra de la pila ?+C+A Gecupera todos los registros de la pila ??+C+A) Gecupera todos los registros de doble pila ??+C+) Gecupera una palabra doble de la pila +C+J Gecupera los indicadores de la pila ??+C+J) Gecupera los indicadores ampliados de la pila +:S+2 Sal"a las palabras en la pila ?+:S2A Sal"a todos los registros en la pila ??+:S2A) Sal"a todos los registros de dobles palabras en la pila ??+:S2) Sal"a doble palabra en la pila +:S2J Sal"a banderas en la pila ??+:S2J) Sal"a banderas ampliadas en la pila SA2J Carga A2 en las banderas QC2P Intercambia b!tes, palabras o dobles palabras QAA3 Emplea AA para entrar a una tabla de con"ersin &%"AS2 ?H instrucciones nue"as para los '07'< hasta '06'<B ??H instrucciones nue"as para '09'< ! '06'<. Aritmtica Aa familia '0'<I'06'< puede sumar, restar, multiplicar ! di"idir datos como b!tes, palabras o dobles palabras de datos. Se debe tener en cuenta ,ue las operaciones con dobles palabras solo se emplean para los microprocesadores '09'< ! '06'<. El sistema suma ! resta con el empleo de datos con signo o sin signo ! datos 5C) o de ASCII. 1ultiplica ! di"ide n#meros ASCII con signo o sin signo. A continuacin se muestra la siguiente tabla de instrucciones aritm&ticas. "AB$A 8.12 Instrucciones aritm&ticas Cdigo %p. 0ncin AAA A4uste ASCII para suma AA) A4uste ASCII para di"isin AA1 A4uste ASCII para multiplicacin AAS A4uste ASCII para resta A)) Suma de datos entre registros o la memoria ! otro registro A)C Suma de datos con la bandera de acarreo C5^ Con"ierte b!te a palabra ?C)U Con"ierte doble palabra a cu*druple palabra C1+ Compara los datos C^) Con"ierte palabra a doble palabra )AA A4uste decimal de AA despu&s de una suma de 5C) )AS A4uste decimal de AA despu&s de una resta de 5C) )EC )ecrementa )IT )i"isin sin signo I)IT )i"isin con signo I1:A 1ultiplicacin con signo I;C Incrementa ?1CTSQ Cargar, ampliar ! poner signo a los datos ?1CTRQ Cargar, ampliar datos con ceros 1:A 1ultiplicacin sin signo ;EP Cambia el signo %lo "uel"e negati"o( S55 Suma con acarreo S:5 Gesta datos entre los registros ! la memoria u otro registro &%"A2 ?H estas instrucciones solo aparecen en los microprocesadores '09'< ! '06'<. Maniplacin de bits Aas instrucciones para manipulacin de bits binarios se utili/an para controlar los datos hasta el ni"el de bits en la familia de los microprocesadores '0'<I '06'<. Estas instrucciones inclu!en operaciones lgicas, corrimiento ! rotaciones. En la siguiente tabla aparece una bre"e descripcin de cada instruccin ! de su cdigo simblico de funcionamiento. "AB$A 8.13 Instrucciones para manipulacin de bits. Cdigo %p. 0ncin A;) V %A;)( lbgica ?5SJ Gastrear bits hacia al frente ?5SG Gastrear bits hacia atr*s ?53 Instruccin para prueba de bit ?53C +robar bit ! complementarlo ?53G +robar bit ! reacti"arlo ?53S +robar bit ! acti"arlo ;C3 In"ertir % complemento a uno( CG C lgica SAG Corrimiento aritm&tico a la derecha S2ALSAA Corrimiento a la i/,uierda ??S2A) Corrimiento a la i/,uierda, precisin doble S2G Corrimiento lgico a la derecha ??S2G) Corrimiento lgico a la derecha, doble precisin GCA Gotacin a la i/,uierda con acarreo GCA Gotacin a la i/,uierda GCG Gotacin a la derecha con acarreo GCG Gotacin a la derecha 3ES3 Cperacin con el A;) lgico, pero solo afectado banderas QCG C e0clusi"o &%"A2 ? H Solo en los microprocesadores '09'< ! '06'<B ?? H solo en el microprocesador '06'<. Instrcciones para cadenas Aas instrucciones para cadenas o arreglos se emplean para manipular cadenas de datos en la memoria. Cada cadena consta, !a sea, de b!tes o de palabras ! tiene hasta <6K b!tes de longitud. En los instrucciones para la cadena se emplean los registros SI ! )I para direccionar los datos ! el registro CQ para contar el numero de b!tes o de palabra en ,ue se traba4. Aas instrucciones para las cadenas ocurren una "e/ sal"o ,ue tengan uno de los prefi4os GE+, GE+ELGE+R o GE+;LGE+;R. Si una instruccin para cadena tiene uno de esos prefi4os, se repite el n#mero de "eces contenido en el registro de conteo CQ. A continuacin se muestra en la tabla las operaciones para cadenas disponibles en la familia de microprocesadores '0'<I'06'<. "AB$A 8.18 Instrucciones para cadenas Cdigo %p. 0ncin C1+S Comparacin entre memoria ! memoria ?I;S 1eter datos del ELS a la memoria AC)S Cargar el acumulador 1CTS 1o"er de memoria a memoria ?C:3S Sacar datos de la memoria al espacio de ELS SCAS Comparacin entre la memoria ! el acumulador S3CS Almacenar en el acumulador &%"A2 ?H estas instrucciones funcionan en los microprocesadores '07'<I'06'<. "ransferencia de programa Aas instrucciones para la transferencia de programa inclu!en brinco, llamadas %CAAA( ! para retorno, !a conocidas en el microprocesador '0'.. Adem*s se enumeran algunas instrucciones adicionales para ciclos de programas. En la tabla siguiente se presentan las instrucciones para transferencia de programa. "AB$A 8.1E Instrucciones para la transferencia de programa Cdigo %p. fncin ?5C:;) +rueba el limite CAAA Alama a un procedimiento %subrutina( ?E;3EG Entrar al procedimiento I;3 Interrumpir I;3 9 Interrupcin tipo 9 I;3C Interrumpir por sobreflu4o IGE3 Getornar de una interrupcin ?IGE3) Getornar de una interrupcin MA 5rincar si es ma!or MAE 5rincar si es ma!or o igual M5 5rincar si es menor M5E 5rincar si es menor o igual MC 5rincar si ha! acarreo MELMR 5rincar si es igual o saltar si es cero MP 5rincar si es ma!or ,ue MPE 5rincar si es ma!or o igual MA 5rinca si es menor ,ue MAE 5rinca si es menor o igual M1+ 5rinca a otra parte del programa M;C 5rinca si no ha! acarreo M;ELM;R 5rinca si no es igual o si no es cero M;C 5rinca si no ha! desbordamiento M;+ 5rinca si no tiene paridad %impar( M;S 5rinca si no es signo positi"o MC 5rinca si ha! desbordamiento M+ 5rinca si ha! paridad %par( MS 5rinca si tiene signo %negati"o( ?AEATE Abandona el procedimiento ACC+ Gepite ciclo CQ "eces ?ACC+) Gepite ciclo ECQ "eces ACC+E Jormar ciclo mientras sea igual %CQ H contador( ?ACC+E) Gepite ciclo mientras sea igual %EQC H contador( ACC+;E Gepite ciclo mientras no sea igual %CQ H contador( ?ACC+;E) Gepite ciclo mientras no sea igual %ECQ H contador( MCQR 5rinca si CQ es cero ?MECRQ 5rinca si ECQ es cero GE3 Getorna de un procedimiento %subrutina( &%"A2 ? H solo microprocesadores '09'< ! '06'<. Control de procesador Aas instrucciones para control del procesador habilitan ! deshabilitan las interrupciones, modifican los bits de bandera ! sincroni/an los e"entos e0ternos. En el '0-'<,'09'< ! '06'< controlan el funcionamiento del sistema en el modo protegido. En la siguiente tabla se presenta un lista de las instrucciones de control del procesador. "AB$A 8.1: Instrucciones de control de procesador Cdigo Cp. Juncin AG+A A4usta grado solicitado de pri"ilegio CAC 5orra bandera de acarreo CA) 2abilitar incremento autom*tico CAI )eshabilitar terminal I;3G C1C Complementa bandera de acarreo C3S 5orra bandera de conmutacin tarea ESC Instruccin para el coprocesador 2A3 Alto hasta ,ue se reinicialice o e0ista interrupcin AAG Carga derechos de acceso AP)3 Carga registros de tabla de descriptores globales AI)3 Carga tabla de registros descriptores de interrupcin AA)3 Carga tabla de registros descriptores locales A1S^ Carga registro de estado de la ma,uina %solo '0-'<( ACCK Controla la terminal ACCK en el '0'< ! '0'' ASA Carga limite de segmento A3G Carga registro de tarea ;C+ ;o operacin SP)3 Almacena tabla de registros de descriptores globales SI)3 Almacena tabla de registros de descriptores interrupcin SA)3 Almacena tabla de registros de descriptores locales S1S^ Almacena registro de estado de la ma,uina %solo '0-'<( S3C Acti"a bandera de acarreo S3) Seleccionar modo de decremento autom*tico S3I 2abilitar interrupciones S3G Almacenar registro de tarea TEGG Terificar acceso para lectura TEG^ Terificar acceso para escritura ^AI3 Espera a ,ue la terminal 3ES3 H 0 CA!I"#$% + !R%(RAMACI%& A$ $'&(#A)' '&SAMB$AD%R E.1 !roceso de creacin de n programa +ara la creacin de un programa es necesario seguir cinco pasos8 diseFo del algoritmo, codificacin del mismo, su traduccin a lengua4e m*,uina, la prueba del programa ! la depuracin. Aa etapa de diseFo se plantea el problema a resol"er ! se propone la me4or solucin, creando diagramas es,uem*ticos utili/ados para el me4or planteamiento de la solucin. Aa codificacin del programa consiste en escribir el programa en alg#n lengua4e de programacinB en este caso especfico en ensamblador, tomando como base la solucin propuesta en el paso anterior. Aa traduccin al lengua4e m*,uina es la creacin del programa ob4eto, esto es, el programa escrito como una secuencia de ceros ! unos ,ue pueda ser interpretado por el procesador. Aa prueba del programa consiste en "erificar ,ue el programa funcione sin errores, o sea, ,ue haga lo ,ue tiene ,ue hacer. Aa #ltima etapa es la eliminacin de las fallas detectadas en el programa durante la fase de prueba. Aa correccin de una falla normalmente re,uiere la repeticin de los pasos comen/ando desde el primero o el segundo. +ara crear un programa en ensamblador e0isten dos opciones, la primera es utili/ar el 1AS1 %1acro Assembler, de 1icrosoft(, ! la segunda es utili/ar el debugger, en esta primera seccin utili/aremos este #ltimo !a ,ue se encuentra en cual,uier +C con el sistema operati"o 1SI)CS, lo cual lo pone al alcance de cual,uier usuario ,ue tenga acceso a una m*,uina con estas caractersticas. )ebug solo puede crear archi"os con e0tensin .CC1, ! por las caractersticas de este tipo de programas no pueden ser ma!ores de <6 kb, adem*s deben comen/ar en el despla/amiento, offset, o direccin de memoria 07002 dentro del segmento especfico. E.2 Registros de la #C! Como lo mencionamos en el capitulo 6 la :C+ tiene 76 registros internos, cada uno de 7< bits. Aos primeros cuatro, AQ, 5Q, CQ, ! )Q son registros de uso general ! tambi&n pueden ser utili/ados como registros de ' bits, para utili/arlos como tales es necesario referirse a ellos como por e4emplo8 A2 ! AA, ,ue son los b!tes alto %high( ! ba4o %loD( del registro AQ. Esta nomenclatura es aplicable tambi&n a los registros 5Q, CQ ! )Q. Es posible "isuali/ar los "alores de los registros internos de la :C+ utili/ando el programa )ebug. +ara empe/ar a traba4ar con )ebug digite en el prompt de la computadora8 C8c\ )ebug dEntere En la siguiente lnea aparecer* un guin, &ste es el indicador del )ebug, en &ste momento se pueden introducir las instrucciones del )ebug. :tili/ando el comando8 I r dEntere Se desplegaran todos los contenidos de los registros internos de la :C+B una forma alternati"a de mostrarlos es usar el comando "r" utili/ando como par*metro el nombre del registro cu!o "alor se ,uiera "isuali/ar. +or e4emplo8 I rb0 Esta instruccin desplegar* #nicamente el contenido del registro 5Q ! cambia el indicador del )ebug de " I " a " 8 " Estando as el prompt es posible cambiar el "alor del registro ,ue se "isuali/o tecleando el nue"o "alor ! a continuacin dEntere, o se puede de4ar el "alor anterior presionando dEntere sin teclear ning#n "alor. Es posible cambiar el "alor del registro de banderas, as como utili/arlo como estructura de control en nuestros programas como se "er* m*s adelante. Cada bit del registro tiene un nombre ! significado especial, la lista dada a continuacin describe el "alor de cada bit, tanto apagado como prendido ! su relacin con las operaciones del procesador8 C"erfloD
;T H no ha! desbordamientoB CT H s lo ha! )irection
:+ H hacia adelanteB ); H hacia atr*sB Interrupts
)I H desacti"adasB EI H acti"adas Sign
+A H positi"oB ;P H negati"o Rero
;R H no es ceroB RG H si lo es Au0iliar! Carr!
;A H no ha! acarreo au0iliarB AC H ha! acarreo au0iliar +arit!
+C H paridad nonB +E H paridad parB Carr!
;C H no ha! acarreoB CV H si lo ha! E.3 $a estrctra del ensamblador En el lengua4e ensamblador las lneas de cdigo constan de dos partes, la primera es el nombre de la instruccin ,ue se "a a e4ecutar ! la segunda son los par*metros del comando u operandos. +or e4emplo8 add ah bh A,u "add" es el comando a e4ecutar %en &ste caso una adicin( ! tanto "ah" como "bh" son los par*metros. El nombre de las instrucciones en &ste lengua4e esta formado por dos, tres o cuatro letras. A estas instrucciones tambi&n se les llama nombres mnemnicos o cdigos de operacin, !a ,ue representan alguna funcin ,ue habr* de reali/ar el procesador. E0isten algunos comandos ,ue no re,uieren par*metros para su operacin, as como otros ,ue re,uieren solo un par*metro. Algunas "eces se utili/aran las instrucciones como sigue8 add al,d7$0e Aos corchetes en el segundo par*metro nos indican ,ue "amos a traba4ar con el contenido de la casilla de memoria n#mero 7$0 ! no con el "alor 7$0, a esto se le conoce como direccionamiento directo. E.8 &estro primer programa Tamos a crear un programa ,ue sir"a para ilustrar lo ,ue hemos estado "iendo, lo ,ue haremos ser* una suma de dos "alores ,ue introduciremos directamente en el programa8 El primer paso es iniciar el )ebug, &ste paso consiste #nicamente en teclear debug dEntere en el prompt del sistema operati"o. +ara ensamblar un programa en el )ebug se utili/a el comando "a" %assemble(B cuando se utili/a &ste comando se le puede dar como par*metro la direccin donde se desea ,ue se inicie el ensamblado. Si se omite el par*metro el ensamblado se iniciar* en la localidad especificada por CS8I+, usualmente 07002, ,ue es la localidad donde deben iniciar los programas con e0tensin .CC1, ! ser* la localidad ,ue utili/aremos debido a ,ue debug solo puede crear &ste tipo especfico de programas. Aun,ue en &ste momento no es necesario darle un par*metro al comando "a" es recomendable hacerlo para e"itar problemas una "e/ ,ue se haga uso de los registros CS8I+, por lo tanto tecleamos8 I a0700 dEntere Al hacer esto aparecer* en la pantalla algo como8 0C7580700 ! el cursor se posiciona a la derecha de &stos n#meros, ntese ,ue los primeros cuatro dgitos %en sistema he0agesimal( pueden ser diferentes, pero los #ltimos cuatro deben ser 0700, !a ,ue es la direccin ,ue indicamos como inicio. Ahora podemos introducir las instrucciones8 0C7580700 mo" a0,000-B coloca el "alor 000- en el registro a0 0C7580709 mo" b0,0006B coloca el "alor 0006 en el registro b0 0C758070< add a0,b0 Ble adiciona al contenido de a0 el contenido de b0 0C758070' int -0 B pro"oca la terminacin del programa. 0C758070A ;o es necesario escribir los comentarios ,ue "an despu&s del "B". :na "e/ digitado el #ltimo comando, int -0, se le da dEntere sin escribir nada mas, para "ol"er al prompt del debuger. Aa #ltima lnea escrita no es propiamente una instruccin de ensamblador, es una llamada a una interrupcin del sistema operati"o, estas interrupciones ser n tratadas m*s a fondo en un captulo posterior, por el momento solo es necesario saber ,ue nos ahorran un gran n#mero de lneas ! son mu! #tiles para accesar a funciones del sistema operati"o. +ara e4ecutar el programa ,ue escribimos se utili/a el comando "g", al utili/arlo "eremos ,ue aparece un mensa4e ,ue dice8 "+rogram terminated normall!". ;aturalmente con un mensa4e como &ste no podemos estar seguros ,ue el programa ha!a hecho la suma, pero e0iste una forma sencilla de "erificarlo, utili/ando el comando "r" del )ebug podemos "er los contenidos de todos los registros del procesador, simplemente teclee8 I r dEntere Aparecer* en pantalla cada registro con su respecti"o "alor actual8 AQH000<5QH0006CQH0000)QH0000S+HJJEE5+H0000SIH0000)IH0000 )SH0C75ESH0C75SSH0C75CSH0C75I+H070A ;T :+ EI +A ;R ;A +C ;C 0C758070A 0J )5 oJ E0iste la posibilidad de ,ue los registros contengan "alores diferentes, pero AQ ! 5Q deben ser los mismos, !a ,ue son los ,ue acabamos de modificar. Ctra forma de "er los "alores, mientras se e4ecuta el programa es utili/ando como par*metro para "g" la direccin donde ,ueremos ,ue termine la e4ecucin ! muestre los "alores de los registros, en &ste caso sera8 g70', esta instruccin e4ecuta el programa, se detiene en la direccin 70' ! muestra los contenidos de los registros. 3ambi&n se puede lle"ar un seguimiento de lo ,ue pasa en los registros utili/ando el comando "t" %trace(, la funcin de &ste comando es e4ecutar lnea por lnea lo ,ue se ensamblaf mostrando cada "e/ los contenidos de los registros. +ara salir del )ebug se utili/a el comando "," %,uit(. E.E (ardar , cargar programas ;o sera pr*ctico tener ,ue digitar todo un programa cada "e/ ,ue se necesite, para e"itar eso es posible guardar un programa en el disco, con la enorme "enta4a de ,ue !a ensamblado no ser necesario correr de nue"o debug para e4ecutarlo. Aos pasos a seguir para guardar un programa !a almacenado en la memoria son8 Cbtener la longitud del programa restando la direccin final de la direccin inicial, naturalmente en sistema he0adecimal. )arle un nombre al programa ! e0tensin +oner la longitud del programa en el registro CQ Crdenar a )ebug ,ue escriba el programa en el disco. :tili/ando como e4emplo el programa del captulo anterior tendremos una idea m*s clara de como lle"ar &stos pasos8 Al terminar de ensamblar el programa se "era as8 0C7580700 mo" a0,000- 0C7580709 mo" b0,0006 0C758070< add a0,b0 0C758070' int -0 0C758070A I h 70a 700 0-0a 000a I n prueba.com I rc0 CQ 0000 8000a ID ^riting 000A b!tes +ara obtener la longitud de un programa se utili/a el comando "h", el cual nos muestra la suma ! resta de dos n#meros en he0adecimal. +ara obtener la longitud del nuestro le proporcionamos como par*metros el "alor de la direccin final de nuestro programa %70A( ! el "alor de la direccin inicial %700(. El primer resultado ,ue nos muestra el comando es la suma de los par*metros ! el segundo es la resta. El comando "n" nos permite poner un nombre al programa. El comando "rc0" nos permite cambiar el contenido del registro CQ al "alor ,ue obtu"imos del tamaFo del archi"o con "h", en &ste caso 000a, !a ,ue nos interesa el resultado de la resta de la direccin inicial a la direccin final. +or #ltimo el comando D escribe nuestro programa en el disco, indic*ndonos cuantos b!tes escribi. +ara cargar un archi"o !a guardado son necesarios dos pasos8 +roporcionar el nombre del archi"o ,ue se cargar*. Cargarlo utili/ando el comando "l" %load(. +ara obtener el resultado correcto de los siguientes pasos es necesario ,ue pre"iamente se ha!a creado el programa anterior. )entro del )ebug escribimos lo siguiente8 I n prueba.com I l I u 700 70 0C9)80700 5'0-00 1CT AQ,000- 0C9)80709 550600 1CT 5Q,0006 0C9)8070< 07)' A)) AQ,5Q 0C9)8070' C)-0 I;3 -0 El #ltimo comando, "u", se utili/a para "erificar ,ue el programa se cargaf en memoria, lo ,ue hace es desensamblar el cdigo ! mostrarlo !a desensamblado. Aos par*metros le indican a )ebug desde donde ! hasta donde desensamblar. )ebug siempre carga los programas en memoria en la direccin 7002, a menos ,ue se le indi,ue alguna otra. E.: Condiciones5 ciclos , bifrcaciones Estas estructuras, o formas de control le dan a la m*,uina un cierto grado de decisin basado en la informacin ,ue recibe. Aa forma m*s sencilla de comprender &ste tema es por medio de e4emplos. Tamos a crear tres programas ,ue hagan lo mismo8 desplegar un n#mero determinado de "eces una cadena de caracteres en la pantalla. I a700 0C7580700 4mp 7-. B brinca a la direccin 7-.2 0C758070- dEntere I e 70- gCadena a "isuali/ar 7. "eces si 0d 0a gXg I a7-. 0C75807-. 1CT CQ,000J B "eces ,ue se desplegar* la cadena 0C75807-' 1CT )Q,070- B copia cadena al registro )Q 0C75807-5 1CT A2,0 B copia "alor 0 al registro A2 0C75807-) I;3 -7 B despliega cadena 0C75807-J ACC+ 07-) B si CQ\0 brinca a 07-) 0C7580797 I;3 -0 B termina el programa. +or medio del comando "e" es posible introducir una cadena de caracteres en una determinada localidad de memoria, dada como par*metro, la cadena se introduce entre comillas, le sigue un espacio, luego el "alor he0adecimal del retorno de carro, un espacio, el "alor de lnea nue"a ! por #ltimo el smbolo gXg ,ue el ensamblador interpreta como final de la cadena. Aa interrupcin -7 utili/a el "alor almacenado en el registro A2 para e4ecutar una determinada funcin, en &ste caso mostrar la cadena en pantalla, la cadena ,ue muestra es la ,ue est* almacenada en el registro )Q. Aa instruccin ACC+ decrementa autom*ticamente el registro CQ en uno ! si no ha llegado el "alor de &ste registro a cero brinca a la casilla indicada como par*metro, lo cual crea un ciclo ,ue se repite el n#mero de "eces especificado por el "alor de CQ. Aa interrupcin -0 termina la e4ecucin del programa. Ctra forma de reali/ar la misma funcin pero sin utili/ar el comando ACC+ es la siguiente8 I a700 0C7580700 4mp 7-. B brinca a la direccin 7-.2 0C758070- dEntere I e 70- gCadena a "isuali/ar 7. "eces si 0d 0a gXg I a7-. 0C75807-. 1CT 5Q,000J B "eces ,ue se desplegar* la cadena 0C75807-' 1CT )Q,070- B copia cadena al registro )Q 0C75807-5 1CT A2,0 B copia "alor 0 al registro A2 0C75807-) I;3 -7 B despliega cadena 0C75807-J )EC 5Q B decrementa en 7 a 5Q 0C7580790 M;R 07-) B si 5Q es diferente a 0 brinca a 07-)