Sie sind auf Seite 1von 29

Recopiladopor:Ing.ValentnMartnezLpez.

Programacindesistemas.
MODULO1.ESTRUCTURADELACOMPUTADORA
Introduccin:Esteeselprimercursodesoftwaredesistemasenelqueseconocernlosprincipios
bsicos de una computadora para conocer como se deben de disear los programas que
controlarnyrecibirndatosenunsistemadecomputocuyoobjetivoesprocesarinformacin,de
estecursosedesprendenlossistemasoperativosdeunacomputadora,parapoderlograrestoes
necesario primero conocer como esta formada una computadora, se mostraran las dos
arquitecturasdecomputadorasqueexisten,comosonelmodelodeVonNewmannyHarvard,el
proceso de ejecucin de programas y as como las diversas modalidades y mecanismos de
ensamblado,cargayMacroprocesamiento.
Durante el curso se utilizara como elemento de estudio el Microcontrolador MC68HC12 de
FREESCALEparaelcualseanalizarasumodelodeprogramacin,considerandoquesiseconoceun
Microcontroladorsermssencilloemigraracualquierotro.

1.1ArquitecturadevonNewmann.
Laarquitecturadecomputadoraseseldiseoconceptualylaestructuraoperacionalfundamental
de un sistema de computadora. Es decir, es un modelo y una descripcin funcional de los
requerimientos y las implementaciones de diseo para varias partes de una computadora, con
especial inters en la forma en que la unidad central de proceso (CPU) trabaja internamente y
accedealasdireccionesdememoria.
Tambinsueledefinirsecomolaformadeseleccionareinterconectarcomponentesdehardware
paracrearcomputadorassegnlosrequerimientosdefuncionalidad,rendimientoycosto.
En la actualidad existen dos arquitecturas de computadoras bsicas ampliamente utilizadas, la
arquitecturadeVonNewmannylaarquitecturadeHarvard.
LaarquitecturadevonNeumannesunafamiliadearquitecturasdecomputadorasqueutilizanel
mismo dispositivo de almacenamiento tanto para las instrucciones como para los datos (a
diferenciadelaarquitecturaHarvard).
Lamayoradecomputadorasmodernasestnbasadasenestaarquitectura,aunquepuedenincluir
otros dispositivos adicionales, (por ejemplo, para gestionar las interrupciones de dispositivos
externoscomoratn,teclado,etc).
Losordenadoresconestaarquitecturaconstandecincopartes:LaunidadaritmticolgicaoALU,
la unidad de control, la memoria, un dispositivo de entrada/salida y el bus de datos que
proporcionaunmediodetransportedelosdatosentrelasdistintaspartes.

Pg.1de29

ElbloquequecontienelosREGISTROS,laALUylaUNIDADDECONTROLenrealidadrepresentaa
todoelCPU.Lamemoriatienedosreasprincipalesladedatos;endondesealmacenarantodas
lasvariablesquerequieranlosprogramasyladecdigoendondesealmacenaelprogramaque
ejecutaralacomputadoraensi.
EltrminoArquitecturaHarvardoriginalmentesereferaalasarquitecturasdecomputadorasque
utilizabandispositivosdealmacenamientofsicamenteseparadosparalasinstruccionesyparalos
datos(enoposicinalaArquitecturadevonNeumann).Eltrminoprovienedelacomputadora
Harvard Mark I, que almacenaba las instrucciones en cintas perforadas y los datos en
interruptores.
Todaslascomputadorasconstanprincipalmentededospartes,laCPUqueprocesalosdatos,yla
memoria que guarda los datos. Cuando hablamos de memoria manejamos dos parmetros, los
datos en s, y el lugar donde se encuentran almacenados (o direccin). Los dos son importantes
paralaCPU,puesmuchasinstruccionesfrecuentessetraducenaalgoascomo"Tomalosdatosde
stadireccinyadelosalosdatosdestaotradireccin",sinsaberenrealidadquesloque
contienenlosdatos.
En los ltimos aos la velocidad de las CPUs ha aumentado mucho en comparacin a la de las
memorias con las que trabaja, as que se debe poner mucha atencin en reducir el nmero de
veces que se accede a ella para mantener el rendimiento. Si, por ejemplo, cada instruccin
ejecutadaenlaCPUrequiereunaccesoalamemoria,nosegananadaincrementandolavelocidad
delaCPUesteproblemaesconocidocomo'limitacindememoria'.
Se puede fabricar memoria mucho ms rpida, pero a costa de un precio muy alto. La solucin,
portanto,esproporcionarunapequeacantidaddememoriamuyrpidaconocidaconelnombre
de cach. Mientras los datos que necesita el procesador estn en la cach, el rendimiento ser
mucho mayor que si la cach tiene que obtener primero los datos de la memoria principal. La
optimizacindelacachesuntemamuyimportantedecaraaldiseodecomputadoras.
Pg.2de29

Recopiladopor:Ing.ValentnMartnezLpez.
Programacindesistemas.
La arquitectura Harvard ofrece una solucin particular a este problema. Las instrucciones y los
datos se almacenan en cachs separadas para mejorar el rendimiento. Por otro lado, tiene el
inconvenientedetenerquedividirlacantidaddecachentrelosdos,porloquefuncionamejor
slocuandolafrecuencia delecturadeinstruccionesydedatos esaproximadamentelamisma.
EstaarquitecturasueleutilizarseenDSPs,oprocesadordesealdigital,usadoshabitualmenteen
productosparaprocesamientodeaudioyvideo.
1.1.1ConceptodeCPU
Launidadcentraldeprocesamiento,oCPU(porelacrnimoeninglsCentralProcessingUnit),o,
simplemente, el procesador, es el componente en una computadora digital que interpreta las
instrucciones y procesa los datos contenidos en los programas de la computadora. Las CPU
proporcionan la caracterstica fundamental de la computadora digital (la programabilidad) y son
unodeloscomponentesnecesariosencontradosenlascomputadorasdecualquiertiempo,junto
con el almacenamiento primario y los dispositivos de entrada/salida. Se conoce como
microprocesador el CPU que es manufacturado con circuitos integrados. Desde mediados de los
aos1970,losmicroprocesadoresdeunsolochiphanreemplazadocasitotalmentetodoslostipos
deCPU,yhoyenda,eltrmino"CPU"esaplicadousualmenteatodoslosmicroprocesadores.
Laexpresin"unidadcentraldeproceso"es,entrminosgenerales,unadescripcindeunacierta
clase de mquinas de lgica que pueden ejecutar complejos programas de computadora. Esta
amplia definicin puede fcilmente ser aplicada a muchos de los primeros ordenadores que
existieronmuchoantesqueeltrmino"CPU"estuvieraenampliouso.Sinembargo,eltrminoen
smismoysuacrnimohanestadoenusoenlaindustriadelainformticaporlomenosdesdeel
principio de los aos 1960. La forma, el diseo y la implementacin de las CPU ha cambiado
drsticamente desde los primeros ejemplos, pero su operacin fundamental ha permanecido
bastantesimilar.
Las primeras CPU fueron diseadas a la medida como parte de una computadora ms grande,
generalmente una computadora nica en su especie. Sin embargo, este costoso mtodo de
disearlosCPUalamedida,paraunaaplicacinparticular,hadesaparecidoengranparteyseha
sustituido por el desarrollo de clases de procesadores baratos y estandarizados adaptados para
unoomuchospropsitos.Estatendenciadeestandarizacincomenzgeneralmenteenlaerade
los transistores discretos, computadoras centrales, y microcomputadoras, y fue acelerada
rpidamente con la popularizacin del circuito integrado (IC), ste ha permitido que sean
diseados y fabricados CPU ms complejos en espacios pequeos (en la orden de milmetros).
TantolaminiaturizacincomolaestandarizacindelosCPUhanaumentadolapresenciadeestos
dispositivosdigitalesenlavidamodernamuchomsalldelasaplicacioneslimitadasdemquinas
de computacin dedicadas. Los microprocesadores modernos aparecen en todo, desde
automviles, televisores, neveras, calculadoras, aviones, hasta telfonos mviles o celulares,
juguetes,entreotros.

