SlideShare una empresa de Scribd logo
1 de 6
PROCESODE MODULARIZACION.
El procesode segmentaciónconsiste enhacerunaabstraccióndel problema,del cual se tiene
inicialmente unpanoramageneral.Enseguida,se procede a“desmenuzar”o“dividir”el
problemaenpartespequeñasysimples,comose muestra:Se forma un primermodulo
enunciandoel problemaentérminosde lasoluciónaéste.
MACRO INTERNO
Una macro, es unconjuntode instruccionesque se puedenmandara llamardesde cualquier
parte del programa.
Para definirunamacro,se utilizala directivaMACRO.El formatode estadirectivaes:
(nombre_de_macro) MACRO(lista_parámetros)
Una macro constade trespartesesenciales:
a) CABECERA:Contiene el nombre de lamacro,lapseudo-opMACROyopcionalmente,
variablesficticiasque seránpasadasdesdelamacro.
b) CUERPO: Contiene el códigoreal que seráinsertadoencualquierprogramaque llame al
nombre de la macro.
c) FIN:Debe incluirlasentenciaENDM.
Ejemplode unamacro sencilla:
INICIO MACRO
; Define macro
MOV AX,DATA ; cuerpode
MOV DS, AX ; la definición
MOV ES, AX ; de lamacro
ENDM ; Finde la macro
El nombre de estamacro es INICIO,aunque esaceptablecualquierotronombre válidoque sea
único.La directivaMACROenla primerlíneaindicaal ensambladorque lasinstruccionesque
siguen,hastaENDM(“finde lamacro”), sonparte de la definiciónde lamacro.
La directivaENDMterminaladefiniciónde lamacro.Las instruccionesentreMACROyENDM
comprendenel cuerpode ladefiniciónde lamacro.Si su programa realizafrecuentemente
funcionesde entrada/salida,lasmacrosofrecenlafacilidadde codificarunasolavezun
conjuntode instruccionesyreutilizarel códigocuantasvecesdeseedentrode suprograma.
Una macro esuna pseudo-opque permite el establecimientode operacionesúnicasen
ensambladorolainclusiónde frecuentesllamadasde códigoensamblador.Unamacro
tambiénse puede definircomoungrupo de instruccionesrepetitivasenunprogramaque se
codificasólounavezy puede utilizarsecuantasvecesseanecesario.[1]
Internas.
Una macro internaesaquellaque se declarayse llamandentro del mismoprograma.
Una macro internase declarade la siguientemanera:
Sintaxis:
<Nombre>MACRO [parámetros]
…
ENDM
Ejemplo:
DuplicaAL? MACRO
SHL AL, 1
ENDM
Códigoque lausa:
MOV AL, 2
DuplicaAL ; Esta esla “llamada”al macro
El ensambladorsustituye cadavezque aparezcalamacro. No escomo losprocedimientos,que
se “llaman”perono repitenel códigoEjemplo:
MOV AL, 2
DuplicaAL ; CALL Duplica
DuplicaAL ; CALL Duplica
Este códigoqueda:
MOV AL, 2
SHL AL, 1 ; CALL Duplica
SHL AL, 1 ; CALL Duplica
Cuándousarlasy cuándono
1.- Cuandose quiere el códigomásrápidoy no importaserrepetitivo(códigogrande)
2.-Cuandose van a generardiversasvariantesde códigosimilar
3.-Nocuando se quiere códigocompacto,evitandorepetirel mismo(eneste caso,usar
procedimientos).[2]
MACROS
Macro: enaplicacionesde computadora,unconjuntode accionesoinstruccionesgrabadasy
ejecutadasmedianteunasimpleunainstrucción.Asíse evitalaintroducciónrepetitivade
instrucciones,se minimizanloserrorestipográficosyse permite alosusuariosque no
conozcanel programa reproducirconjuntosde instruccionespreviamente grabadospor
alguienmásexpertoenlaaplicación.Si laaplicaciónincluye tambiénunlenguaje de macros
que respondaa variablese instruccionescondicionales,el usuariopuede tambiéncontrolarel
resultadode unprocedimiento,haciendoque lamacrorespondade formadiferentebajo
condicionesdiversas.
“En el lenguaje de programaciónensamblador”,unamacroesun nombre que define un
conjuntode instruccionesque seránsustituidasporlamacro cuando el nombre de ésta
aparezca enun programa(procesodenominadoexpansiónde macros) enel momentode
ensamblarel programa.Las instruccionesde macrosse puedenguardarenel programamismo
o enun archivoseparadoque el programa puedaidentificar.
Procedimientosinternos Losprocedimientosinternossonaquellosque se declaranyse
llamandentrodel mismoprograma,tambiénsonllamadosprocedimientoslocales.
ProcedimientosExternosLenguaje Ensamblador
‘’‘Definiciónde procedimientoUnprocedimientoesunconjuntode instruccionesalosque
podemosdirigirel flujode nuestroprograma,yunavezterminadalaejecuciónde dichas
instruccionesse devuelve el control alasiguiente lineaaprocesardel códigoque mando
llamaral procedimiento.Unprocedimientose declaraunasolavezenel códigofuente y
cuandoel programa se ensamblayejecuta,el procedimientose colocaenmemoriaparaque
puedaserutilizadoporel programa.Los procedimientosnosayudanacrear programas
legiblesyfácilesde modificar.Al momentode invocaraun procedimientose guardaenla pila
la direcciónde lasiguienteinstruccióndel programaparaque,una veztransferidoel flujodel
programa y terminadoel procedimiento,se puedaregresarala lineasiguientedel programa
original (el que llam—al procedimiento).Sintaxisde unprocedimientoExistendostiposde
procedimientos,losintrasegmentos,que se encuentranenel mismosegmentode
instruccionesylosintersegmentosque puedenseralmacenadosendiferentessegmentosde
memoria.Cuandose utilizanlosprocedimientosintrasegmentosse almacenaenlapilael valor
de IP y cuandose utilizanlosintersegmentosse almacena el valorCS:IPParadesviarel flujoa
un procedimiento(llamarlo) se utilizaladirectiva:CALLNombre Del ProcedimientoLaspartes
que componena unprocedimientoson:• Declaracióndel procedimiento•códigodel
procedimiento•Directivade regreso• Terminacióndel procedimientoPorejemplo,si
queremosunarutinaque nossume dosbytes,almacenadosenAHy AL cada uno y guardarla
suma enel registroBX:Suma Proc Near;Declaracióndel procedimientoMovBx,0 ;Contenido
del procedimientoMovBl,AhMov Ah,00 AddBx,Ax Ret ;Directivade regresoSumaEndp
;Declaraciónde final del procedimientoEnladeclaraciónlaprimerapalabra,Suma,
corresponde al nombre de nuestroprocedimiento,Proclodeclaracomotal y lapalabra Near
le indicaal MASM que el procedimientoesintrasegmento.LadirectivaRetcarga ladirecciónIP
almacenadaenlapilapara regresaral programa original,porúltimo,ladirectivaSumaEndp
indicael final del procedimiento.Paradeclararunprocedimientointersegmentosustituimosla
palabraNear porla palabraFAR. El llamadode este procedimientose realizade lasiguiente
forma:Call Suma Las macros ofrecenunamayorflexibilidadenlaProgramacióncomparadas
con losprocedimientos,peronoporellose dejaránde utilizarestosúltimos.
Las principalesventajasenel usode procedimientosson:permitenunacodificaciónmáslimpia
y compacta,es decirel códigofuente esmáspequeño;tambiénpermitenel ahorrode
memoria,estoesporque unmismoprocedimientopuede serllamadovariasvecesenel
mismoprogramay sólorequiere memoriaunavez.
Los procedimientostienenladesventajade que reducenlavelocidadde ejecuciónde los
programas,estose debe a la formaen que losprocedimientosse ejecutan.A continuaciónse
presentanlospasosnecesariosparaejecutarunprocedimiento:
1.- Se encuentralallamadaCall 2.- El microprocesadoralmacenaenlaPilael contenidodelIP
3.- Se coloca enel IP el valordel desplazamientocorrespondienteal Procedimiento4.- El
microprocesadorejecutalasinstruccionesdelprocedimiento5.- El procedimientotermina
cuandose encuentralainstrucciónRet6.- Se saca de la pilael valororiginal del IPyse continua
el flujodel programaUn procedimientose declarade lasiguienteforma:PROCnombre
instruccióninstrucción….RET ENDP NOMBRE En donde PROCesuna palabrareservadaque
indicael iniciode unprocedimiento,RETesunainstrucciónque indicalaterminacióndel
conjuntode instruccionesde unprocedimientoyfinalmenteENDPeslapalabra reservada
para finde procedimiento.Pasode parámetrosLosprocedimientosenlenguajeensamblador
no cuentancon unmecanismoparael paso de parámetros;por locual, laúnica formade
lograr estoescolocandolosparámetrosque nosinteresanenlosregistrosde propósito
general antesde que el procedimientoseaejecutado.LlamadaaprocedimientosLos
procedimientossonllamadosporlosprogramaspor mediode lainstrucciónCALL,seguidadel
nombre del procedimiento.Ejemplo:Call GotoXYProcedimientos internosLosprocedimientos
internossonaquellosque se declaranyse llamandentrodel mismoprograma,tambiénson
llamadosprocedimientoslocales.El listadoanteriormuestralaformade utilizar
procedimientosinternos.ProcedimientosexternosLosprocedimientosexternos,adiferencia
de losinternos,se declaranenmódulosoprogramasseparadosal programa donde el
procedimientoesllamado,enotraspalabras,lallamadaal procedimientose encuentraenun
programa y el procedimientoenotro.Parapoder utilizarprocedimientosexternos,es
necesarioque seandeclaradoscomopúblicosenel programadonde se encuentranyque sean
llamadoscomoexternosenel programadonde seránusados.Se debe contarcontres
directivasde ensamble:.PUBLICparadeclarar losprocedimientoscomopúblicos,.EXTERN para
indicarque el procedimientoque se vaa usar estáfueradel programay .INCLUDE para enlazar
el programa que contiene losprocedimientosconel programaque losllama.Conestas
capacidades,esfácil crearbibliotecasde procedimientosymacrosque puedanserutilizados
constantemente porlosdemásprogramas,ahorrandoconellotiempode programaciónal
reutilizarcódigofuente.
El segmentode códigocontieneel códigoejecutable de unprograma.Tambiéntiene unoo
mas procedimientos,definidosconladirectivaPROC.Unsegmentoque tiene soloun
procedimientopuedeaparecercomosigue:
NOMBRE OPERACION OPERANDO COMENTARIO
nomsegmento SEGMENT PARA
nomproc PROC FAR ;Un
. ;procedimiento
. ;dentro
. ;del segmento
nomproc ENDP ;de código
nomsegmento ENDS
El nombre del procedimientodebe estarpresente,serúnicoyseguirlasreglaspara la
formaciónde nombresdel lenguaje.El operandofareneste casoestarelacionadoconla
ejecucióndel programa.Cuandoustedsolicitalaejecuciónde unprograma,el cargador de
programasdel DOS utilizaeste nombre de procedimientocomoel puntode entradapara la
primerainstrucciónaejecutar.La directivaENDPindicael finde unprocedimientoycontiene
el mismonombre que el enunciadoPROCparapermitirque el ensambladorrelacione alos
dos.Ya que losprocedimientosdebenestarporcompletodentrode unsegmento,ENDP
define el finalde unprocedimientoantesque ENDSdefinael final de unsegmento.La
organizaciónde unprograma enprocedimientosproporcionalosbeneficiossiguientes:1.
Reduce lacantidadde código,yaque un procedimientocomúnpuede serllamadodesde
cualquierlugarenel segmentode código.2.Fortalece lamejororganizacióndel programa.3.
Facilitaladepuracióndel programa,yaque loserrorespuedenseraisladosconmayorclaridad.
4. Ayudaen el mantenimientoprogresivode programas,yaque losprocedimientosson
identificadosde formarápidaparasu modificación.
OperacionesCALLyRET La instrucciónCALLtransfiere el control aun procedimientollamado,y
la instrucciónRETregresadel procedimientollamadoal procedimientooriginalque hizola
llamada.RET debe serlaultimainstrucciónenunprocedimiento llamado.Losformatos
generalesparaCALLy RET son:
El códigoobjetoparticularque CALLy RET generandepende de si laoperaciónimplicaun
procedimientoNEAR(cercano) ounprocedimientoFAR(lejano).
Llamaday regresocercanos.Una llamada(CALL) a un procedimientodentrodel mismo
segmentoescercanay realizalosiguiente:
• Disminuye el SPen2(unapalabra) • Mete el IP (que contiene el desplazamientode la
instrucciónque sigue al CALL) enla pila.• Insertaladireccióndel desplazamientodel
procedimientollamadoenel IP(estaoperaciónvacíael resultadode lainstrucción
previamenteprocesada),UnRET que regresadesde unprocedimientocercanorealizalo
siguiente:
• Saca el antiguovalorde IP de la pilay loenvíaal IP (locual tambiénvacía el resultadode la
instrucciónpreviamente procesada).•Incrementael SPen2. Ahorael CS:IPapunta a la
instrucciónque sigue al CALLoriginal enlallamadadel procedimiento,endonde se reasume la
ejecución.Llamadayregresolejanos.Unallamada (CALL) lejanallamaaunprocedimiento
etiquetadoconFAR,tal vezenun segmentode códigoseparado.UnCALL lejanomete alapila
al CS y al IP, yRET lossaca de la pila.

