Está en la página 1de 13

un procedlmlenLo es un con[unLo de lnsLrucclones a los que

podemos dlrlglr el flu[o de nuesLro programa y una vez


Lermlnada la e[ecucln de dlchas lnsLrucclones se devuelve el
conLrol a la slgulenLe llnea a procesar del cdlgo que mando
llamar al procedlmlenLo
Los procedlmlenLos nos ayudan a crear programas leglbles y
fclles de modlflcar
@odos los programas que han sldo escrlLos hasLa esLe punLo han
usado solo un procedlmlenLo Sln embargo los programas
pueden conLener muchos procedlmlenLos Los procedlmlenLos
pueden ser conslderados como nLA8 (lnLrasegmenLos) o lA8
(lnLersegmenLos)
Los lnLrasegmenLos se encuenLran en el mlsmo segmenLo de
lnsLrucclones y los lnLersegmenLos pueden ser almacenados en
dlferenLes segmenLos de memorla
Cuando se uLlllzan los procedlmlenLos lnLrasegmenLos se
almacena en la plla el valor de l y cuando se uLlllzan los
lnLersegmenLos se almacena el valor CSl
Cuando las ruLlnas como las uLlllzadas en la blblloLeca de
macros se colocan en procedlmlenLos el procedlmlenLo se
comporLa ms como una subruLlna LsLos procedlmlenLos (sub)
pueden ser llamados (CALL) desde el procedlmlenLo (prlnclpal)
y uLlllzados como las subruLlnas de vlsual 8aslc ascal
SlnLaxls
8CCLnu permlLe dar nombre a una subruLlna marcando
con clarldad su lnlclo y su fln
Aunque es redundanLe es muy recomendable para esLrucLurar
los programas
cls 8CC lA8
codlgo del procedlmlenLo
cls Lnu
L| atr|buto IAk que aparece en ocas|ones [unto a kCC |nd|ca que es un
proced|m|ento |e[ano y |as |nstrucc|ones kL1 en su |nter|or se ensamb|an
como kL1I (|os CALL hac|a | sern adems de 32 b|ts) Cbservar que |a
et|queta nunca term|na con dos puntos
8CC8AMA CuL SuMA 3 nuML8C
plla segmenL para sLack sLack
dw 32 dup (0)
plla ends
daLos segmenL para daLos
num1 dw 20
num2 dw 30
num3 dw ?
daLos ends
codlgo segmenL para codlgo
empleza proc far
assume cscodlgo dsdaLos ssplla
mov ax daLos
mov ds ax
mov ax num1
mov axnum2
mov num3 ax
mov dxnum3
mov ah 02h
lnL 21h
mov ah 10h
lnL 16h
mov ax 4C00h
lnL 21h
empleza endp
codlgo ends
end empleza
Cuando un con[unLo de lnsLrucclones en ensamblador aparecen
frecuenLemenLe repeLldas a lo largo de un llsLado es convenlenLe
agruparlas ba[o un nombre slmbllco que las susLlLulr en aquellos
punLos donde aparezcan LsLa es la mlsln de las macros por el
hecho de soporLarlas el ensamblador eleva su caLegorla a la de
macroensamblador al ser las macros una herramlenLa muy
coLlzada por los programadores
Ll ensamblador Llene facllldades que el programador puede
usar para deflnlr macros usLed deflne un nombre especlflco
para la macro [unLo con el con[unLo de lnsLrucclones en
lengua[e ensamblador que la macro va a generar uespues
slempre que neceslLe codlflcar el con[unLo de lnsLrucclones o
solo codlflque el nombre de la macro y el ensamblador genera
de manera auLomLlca las lnsLrucclones que usLed deflnl
Las macros son uLlles para los slgulenLes propslLos
W Slmpllflcar y reduclr la canLldad de codlflcacln repeLlLlva
W 8educlr errores causados por la codlflcacln repeLlLlva
W Llneallzar un programa en lengua[e ensamblador para hacerlo
mas leglble
ueflnlcln de una macro
La macro se deflne por medlo de la dlrecLlva MAC8C Ls necesarlo
deflnlr la macro anLes de uLlllzarla una macro puede llamar a
oLra
SlnLaxls
nombre_slmbllco MAC8C parmeLros
lnsLrucclones de la macro
LnuM
Ll nombre slmbllco es el que permlLlr en adelanLe hacer referencla a
la macro y se consLruye casl con las mlsmas reglas que los nombres de
las varlables y dems slmbolos La macro puede conLener parmeLros de
manera opclonal A conLlnuacln vlenen las lnsLrucclones que engloba y
flnalmenLe la dlrecLlva LnuM senala el flnal de la macro no se debe
repeLlr el nombre slmbllco [unLo a la dlrecLlva LnuM ello provocarla
un error un LanLo curloso y exLrano por parLe del ensamblador (algo asl
como lln del flchero fuenLe lnesperado falLa dlrecLlva Lnu) al menos
con MASM 30 y @ASM 20
ILN1AIAS
1 Las macros son rpldas porque se e[ecuLan en llnea en un programa
2 Las macros pueden pasar y reclblr parmeLros que afecLan solo la operacln de las
Mlsmas
3 Las macros pueden ser guardadas en una blblloLeca en cdlgo fuenLe que puede
ser fcllmenLe edlLable
4 La cabecera de programacln para uLlllzar macros es slmple para una blblloLeca
de macros uLlllzar ll1Lnull
DLSILN1AIAS
1 Las macros hacen ms grande el cdlgo fuenLe ya que los procedlmlenLos no son
en el cdlgo del programa
lmprlmeysale macro
mov dlal
add dl30h
mov ah 02
lnL 21h
mov ah10h
lnL 16h
mov ax4C00h
lnL 21h
endm
espaclo macro
mov ah09h
lea dxvar2
lnL 21h
LndM
model small
sLack
daLa
var1 db ?
var2 db + $
code
sLarLup
mov ah 01h
lnL 21h
sub al 30h
mov var1 al
espaclo
mov ah 01h
lnL 21h
sub al 30h
add al var1
lmprlmeysale
exlL
end
PC!A 1 PC!A 1
PC!A 2 PC!A 2
AulCS MAC8C
MCv AP10P
ln@ 16P
MCv AP 4CP
ln@ 21P
LnuM

lLA SLCMLn@ A8A S@ACk S@ACk


u8 200 uu (0)
lLA LnuS

uA@CS SLCMLn@ A8A uA@A


vA u8 uLSuLS uL MLulC ulA (?/n) $
vu u8 1310 8uLnCS ulAS$
v@ u8 1310 8uLnAS @A8uLS$
uA@CS LnuS

CCulCCSLCMLn@ A8A CCuL


LMlLZA 8CC lA8
ASSuML CS CCulCC uS uA@CS SS lLA
MCv Ax uA@CS
MCv uS Ax
MCv uxCllSL@ vA
MCv AP9
ln@ 21P
CALL 8LCun@A
LMlLZA Lnu
8LCun@A 8CC nLA8
MCv AP 01P
ln@ 21P
CM AL ?
!Z @A8uLS
CM AL n
!Z ulAS
CM AL y
!Z @A8uLS
CM AL n
!Z ulAS
@A8uLS
MCv ux CllSL@ v@
MCv AP 09
ln@ 21P
AulCS
ulAS
MCv ux CllSL@ vu
MCv AP 09
ln@ 21P
AulCS Se llama la macro AulCS
8L@
8LCun@A Lnu
CCulCCLnuS
Lnu LMlLZA
PC!A 1 PC!A 1
PC!A 2 PC!A 2

También podría gustarte