1.1.2ConceptodeMEMORIA
La memoria de un ordenador se puede definir como los circuitos que permiten almacenar y
recuperarlainformacin.Enunsentidomsamplio,puedereferirsetambinasistemasexternos
dealmacenamiento,comolasunidadesdediscoodecinta.
Hoy en da se requiere cada vez ms memoria para poder utilizar complejos programas y para
gestionarcomplejasredesdecomputadores.
Pg.3de29


Elementosquelacomponen
Una memoria vista desde el exterior, tiene la estructura mostrada en la figura de arriba. Para
efectuar una lectura se deposita en el bus de direcciones la direccin de la palabra de memoria
quesedesealeeryentoncesseactivalasealdelectura(R);despusdeciertotiempo(tiempode
latencia delamemoria),enelbusdedatosaparecerelcontenidodeladireccin buscada.Por
otraparte,pararealizarunaescriturasedepositaenelbusdedatoslainformacinquesedesea
escribir y en el bus de direcciones la direccin donde deseamos escribirla, entonces se activa la
seal de escritura (W), pasado el tiempo de latencia, la memoria escribir la informacin en la
direccin deseada. Internamente la memoria tiene un registro de direccin (MAR, memory
addressregister),unregistrobufferdememoriaoregistrodedatos(MB,memorybuffer,oMDR,
memory data register) y, un decodificador como se ve en la figura de abajo. Esta forma de
estructurarlamemoriasellamaorganizacinlinealodeunadimensin.Enlafiguracadalneade
palabraactivatodaslasclulasdememoriaquecorrespondenalamismapalabra.

Pg.4de29

Recopiladopor:Ing.ValentnMartnezLpez.
Programacindesistemas.

Comoveamosenlasarquitecturasdecomputadoraspodemosclasificarlasmemoriasdeacuerdo
a su uso dentro de la computadora en memoria de programa y memoria de datos, esta
clasificacin es muy importante en la arquitectura de Harvard ya que esta usa lneas exclusivas
paracadaunadeestasmemorias,enlaarquitecturadeVONNEWMANNestaseparacinnoestan
evidenteyaqueelCPUnodiferenciaentreunamemoriayotra.Sinembargo,enunordenadorhay
unajerarquadememoriasatendiendoaltiempodeaccesoyalacapacidadquenormalmenteson
factorescontrapuestosporrazoneseconmicasyenmuchoscasostambinfsicas.Comenzando
desdeelprocesadoralexterior,esdecirenordencrecientedetiempodeaccesoycapacidad,se
puedeestablecerlasiguientejerarqua:
Registros de procesador: Estos registros interaccionan continuamente con la CPU (porque
forman parte de ella). Los registros tienen un tiempo de acceso muy pequeo y una capacidad
mnima,normalmenteigualalapalabradelprocesador(1a8bytes).
Registrosintermedios:Constituyenunpasointermedioentreelprocesadorylamemoria,tienen
untiempodeaccesomuybreveymuypocacapacidad.
Memoriascach:Sonmemoriasdepequeacapacidad.Normalmenteunapequeafraccinde
lamemoriaprincipalypequeotiempodeacceso.EsteniveldememoriasecolocaentrelaCPUy
lamemoriacentral.Hacealgunosaosesteniveleraexclusivodelosordenadoresgrandespero
Pg.5de29

actualmentetodoslosordenadoresloincorporan.Dentrodelamemoriacachpuedehaber,asu
vez, dos niveles denominados cach on chip, memoria cach dentro del circuito integrado, y
cachonboard,memoriacachenlaplacadecircuitoimpresoperofueradelcircuitointegrado,
evidentemente,porrazonesfsicas,laprimeraesmuchomsrpidaquelasegunda.
En el caso de la Arquitectura Harvard Las instrucciones y los datos se almacenan en cachs
separadasparamejorarelrendimiento.Porotrolado,tieneelinconvenientedetenerquedividir
lacantidaddecachentrelosdos,porloquefuncionamejorslocuandolafrecuenciadelectura
deinstruccionesydedatosesaproximadamentelamisma.
Memoriacentraloprincipal:Enestenivelresidenlosprogramasylosdatos.LaCPUleeyescribe
datosenlaunqueconmenosfrecuenciaqueenlosnivelesanteriores.Tieneuntiempodeacceso
relativamente rpido y gran capacidad. He aqu uno de los inconvenientes de la arquitectura de
Harvard,enellaestamemoriaprincipaltambinsedividirenmemoriadeprogramaymemoria
dedatos.
Extensionesdememoriacentral:Sonmemoriasdelamismanaturalezaquelamemoriacentral
queamplansucapacidaddeformamodular.Eltiempodesimilar,alosumounpocomayor,alde
lamemoriacentralysucapacidadpuedeseralgunasvecesmayor.EnlemodelodeHarvard,esta
extensinsolosepuedehacerenmemoriadedatos.
Memorias de masas o auxiliares: Son memorias que residen en dispositivos externos al
ordenador,enellassearchivanprogramasydatosparasuusoposterior.Tambinseusanestas
memorias para apoyo de la memoria central en caso de que sta sea insuficiente (memoria
virtual). Estas memorias suelen tener gran capacidad pero pueden llegar a tener un tiempo de
accesomuylento.Dentrodeellastambinsepuedenestablecervariosnivelesdejerarqua.
Clasificacindememoriassemiconductorasdeaccesoaleatorio
Lasmemoriasseclasifican,porlatecnologaempleaday,ademssegnlaformaenquesepuede
modificarsucontenido,Aesterespecto,lasmemoriasseclasificanendosgrandesgrupos:
1)MemoriasRAM:Sonmemoriasenlasquesepuedeleeryescribir,sibiensunombre(Random
accessmemory)norepresentacorrectamenteestehecho.Porsutecnologapuedenserdeferritas
(yaendesuso)oelectrnicas.Dentrodestasltimashaymemoriasestticas(SRAM,staticRAM),
cuyacluladememoriaestbasadaenunbiestable,ymemoriasdinmicas(DRAM,dinamicRAM,
enlasquelacluladememoriaesunpequeocondensadorcuyacargarepresentalainformacin
almacenada. Las memorias dinmicas necesitan circuitos adicionales de refresco ya que los
condensadorestienenmuypocacapacidady,atravsdelasfugas,lainformacinpuedeperderse,
porotraparte,sondelecturadestructiva.
2)MemoriasROM(Read0nlyMemory):Sonmemoriasenlasqueslosepuedeleer.Puedenser:
a)ROMprogramadaspormscara,cuyainformacinsegrabaenfbricaynosepuedemodificar.
Pg.6de29