Más contenido relacionado

La actualidad más candente

La actualidad más candente (16)

Programacion estruturada
Programacion estruturadaProgramacion estruturada
Programacion estruturada
 
Hola mundorafaelnavarroprieto
Hola mundorafaelnavarroprietoHola mundorafaelnavarroprieto
Hola mundorafaelnavarroprieto
 
Unidad ad 3
Unidad ad 3Unidad ad 3
Unidad ad 3
 
estructura condicional y selenctiva
estructura condicional y selenctivaestructura condicional y selenctiva
estructura condicional y selenctiva
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Practica u3 so i
Practica u3 so iPractica u3 so i
Practica u3 so i
 
P01.Desarrollo de aplicaciones con mplab
P01.Desarrollo de aplicaciones con mplabP01.Desarrollo de aplicaciones con mplab
P01.Desarrollo de aplicaciones con mplab
 
Optimizacioncodigo
OptimizacioncodigoOptimizacioncodigo
Optimizacioncodigo
 
Métodos en Java-Con ejemplos
Métodos en Java-Con ejemplosMétodos en Java-Con ejemplos
Métodos en Java-Con ejemplos
 
Alirio teran _ Primer trabajo Programacion 2
Alirio teran _ Primer trabajo Programacion 2Alirio teran _ Primer trabajo Programacion 2
Alirio teran _ Primer trabajo Programacion 2
 
