Vous êtes sur la page 1sur 11

SIstemas con P y C

Iii.//www.Icrrcra.uni.cdu.ar/roccsadorcs
Conceptos de
ProgramacIn: Lazos,
PIIas y SubrutInas
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 2 02/10/2014
Temas a Tratar
Lazos.
Parics.
Fornas dc Finalizacion
Pilas.
Inlcncniacion cn cl CPU08.
Ejcnlos dc uso.
Sulruiinas.
Inlcncniacion cn cl CPU08.
Pasajc dc Paranciros.
Ejcnlos.
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 3 02/10/2014
Lazos
Fundancnialcs cn iodo Prograna.
Incializacion.
Cucro.
Condicion dc Finalizacion.
La Condicion ucdc scr.
Nuncro dc Vcccs. DDNZ cucnia, lazo
Un cvcnio. CDEQA =ocr, rcl or cjcnlo.
Progranar siguicndo la naiuralcza dcl
rollcna.
Oiinizar crfornancc dc un rograna cs
oiinizar sus lazos.
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 4 02/10/2014
PIIa J Stack (repaso)
Esiruciura dc daios nuy uiilizada cn
gcncral.
Ejcnlos dc ilas cn cl nundo rcal? Ejcnlos dc ilas cn cl nundo rcal?
Uso inorianic sirvc ara clorar y
salcr cono rciornar (cjcnlo. rccorridos dc
arlolcs}.
Cono sc inlcncnia cn Sw? Cono sc inlcncnia cn Sw?
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 5 02/10/2014
ImpIementacIn en eI CPU0S
La ncnoria FAM Iacc dc ialla.
Enlca un unicro cn Iardwarc (SP cn CPU} ara scnalar e1
pr1mer 1ugor no ooupodo en 1o p11o.
Insiruccioncs (PUSH y PULL} ara ingrcsar y rciirar
clcncnios dc la ila.
Cuando ingrcsanos un nucvo clcncnio cn la ila cl valor dc
SP sc dccrcncnia cn uno.
Crccc cn cl scniido dc las dircccioncs dccrccicnics.
El unicro dc ila (SP} sc inicializa cn cl valor $00FF. Hay
una insiruccion ara rcinicializar cn $00FF, FSP.
Sc ucdc inicilizar cn oira aric cargando SP con HX+1.
TXS
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 6 02/10/2014
ImpIementacIn en eI CPU0S
PSHA. Ingrcsa cl valor dcl acunulador (A} cn la ila.
PSHH. Ingrcsa cl valor dc la aric alia dcl ndicc (H} cn la
ila.
PSHX. Ingrcsa cl valor dc la aric laja dcl ndicc (X} cn la
ila.
Ej. PSHA, CPU cjccuia M(SP} (A}
SP (SP} 1
PULA. Fciira cl valor ioc dc la ila y lo alnaccna cn cl
acunulador (A}.
PULH. Fciira cl valor ioc dc la ila y lo alnaccna cn la
aric alia dcl ndicc (H}.
PULX. Fciira cl valor ioc dc la ila y lo alnaccna cn la
aric laja dcl ndicc (X}.
Ej PULA, CPU cjccuia SP (SP} + 1
A M(SP}
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 7 02/10/2014
ImpIementacIones en otros CPUs
El siacl ucdc crcccr ara alajo o ara arrila.
El SP aunia a rincr lugar vaco.
No ucdc auniar a lugar ocuado si cl siacl csia vaco.
En cl CPU08 sc ucdc inicializar cl siacl or
SW cn oira aric.
Quc crczca ara arrila cn CPU08 crniic usar
ncnoria dcsdc M(0} ara oiras cosas.
Poca rolalilidad dc quc sc sucrongan anlos
usos.
Si sc sucroncn. DESASTFE!!
Vcrcnos or quc cn lo quc siguc.
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 8 02/10/2014
OperacIones con eI Stack
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 9 02/10/2014
EjempIo INC HX (IntercambIos)
INC X
BNE Salto
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 10 02/10/2014
EjempIo INC HX (IntercambIos)
INC X
BNE Salto
PSHH
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 11 02/10/2014
EjempIo INC HX (IntercambIos)
INC X
BNE Salto
PSHH
PULA
INCA
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 12 02/10/2014
EjempIo INC HX (IntercambIos)
INC X
BNE Salto
PSHH
PULA
INCA
PSHA
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 13 02/10/2014
EjempIo INC HX (IntercambIos)
INC X
BNE Salto
PSHH
PULA
INCA
PSHA
PULH
Salto ...
Equivale a INC HX que no existe
en el Set de instrucciones.
En la prctica se usa AIX #1
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 14 02/10/2014
Ej. INC HX (Acc. Indexado)
INC X
BNE Salto
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 15 02/10/2014
Ej. INC HX (Acceso Indexado)
INC X
BNE Salto
PSHH
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 16 02/10/2014
Ej. INC HX (Acceso Indexado)
INC X
BNE Salto
PSHH
INC 1,SP
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 17 02/10/2014
Ej. INC HX (Acceso Indexado)
INC X
BNE Salto
PSHH
INC 1,SP
PULH
Salto ...
Acccso no oriodoo cn
csia csiruciura, cro
nas raido y or ianio
raciico.
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 18 02/10/2014
Cuanto Demora? Cuanto Ocupa?
INC X 1B 2M
BNE Salto 2B 3M
PSHH 1B 2M
PULA 1B 2M
INCA 1B 1M
PSHA 1B 2M
PULH 1B 2M
Salto ...
INC X 1B 2M
BNE Salto 2B 3M
PSHH 1B 2M
INC 1,SP 3B 5M
PULH 1B 2M
Salto ...
Esacio Toial
8 Dyics FOM
Ticno
14 Ciclos M
Esacio Toial
8 Dyics FOM
Ticno
14 Ciclos M
Ventaja reaI con
varIos accesos
Indexados.
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 19 02/10/2014
SubrutInas
Ccncralncnic los rogranas coniicncn lloqucs
dc codigo quc sc rciicn.
En csios lloqucs dc codigo ucdcn variar
algunos dc los ocrandos (aranciros}.
Sc ucdc aIorrar ncnoria (y iicno dc
dcsarrollo} si csios lloqucs sc cscrilcn una vcz
y sc cjccuian cada vcz quc sc los rcquicrc.
Adcnas csios lloqucs sc odran uiilizar cn
oiros rogranas.
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 20 02/10/2014
Ventajas SubrutInas
Progranacion To-Down
Sc dividc cl Prograna cn Modulos.
Cada nodulo cn sulnodulos.
Hasia llcgar a nodulos clcncnialcs.
Sc rograna dc arrila Iacia alajo
Sc rucla al rcvcs.
Tralajo cn Equio.
Fcuiilizacion (Dillioiccas dc Fuiinas}
Fcquicrc es1ondor1zoo1n g 1ronsporeno1o.
Vagancia Inicligcnic"
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 21 02/10/2014
RequerImIentos.
Sc las convoca dc disiinios lugarcs.
Dclcn salcr dc dondc fucron llanadas
ara rciornar a la insiruccion siguicnic al
llanado.
Evidcnicncnic un sinlc salio no cs
suficicnic.
Dclc Ialcr un nccanisno ara asar y
dcvolvcr aranciros.
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 22 02/10/2014
ImpIementacIn en CPU0S
Insiruccion dc llanada. JSF dcsiino"
Hacc un PUSH dcl valor dcl PC-1 cn Siacl y salia a
la sulruiina quc conicnza cn dcsiino".
Para csic caso PC-1 aunia a la dircccion dc la
insiruccion siguicnic (NInsi}.
Insiruccion dc Fciorno. FTS
Fcaliza un PULL" dc 16 liis y los onc cn PC.
Si iodo csia Ol, cl siguicnic fcicI cs dc NInsi.
Para quc iodo csic Ol, 1o subru11no no debe mod1]1oor e1
vo1or o1mooenodo n1 e1 SP.
Error conun cn rinciianics. rcsuliados incicrios.
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 23 02/10/2014
LIamados a SubrutInas - CPU0S
Modos dc dircccionar cl dcsiino"
Dirccio JSF $80
PC (PC} -1
(SP} (PC
L
}
SP (SP} - 1
(SP} (PC
H
}
SP (SP} - 1
PC $0080
Indcado JSF 10,X .
PC (H.X} + 10
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT
Modos de DIreccIonamIento
Fclaiivo DSF rcl.
Dirccio - JSF dd
Eicndido - JSF II ll
IX2 JSF or16, X
IX1 JSF or8, X
IX JSF ,X
24 02/10/2014
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 25 02/10/2014
Retornos de SubrutIna - CPU0S
FTS. Esia insiruccion cs uiilizada or la sulruiina ara
rciornar al unio dc llanada dcl rograna rincial.
FTS cl CPU cjccuia. SP (SP} + 1
(PC
H
} (SP}
SP (SP} + 1
(PC
L
} (SP}
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 26 02/10/2014
SubrutInas AnIdadas
Esia inlcncniacion crniic a una sulruiina convocar a oira
sulruiina ara Iaccr aric dcl iralajo?
S, cl nccanisno dc Siacl lo crniic sin rollcnas.
PP ...
C1 JSR SA
R1 ...
RTS
...
...
...

Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 27 02/10/2014