Recopiladopor:Ing.ValentnMartnezLpez.
Programacindesistemas.
b)PROM,oROMprogramableunasolavez.
c) EPROM (erasable PROM) o RPROM (reprogramable ROM), cuyo contenido puede borrarse
medianterayosultravioletaspararegrabarlas.
d) EAROM (electrically alterable ROM) o EEROM (electrically erasable ROM), que son memorias
queestenlafronteraentrelasRAMylasROMyaquesucontenidopuederegrabarsepormedios
elctricos, estas se diferencian de las RAM en que no son voltiles. En ocasiones a este tipo de
memoriastambinselasdenominaNYRAM(novoltilRAM).
e) Memoria FLASH, denominada as por la velocidad con la que puede reprogramarse, utilizan
tecnologa de borrado elctrico al igual que las EEPROM. Las memorias flash pueden borrare
enterasenunoscuantossegundos,muchomsrpidoquelasEPROM.
BsicamentelasmemoriasROMsebasanenunamatrizdediodoscuyauninsepuededestruir
aplicandosobreellaunasobretensin(usualmentecomprendidaente12.5y40v.).Defbricala
memoria sale con 1's en todas sus posiciones, para grabarla se rompen las uniones en que se
quieranponer0's.Estaformaderealizarlagrabacinsedenominatcnicadelosfusibles.
1.1.3ConceptodeBUS
En Arquitectura de computadoras, el bus es un sistema digital que transfiere datos entre los
componentesdeuncomputadoroentrecomputadores.Estnformadosporcablesopistasenun
circuitoimpreso,dispositivoscomoresistenciasycondensadoresademsdecircuitosintegrados.
LafuncindelBusesladepermitirlaconexinlgicaentredistintossubsistemasdeunsistema
digital, enviando datos entre dispositivos de distintos rdenes: desde dentro de los mismos
circuitosintegrados,hastaequiposdigitalescompletosqueformanpartedesupercomputadoras.
La mayora buses estn basados en conductores metlicos por los cuales se trasmiten seales
elctricasquesonenviadasyrecibidasconlaayudadeintegradosqueposeenunainterfazdelbus
dadoyseencargandemanejarlassealesyentregarlascomodatostiles.Lassealesdigitales
quesetrasmitensondedatos,dedireccionesosealesdecontrol.
Los buses definen su capacidad de acuerdo a la frecuencia mxima de envi y al ancho de los
datos. Por lo general estos valores son inversamente proporcionales: si se tiene una alta
frecuencia, el ancho de datos debe ser pequeo. Esto se debe a que la interferencia entre las
seales(crosstalk)yladificultaddesincronizarlas,crecenconlafrecuencia,demaneraqueunbus
conpocassealesesmenossusceptibleaesosproblemasypuedefuncionaraaltavelocidad.
Todos los buses de computador tienen funciones especiales como las interrupciones y las DMA
quepermitenqueundispositivoperifricoaccedaaunaCPUoalamemoriausandoelmnimode
recursos.
Hay3clasesdebuses:

Pg.7de29

bus de datos, por el que circulan, como el nombre indica, los datos que se transfieren
entre los diferentes dispositivos de entrada, salida y almacenamiento, gobernadas por
otrosdispositivoscomoloscontroladoresPCI.

El bus de direccin (o direcciones) es un canal del microprocesador totalmente


independiente al bus de datos donde se establece la direccin de memoria del dato en
trnsito. El bus de direccin consiste en el conjunto de lneas elctricas necesarias para
establecerunadireccin.Lacapacidaddelamemoriaquesepuededireccionardepende
delacantidaddebitsqueconformanelbusdedirecciones,siendo2^n(doselevadoala
ene) el tamao mximo en bytes del banco de memoria que se podr direccionar con n
lneas.Porejemplo,paradireccionarunamemoriade256bytes,sonnecesariasalmenos
8 lneas, pues 2^8 = 256. Adicionalmente pueden ser necesarias lneas de control para
sealarcuandoladireccinestdisponibleenelbus.Estodependedeldiseodelpropio
bus.

y bus de control, Gobierna el uso y acceso a las lneas de datos y de direcciones. Como
estas lneas estn compartidas por todos los componentes tiene que proveerse de
determinadosmecanismosquecontrolensuutilizacin.Lassealesdecontroltransmiten
tantordenescomoinformacindetemporizacinentrelosmdulosdelsistema.

1.2Estructuralgicadelprocesador
La operacin fundamental de la mayora de los CPU, es ejecutar una secuencia de instrucciones
almacenadasllamadas"programa".Elprogramaesrepresentadoporunaseriedenmerosquese
mantienen enuna cierta clasede memoriade computador.Haycuatropasosquecasi todoslos
CPU de EckertMauchly usan en su operacin: fetch, decode, execute, y writeback, (leer,
decodificar,ejecutar,yescribir).

DiagramamostrandocomoesdecodificadaunainstruccindelMIPS32.(MIPSTechnologies2005)
El primer paso, leer (fetch), implica el recuperar una instruccin, (que es representada por un
nmeroounasecuenciadenmeros),delamemoriadeprograma.Lalocalizacinenlamemoria
delprogramaesdeterminadaporuncontadordeprograma(PC),quealmacenaunnmeroque
identificalaposicinactualenelprograma.Enotraspalabras,elcontadordeprogramaindicaal
CPU,ellugardelainstruccinenelprogramaactual.Despusdequeseleeunainstruccin,elPC
esincrementadoporlalongituddelapalabradeinstruccinentrminosdeunidadesdememoria.
Pg.8de29

Recopiladopor:Ing.ValentnMartnezLpez.
Programacindesistemas.
Frecuentementelainstruccinaserledadebeser recuperadadememoriarelativamentelenta,
haciendo detener al CPU mientras espera que la instruccin sea retornada. Este problema es
tratadoenprocesadoresmodernosengranparteporloscachsylasarquitecturaspipeline.
La instruccin que el CPU lee desde la memoria es usada para determinar qu deber hacer el
CPU.Enelpasodedecodificacin,lainstruccinesdivididaenpartesquetienensignificadopara
otrasporcionesdelCPU.Lamaneraenqueelvalordelainstruccinnumricaesinterpretadoest
definidaporlaarquitecturadelconjuntodeinstrucciones(elISA)delCPU.Amenudo,ungrupode
nmerosenlainstruccin,llamadoopcode,indicaquoperacinrealizar.Laspartesrestantesdel
nmerousualmenteproporcionaninformacinrequeridaparaesainstruccin,comoporejemplo,
operandos para una operacin de adicin. Tales operandos se pueden dar como un valor
constante (llamado valor inmediato), o como un lugar para localizar un valor, que segn lo
determinadoporalgnmododedireccin,puedeserunregistroounadireccindememoria.En
diseos ms viejos las porciones del CPU responsables de decodificar la instruccin eran
dispositivos de hardware fijos. Sin embargo, en CPUs e ISAs ms abstractos y complicados, es
frecuentementeusadounmicroprogramaparaasistirentraducirinstruccionesenvariasseales
de configuracin para el CPU. Este microprograma es a veces re escribible de tal manera que
puede ser modificado para cambiar la manera en que el CPU decodifica instrucciones incluso
despusdequehayasidofabricado.

DiagramadebloquesdeunCPUsimple
Despusdelospasosdelecturaydecodificacin,esllevadoacaboelpasodelaejecucindela
instruccin.Duranteestepaso,variasporcionesdelCPUsonconectadasdetalmaneraqueellas
puedenrealizarlaoperacindeseada.Si,porejemplo,unaoperacindeadicinfuesolicitada,una
unidadaritmticolgica(ALU)serconectadaaunconjuntodeentradasyunconjuntodesalidas.
Lasentradasproporcionanlosnmerosasersumados,ylassalidascontendrnlasumafinal.El
ALUcontienelacircuiterapararealizaroperacionessimplesdearitmticaylgicaenlasentradas,
Pg.9de29