Unidad dos
Unidad dosUnidad dos
Unidad dos
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
como usar MPLAB
como usar MPLABcomo usar MPLAB
como usar MPLAB
 

Similar a Proceso de modularizacion

Similar a Proceso de modularizacion (20)

UNIDAD 3 MODULARIZACIÓN
UNIDAD 3 MODULARIZACIÓNUNIDAD 3 MODULARIZACIÓN
UNIDAD 3 MODULARIZACIÓN
 
7.2 macros
7.2 macros7.2 macros
7.2 macros
 
Exposición ted
Exposición tedExposición ted
Exposición ted
 
Guia practica 1.0 2011
Guia practica 1.0  2011Guia practica 1.0  2011
Guia practica 1.0 2011
 
Investigar y describa la resolución de problemas empleando computadoras
Investigar y describa la resolución de problemas empleando computadorasInvestigar y describa la resolución de problemas empleando computadoras
Investigar y describa la resolución de problemas empleando computadoras
 
Programación: conceptos básicos
Programación: conceptos básicos Programación: conceptos básicos
Programación: conceptos básicos
 
Fpr Tema 1 www.fresymetal.com
Fpr Tema 1 www.fresymetal.comFpr Tema 1 www.fresymetal.com
Fpr Tema 1 www.fresymetal.com
 
