You are on page 1of 55

Cdigo ASCII

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-)

You might also like