como adicin y operaciones de bits (bitwise). Si la operacin de adicin produce un resultado


demasiadograndeparapodersermanejadoporelCPU,,tambinpuedeserajustadaunabandera
(flag) de desbordamiento aritmtico localizada en un registro de banderas (ver abajo la seccin
sobrerangodenmerosenteros).
Elpasofinal,laescritura(writeback),simplemente"escribe"losresultadosdelpasodeejecucina
unaciertaformadememoria.Muyamenudo,losresultadossonescritosaalgnregistrointerno
delCPUparaaccesorpidoporsubsecuentesinstrucciones.Enotroscasoslosresultadospueden
serescritosaunamemoriaprincipalmslentaperomsbarataymsgrande.Algunostiposde
instrucciones manipulan el contador de programa en lugar de directamente producir datos de
resultado. stas son llamadas generalmente "saltos" (jumps) y facilitan comportamientos como
bucles (loops), la ejecucin condicional de programas (con el uso de saltos condicionales), y
funciones en programas. Muchas instrucciones tambin cambiarn el estado de dgitos en un
registrode"banderas".Estasbanderaspuedenserusadasparainfluenciarcmosecomportaun
programa,puestoqueamenudoindicanelresultadodevariasoperaciones.Porejemplo,untipo
de instruccin de "comparacin" considera dos valores y fija un nmero, en el registro de
banderas, de acuerdo a cual es el mayor. Entonces, esta bandera puede ser usada por una
posteriorinstruccindesaltoparadeterminarelflujodeprograma.
Despusdelaejecucindelainstruccinylaescrituradelosdatosresultantes,elprocesoentero
se repite con el siguiente ciclo de instruccin, normalmente leyendo la siguiente instruccin en
secuenciadebidoalvalorincrementadoenelcontadordeprograma.Silainstruccincompletada
eraunsalto,elcontadordeprogramasermodificadoparacontenerladireccindelainstruccin
alacualsesalt,ylaejecucindelprogramacontinanormalmente.EnCPUsmscomplejosque
el descrito aqu, mltiples instrucciones pueden ser ledas, decodificadas, y ejecutadas
simultneamente.Estaseccindescribeloqueesreferidogeneralmentecomoel"entubadoRISC
clsico"(ClassicRISCpipeline).
1.3LenguajeMaquina
El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para escribir programas
informticos,yconstituyelarepresentacinmsdirectadelcdigomquinaespecficoparacada
arquitecturadecomputadoraslegibleporunprogramador.
Fue usado ampliamente en el pasado para el desarrollo de software, pero actualmente slo se
utiliza en contadas ocasiones, especialmente cuando se requiere la manipulacin directa del
hardwareosepretendenrendimientosinusualesdelosequipos.
Programar en lenguaje ensamblador es difcil de aprender, entender, leer, escribir, depurar y
mantener,poresosurgilanecesidaddeloslenguajescompilados.Apesardeperderrendimiento
en un proceso de compilacin, en la actualidad la mayora de las computadoras son
suficientementerpidas.
Ellenguajeensambladornoesportable.
Pg.10de29

Recopiladopor:Ing.ValentnMartnezLpez.
Programacindesistemas.
Programarenlenguajeensambladorllevamuchotiempo.
Los programas hechos en lenguaje ensamblador son generalmente ms rpidos. Al programar
cuidadosamente en lenguaje ensamblador se pueden crear programas de 5 a 100 veces ms
rpidosqueconlenguajesdealtonivel.
Los programas hechos en lenguaje ensamblador generalmente ocupan menos espacio. Un buen
programaenlenguajeensambladorpuedeocuparcasilamitaddeespacioquesucontrapartidaen
lenguajedealtonivel.
Con el lenguaje ensamblador se pueden crear segmentos de cdigo imposibles de formar en un
lenguajedealtonivel.
Un programa escrito en lenguaje ensamblador consiste en una serie de instrucciones que
corresponden al flujo de rdenes ejecutables que pueden ser cargadas en la memoria de una
computadora. Por ejemplo, un microcontrolador hc12 puede ejecutar la siguiente instruccin
binariacomoseexpresaencdigodemquina:

Binario:1000011001100001(Hexadecimal:0x8661)

Larepresentacinequivalenteenlenguajeensambladoresmsfcilderecordar:

ldaa#$61

Estainstruccinsignifica:

Asignaelvalorhexadecimal61(97decimal)alregistro"A".

El mnemnico "ldaa" es un cdigo de operacin u "opcode", elegido por los diseadores de la


coleccindeinstruccionesparaabreviar"loadacumulatora"(cargarelacumuladorA).Elopcode
es seguido por una lista de argumentos o parmetros, completando una instruccin de
ensambladortpica.
La transformacin del lenguaje ensamblador en cdigo mquina la realiza un programa
ensamblador, y la traduccin inversa la puede efectuar un desensamblador. A diferencia de los
lenguajes de alto nivel, aqu hay usualmente una correspondencia 1 a 1 entre las instrucciones
simples del ensamblador y el lenguaje de mquina. Sin embargo, en algunos casos, un
ensamblador puede proveer "pseudo instrucciones" que se expanden en un cdigo de mquina
ms extenso a fin de proveer la funcionalidad necesaria. Los ensambladores ms completos
tambin proveen un rico lenguaje de macros que se utiliza para generar cdigo ms complejo y
secuenciasdedatos.
Cada arquitectura de computadoras tiene su propio lenguaje de mquina, y en consecuencia su
propiolenguajeensamblador.Losordenadoresdifiereneneltipoynmerodeoperacionesque
soportan;tambinpuedentenerdiferentecantidadderegistros,ydistintarepresentacindelos
tipos de datos en memoria. Aunque la mayora de las computadoras son capaces de cumplir
Pg.11de29

esencialmentelasmismasfunciones,laformaenquelohacendifiereylosrespectivoslenguajes
ensambladorreflejantaldiferencia.
Pueden existir mltiples conjuntos de mnemnicos o sintaxis de lenguaje ensamblador para un
mismoconjuntodeinstrucciones,instanciadostpicamenteendiferentesprogramasensamblador.
En estos casos, la alternativa ms popular es la provista por los fabricantes, y usada en los
manualesdelprograma.
El cdigo mquina, o lenguaje de mquina, est formado por instrucciones sencillas, que
dependiendodelaestructuradelprocesadorpuedenespecificar:

Registros especficos para operaciones aritmticas, direccionamiento o control de


funciones.

Posicionesdememoriaespecficas(offset).

Modosdedireccionamientousadosparainterpretaroperandos.

Lasoperacionesmscomplejasserealizancombinandoestasinstruccionessencillas,quepueden
serejecutadassecuencialmenteomedianteinstruccionesdecontroldeflujo.
Lasoperacionesdisponiblesenlamayoradelosconjuntosdeinstruccionesincluye:

mover
o

llenarunregistroconunvalorconstante

moverdatosdeunaposicindememoriaaunregistrooviceversa

escribiryleerdatosdedispositivos

computar
o

sumar, restar, multiplicar o dividir los valores de dos registros, colocando el


resultadoenunodeellosoenotroregistro

realizaroperacionesbinarias,incluyendooperacioneslgicas(AND/OR/XOR/NOT)

compararvaloresentreregistros(mayor,menor,igual)

afectarelflujodelprograma
o