ALGORITMOS EN EL SOFTWARE
ALGORITMOS EN EL SOFTWAREALGORITMOS EN EL SOFTWARE
ALGORITMOS EN EL SOFTWARE
 
Resolver problemas con_una_computadora
Resolver problemas con_una_computadoraResolver problemas con_una_computadora
Resolver problemas con_una_computadora
 
Resolver problemas con_una_computadora
Resolver problemas con_una_computadoraResolver problemas con_una_computadora
Resolver problemas con_una_computadora
 
Presentación de slideshare
Presentación de slidesharePresentación de slideshare
Presentación de slideshare
 
Presentación de slideshare
Presentación de slidesharePresentación de slideshare
Presentación de slideshare
 
Programacion
Programacion Programacion
Programacion
 
37 supervisión del sistema
37  supervisión del sistema37  supervisión del sistema
37 supervisión del sistema
 
Laboratorio 2 juan_pinzon
Laboratorio 2 juan_pinzonLaboratorio 2 juan_pinzon
Laboratorio 2 juan_pinzon
 
NASM
NASM NASM
NASM
 
T 25
T 25T 25
T 25
 
Microprocesadores1
Microprocesadores1Microprocesadores1
Microprocesadores1
 
T 25
T 25T 25
T 25
 
T 25
T 25T 25
T 25
 