SubrutInas AnIdadas
Esia inlcncniacion crniic a una sulruiina convocar a oira
sulruiina ara Iaccr aric dcl iralajo?
Si, cl nccanisno dc Siacl lo crniic sin rollcnas.
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 28 02/10/2014
SubrutInas AnIdadas
Esia inlcncniacion crniic a una sulruiina convocar a oira
sulruiina ara Iaccr aric dcl iralajo?
Si, cl nccanisno dc Siacl lo crniic sin rollcnas.
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 29 02/10/2014
SubrutInas AnIdadas
Esia inlcncniacion crniic a una sulruiina convocar a oira
sulruiina ara Iaccr aric dcl iralajo?
Si, cl nccanisno dc Siacl lo crniic sin rollcnas.
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 30 02/10/2014
SubrutInas AnIdadas
Esia inlcncniacion crniic a una sulruiina convocar a oira
sulruiina ara Iaccr aric dcl iralajo?
Si, cl nccanisno dc Siacl lo crniic sin rollcnas.
Quc asa si cn las ruiinas sc nodifica cl valor dc rciorno o cl
valor dc SP?
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 31 02/10/2014
Pasaje de Parmetros
Los aranciros son los daios dc cnirada y los
rcsuliados dc salida dc la Sulruiina.
Eisicn 4 fornas dc asajc dc aranciros.
Por Fcgisiros.
En Mcnoria.
En la Pila.
Por Fcfcrcncias a Mcnoria cn la Pila.
Cada caso oscc vcniajas y dcsvcniajas, Iay
quc salcr cuando convicnc uiilizar cada uno.
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 32 02/10/2014
Pasaje parmetros por regIstros
Los aranciros son alnaccnados cn los
rcgisiros dc roosiio gcncral anics dc la
llanada a la sulruiina.
Es la forna nas scncilla y raida ara
asar aranciros.
Ventajas?
Desventajas?
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 33 02/10/2014
EjempIo de ApIIcacIn
Parmetro de Entrada: X y A.
Rutina hace A=A+X.
Parmetro de Salida: A
ORG Data
Tmp DS 1 1B
ORG Code
Main LDA #57 2B 2M
LDX #18 2B 2M
JSR Suma 3B 5M
.
Suma STX Tmp 2B 3M
ADD Tmp 2B 3M
RTS 1B 4M
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 34 02/10/2014
Paso de parmetros en memorIa
Los aranciros son alnaccnados cn una zona dc
ncnoria conocida or cl rograna rincial y la
sulruiina (variallcs glolalcs}.
Vcniaja. no Iay lniic dc aranciros a asar.
Dcsvcniaja. Fcfcrcncia fija a Mcnoria. por qu?
Si varias sulruiinas conaricn un nisno lloquc dc ncnoria,
cnionccs csas sulruiinas no sc ucdcn llanar cnirc si.
Si Iay n ruiinas disiinias quc sc ucdan llanar cnirc s.
cuanias arcas indccndicnics dclo icncr?
Adcnas con cada llanado Iay quc novcr los daios a la zona dc
rcfcrcncia iralajo y iicno ara Prog. Princial.
El rogranador dclc scr cuidadoso con las arcas rcscrvadas dc
Mcnoria ara sulruiinas.
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 35 02/10/2014
EjempIo de ApIIcacIn
ORG Data
NumA DS 1 1B
NumB DS 1 1B
Total DS 1 1B
org Code
Main MOV #57,NumA 3B 4M
MOV #18,NumB 3B 4M
JSR Suma 3B 5M
.
Suma: LDA NumA 2B 3M
ADD NumB 2B 3M
STA Total 2B 3M
RTS 1B 4M
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 36 02/10/2014
Paso de parmetros en Ia pIIa
Los aranciros son alnaccnados cn la ila anics dc llanar a la sulruiina.
Vcniajas y Dcsvcniajas? Vcniajas y Dcsvcniajas?
Vcniajas Vcniajas
Nun iliniiado dc aranciros.
No Iacc falia n arcas dc ncnoria.
El Progranador no sc rcocua or cuidar arcas".
Fuiinas anidadas no rcscnian rollcnas.
En la ila sc ucdcn guardar ianlicn las variallcs localcs si Iay anidanicnios.
Dcsvcniajas Dcsvcniajas
El Prog. Princial cnlca iicno cn oncr los aranciros cn cl siacl, csccialncnic
si son nucIos. Pucdc scr dcnasiado iicno y lugar.
Sc dclc dircccionar a aranciros quc no csian cn cl ioc dc la ila.
El CPU08 soluciona csic uliino rollcna crniiicndo acccsos indcados rcsccio al
unicro dc ila.
La ruiina dclc icncr cuidado orquc si la rcfcrcncia cs SP, y si sc usa la ila, SP
canlia. Sugcrcncia IX SP+1 anics dc novcrlo Franc Poinicr".
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 37 02/10/2014
EjempIo de ApIIcacIn
ORG Data
Total DS 1 1B
ORG Code
Main LDA #57 2B 2M
PSHA 1B 2M
LDA #18 2B 2M
PSHA 1B 2M
AIS #-1 `lugar resultado 1B 2M
JSR Suma 3B 5M
PULA 1B 2M
AIS #2 1B 2M
STA Total 2B 3M
.
Suma LDA 5,SP 3B 4M
ADD 4,SP 3B 4M
STA 3,SP 3B 4M
RTS 1B 4M
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 38 02/10/2014
Pasaje por ReIerencIa a MemorIa.
Los aranciros csian cn un lloquc dc ncnoria ial cono los nancja cl
Prog. Princial.
La dircccion inicial (y la dincnsion dcl lloquc si Iacc falia} sc onc cn la
ila.
Si la ruiina cnircga un lloquc cono rcsuliado, ianlicn asa la dircccion
incial (y la dincnsion dcl lloquc cn la ila}.
Vcniajas.
No Iay lniic cn caniidad dc arancios.
No Iay rollcnas dc anidanicnios.
El rograna rincial no gasia iicno asando daios dc un lugar a oiro.
Dcsvcniajas.
Conlicado ara ocos daios, y lcnio cn csc caso.
Pcro si no lo uso con ocos daios. no Iay dcsvcniajas
Si la ruiina usa unos ocos daios y ianlicn un lloquc dc n?
Nadic dicc quc solo sc dclc cnlcar un unico nciodo.
Sc lo ucdc conlinar con cl nciodo anicrior.
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 39 02/10/2014
Suma 2 nmeros - Pase en Stack
ORG Data
Par DS 3 1B
ORG Code
Main MOV #57,Par 3B 4M
MOV #18,Par+1 3B 4M
LDHX #Par
PSHX 1B 2M
PSHH 1B 2M
JSR Suma 3B 5M
AIS #2 1B 2M
.
Suma: LDA 3,SP 3B 4M
PSHA 1B 2M
PULH 1B 2M
LDX 4,SP 3B 4M
LDA 0,X 1B 2M
ADD 1,X 2B 3M
STA 2,X 2B 3M
RTS 1B 4M
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 40 02/10/2014
EjempIo: Suma de Nmeros
Sc dcsca sunar 32 nuncros dc 8 liis sin
signo.
Los nuncros csian alnaccnados a ariir dc la
dircccion $00A0
Dincnsionar cl rcsuliado y colocarlo a ariir
dc la dircccion $80.
Misno Prograna dcl icna 4, aIora cono
Sulruiina.
Sulruiina. Haccr cn la Casa y rcscniar
Proina Clasc.
Esccificacioncs
Dclcn conscrvarsc iodos los rcgisiros.
Fuiina ioialncnic gcncral (lloquc dc daios variallc cn
cualquicr aric}
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 41 02/10/2014
Programa prIncIpaI
Org Codc
Main LDHX =$0080
PSHX
PSHH
LDHX =$00A0
PSHX
PSHH
LDA =32
PSHA
JSF SUMAF
.
Algunos CPUs iicncn dircccionanicnio M Indirccio.
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 42 02/10/2014
SubrutInas RecursIvas
Fuiinas quc sc llanan a s nisnas.
Dc nancra dirccia o indirccia.
Eisicn rollcnas dc naiuralcza rccursiva. Hay
quc aiacarlos siguicndo su naiuralcza.
Ej. Torrcs dc Hanoi.
Dos condicioncs ara quc funcionc licn.
Codigo Puro.
Arcas dc Daios Indccndicnics or cada llanado.
Arcas dc Daios Indccndicnics Siacl.
Codigo Puro norna nnina dc Iigicnc.
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 43 02/10/2014
TransparencIa
Ticnc or oljciivo indccndizar las sulruiinas
dcl rograna rincial.
Para cllo cada sulruiina dclc conscrvar los
valorcs dc los rcgisiros y cl CCF y no alicrar la
ncnoria quc no lc fuc asignada.
Si adcnas rcscianos una convcncion ara cl
asajc dc aranciros, odcnos inicgrar las
sulruiinas cn lilrcras y rcuiilizarlas cn
fuiuros royccios.
Sisicnas con Microroccsadorcs y Microconiroladorcs - UNT 44 02/10/2014
TransparencIa
Cuardar iodos los daios quc no dclan scr
nodificados or la sulruiina.
Fcgisiros dcl CPU (A, CCF,.}
Dondc?
Si la ruiina cs rccursiva y sc llana a s
nisna. lorrara sus roios daios.
Eccio cn cl STACK.
Quicn?
El quc salc quc canliara. la Sulruiina.

Vous aimerez peut-être aussi