saltaraotraposicinenelprogramayejecutarinstruccionesall

saltarsisecumplenciertascondiciones(IF)

saltaraotraposicin,peroguardarelpuntodesalidapararetornar(CALL,llamada
asubrutinas)

Pg.12de29

Recopiladopor:Ing.ValentnMartnezLpez.
Programacindesistemas.
Algunas computadoras incluyen instrucciones complejas dentro de sus capacidades. Una sola
instruccincomplejahacelomismoqueenotrascomputadoraspuederequerirunalargaseriede
instrucciones,porejemplo:

salvarvariosregistrosenlapiladeunasolavez

movergrandesbloquesdememoria

operacionesaritmticascomplejasodepuntoflotante(seno,coseno,razcuadrada)

Elniveldelenguajeensambladortieneaspectosimportantesdelosnivelesdemicroarquitectura,
en los cuales se encuentra (ISA y sistema operativo) estos dos se utilizan para la traduccin en
lugar de la interpretacin. Algunas caractersticas del lenguaje se describen a continuacin Los
programas que sirven para traducir algn programa para el usuario se llama traductores, el
lenguajeenqueestaescritoelprogramaoriginalsellamalenguajefuente,ellenguajeoriginalque
seamodificadosellamalenguajeobjeto.
Seusalatraduccincuandosecuentaconunprocesador(yaseahardwareouninterprete)parael
lenguaje objeto pero no para el lenguaje fuente, Si la traduccin se realiza correctamente, la
ejecucin del programa traducido dar exactamente los mismos resultados que habra dado la
ejecucin del programa fuente. Hay dos diferencias entre traduccin e interpretacin, en la
traduccinnoseejecutadirectamenteelprogramaoriginal,enellenguajefuenteseconvierteen
unprogramaequivalentellamadoprogramaobjetooprogramabinarioejecutableyestefunciona
solocuandosehaacabadolatraduccin.
El cdigo mquina, un simple patrn de bits, es hecho legible reemplazando valores crudos por
smbolos denominados mnemnicos. Se invent para facilitar la tarea de los primeros
programadores que hasta ese momento tenan que escribir directamente en cdigo binario.
Inicialmenteelcdigodecerosyunos(elprograma)debaintroducirseenunatarjetaperforada.
La posicin ocupada por cada punto equivala a un "1" o a un "0" segn hubiera o no una
perforacin.Locualsuponaunaformacasiidnticaenlaquehoyseescribenlosdatosbinarosen
soportestalescomolosCDsyDVDs.
Mientrasqueunacomputadorareconocelainstruccindemquina8661H
1000011001100001
para los programadores de microprocesadores HC12 es mucho ms fcil reconocer dicha
instruccinempleandolenguajeensamblador:
ldaa#$61
Cadainstruccindelamquinasetransformaenunanicainstruccinencdigosimblico.

Pg.13de29

Peroadems,paramejorarlalegibilidaddelprograma,elcdigosimblicointroduceinstrucciones
adicionales, que no corresponden a ninguna instruccin de la mquina y que proporcionan
informacin.Sellaman"pseudoinstrucciones".
Elcdigosimblicopuedeparecerdedifcilacceso,peroesmsfcilderecordareinterpretarque
elbinariooelhexadecimal.
Los lenguajes simblicos no resuelven definitivamente el problema de cmo programar un
ordenador de la manera ms sencilla posible. Para utilizarlos, hay que conocer a fondo el
microprocesador,losregistrosdetrabajodequedispone,laestructuradelamemoria,ymuchas
cosasms.
Adems, el lenguaje ensamblador est muy ligado al microprocesador para que sea posible
escribirprogramasindependientesdelamquinaenquevanaejecutarse.
Este cdigo simblico no puede ser ejecutado directamente por un ordenador, por lo que es
preciso traducirlo previamente. Pero la traduccin es un proceso mecnico y repetitivo, que se
prestaasurealizacinporunprogramadeordenador.
Los programas que traducen cdigo simblico al lenguaje de mquina se llaman ensambladores
("assembler", en ingls), porque son capaces de ensamblar el programa traducido a partir de
variaspiezas,procedimientososubrutinasacdigobinario("1"y"0")queentiendeelprocesador.

1.4Conjuntoderegistrosymodelodeprogramacin.
Un modelo de programacin provee un marco abstracto en el que entender la sintaxis de los
lenguajes concretos que siguen el modelo, y representa la semntica del mismo, as como una
filosofadeusodedichasemntica.
Como ya se menciono anteriormente, el lenguaje ensamblador es especfico para cada
microprocesador o Microcontrolador, nosotros estudiaremos el modelo de programacin del
CPU12deFREESCALE.Sumodelodeprogramacinincluyelosregistrosinternosquepermitenla
manipulacindedatos,elconjuntoderegistros,losmodosdedireccionamientoyelconjuntode
instrucciones.
1.4.1Conceptosdemodelodeprogramacin
EsunaCPUdealtavelocidadde16bits.SumodelodeprogramacinesidnticoaldelMC68HC11.
Surepertoriodeinstruccionesenunsuperconjuntodelde68HC11
Registros
Losregistrosdisponiblessonlossiguientes:
Pg.14de29

Recopiladopor:Ing.ValentnMartnezLpez.
Programacindesistemas.

AcumuladoresA,ByD
LosacumuladoresAyBsonregistrosgeneralesde8bits
Salvo en contadas instrucciones, son equivalentes. La suma (ABA), resta (SBA) y comparacin
(CBA)entreellossloesenunadireccin.ElajusteaBCD(DAA)sloesposibleenelacumulador
A.
UnidosformanelacumuladorD=A:B
RegistrosndicesXeY
Registrosde16bitsusadosparalosnumerososdireccionamientosindexados.
Punterodepila(SP)
Registrode16bitsquepermitemantenerunapiladelsistemaqueseactualizaautomticamente
almeterysacardatos.
Crece hacia abajo en memoria (RAM). SP en cada momento contienen la direccin del primer B
librepordebajodelacabeza.
DebehacerseapuntaramemoriaRAMaliniciarseelsistema.
Se utiliza para: llamadas a subrutinas, guardar estado en interrupciones, salvar datos
temporalmente,etc.
Contadordeprograma(PC)
Registrode16bitsquecontieneladireccindelasiguienteinstruccinaejecutar.
Pg.15de29

Registrodecdigosdecondicin(CCR)
Registrode8bitsquecontienedistintosindicadores(banderines)(flags):
Decontroldelsistema:
S
InhibicindelainstruccinSTOP:1seejecutacomoNOP,0sedetieneCPU
X
Inhibicindeinterrupcionesnoenmascarables(lnea

):1nosepermiten,0sepermiten

I
Inhibicindeinterrupcionesenmascarables:1nosepermiten,0sepermiten
deresultadosaritmticos:
H
medioacarreo:usadoparaajustarresultadotrassumacondatosenBCD
N
negativo:sielbitmssignificativoesta1=>datonegativosiestrepresentadoencomplemento
a2.
Z
cero:resultadoes0
V
overflow:desbordamientodeunaoperacinsilosdatosestnencomplementoa2
C
acarreo: desbordamiento de una operacin si los datos son sin signo. Tambin se utiliza en las
operacionesdedesplazamientoyrotacin.
Existeninstruccionesdesaltocondicionalquepermitencomprobarlascondiciones<, ,
O paradatossinsignoyconsigno.

, ,

LamayoradelasinstruccionesmodificanelCCR.Lasexcepcionesestnenlasinstruccionesde:
meterysacardelapila,transferenciaseintercambios.