Proceso de modularizacion

  • 1. PROCESODE MODULARIZACION. El procesode segmentaciónconsiste enhacerunaabstraccióndel problema,del cual se tiene inicialmente unpanoramageneral.Enseguida,se procede a“desmenuzar”o“dividir”el problemaenpartespequeñasysimples,comose muestra:Se forma un primermodulo enunciandoel problemaentérminosde lasoluciónaéste. MACRO INTERNO Una macro, es unconjuntode instruccionesque se puedenmandara llamardesde cualquier parte del programa. Para definirunamacro,se utilizala directivaMACRO.El formatode estadirectivaes: (nombre_de_macro) MACRO(lista_parámetros) Una macro constade trespartesesenciales: a) CABECERA:Contiene el nombre de lamacro,lapseudo-opMACROyopcionalmente, variablesficticiasque seránpasadasdesdelamacro. b) CUERPO: Contiene el códigoreal que seráinsertadoencualquierprogramaque llame al nombre de la macro. c) FIN:Debe incluirlasentenciaENDM. Ejemplode unamacro sencilla: INICIO MACRO ; Define macro MOV AX,DATA ; cuerpode MOV DS, AX ; la definición MOV ES, AX ; de lamacro ENDM ; Finde la macro El nombre de estamacro es INICIO,aunque esaceptablecualquierotronombre válidoque sea único.La directivaMACROenla primerlíneaindicaal ensambladorque lasinstruccionesque siguen,hastaENDM(“finde lamacro”), sonparte de la definiciónde lamacro. La directivaENDMterminaladefiniciónde lamacro.Las instruccionesentreMACROyENDM comprendenel cuerpode ladefiniciónde lamacro.Si su programa realizafrecuentemente funcionesde entrada/salida,lasmacrosofrecenlafacilidadde codificarunasolavezun conjuntode instruccionesyreutilizarel códigocuantasvecesdeseedentrode suprograma. Una macro esuna pseudo-opque permite el establecimientode operacionesúnicasen ensambladorolainclusiónde frecuentesllamadasde códigoensamblador.Unamacro
  • 2. tambiénse puede definircomoungrupo de instruccionesrepetitivasenunprogramaque se codificasólounavezy puede utilizarsecuantasvecesseanecesario.[1] Internas. Una macro internaesaquellaque se declarayse llamandentro del mismoprograma. Una macro internase declarade la siguientemanera: Sintaxis: <Nombre>MACRO [parámetros] … ENDM Ejemplo: DuplicaAL? MACRO SHL AL, 1 ENDM Códigoque lausa: MOV AL, 2 DuplicaAL ; Esta esla “llamada”al macro El ensambladorsustituye cadavezque aparezcalamacro. No escomo losprocedimientos,que se “llaman”perono repitenel códigoEjemplo: MOV AL, 2 DuplicaAL ; CALL Duplica DuplicaAL ; CALL Duplica Este códigoqueda: MOV AL, 2 SHL AL, 1 ; CALL Duplica SHL AL, 1 ; CALL Duplica Cuándousarlasy cuándono 1.- Cuandose quiere el códigomásrápidoy no importaserrepetitivo(códigogrande) 2.-Cuandose van a generardiversasvariantesde códigosimilar
  • 3. 3.-Nocuando se quiere códigocompacto,evitandorepetirel mismo(eneste caso,usar procedimientos).[2] MACROS Macro: enaplicacionesde computadora,unconjuntode accionesoinstruccionesgrabadasy ejecutadasmedianteunasimpleunainstrucción.Asíse evitalaintroducciónrepetitivade instrucciones,se minimizanloserrorestipográficosyse permite alosusuariosque no conozcanel programa reproducirconjuntosde instruccionespreviamente grabadospor alguienmásexpertoenlaaplicación.Si laaplicaciónincluye tambiénunlenguaje de macros que respondaa variablese instruccionescondicionales,el usuariopuede tambiéncontrolarel resultadode unprocedimiento,haciendoque lamacrorespondade formadiferentebajo condicionesdiversas. “En el lenguaje de programaciónensamblador”,unamacroesun nombre que define un conjuntode instruccionesque seránsustituidasporlamacro cuando el nombre de ésta aparezca enun programa(procesodenominadoexpansiónde macros) enel momentode ensamblarel programa.Las instruccionesde macrosse puedenguardarenel programamismo o enun archivoseparadoque el programa puedaidentificar. Procedimientosinternos Losprocedimientosinternossonaquellosque se declaranyse llamandentrodel mismoprograma,tambiénsonllamadosprocedimientoslocales. ProcedimientosExternosLenguaje Ensamblador ‘’‘Definiciónde procedimientoUnprocedimientoesunconjuntode instruccionesalosque podemosdirigirel flujode nuestroprograma,yunavezterminadalaejecuciónde dichas instruccionesse devuelve el control alasiguiente lineaaprocesardel códigoque mando llamaral procedimiento.Unprocedimientose declaraunasolavezenel códigofuente y cuandoel programa se ensamblayejecuta,el procedimientose colocaenmemoriaparaque puedaserutilizadoporel programa.Los procedimientosnosayudanacrear programas legiblesyfácilesde modificar.Al momentode invocaraun procedimientose guardaenla pila la direcciónde lasiguienteinstruccióndel programaparaque,una veztransferidoel flujodel programa y terminadoel procedimiento,se puedaregresarala lineasiguientedel programa original (el que llam—al procedimiento).Sintaxisde unprocedimientoExistendostiposde procedimientos,losintrasegmentos,que se encuentranenel mismosegmentode instruccionesylosintersegmentosque puedenseralmacenadosendiferentessegmentosde memoria.Cuandose utilizanlosprocedimientosintrasegmentosse almacenaenlapilael valor de IP y cuandose utilizanlosintersegmentosse almacena el valorCS:IPParadesviarel flujoa un procedimiento(llamarlo) se utilizaladirectiva:CALLNombre Del ProcedimientoLaspartes que componena unprocedimientoson:• Declaracióndel procedimiento•códigodel procedimiento•Directivade regreso• Terminacióndel procedimientoPorejemplo,si queremosunarutinaque nossume dosbytes,almacenadosenAHy AL cada uno y guardarla suma enel registroBX:Suma Proc Near;Declaracióndel procedimientoMovBx,0 ;Contenido del procedimientoMovBl,AhMov Ah,00 AddBx,Ax Ret ;Directivade regresoSumaEndp ;Declaraciónde final del procedimientoEnladeclaraciónlaprimerapalabra,Suma, corresponde al nombre de nuestroprocedimiento,Proclodeclaracomotal y lapalabra Near
  • 4. le indicaal MASM que el procedimientoesintrasegmento.LadirectivaRetcarga ladirecciónIP almacenadaenlapilapara regresaral programa original,porúltimo,ladirectivaSumaEndp indicael final del procedimiento.Paradeclararunprocedimientointersegmentosustituimosla palabraNear porla palabraFAR. El llamadode este procedimientose realizade lasiguiente forma:Call Suma Las macros ofrecenunamayorflexibilidadenlaProgramacióncomparadas con losprocedimientos,peronoporellose dejaránde utilizarestosúltimos. Las principalesventajasenel usode procedimientosson:permitenunacodificaciónmáslimpia y compacta,es decirel códigofuente esmáspequeño;tambiénpermitenel ahorrode memoria,estoesporque unmismoprocedimientopuede serllamadovariasvecesenel mismoprogramay sólorequiere memoriaunavez. Los procedimientostienenladesventajade que reducenlavelocidadde ejecuciónde los programas,estose debe a la formaen que losprocedimientosse ejecutan.A continuaciónse presentanlospasosnecesariosparaejecutarunprocedimiento: 1.- Se encuentralallamadaCall 2.- El microprocesadoralmacenaenlaPilael contenidodelIP 3.- Se coloca enel IP el valordel desplazamientocorrespondienteal Procedimiento4.- El microprocesadorejecutalasinstruccionesdelprocedimiento5.- El procedimientotermina cuandose encuentralainstrucciónRet6.- Se saca de la pilael valororiginal del IPyse continua el flujodel programaUn procedimientose declarade lasiguienteforma:PROCnombre instruccióninstrucción….RET ENDP NOMBRE En donde PROCesuna palabrareservadaque indicael iniciode unprocedimiento,RETesunainstrucciónque indicalaterminacióndel conjuntode instruccionesde unprocedimientoyfinalmenteENDPeslapalabra reservada para finde procedimiento.Pasode parámetrosLosprocedimientosenlenguajeensamblador no cuentancon unmecanismoparael paso de parámetros;por locual, laúnica formade lograr estoescolocandolosparámetrosque nosinteresanenlosregistrosde propósito general antesde que el procedimientoseaejecutado.LlamadaaprocedimientosLos procedimientossonllamadosporlosprogramaspor mediode lainstrucciónCALL,seguidadel nombre del procedimiento.Ejemplo:Call GotoXYProcedimientos internosLosprocedimientos internossonaquellosque se declaranyse llamandentrodel mismoprograma,tambiénson llamadosprocedimientoslocales.El listadoanteriormuestralaformade utilizar procedimientosinternos.ProcedimientosexternosLosprocedimientosexternos,adiferencia de losinternos,se declaranenmódulosoprogramasseparadosal programa donde el procedimientoesllamado,enotraspalabras,lallamadaal procedimientose encuentraenun programa y el procedimientoenotro.Parapoder utilizarprocedimientosexternos,es necesarioque seandeclaradoscomopúblicosenel programadonde se encuentranyque sean llamadoscomoexternosenel programadonde seránusados.Se debe contarcontres directivasde ensamble:.PUBLICparadeclarar losprocedimientoscomopúblicos,.EXTERN para indicarque el procedimientoque se vaa usar estáfueradel programay .INCLUDE para enlazar el programa que contiene losprocedimientosconel programaque losllama.Conestas capacidades,esfácil crearbibliotecasde procedimientosymacrosque puedanserutilizados constantemente porlosdemásprogramas,ahorrandoconellotiempode programaciónal reutilizarcódigofuente.
  • 5. El segmentode códigocontieneel códigoejecutable de unprograma.Tambiéntiene unoo mas procedimientos,definidosconladirectivaPROC.Unsegmentoque tiene soloun procedimientopuedeaparecercomosigue: NOMBRE OPERACION OPERANDO COMENTARIO nomsegmento SEGMENT PARA nomproc PROC FAR ;Un . ;procedimiento . ;dentro . ;del segmento nomproc ENDP ;de código nomsegmento ENDS El nombre del procedimientodebe estarpresente,serúnicoyseguirlasreglaspara la formaciónde nombresdel lenguaje.El operandofareneste casoestarelacionadoconla ejecucióndel programa.Cuandoustedsolicitalaejecuciónde unprograma,el cargador de programasdel DOS utilizaeste nombre de procedimientocomoel puntode entradapara la primerainstrucciónaejecutar.La directivaENDPindicael finde unprocedimientoycontiene el mismonombre que el enunciadoPROCparapermitirque el ensambladorrelacione alos dos.Ya que losprocedimientosdebenestarporcompletodentrode unsegmento,ENDP define el finalde unprocedimientoantesque ENDSdefinael final de unsegmento.La organizaciónde unprograma enprocedimientosproporcionalosbeneficiossiguientes:1. Reduce lacantidadde código,yaque un procedimientocomúnpuede serllamadodesde cualquierlugarenel segmentode código.2.Fortalece lamejororganizacióndel programa.3. Facilitaladepuracióndel programa,yaque loserrorespuedenseraisladosconmayorclaridad. 4. Ayudaen el mantenimientoprogresivode programas,yaque losprocedimientosson identificadosde formarápidaparasu modificación. OperacionesCALLyRET La instrucciónCALLtransfiere el control aun procedimientollamado,y la instrucciónRETregresadel procedimientollamadoal procedimientooriginalque hizola llamada.RET debe serlaultimainstrucciónenunprocedimiento llamado.Losformatos generalesparaCALLy RET son: El códigoobjetoparticularque CALLy RET generandepende de si laoperaciónimplicaun procedimientoNEAR(cercano) ounprocedimientoFAR(lejano). Llamaday regresocercanos.Una llamada(CALL) a un procedimientodentrodel mismo segmentoescercanay realizalosiguiente: • Disminuye el SPen2(unapalabra) • Mete el IP (que contiene el desplazamientode la instrucciónque sigue al CALL) enla pila.• Insertaladireccióndel desplazamientodel procedimientollamadoenel IP(estaoperaciónvacíael resultadode lainstrucción
  • 6. previamenteprocesada),UnRET que regresadesde unprocedimientocercanorealizalo siguiente: • Saca el antiguovalorde IP de la pilay loenvíaal IP (locual tambiénvacía el resultadode la instrucciónpreviamente procesada).•Incrementael SPen2. Ahorael CS:IPapunta a la instrucciónque sigue al CALLoriginal enlallamadadel procedimiento,endonde se reasume la ejecución.Llamadayregresolejanos.Unallamada (CALL) lejanallamaaunprocedimiento etiquetadoconFAR,tal vezenun segmentode códigoseparado.UnCALL lejanomete alapila al CS y al IP, yRET lossaca de la pila.