Pg.16de29

Recopiladopor:Ing.ValentnMartnezLpez.
Programacindesistemas.

Modos de Direccionamiento microcontrolador 68HC12


Enellenguajeensamblador,asicomoenotroslenguajesdeprogramacin,haydiversasformasde
accederalosdatosquesepretendenusarenunainstruccin,aestasformasselesllamarmodos
de direccionamiento. Estos tienen por fin, el ayudar a que el usuario del micro pueda realizar
programasmsflexiblesydinmicos,dependiendodelasexigencias.

Inherente

Implcito
Por Registro

Inmediato
Directo
Modos
Direcc.
HC12

Extendido
Relativo

8 bits
9 bits
16 bits
Con desplazamiento consistente de 5, 9 y 16 bits
Con desplazamiento consistente del acumulador
Con pre / pos incremento /decremento

Indexado
Indirecto

Con desplazamiento del acumulador


Con desplazamiento de 16 bits

LosmodosdedireccionamientosonlapolticaaseguirporelMicrocontroladoromicroprocesador
alahoradebuscarunoperandoexternoalainstruccinquevaaprocesar,esdecir,encontrarla
posicin de memoria donde se encuentra el operando. Dicha direccin la denominaremos, de
ahoraenadelante,EA(EffectiveAddres,DireccinEfectiva).Excepcionalmente,elmodoinherente
notienenoperandosexternos,esdecir,notienenlosdatosdeloperandoenmemoria,sinoque
se encuentra en los registros de la CPU (Inherente Implcito) o incluido en el contexto de la
instruccin(Inherenteporregistro).
Elmicrocontrolador68HC12soportalossiguientesmodosdedireccionamiento:

Pg.17de29

Mododedireccionamiento

Formatofuente

Abreviacin

Inherente

INST

INH

INST#opr8i

Inmediato

INM

INST#opr16i

Directo

INSTopr8a

DIR

Extendido

INSTopr16a

EXT

INSTrel8

Relativo

REL

INSTrel16

Indexadode5bits

INSToprx5,xysp

IDX

Indexadode9bits

INSToprx9,xysp

IDX1

Indexadode16bits

INSToprx16,xysp

IDX2

Indexadodeacumulador

INSTabd,xysp

IDX

Indexadodepreincremento

INSToprx3,+xys

IDX

Pg.18de29

Recopiladopor:Ing.ValentnMartnezLpez.
Programacindesistemas.
Indexadodepredecremento

Indexadodepostincremento

Indexadodepostdecremento

Indexadoindirectode16bits

Indexado
indirecto

de

INSToprx3,xys

IDX

INSToprx3,xys+

IDX

INSToprx3,xys

IDX

INST[oprx16,xysp]

[IDX2]

acumulador

INST[D,xysp]

[D,IDX]

1.4.2Direccionamientossimples.(Inherente,Inmediato,DirectoyExtendido)
Direccionamientoinherente(INH)
Lasinstruccionesdeestetiponotienenunadireccinefectivaporquenoguardandatosenuna
direccindememoria,solousanlamemoriaparaobtenerelcdigomaquina.
Existen2tiposdedireccionamientosinherentes,losimplcitosquenorequierenoperandos:
CONLOC

COP

<etiqueta>

INST

;datosenlainstruccin

COP es el cdigo de operacin de la instruccin que lo documenta el fabricante el conjunto de


instruccionesdelashojasdedatosdelmicroprocesadoroMicrocontrolador(enestecasoarchivo
CPU12RG.pdf).
YCONLOCesladireccindememoriaquelecorrespondealainstruccin.
Ylosinherentesporregistro,quesillevanoperandoperohacenreferencianicamentearegistros
internos,enotraspalabrasnoocupandelamemoria:
CONLOC

COPeb<etiqueta>

INST r1,r2 ;porregistro

En donde r1 y r2 significan registro 1 y 2 (respectivamente); un ejemplo de esto podra ser la


siguienteinstruccinenlenguajeensamblador:
Pg.19de29

tfr

A,B

En la cual se indica que se copie lo que contiene el acumulador A en el acumulador B. Otro


ejemplopodraserelsiguiente:
exg

X,S

ElcualdicequesecambieloquecontengaelregistroXenelregistroS.
Direccionamientoinmediato(INM)
Se usa cuando se especifica que se quiere asignar especficamente un valor, el cual puede ser
tanto de 8 bits como de 16 bits. La EA se encuentra inmediatamente despus del cdigo de
operacin.
CONLOC

COPii

<etiqueta>

INST #opr8i

CONLOC

COPjjkk

<etiqueta>

INST #opr16i

Con0opr8i255paraelde8bits,y0opr16i65535paraelde16bits.Dondeiiesiguala
opr8ienformatohexadecimalen1byte(completandoconceroasuizquierdadesernecesario),y
jjkkesopr16ienformatohexadecimalcompletadoa2bytes.
Por ejemplo, para el siguiente fragmento de programa que se encarga de sumar el nmero 30
hexadecimal con el 20 tambin en hexadecimal, el cdigo maquina se calculara de la siguiente
manera:
000087

clra

00008630

ldaa

#$30 ;IMM,EA=0001H

00028B20

adaa #$20 ;IMM,EA=0003H

0004CE0000

ldx

;INH,noexisteEA

#$00 ;IMM,EA=0005H

Direccionamientodirecto(DIR)
Eloperandoindicaladireccindememoriadedondeseleereldato,peroladireccindebeestar
enlapaginacero(entre0000Hy00FFH).LaEA=00dd.
CONLOC

COPdd

<etiqueta>

INST

opr8a

Donde 0 opr8a 255. Con dd=opr8a en formato hexadecimal de 1 byte. Suponiendo que
deseamosconocerelcdigomaquinadelsiguienteextractodeprogramaqueseencargadesumar
2nmeros,tenemos:
000087
Pg.20de29

clra

;EAnoexiste

Recopiladopor:Ing.ValentnMartnezLpez.
Programacindesistemas.
00018680

ldaa

$80

;EA=0080H

00038B81

adda $81

;EA=0081H

00055A82

staa

;EA=0082H

$82

Direccionamientoextendido(EXT)
Igual que en el direccionamiento directo el operando especifica la direccin de memoria, con la
diferenciadequesepuedeespecificarcualquierdireccindememoria.LaEA=hhll.
CONLOCCOPhhll

<etiqueta>

INST

opr16a

Con0opr16a65535.Dondehhll=opr16enformatohexadecimalen2bytes.
1.4.3DireccionamientoRelativode8bits
Hayalgunosmodosdedireccionamientoenquesehaceusodeunapropiedadmuygeneralizada
de los programas denominada localidad de referencia, esta propiedad consiste en que las
direccionesreferenciadasporlosprogramasnosuelenalejarsemuchounasdeotrasy,portanto,
suelen estar concentradas en una parte de la memoria. Estas consideraciones nos llevan a la
conclusindequenoesnecesarioutilizartodoslosbitsdeladireccindememoriaenelcampo
deoperando,bastautilizarlosbitsprecisosparacubrirlapartedememoriadondeestnincluidas
las direcciones a las que el programa hace referencia. Esto puede hacerse tomando corno
referenciaunpuntodelamemoriaytomandocomocampodeoperandoladiferenciaentreese
punto y la direccin efectiva del operando. La direccin que se toma como punto de referencia
puederesidirenunregistrodelaCPUy,portanto,sumandoelcontenidodeeseregistroconel
campodeoperandoobtendremosladireccinefectiva.Hayvariosdireccionamientosbasadosen
estatcnicaquerecibendiferentesnombresdependiendodeculseaelregistroenelqueradica
la direccin tomada como referencia. Todos ellos podran catalogarse como direccionamientos
relativosaunregistro.
Eldireccionamientodenominadohabitualmenterelativotomacomovalordereferenciaelregistro
contador de programa. Cuando se usa este modo de direccionamiento, el campo de operando
consisteenunnmero(normalmenteconsigno)queexpresaladiferenciaentreladireccindel
datoyladireccinsiguientealainstruccinencurso(contenidaenelcontadordeprograma).Siel
campo de operando, llamado en este caso desplazamiento u offset, es positivo el operando
residirenunadireccinposterioraladelainstruccinysiesnegativo,enunadireccinanterior.
Este modo de direccionamiento es usado muy frecuentemente en programas cuyo cdigo deba
serindependientedelaposicindememoriadondeestnsituados(programasrelocalizables)ya
que el desplazamiento es independiente de la localizacin del programa. Tambin se usa con
muchafrecuenciaeninstruccionesdebifurcacin.
LaEAesrelativaalvalordelPC,sonsaltoscuyadireccindedestinoestarantesodespusdelPC.
Enelrelativode8bitsla direccinefectivaestar 128posicionesantesdel PCo127posiciones
Pg.21de29

despusyseespecificaeneloperandopormedioderel8(EA=rel8).EA=PC+rrendonderresun
numerode8bitsconsigno,masadelanteseexplicacomocalcularlo.
Direccionamientorelativo(REL)
Soninstruccionesdesaltocondicional.
CONLOCCOPrr

<etiqueta>

INST

rel8

CONLOCCOPebrr

<etiqueta>

INST

abdxys,rel9

CONLOCCOPqqrr

<etiqueta>

INST

rel16

DadoqueelPCeselregistroqueespecificaladireccindememoriadelasiguienteinstruccin,
entoncespodemosconsiderarque:
PC=CONLOC+N_bytes
EndondeN_byteseselnmerodebytesquetieneelcdigomaquinadelainstruccin,ovistode
otraformaladireccindememoriadelainstruccinsiguiente(CONLOC_siguiente).
Entonces:
PC=CONLOC_siguiente.
Ycomo:
EA=PC+rr
PerotambinEA=rel8,sustituyendotenemos
rel8=CONLOC_siguiente+rr
sidespejamospararr:
rr=rel8CONLOC_siguiente
Recordemosquerel8eseloperandodelainstruccinyque128rr127.Ademsrresunsolo
byte.
1.4.4DireccionamientoRelativode16bits
Donde32768qqrr32767.
Enestecasoladireccinefectivaesrelativaalcontadordelprogramaysecalculadelasiguiente
manera:
EA=PC+qqrr
Pg.22de29

Recopiladopor:Ing.ValentnMartnezLpez.
Programacindesistemas.
Con:
qqrr=rel16CONLOC_siguiente
Porejemplo,siquisiramoscalcularelcdigomaquinadelsiguienteprogramaqueseencargade
convertirundgitoounaletradelaAalaF(solomaysculas)asuvalorenASCII,tendramos:
0000

ORG

$4000

4000 9600

ldaa

$00

4002 8000

suba

#$30

4004 8130

cmpa #$11

4006 18250002

lblo

OTRO

400A 8007

suba

$80

400C 580

OTRO staa

$80

400E 20E0

bra

$4000

4010

END

Elrelativode9bitsporcalcularsedeacuerdoalvalordecadabitseexplicaraposteriormente.
1.4.5DireccionamientoIndexado.
En este modo de direccionamiento, la direccin del operando tambin se calcula sumando un
registro de la CPU al campo de operando, este registro es un registro especfico para este uso
llamado registro ndice. En los ordenadores con organizacin de registros generales, el registro
ndicepuedesercualquieradelosregistrosdelaCPU.Enlosordenadoresenqueelcontadorde
programaesconsideradocomounregistrodeusogeneralelmodorelativoesuncasoparticular
deldireccionamientoindexado.Alacantidadquehayquesumaralregistrondiceparaconseguir
la direccin del operando tambin se le llama desplazamiento u offset. Este modo de
direccionamientoesespecialmentetilparaeldireccionamientodevectoresymatricesenbucles
yaque,sisequierendireccionarelementosconsecutivosdelvectoromatriz,bastamantenerenel
desplazamiento la direccin del primer elemento e ir incrementando el registro ndice. Tambin
sirveparaaccederdeformarelativaaelementosdevectorescercanosaunodado,paraello,se
cargaladireccindelelementodereferenciaenelregistrondiceydespusseaccedemediante
direccionamiento indexado, con el desplazamiento adecuado, al anterior, al siguiente, etc., esto
mismotambinesaplicableapilas,enque,enocasiones,hayqueaccederadatoscercanos,por
encimaopordebajo,aldatosealadoporalgnapuntador.Unaconsecuenciadetodoestoesuna
modalidad de direccionamiento indexado de que disponen algunos ordenadores, denominada
autoindexacin,quehacequeelregistrondiceseaincrementadoodecrementadoeneltamao
deloperandoantesodespusdeaccederalmismo.Losordenadoresqueposeenautoindexacin
Pg.23de29

incorporanlosmodosdedireccionamientodescritosenlosdosapartadossiguientes.Enalgunos
ordenadores existen variantes del direccionamiento indexado en que se obtiene la direccin del
operandosumandoelcontenidodevariosregistrosconeldesplazamiento,estopuedeservirpara
especificar el comienzo de un vector mediante un desplazamiento respecto a un registro y el
elementodelvectormedianteunregistrondice.
En este direccionamiento la direccin del dato de la instruccin se obtiene sumando el primer
operando al contenido de un registro ndice que puede ser X, Y, SP o PC especificado en el
segundooperando.EA=ri+desplazamiento,endonderiesunodelosregistrosndice.
Direccionamientoindexadocondesplazamientoconstante
Enestedireccionamientoeldesplazamiento(primeroperando)esunnumeroconstantede5,9o
16bits.
CONLOCCOPxb

<etiqueta>

INST

oprx5,xysp

CONLOCCOPxbff

<etiqueta>

INST

oprx9,xysp

CONLOCCOPxbeeff <etiqueta>

INST

oprx16,xysp

Donde16oprx515,256oprx9255y0oprx1665535;
elpostbytexbseobtienedelasiguientemaneraparaelmodode5bits:
xb=rr0nnnnncomonumerobinario.
Nodebemosdeconfundirestarrconlaobtenidaparaelmododedireccionamientorelativo,aqu
larresunnumerobinariodedosbitsqueserefierealregistrondicequesesealaeneloperando
yquepuedeser:
x

00

01

sp

10

pc

11

Y nnnnn se refiere a oprx5, completados a 5 bits. Una vez que se tienen todos los datos y se
sustituyenenlaformulasetomanlos4bitsmssignificativosysetransformanasuequivalente
en formato hexadecimal, lo mismo se hace con los 4 bits menos significativos, los 2 dgitos
hexadecimalessejuntanyellosrepresentanelpostbytexb.
Paralosmodosindizadosde9y16bitselpostbytexbseobtieneconlaformula:
xb=111rr0zsbinario
Pg.24de29

Recopiladopor:Ing.ValentnMartnezLpez.
Programacindesistemas.
Zes0paraelmodode9bitsy1paraelmodode16bits;ses0paraelmodode16bitsyparael
modode9bitsesigualalbitdesignodelarepresentacinbinariadeoprx9.
Paraelmodoindizadode9bits,ffserefierealarepresentacinen1bytehexadecimalesdelos8
bitsmenossignificativosdeoprx9;yparaelmodoindizadode16bitseeeslarepresentacinen1
bytedelos8bitsmssignificativosdeoprx16yfflarepresentacinenhexadecimaldelos8bits
menossignificativosdelmismooprx16.
Heaquunejemplo:
0000

ORG

$4300

4300 CE0800

ldx

#$0800

4303 6900

LIMPIAclr

0,x

4305 08

inx

4306 8E0900

cpx

#$0900

4309 25F8

blo

LIMPIA

430B 3D

rts

430C

END

Direccionamientoindexadocondesplazamientodelacumulador
Enestedireccionamientoeldesplazamientoesunodelosregistrosacumuladores(A,BoD).EA=
ri+acumulador.
CONLOCCOPxb

<etiqueta>

INST

abd,xysp

Dondeelpostbytexbsecalculaconlasiguientefrmula:
xb=111rr1aatambinenbinario.
Elacumuladoreselquenosvaadaraa,yaquesiesteeselacumuladorA,aaseriguala00,sipor
otraparteeselacumuladorBser01yporultimosisetratadelacumuladorD,aaser10.
Veamospuesunejemplo,elcualconvierteunnmerohexadecimalasurepresentacinenBCD:
0000

ORG

$0E43

0E43 CE0E4E

ldx

#TABLA

0E46 9600

OTRO ldaa

0E48 840F

$00

anda #$0F
Pg.25de29

0E4A A6E4

ldaa

A,X

0E4C 20F8

bra

OTRO

0E4E

TABLA DB

%0000,%0001,$02,$03

0E52 04050607

DB

$04,$05,$06,$07

0E56 08091011

DB

$08,$09,$10,$11

0E5A 12131415

DB

$12,$13,$14,$15

0E5E

END

00010203

Indexadoconpre/postincremento/decremento
Enestedireccionamientoadiferenciadelosdemsindexadosladireccinefectivaseobtienesolo
delcontenidodelregistrondiceperoestevalorsecalculadespusdeincrementarodecrementar
elcontenidodelregistrondice,sisetratadepreincrementoodecrementorespectivamente.Sise
trata de post incremento o decremento, primero se calcula la direccin efectiva y luego se
incrementa o decrementa el registro ndice. El valor en que va a ser incrementado o
decrementadoelregistrondiceseespecificaenelprimeroperandoypuedeserunvalorentre1y
8.
CONLOCCOPxb

<etiqueta>

INST

oprx3,+xys;preincremento

CONLOCCOPxb

<etiqueta>

INST

oprx3,xys;predecremento

CONLOCCOPxb

<etiqueta>

INST

oprx3,xys+;postincremento

CONLOCCOPxb

<etiqueta>

INST

oprx3,xys;postdecremento

Esos son los formatos para el pre incremento, pre decremento, post incremento y post
decremento respectivamente, donde 1 oprx3 8. Donde el post byte xb se obtiene con la
formula:
xb=rr1pnnnnbinariocomotodoslosxb
Como ya hemos visto, rr depende del registro ndice al cual se haga referencia en el mismo
operando;pes0paraprey1parapost,yporultimonnnnrepresentaoprx31,sisetratadeun
incrementoooprx3paradecrementoenunformatode4bits.
Estoseapreciamejorenelsiguienteejemplo:
0000

0E00CE0800
Pg.26de29

ORG

$E00

ldx

#$0800

Recopiladopor:Ing.ValentnMartnezLpez.
Programacindesistemas.
0E036930

LIMPIAclr

1,x+

0E058E0900

cpx

#$0900

0E0825F9

blo

LIMPIA

0E0A3D

rts

0E0B

END

1.4.6DireccionamientoIndirecto
DireccionamientoIndirectoporRegistro
Estedireccionamientoutilizaelcontenidoderegistrosinternoscomounadireccindememoria.
La direccin efectiva es igual al contenido del registro ndice, este registro trabaja como
apuntador, en el HC12 se puede obtener con el direccionamiento indexado de desplazamiento
constantede5bitshaciendoeldesplazamientoiguala0.
DireccionamientoIndirectoporMemoria.
Enesteotrodireccionamientoindirectoesunalocalidaddememorialaquecontendrelvalorde
la direccin efectiva, dentro de la memoria se encuentra el apuntador a otra direccin de
memoria,enelcasodelHC12existecombinadoconeldireccionamientoindexado.
Direccionamientoindexadoindirecto
Existen2tiposdedireccionamientoindexadoindirecto,elde16bits:
Direccionamientoindexadoindirectode16bitsdedesplazamientoconstante
Estemododedireccionamientoindexadoaadealos16bitsdelainstruccindedesplazamientoa
la base del registro ndice para formar la direccin de la localidad de memoria que contiene un
puntero a la memoria afectada por la instruccin. La instruccin misma no es al puntero a la
direccin de memoria la que acta, mejor dicho a la localidad de memoria del puntero a la
direccinaactuar.
CONLOCCOPxbeeff <etiqueta>

INST

[oprx16,xysp]

Dondexbsepuedeobtenerconestafrmula:
xb=111rr011binario
Yenlacualrrserefierealregistrondice;yeeffesoprx16representadoen2bytes.
YtambinexisteeldireccionamientoindexadoindirectodelacumuladorD:

Pg.27de29

EstedireccionamientoindexadoaadeelvalorenelacumuladorDalvalorenlabasedelregistro
ndiceparaformarladireccindememoriaquecontieneelpunterodelalocalidaddememoria
afectadaporlainstruccin.
<etiqueta>

INST

[D,xysp]

Yparaelcualsecalculasucdigomaquinaas:
COP

xb

[D,xysp]

Dondexbvienedelasiguientefrmula:
111rr111
Enlacual(ycomohemosvistoanteriormente)elpostbytexbvienedadoporelregistrondice.
1.4.7Otrosdireccionamientos
DireccionamientosMltiples
COPddmmBCLRopr8a,msk8DIR
hhllmmopr16a,msk8EXT
xbmmoprx0_xysp,msk8IDX
xbffmmoprx9_xysp,msk8IDX1
xbefffoprx16_xysp,msk8IDX2

COPddmmrrBRCLRopr8a,msk8,rel8
hhllmmropr16a,msk8,rel8
xbmmrroprx0_xysp,msk8,rel8
xbffmmrroprx9_xysp,msk8,rel8
xbefffrroprx16_xysp,msk8,rel8

COPiihhllMOVB#opr8i,opr16aINMEXT
xbii#opr8i,oprx0_xyspINMIDX
hhllhhllopr16a,opr16aEXTEXT
Pg.28de29

Recopiladopor:Ing.ValentnMartnezLpez.
Programacindesistemas.
xbhhllopr16a,oprx0_xyspEXTIDX
xbhhlloprx0_xysp,opr16aIDXEXT
xbxboprx0_xysp,oprx0_xypsIDXIDX

COPjjkkhhllMOVW#opr16ii,opr16i
Ej:
<Etiqueta>BCLR$01,$10

4D0110<Etiqueta>BCLR$01,$10

<Etiqueta>BRCLR$01,$10,OTRO
5510 4F0110EC.............<Etiqueta>BRCLR$01,$10,OTRO
5514................................TABSIMOTRO$5500
5500H
5514H=
FFECH

Pg.29de29

Das könnte Ihnen auch gefallen