You are on page 1of 24

PARTE B - Fundamentos de lenguaje ensarnblador

CAPITULO 4

OBJE'f]V'O

R '.,. de I .'

equennuentos 'e . enguaJe

ensamblador

Cubrtr los reqaerimientos bas]oos, para eodificar un programa em lenguaje ensamblador y definir los elementos de dialing.

INTRODUccmi(}N

81 capitulo J. mostr6 cOmo user DiEBUG para teelear "!J ~jec::ut..,.r plo,grM-nas eli! le:n.guaje d:~:maqu:ina, Sin duda uSl~d fue muy IcoThSdente de la dificy]tad de d,ecs'Cifr at el cooigo de maquin8.,. nun pan 1inprogr~ma pe:queoo. P.robablenlCnte nmg'lin programa se codifica mas ea serto leD leDigua:je de ~qnlIna que 1'08 programas mas peqaenos. Un nivel mas aUo de codificaci611 esel nive; eruamb[adto«:. en el Qli.le un pregramado» Ulj]iZ;!, Instrueelenes simb6Hcas elili Lugar de instrueciones demaqnina y

. ,

nombres de:sc:rlipl~]'Vo:!ip."U':il I'O's elem.entos de datos y para las locaUdade& de memoria. Useed escri-

be un programa en ens,amilllador de aeuerdo con un loonjun~o estricte de reglas q1le despues utiliza el programa traduetor die ensamhlador para lDo'Fi\'erbr el programa en en;sa.mbl,adO't en c6d~go de maql.lina ..

En este capiru]o explicamos IQS requisites boisi,eD's, para desarrollar 11ll[ programs ell ensamblador: el usa de cementarios, el forlnlLto general de codifkaci6n. las directivas de impres.i6':Fli del Hsta.dc de un prcgrama yliils directlvas para. dlefinir segmentos y procedimieJlJtos,. T~m'bie.n cubr,imos 13. org.anizaci,6n genefru de un pro,gram.'l. :incluy,endo La 1f.1icia]j2;ad6n y .130 oo:roonadon de Slll ejecuci6!1l. Por uhimo, Jtr'3!tru1l10S los, Fequisiros para, definir c]emeilit:,o.s de dates.

,48

GomentariQS en 1l'€nguaje ensamblad'oir

49

ENSA_lt,{B,LADORES Y COMPILADORES

Primero idemlficamos (los elases de lenguajes de prograrnaci.on; de aUo niv,ei y de bajo niveel. Los programadores que escrlben en. ~,tn ]engu.lJje de aho nivel, como C y P'.ascal,codifican 'COID01tDOOS poderosos, cada 000 de los cuales pnede generar muchas instrucciones en len.guaje de uUlqu~na, Por orrclado, los pcogr,amadCil'eS que esc:rrubl!l'!! en un .rengua:je: ensamhlador de b~jo fiI~v,eL codifican iastreccioues mmb6Uca.s.. (;itd~ una de las, caales genera una ~nstn.lod6n ell Ienguaje de maquina. A pesar del hecho de QIUC eodificar en unlerrgusje de alto nive] es mas productive, atgunas ventajas de codificar ,Gil, Ienguaje ensamb~ador son;

- ,~ Proporciollil mb cOlIiltwl sabre. 01 mm.ejo particular de los requenmienms d;e hardware . • Genera modulos ejecutables mas pequencs J mas eorspactos .

• , COin mayor probabilidad tiene una e:j ecuclon mas rapida.

Una practica comllo es eomblnar tos beneflclos de am:b{l$ ni¥eles de programaclcn: codificar el graeso de 'Q proyecto en un LCllguajc de alto nivel y los modulos crulcos (aquellos que provccan notables retardos) en l!el'lgUla:je ensamblador,

Sin iropertar e1lengu.aj,e de progrrun,ad6n que urilice, de todes modos es u111enguaje simiooheo que tiene que traducirse a 111\>3 forma que laco:mpllitadom pueda ejeeutar. Un ]enguaj.c de Blloc;, nivel utiliz;a un compiiador para mldlucir el c6digo fuenle at kngllaje de maquina (lecllicamente. codigo objero,). Un ien,guaje de bajji) [l!"'~] U[mZIlL ru:t ,emambiatlor par.a reaHzar la tradu{:ci6n, Un prognma eniazadorp,ara ambos niveles, abo, y bajo, ~ofJ!tpil.eta el proeeso a] convenir el c6d~g:o obje1-o ern ]en.guajeejecutaldc de: m'quln~ .a

El use de comentarlos a ]0' largo de un programa puede mejorar su claridad, ell! especial en lenguaje ensa:mbl3!aor,. donde el prop6s.i~o de un conjUnto de imtru.cciones CQIl frecuenciano es dm:Q" Un comentario e:mpweza coo PU[lJto y coma (;) Y D en donde quiera que 10 coditlque, el ensamblador supone que todos los earacteres a la derecha enesa ll'nea son eomentarlos. Un comestado puede contener o1!la[q)UJier caraeter im,p'r.im~b.]e., tru:]uy'e.ndQ el ~-spa(:io en blanco.

Un comentarlo puede apareeer s6]0 en una Unea 0 a continua.ci6n de mil insuuecton en la misma linea como 10 muestran tos dos lejemp.]os dguientes:

Ya CjJue WJ! comenearlo apafioc:e s6~o en. un lis [ad.o deun programa t'uell~ en ensamhlador y no genera. c6digo demiqu:in_a. puede ind'u~r cualquier cantidad de comentarios sinafectar el eamano 0< la ,ejec'Ucion del programa e;_nsrunb[adlo. En. este Ubro. las instmceienes ensamblad:!ll8 eS'l.iin en letras mayilse~]as ylos comentarios e:n Ietras .mimisculas, solo como ccnvencion Y P'3I.l, hacer que los programas sean mfs:~egib]es. Tecrucamente usted 'I!sta en libertad de usar etras maynscll]as 0 mimu~.clilas para las instruceiones y comearerios,

Otra maner~ de proporcionar comestarios es pol medic de la directiva COMMENT, que se estudia ell el 'capitlJi]o' 27.

Ciertas palsbras en. lenguaje ,ensambl:ador estan reservada..s para sus prop6sitQs p:r:opios, y SOn usadas solo bajocoRdD(;:ianesespeci:a]es. Por eategorias, las palabras reservadas induyeu

, instrueclones, CO~lO MOV Y ADD, que son operacienesque Ia comp,ut:adora. puede ejecutar:

• dheetiva:5, como END 0 S:EGM'ENT., 'Que se emplean para proporcionar comandos aI ensambl ador:

,~ operadores, como PAR y SIZE, que se llitilizan en expreaiones; y

'. ,$[mbo~os. p:redef:inidos, como @Data y @Mooel~ que re:gr-eSml informaci6n a 511 programa.

El usc- de una patabra reservada para un prop6.sito equlvocado provoea que el ens.a:mb~adar genere un mensaje de error. HI ,apendlice C muestra una llsta de las palabras reservadas del l~gl1aje ens,imblador.

IDENTLFICADORE8r

Un idenlijicOOQY es un ncmbre que se apnea a elemeatcs en el programa, Los dos tipos de iden-

_ -

tiflcadcres sen: nombr«, que se reftere a la direcclen de: un elemento de date, y .eliq.uefa. que se

refierea la d]:reccion de unams:truoci6n. Las mismas reglas se ~p]icaoo tamepara los nombres como para las etiquetas. Un rndentificador puede utllizar 100 siguientes caracteres:

" Letras del a1fabeto: • Digi'os:

!!I Caracteres especisles:

desde la A basta la .z

desee ,el"O hast3i9 '(nO' puede ser el primer caracter) signo de in~euCigaddn. (1)

subrayado ( _ ),

signo de pesos ,($)

arroba (@)

:pu:nto (.} (no puedeser e~ primer carac'er)

E1 primer caraClierde ua klellljficadoI debe ser I!m~ letra 0 UJl ,canlc,ter especlal, excepto el puntOi, Yaqueel ensamblader utmza~dglWlos sinlbo]os especiales en palabras que inieian con el siiwboin @ .. debe eviter usarlo 'en !iUS definiciones.

Bl ensamblador tr alta 11115 letras m,ay'il:sculas "i mifln;isC'IL1Ilasc@mo ~gltl_ales. LIlI longltud ma.xirm, de ll~. hJernifk:ador es de 31 caracreres {247 desde e~ MASM ,6.0). Bjemplos de nombres v~md(l~ son ICOUNT, PAGE25 y $ElO., Se recomienda que ~()ig, nombres seandescrjptivos Y COon. signiftca do. Los nombres de registros, como AX". DI y AL, eslim, reservados para.haeer retereeeia a ,esOil mismos registros, En consecuencia, en 008/ instruceidn tal como:

Illstrucclones

51

el ensamblador ssbe de fOffma au:tomat~ca que AX y BX se refienm ,::I. los registf05, Sin embargo, en una ~1JlS~rucc]6n como:

el ensamblador puede reconocer el nombre REOSAVE :so,lo si se defineen algun lugar del programa.

INS1'R.UCCIONES,

Un programaea Jeaguaje ·cosamblador eonsiste en uo conjunto de ,eltu'1lc,rados. Los dos tipos de enuociados 80][:

1. instrucciones, tid como MOV y ADO" que el ,etlisamblador traduce at ,c,6digo o'bjew; y

2. directivas, 'que indican all ensamolador que realice una accion especifica, como definir un clemente de data.

A cootirru.aci60 es~, el fOI1l1a:lo genera] de un ennectado, en dlonde los eoreberes indican, una entr adaopc.lon_a] :;

[identi ficGld.orl

QperOl,cion

[ope!:ando ( 51) 1 [; c'omentario]

Un jdentificador (s~ existe), WlI<I" cfpeulld6n y g operandc (si exlste) estan separados par al menos tin espacio, en blSiooo (}I un earacter de taibul>ador. Bxiste un maximo de 132,caJtacreres en una.lme-a (512 desde el MASM 6.0)., aunque la mayoria de los prcgramadcres preflere permanecer en los 80 caracteres ya que esel mlmero maximo que care en Ia panralla, A continuaclon se presentao des e.jempJos de enunciados:

IIDENTI PICADOR Oi~@ctiva: C~UNT

OPE RACf,O NI :DB

OIP'ERAN.[}Q

COM·EINTARI.Q,

., Hombr@. operaC'iotl, opez endc

Instr'!l),eci6n:

: Operaci6n, dos opex:a,ndc.s

Mo.V'

ldenU:ficador" opcracion y operando pue-den 'empez-ar en cualquler c-o,lumna. Sin embargo, si de manera co:nsistenle se inicia en ]a, misma eolumna psra esras entradas '1St! haee un programa mas legible, T.ambien.. ]a mayorta de los programas eduores proporcionaa marcas de rahulador cada ocho posicicnes para faeilirar e.1 eS];llac~amie:oto.

Ideliltifircador

Como ya se exptico, el mrmiJOJo Hombre se aplica al nombre deun etementoo direetiva defifli.da, mientras que el tel!")lIillo triq.uetra:s.e a.p]lca al nombre de una instrllccion; nsaremes estos rerminos de ahora ell adelan'll6.

Opera~i6g

La ,op-e,rroci6.n, que debe ser eodlflcada, as coo, mayor frecuencia nsada ps[a.l:a. d-efirJIici6n de areas de datos, y cooru:ficaci6n de iastreccionesc Para W'iL el·e[i)(HHQ de datos, una operacion tal como D'S o DW define un campo, area de tr.abajo 00 constante, Para, ooainst:n'!.D!cd6n, una operaclen como MOV 0 ADD lndka. una a'Cicio'li .iIl realizar,

52

INC

t Incl:em.enta el r'~·g:i..stro ex

Uno

Ope:rando

EJ operenao (siexisre) ])':rop(l-:rc:iQ~a 'informacion para la operacion que aenia sobre ,et Para Ull eleMenro die diit1lO.S,. el operaade ~dent~fi.ea. su 'Va~O'f inieial, P·o:r ejemp~o" en la defi:lrici!on siguie,lUe de un ,e]ememo de dartos Uama,do COUNTER, la oper,aci6n DB S:lgniofi,ca "'defu"dr byte", Y ,eI cperando u-nciali2a SIIJ co.ntenidlo con UA valor cera:

'COONTER D:!; (I n::lefine un byte (DB) eon el valor cera

Para WIll insrru~ci,60. un operaado indica en Idonde realizar la accion, Un operendo de un3 instruccion puede tener una, dos otal vez 1Il~liligun~~ntrad~. ACJ!ui estan rres ejemplos:

IOPERANCO

COM ENIARI'O

RET

Ning-uno

DOSi

DDlECTIV AS

.

Bllenguaje ensambladcr Jpe:rmbe USil,lf diferemes enuneiados quepermften comrolar la mancra em que un programa ensambla y Iista, Bstos ,enunciadm:." llamados .direcliv(Js, acman s6lQ duraste el iIDumhlado de un programa y no generan o6<lig,o ejecuteble de maquina, Las directivas nas C01ll.1);m,eS, sonexplieadas en las: siguienres secclones. El capitulo 27 trsra con detalle todas las dlrectivas: en cualquier momenro us:OOid, puede IJ~Uizar ese ,capitulo como refereneia

Directivas para Ustar: .PAGE y TITLE

Las directivas Jl AlOE ,r TITLE ayllJdan ,3, contrelar em mrmalto de un listado de ua progr,ama en eDSiilimb],ado:r. Este es SI.i. tlnico fin, y 00 tienen efecto sobre la ejecuc10n subsecuente deJ programa

:1' A'GE. A1 lnicio de un programa, Ia direcuva .PAGE desipli!! el nnmere mhiimQ d:e H'neru para lisil:ar en Una pligwa y el mimero mjbf..i~o de cara,cteres· e.n Willi, lfnea, Su formero general es

E] eje.mplo siguicnte proporcioaa 60 Iineas por p'giDa y 1.32 caracieres par linea:

E~ numero de line as par piigina pucde'vadar des-de W basta 255" mientnli8 ,que el n6mero de caracteres por Unea desde 60 hasta 132. La omision de un ennnciade P:A.GE causa que el ensamhlador teme PAGE 50~SO,

SUpo(l'I;giil que re:l n(i.:m:em, de. Hneias para PAGE SiC: deffuni6 como (;0. Entonces. cuaado el p.rograma ensamblado haY,iJ Iistado 60 ltneas ,ava.n~a las formas ,a~ inicio de 181 i!t~guient:e piigina . incrementa en uno el eemador de pligin3!s, Tambien puede l!Sted querer fOf.Zaii 00 salso de p'giru.

en IIHUI Hoea especmc3I en el listado del programa. ,OO.MO' al final de Ul1I segme:nto. En la lfnea requerida s6k) cooifi.que PAGE sin oiPermoo~,. Al flID1lOOnWU PAGBe~ ensamblador salta la pagina de manera ::IiUlontatica y reasurae ta impresi6n en ']a, parte superior (al irudo) de la srguien!U::: p5gina.

_.

TITLE. Se puede eWU,lp]e,ar ].a. directive TITLE para hacer que un tfmlo para un programa se imprima en la U!nlJel 2 de cadapagtoa en el listado del programa. Puede codiflear TITLE de una vez, al inicio de] prograsaa, Su lorm3lto ge'lIiIeraL es

Tl'i"!..S t:.exto

Para el operando texto, unatecmca recomendada es utilizar el nombre del programs como se registra en el disco .Por ejemplo, sW. a 5:11 programa le P1lJJ50 por nombre AS.MSORT. codifique el n(M:t!OI1e rn~iLs, lim comentario des,c]"ipdvD opcional, hasta 60 caracteres, como esto:

'T'ETt.!'.: ASt4S'Cr.R.T progr6lma e'11 ,ensOImlblaar:u:, palt"oi!. ordi!!!.n.ar los nOO'lbres de los cH.entes

DineUVfi SEGMENT

Un programs ensamblado en formato . EXE consiste en UIDO (I mas segmentes. UD segmento de pila define el aJmacell de la pila, un segmento de datos define loselernemos de datos, y un segmenro de c6digo prc'lXIrciona un cOdjgo e}ecutabl,e. Las direeti vas 'para defIDItl~'r ua segmenea, SBGMENT

y ENDS, tienen I. ] formate siguieme:

OPE MClOiNl O'PIEAAN [)I(:)

SSGMlrmT [opcion@:s,]

C OMENTARIIO

nombre

;Fin del se~entQ

El erumeiado SEGMENT define el inicio die un segmento. EJ nombre del segmemo debe estar presenre, ser tinico y eumplir (aiS ccaveeekmes para nombres del len,guaje. 81 eaunciado ENDS indica. el final del segmento y contiene el mlsmo nombre del eeunciado SEGMENT ,~] tamafio !1ui::dmo de un segmento es MK. EI. operando de un enuneiado SSGMENT puede tener tres 'tipos de opclenes: digeac.i6u~ combiner y clase, codifitadas en este formate:

nom:bl::e S!EGMIilNT alirneiiilcioJ1l, colt!binar . clase'

Tipo ,aUin,ead6u, La entrada aHneaci6n indica el limite en et que :ill'ici1l el segmenro .. Para d requerimietnn tipico. PAR.A, alinea el segmenJto '(.:01.1 el Hmite de un p!tnafo. de marrera que la direecien illiciru es divisible entre 16, 0 lOB. EnaUfoenCE3, de ll!1l operando hace qillJe el ensamelador pOll omision [Orne PARA.

Tiipo combinal'. La entrada. combiner .ili'l:dica si se combine el segmento IOOD otros scgmenlos cuando son eniaz;ado.s despues de ensiiIIDlblar (se expllea posteriormeote en "Como enlazar e) programa"), Los tlpos combin3!:r son STACK. 'COMMON1 PUBUC Y Ia expresidn AT, Por ejemplo, el segmeeto de La. pila por lo coman es ·defil1ido, comQ

54

...

lRequerimiertlto,s. de Ilenguaje €!llSambla.do r

Puede utilizer PUBLIC y COMMON en donde tenga el prop6sIto de combiner de form separada programes 'ensamb~ados euando 108 enlaza, En firms cases, donde un programa no ~ornbma.do con otms,pu.ede omitir lao opc~6n (I codifiear NONE..

ngmbr·e, SEG.MENT P:ARA STACK 'stac~'

TIpo clase. La entrada clase, encerrada entre apcstrotos, es utifizada para agrupar se memos cuando Sf: enlazan, Este lilili:!o utiliza la clase 'code' parael segmerao dJe! c6djgos (recome dado par Micliooo(t) ,Idalflii por segmenro de datos y ~ stack" para el segmento de Ia pila,

- -

En ej~m;p]o siguienre: define 00 segmemo de lIlili!. con lipos ,a.]ill.e.aciOnt combioa:r y clase:

D.irectiv,a PROC

E1 segmento de c6d~goOOtiliene el c6dligo ejec1I.IJtab]'e de un programa. Tambien rieae uno 0 . pf(Jcetlin'i'i'eM(:!~S. ddim'Jlidos eon la directiva PR.OC. UD segmemo que tiene s·6~o un ]l1oced~mieilf puede aparecer como sigue:

N:O:MB.AE

OPE,RAC'16N

o PE!FlA'NlDO'

'DOMEINTARIO

namp.roc:

l?ROC

J1;J!'l

; pl:G'cedimi@nto ;d.i!!:ntro

,del segmell.to ;de codigo

E[ nembre del procedi.miento, debe estar presente, ser urnfco y seguir las reglas pam la furrnacic de. nombres del. lenguaje. E] operando FAR en este Ci;lI_.5iO esta, relacionado con la~jecud6']l ~ prcgrama ... Cuando listed soltcitala ,ejecudon de en programa, el cargador de program as, del 00 utiliza este nombre die p:rocedimi1e:oto come el p1IDto de entrada p,ara la pri!i!!e-ra im:;'lruoci-oJi ,e:jecmat.

La! dlreetiva END,P indica el fiD de un procedimiento y conuene el mismo nombre que enunciado PRO-Cpara,permi(jr que el ensamblador retacione alos des, Ya que ]O<!!l procedjmien~ deben ester por oomp]etQ d.entro' de un segmento, .I13:ND~ define el final de un procedimkmo.an( que EN DS deftna el fjna] de un segmerso.

El segmemo de c6digo paede eontener eualqaier ni.1mero de procedim.~e~tos u ados CQIl subrutiaas, cada uno de los euales va COD su caractensttco conjunto de enunciados PR;OC ENDP. C ada PROC adicional por ~.O comnn se codifica COli] ~o por omision) el operandc NEAr el capitulo 7 ma[i.z;a esta si{llJacion.

DirecUva ASSUME

Un progra.ma utiliza iii! registro S.S palra direecionar la pila, al regtsrro ID-S para dlreecionar segmeeto de datos yal registro CS pan d:lirecclonaf el segm:eiljJoo de codigo. Para este fiD; lI~~r tiene .que indiear al ensamblader el prlOp6sito de cada segmemo en el programa, La dlrectiva p3 este pl"opOsito es ASS.UME, eodifieada em el segmenro de codige como sigue:

55

SS:nompil~ .. siguiflca que el eusamblader asocia ·e] nembre del 8eg!inen~.o cl)e Ia pila COn e~ registro SS, y de manera Sim]btf con los otros operandos mOS/t(a.dos;. Los operandos pueden apareeeren eualquier ordeu. ASSUME tambien puede contener una enrradapara .elES,tal como ES ; l1o:msegda1io.s:.~ !i] su p.ms.r.a:m·a no utiliza el ]1egistro ES ,puede omkil" su referanela 0 codi]:ticar ES;NOT!IUNG (desde el MASM6.0, el ensambladcr de forma ali~oowatica~eoor.a UEl ASSUlI.1iE pera el segmeeto de codigo),

A] igual :que oteas directivaa, AS SUME es s610 un m:ensaje que ayuda al enSaJmbiadm ;1. couvertlr c6digo simb6lico a .codigp de m:iquina; aUG poedJe tener 'que codificar instruccioees que

- .

f~$ic:amm1ie cargan direcciones I~. registmiS. de segmentos en el momenta de la ejocuc~6n ..

Dir~cti'Va END

Como, ya se menciond, la di:rectiv:a.ENDS bnaEizal!Jl segmemlO y la dirt:ctiva ENDP:lirudi1.a ua p'rccedimienro.liJ~a directrea ENDiI'iTIi.a]iza todo el progJt3Jma. SU formato general es:

ElO'pera:ndo puede estar en blaace sl el pregramaao es pi1'l.raejeG,utarse; por ej:empl0., usted puede ensamblac s6io b.s. d.efiID.iciones die d:wtos 0 [)uede quererentszae ~1 programa COEi! lotro'lInJ6du~o (p['i~ci[)a1). EJl! 13. ma.yoria de los ·pro~;i'amai!l,. el operafidocol1~iefle el nombre delprimerc 0 llIlIl[CCI PROC de8~gllul:do como PARI do ode' inicia la ejecuci6JJi de] pmgrama.

COMO INICIAUZAR UN PROGlI.AMAr'ARA SU E.TECUCI·ON

Los d05 tipos basicos de programasejecmables son .EKE y ,COM. P:nime:m desarrolleremos 1015 :requjsito8 plarapfi~jI.g;rruna8 • EXE Y d~ja:mo~ tes programas . COM: para ,e,] carpft1l!l.[!j) ']. La figura 4-1 propo:rcj)onaup.a estructura de uu progrsma .EXE q-ue muestra lQIS !i!e:g~1lil~JWtQ:S de la pda. de 105 datos y del codigo,

EllI.amlnem,OS las instracciones die] (!Irogii.all1.a por n1J1imero de lfnea:

LlftitlEA 1

2

3

4-6

8-10 12-21 l.3-20

:UifUCA.IOI'ON

La d~rectiva rAGE para este listado establece 60 lfneas y 132 colurnaas por p,(jjg~na. La. dh:ecti\i':a l~TlE idennflea elnombre del p:mgm:m.aPQ4ASM'],

Las llneas 3" 7 y II son comeraarios qillie cbu:'l"fican ]a dec:J.aJ"aci6n de los segmentos d!e'flnid.oiS .

Est'O'S enuaciedcs deflnen el segmento de l apila, ST A;CKSG (pew no su c,oJlJt:enido, en. este ejemplo)..

ESH)Se:nmnciados defim;en e~ segmeato de dar.o:s.. D.ATASG ,(pe~'(l' no SIJ contenldo). E!i:w.~ e·I1llJJnciaJdos. d.efille.D el segmeneo d!ec-owgo. CODESO.

Estoo. enuneiados dennen. el soegm£H1t:O de' cOdi£;o de]U:nico pr~edim:i.mro. tlamado BEGIN. Este precedimiento ilustra los requi8i~oo comunes de i.nidaJizad6.!l y de salida. p;;l!ra~n ,Progwar!l[gj . EXE, L>Qs, dos J"leqllis]oos para ini .. cializar ~O:Ii1 (1) avisar al

56i

] Pl!.~GEl sc. U2

:;: 'FITl;BP04M~1 Estructtll:a lie un p;tQg't"ama . !i':~El

~ ~TA~~G - sea;;~; -;~ - ;.;;~; -; ~~;~k.; ~ j;/~;j; -r.T jj;,;;';'; :If:}? i '

5

6 S'fACKSG mIDS

i ~~;~;~-- SiGMM -;AP~ -~D~~~ ~ - &f~~ - ~ -fiti-;~~~~ It- s: --

10 DATASCl snDS

g bO~~SG-·~;~~~~; -;~-~ C~d;; - -l~ -.--r~{-,-~q1; JJr-6lffiJ~

13 BE."'Gn~ ~ROCFAR ~

1.4 ASSUME BS : STACKSG,. DS: DA'rASG, CS : CODESG

15 MOV l>JLDAT1I.SiG - ,Obt.i!!;fil!!: di~~dc'161t:b del ,segmenta de datc.~

l~ MOV US, AX ,·Alnm.ct!:I'IBi direcci61:l en DS

17 is U

20 :a:BGIN

n CODElSG 2;;1

M14CQQI~ 21H

,·J.i'et;iG!16:n

;1 S'OIi 1 ida ",,[)CS

MOil IN'r D!lNDll' iSNDS I3ND

BI!lGIN

Fig)lllil"a ..... 1 Est.ruC:l.lJru. de. I.llil pltognmrn .EXE

'0n8::umolado1" qoe s.egm,e;MQs asocia CQIl. Iosregistres de segmentos y (2) cargar cl DS OOlTh. la dinlcd;.61ll de] segsnento de, da,kiS,

14 La directlva ASSlJME avisa al ensamblador qlill:e asocie eienos segmentos een ciertns reg;i:lltros de segmento, en este cas 0 • ST AC:K'SG eon el SS. DA T ASG con eD m y COUESG eon ·~l CS;

Alasociar segmentos 00']1. regisrros de segme..]llros.e~ ensamblador puede determinar ~as direceiones de: desplazamientespara los elementos en la pila .• para. los elementoi eo ,td a!egmen:t.o de datos. Y' para ]as lnstruccionesenel segmento de o5digo. Por ejemplo, eada :instrucciOn die: maquin3. en el &egm.enlo decM~go es de una longitllil especUic3i, La prjn'il.'era instrucci·on en lenguaje de .maquina tendda un desplaza· IIlielUo de 0 y si es de dos byte.s de lon,giwd, la seg,unda Irfis'ti:iLlooion tendria lJ[JI desplazamien:lo de 2 y asl sucesivameate.

15.16 Des insiruccicneainietalizan Ja IDtJecd6n de[ segmemo de datos en el registro D'S:

MOV OS,AX

El pruner MOV carga la direc:Ci6n del oogme-nto de datos en el f,egis'[['O AX y el segl,.ltidc MOV oop]~ Ia di~ecci6n del AX al DS, Se requie.ren des M'OV ya que ninguna i.nstrncclOH pl!l.ede R1Q'Ver daws de forma dire-eta de la memoria a lID regisIre de segmeete; usted tiene que mover la dlrecclon desde otro r'cgislro a1 regislnJ dem segment", A-s~. el enun.clado MOV DS,DATASG sena ilegal. E] caplru~o 5 estndla como ~n.i!c~!liUzaf los registros de segrneato 0000 mayor detalle ..

(;1

rr-

el

ue isno

5

Como terminaif la ejecu'Ci6n de un program a

57

HI.19 Bstas dos Instrucciones hacen l.apetici6n de telf'ffi!inaci6n del pmgrama y regresan al DOS, Una secchin posterior I~, estudia con mayor detalle,

22 B en1!J1lCiado EN.D mdiea aJ. ensamblador q;ue este es el final del programa y el oper.ando B.EG1N properelona ,e~ pume de entrada para 131 e:jtec1let6n subsecuente de] programa,

La secuencia en I a que define los segmentos por lo regular no es unportante., La figun 4-) los define como sigue:

Tlenga esso en 1l1t!J:W~:: el programs len Ia fi.gura esta codif]cado en lenguaje s:i.mb€)lic(). Para ejrocntar]o, \Jailed 'tienl;: qrue usar un programa ,ensambIador y un enlaaador para u·,aduci:rlo' a codtgo ejecutable de miiqu:ina. En ese caso, se convernrta en nn pli(llgram_a. .EXI6.

Como se dij:o en el capimlo 2., euaado el DOS carga llllElI programa .EXE del disco a La. memoria para 8U ejeclllId6n, construye un PSP de 256 bywes (lOOH) en un limite d.ep,ar.nfo' en memoria interns disponible y almaeena el programa Inmediatamente despues del Ilmite. Despues, el DOS

.' carga la direcciondel segmeruo de c6digo enel CS;

II' oarga fa direecion de la pila en el SiS; y

.' carga la di!re{;:-Ci6n d:e.~ PSPeP.llos!le~jstros DS yES.

EI. cargador del DOS Inicializa Jos registros C S: IP y S S; W, pew DO ]05 reglsrms DS Y E-S.

Sin embargo. por 10' comnn su programa necesita la d:ireccion del segmento de datos en el DS (y con frecuencia tambien en el ES). Como consecueneia, tiene que imiciali:z;W' el DS con la direccion de] segmenro de datos, como se muestra con las dos inseucciones MaV en la figura 4-1.

Mora, aUli1lque en este momemo esta iJILj.ciaLizaci6Jl no sea clara, animese: cada pro.gr~ma "fiXE tiene virtuahnente los mismos pesos de ]1:'JJ±cia:Uz::a.ci6n que us.tedp~de deplicar eada vez que eodiflque un programa en ensaroblador.

OOMO TEltMINAll LA EJECVCION DIE UN: PROGRAMA.

lNT 21H es una eperacion de lrlilenrupdon com.Un del 90S que utU:iza un c6dlgo de fuooiou en el registro AH para especificar una aceion qJUe sera, realizada. Las, diferenres funciones de tNT 21H induyen entradia desde el teclado, wruiej:o de la panralla, IUS de disco y salida aimpresora. La funci6n que nos imeresa aqui es la 4CH, que JNT 21B reconoee como una penciolll para la rexm~l.1:aici6.1], de la ejecud6n de 1I.mpro:g;uma. Tambiew puede usar esta operaeionpara pa~3ir IDl ,cocU_gpdcr,egresQ en. el AL para pruebessubseeueneesper medio de un archive de precesamiento por lotes (vi,a el enundado U'= ERRO'RLEVEl,). como sigue:

MQV JUI, -:leH

M.QV .A.L, ret-code

J:NT 21M

: ,sall.1: al DOS

Capl~ulo4

E] codigo de regreso para uu_a~e.fminaei6!n norm~~ de un programa por 10. comtin es 01 {cero) , Tambien pl1ede codincar dos MOV como un emmeiado (como se muestra en Ia figura 4-1):

=:Pet:ici6n die terminacion normal

La fMcj6n 4CH del DOS ha s:us't~tl1ido las operaciones originates de: terminacien INT 20H ~ INT 2 i H, func i.,on 009..

EJlEMPLO DE UN PROGRAMA. FUENTE

La figu:ra 4-2. combtna lainfcnnacton precedesreen un programa fuente en ensamblador, sencillc pero complejo, que suma dos elementos. de datos enel te.g]str-o AX.

STA:CKSG confieneunaemrada, DW (definirpalaera), que de/fime 32palab:ras. iJ:dciaHZMlIas a cere, un tamano adecuado para la mayorta de ~os progrsrnas ..

DATASG define tres palabras de datos llamadas FLnA, FLDB y FLDC.

CODlES:G conriene las instraeciones ejecutables para elprograma, 311I:!que el prhner C:llUl1- dado, ASSUME. no genera codigo ejecutable,

La directiva ASSUME realiza estas operaciones:

,_ Asigna STACKSG a] registro SS" de forma que el sistema utUi·oe hi direccion enel registm SS para direccioaamleoto de ST A!CKSG.

• Asigna DATASG at registro DS~ de modo que el sistema uriliceIa direccion ell e] registre DS para d'irecc~onamieJno de DATASG.

• Asigna CODESG ill registro CS, de modo que el sistema utilice ls dneccion em el registro cs para direccionamiento de CODESQ,

'1'I'1'LI!l

pgg€- 60 I rl2:

P'(l4M~1 {EZE! Op€l'"acioJ1'Bs de l1lov@r y Sum ... !:"

; -----------------------------------------------------_

DJl:TASG

-=t~

-"tIFLDC

DATASG

SEGMENT PARA r Da ta I

IThr 250

DW 125

OW ?

E[\IOS

: ------------------------------------------------------

OOli){8S0 SEGM.ENT PAE-A 'Cooe'

BEGIN !!ROC FAR

MSUME SS: STACKSG'. DS : DAT'AS(J. CS; :CODI!liS(3

'MOV 1IX •. Dl\TASG ;Se a.:;l-igna direcli;ion de DAT.ASG

l<IOV 00. ~ ; tin r~gist:t"o lHS

AX,FLOA AX,FLD·B FLDC , .l!!X M.4CO·OH 21H

;Mover 0250 Ii AX ,Sumar 01.25 a AX

t ~1 maC! e:rl.illl: Burna 'en FLIDC ; Sa.l i.ct!iIJ 01 DO Si

NOV AD[}

1roV MOV un'

BEGIN BNDP CODESIJ EmlS EMU

BEGIN

• Fin de pr-o'c:e-d.irrnitentCl ; Fin dt: i'Hi! grmen to

iF-jim de pz-·ogr'liI:ll8i

Figura 4,-2 Programa fueme .EXE coo los segmemos eonvenclonales

Cuando se carga mil programa desde el disco-a la memoria para su ejecucion, el cargador del sis{e.ma establece las dtrecclones reales en 100 registros CS y 5S [l)e~io1 ccmo see Mosn6 por 'las dos primeras msrmCelOOOS; MOV, usted lie:ne. que inidaliUlr el registro DS (yES) ..

lEn el cap'(~lJ~() .5 reViS:i'!iie[U()$ el e,118am1tde., enlace y eje;cllci6ud-e este programa,

COMOOOCIAUZAR EL MODO PR01EGIDO

E~ mode ptotegi£llo bajo el 80386 y procesadorespoereriores, un pregraraa puede dlreccicnar basta Hi :megaby~es de memoria. El iJ;;!:$O de OWO'RD para ,al~l:e;@jr segmento's en direccinnes de palabras dobllie:s incrementa la v,eJocid:;!!d de aceeso a memoria para buses de dasos de 32 bits .. En el cod],go' siglffileml"e. la dirocliva .. 386 ]e :~nd:ic:a a[ ensamblador qJue aeepte instrucclones que SOlD :86]0 para estes p'l"'ote:sadore:s;, el opeundo USB32 indica ,a[emsa.mbIa.dor qne genere c6digo apro,i. ado para 'C:.~ medeprotegido de 32 bits :

.36~

no::mlse'9 SEG~18N'r OWO.RD tiS l:l,) 2

La lnkiarnizaci6.n de] :re'gisUit'O del segmemo .de datos [pOdrla. pareeerse a 00[0., ya que en estes procesadores el :registro DS au!l'li tiene un MlUtllafio· de ]6 bits:

Las instruccieaes STI, C U, ~N y OUT,di.s,pon~ble:s en modo real, noesbl:npermidd!as en modo prQtegido.

n1RECUVAS SIMPLIFICADAS DE SEGMEN'IOS

los ensam'li)]ado~es de: Mlcmspif[ y deBorland POOpCl:tC1.0,nan algunas fOlnt:l.<lS abeeviadas para defiIlIir segme:n.to,S, Paraus arestasabreviesures, iaicialiceel modelo de memoria antes de ddin:ir .tdgr(ill seg:li1l1ienuo. Elfermato gen.eil"al. Onchllyell<to el pu~mi1LJ:da]) es



HI. mod.elo de merncrla.puede ser TINY, SMALL. MEDTUM. COMPACT '0 LARGE {mromod.e-

lo, HUGE. nenecesttemoa tratarlo aqui).Los requisHos para eada modele son:

..

1

MEDIUM

1

Puede UilLi]izaJr eualquiera cille estosmodelos para WI prog[aMaall~6nom.o (esto es, un programa qu.e no ,e:st8 eoftazad:o oo:n...;aJ~gqjm otro), El medelo TINY 'e:sta. d~sdnado para usa exclusive de progra-

+-«,

60

mas ,COM, los cuales tienen sus dasos, c6digo y pila en un se_gmento. EL modelo SMALL exige que e,] c6digo qeepa en un segmento de 64-K "y los, datos: en otro segmelJilo de ,64K; este modele es adecuado para la mayor pane de ~08 ej,empl05 deeste Iibro, La directiva .M.ODEL genera de forma ~[Jjt-om(h,ica el enWJc]aclo ASSUME necesario,

Los formamg, generales (i.nduyendo' el punto inleial) para, las dlreenvas que define los segmemos, de la ptla, de da:mos y de c6digo ,$(In:

I· - _

• S'!",f!..CK (tama:no]

. DkTA

Cadaune dt estas direcnvas bacea que el ensamblador ge.ne.re· el ,emn.nciado SEGMENT neceaario Y SUI c..or.respondUe:nJt.e BNDS. Los' nombres par omisr6D de ~os segmentos (que usteduo helle que definir) son STACK. DATA Y TEXT (pam el segmemo de c6d[go), B~ caracter de subr.ayado 81 inicic de DATA y TEXT es meenctonal. Cuando el formate eodlflcado lo~ndiica, puede no haeer case al nombre por omlsien del se:gmemo de c6dj_go. EI, la.m.aflo"po.[· omision, de lapila es de I ~024 by~,es. el ,cJua~ tam.bieu puede pas arse pOI alto, Se ndlizan estas dh,ectivas para idoodf'.lcar eli} d:6nde. en elpwgram3. estiinubtcados los ires segmentcs, S,in embargo, note que las iostruceicnes que ahora usa para fnicia]izlI.r hi! dir,eccion del segmente de datos en el ns. son;

:MQV DS,AX

La figura 4-2 dio un eje,mp]o de un programa 'que utiliza segmemos defmidos de modo convencional. La. flgura 4-3proporciona, ~1 mlsmo ejemplo, pero esta vel. u8aJ[1d~Jli las directivas simprific.a-

PGlge 60,iJ:<l

T1TLE "04,ASM:2 ~EXE~ Operac.iQl!'les de fllOV-E!llt' Y SUI'D!il!li:

,-----_-----_ .. _--------._----------------------------

- MODEL SMALl;,

.STACk 64 "Ol\TA

DW ::l50

DW 125

D!t1 'i

sSe define 1a pili31 ;Se de:fimm los dOl!tos

FWA FI.IlB Ft.DC

;----------------------p~-----------------------------

• CODE

B.EGl.N PRoe

MeV MCfV

FAR

,/I;X, @da,ca ]).S, AX

.;.Se d~fin@ el si!;S!'m.'I!n't.Q de (:041'90

• Se Ol.,s,ignOl! 1011 di:!:~c(li611 de DA'T1I.SG ; en el regis~~o D~

AX,:FLDA AX,F,[JDB F:l:!JC. i\X

IMO\I' .M:lf) MOV

: Mov-et" O:! 50 a AX

~ ;Suma ~ 0125, a. .1I.X .,Almaol'l@nar ,suma en FLDC

MOV JIm

B:EGJ1 N rnDP

.EllJ'iD

AX,4!COOH 22M

BiBG1N

i fin de proce d.imi ent.,o .; Fin de p'rog:rama

Figur-a 4-3 Prngrsma fuel1ire .EXEcolii directivas, simpU:fkadas. de segmentos

DefiniciOn de, datos

dati de segmesros ,STACK •. DAl'A Y ,CODE" En la cuarta linea, elmodelo de memorsa es especifieado como SMAL-L.. :La pUa esri definida como 64 bytes 02 pa:h:lbna..s). Advi.,ena qoe el ensamblador no genera. los emmeiados convencicnales SEGM' NT Y ENDS; Y que tampoco se codifica WIIi enunclado ASSUME.

Oomo Vera. en el siguieate capitulO'. el ensamblador msneja programas codillcad!os con directivas !iimp~ifk-adas de segmenms de forma ~:Jpoco dife.rEmre de aquella que uriliza di.J:"ecli'lllu convenetonales de segmem.os.

Las diree'tivlls .. STARTUP.y ,EXIT

MASM 6.0 tntrodsjo las direc:uivas .STARTUP 'Y ".EXIT para simpUficar ]a inic:iaUz.a.e-ibu y rer:millaci, IJl de pregramas. "SIT ARTUP genera mas instruccioilies para inida]izM losr.egisn-os de segmeeros, mientras que .EXIT genera las imm.lDciones, de la INT lIH" ~fooci6[l 4CH pan lao salida del. programa, Para propositos de ,apf6m:di.zaje del lenguaje ens.amblador, los eje.mrplos en este texto codUic1!l.!J el conj:LmlO comp[e't9 de lnstrucclones y dejan las, formas a]ue\dadas para los prcgramaderes con ma05 experieneia,

DEFlNlCI6N DE DATOS

Como ya se estudlo, el prop6,siro de] segmemo de datos en un prngralJlla, .EXE es definir constaates, areas de trabaja y areas de entrada/salida. Bl e]}samb]a.dor permite 13. definicion de elementos de var~as Jongltudes de acuerdo con el conjunto de directivas que defina datos. Por ejemplo, DB, detlne un byte 'Y OW define una palabra. Un elemeeto de datos puede O(njitener 00. Malar .indefinido (esto es, no mlcia~iz~d.())o o una CQnsJ;('l1lt,el de,'!t1nida como UDilJ cadena de caracieees Q CCJIlO un valor nl.!.mer]co. A continuaeion e~ui el forrnato general para 131 defirud6n de dalro~:

I [nombre] I On I Qxpresi6n i

Nom.bre. Un pregrama que haec referencla a un e!,emento de datoJo hace pOl." m.ed'~o' de LU.1J nombre.iPor otro lado, eJ nombre de bY'IJ elemento es ,opc.iOTIaiJ. indica do pot ]015 corchetes, La. seeci,on amle:r.~o:l .... nstrueciones", proporeiona las :reg[as para la fO.lmaci6n: de los nombres,

Dif\ecU.vas. las ,dir,ectivas que definea etementos de datos son DB, (byte), DW (pa[ab.:!',a), DO (paJabr.a dob~ ), D'F (paJahra Iarga), DQ (palabra ciJ\idrl.lple} y DT (diez bytes), cada una ~ndllca die manera expUcjta La lO[]Jgitud del elemento deflnldo,

Exp,resi6n. U expresienes IJ n eperando que PllU'.:jjle eoatener un signa de int'ermgacion para indiic,ar UIi'lI eleP1ento no ulihzado.; como

FLDl D:S ?

; El,il,e:rnento fIIO in! ci ali zado

Eaeste CHO, cuando S1!WpfQgrama lalcie ~a ejecuci6n el valor imcialde· FLD! no es eonocido :por LUlled. En la practica, lo normal antes de I!JISU esre elemento es move:r algun valor a 6l (lo que sea, pero debe ser ap:ropiado .\'11 t:at.n~ii\o definido).

Tamb.i.en puede utiliz;a.f el eperendo para deflnir una constaete, como

~181ement;,o in1.cilllizado

R€querilmierrto~, de lengluaje ensamelador

Puede USaf con. ]ibe,Itad este valor ]ni:dali.zadoen su pregrama y aun puede cambiar el contenido de ]FLD,2.

Una expresion puede comenee vartos valores conscames separado por Comas y limltedos

,0

80]0 por hi. IQ[l!,gil1lJd de la lfn.ea,oo'ltlo swgu-e;

EL eruambladQr define estas eonstantes ell bytes ,eondgnos. Una refen~:nci:a a PlD3 es a]a prlmen eonstante de. 110 byte, II (puede pensar em, el primer byte como FLl[)3+0), y una refereneia a FLD3 + 1 as ill la s:egundJ~ censeanse, 12. Por ejemplo, Ill. iastruccei6n

carga el valor 14 (OEH) ell el registro AL. 1i',atnb:ie..n la le:x-presi6Dp~mi~e d.~plica;c~6u de oons~a[ttes en un enunciade de [~ forma general

rep'E: t. i e i.erne s CUI? ( eX'l;lre sHin)

DW 10 Dup ( , )

:PB S DO!!? U4 )

:O,El, J. DU!P (4 DlJl?'( 8) }

I Cinco :palal:!ras con (lEO:e:O:Bo.EO'!~ bex.adecimal

Eltercee ejemplo genera cuarrc O(Ipias del dligi1!o 8 (8888.) y duplica e] valor tres veces, produciendo 00 'total doee S.

Una expresiea puede demi!l" e lBiciailizar una cadena de caraeteres 0 una conshmle numerics,

'CadeRas, de C8sacteres

Las cadenas dIe caraeteres :son usadas pU3i datos d.esc1"iptivos como nombrea de pet,so.nilS y dluIos de ~gin~s, Ln. cadena esm definida denlrOI de apestrofos, como • ,PC' • ,0 dersm de comlllas, como ":PC". El easambladcr traduce las c,a.denas. de cru:3IC~res en ,eMigoo"bjeto en formate ASCII !I1i)1'maL

-15xtrwm:e:nt~, DB~'8 e1] ~1:1I~CO foooO!u.c' qlle d.eJine: ona cadena de c:arac.tte:res q)Uie excede a~ des caracteres y los ,almaicena en la secuencia oOlfmad de izqul!erda a dereeha. En conseeuencla, DB es ,eI formate cOl1vellciQ:FI~]pailt'a ~a definicion die datos de caracteres de rualq:uier lQngitlU:d .. Un ej1em:plo es

DB, i C'adie:n.a, de Gar ae teres'

El ensamblader alraacena ~OS earaeteres en :formato· ASCn. sin ap6strofos. Si Ja cadena debe n; conre nell!' U1ID S]lOSl'f'C)fo 0 una eomllla, us~ed puede dafinirlo en lI.I1DilI: de tas forma siguientes:

i COill.illai1l. par'a l~ cadena.

una. comill,a, para €II ap6st~ofo

D.! ' HG)l!l€! Sit !l':~;l" s P-C 'li::mpor·:!.llm' .l Una cam U.l a :para la cadene ,

I

Las 'CQnS'tM~es l1!Ulmen,cas seausadaspara deflllir valores a:ritmeticO-$ y direccicees de m__ernoil'ia. las constantes no es;la~ definidas entre comillas, pere van iSepida:s por un es:pc.ci[1.COOO'f de base optional, tal como H ella] valor .~exadec[mllll12H. Pal':aJ.],a mayorl8, de las d[:rectiv~s de defJJDici6n de dartos, el ensamblador cenvlerteconsteotes uumeeicas defiIDtbs a hexadecimal y almacena 10$ bytesgeoer:itdos en ,codigo ebjeto en r.rHie.aJtinve.rso -de derecha aizquierda. A. cominuacion estill ]os, dif'eten~es fOlJ'maJtO'.s n~me,riro:s"

Decima]; El format"a d,ecima]. pe;rm:]~e d!efmir eon los d:ig~tos decimates 0 ill 9~ seguldos de .manera, o;pcio!ll1l1 por el e;,g,pec:ifi.cador de base D, tal como. 125 0 ] 25 D + A1ilInq!.u~: e] ,en.samlblador permiie que usted derm.a valores en tformato dec,ima]. como- una eenveniencia aru eedlflear, e] oon.vierte SI:.I.8 valores decimales a c6d]go objeto binarlo y los represenea en hexadecimal, POI' ejemplo! l!J!LilJ.iiI definicion del dedlulili r25 se eonvlerte en 1D hexadecimal.

He\ti:adecimalli. EI. f-orl'misto hexad~cimall pe.nnUe definir 'con los di:gi.too hexadeeimales Oa ,iF" scpid!os POI! ,el espec:i"fi.:;;adQ[ de base H. que se puede usar para defl.All' valores bhlliXjos" 'Va ql[e el ensambladcr esperaque una referenclaque empieee con ~l1la 1~(Ia £:8 ua nombre simb6Uoo. el primer d:ig~ro de una constante hexadJec:in'la[ dl.ebe set 0 a 9 .. Ejemploo . son 2EH y OFD8H, que el ensamblaligr almacena oomo 211E y D80F. respectivamente. Note que 1'08 bytes en el segundo cjerupkl' SOD almaceuadosen o:nie~ U'D:Vel"'SO.

·Bin,1t1"io. El formalO biuario pcrmse definir cOIllI05, digitos, binsrios [) Y 1. scguillos par el espeeifieador de base :8,_ E] uso norma] del formate biaaelo es pa:r3! dj,stinguir valoresen las i.nsti;uoc;:ion.¢~ de mane]o de bits AND ~ OR~ XOR Y 'fEST.

Ya que el ensamblador eonvlene eodcslos valores aumedeos a blnario (y ]00 represeata en fuexad.ecin1!a1), las definici.ones de]2 ~ C hex Y 1 I O() binaF~o geme:H![i e l misme valor: O()()Q.] 1 Q~} ltij!l1ario e OC hex, dep{m:d~tmd(} de c6.mo 'Ilea el c(m:rsllido del. byte.

C6mo las letr,as D y B actiian tao~(li come especfficadorea debase como digiIDI5, be:x,ad!e[,;~:IllQJles, puedle.n causar a~gllJma. confusio!ll. Como SO]lIci6m. MASM 6.0 iotrodujo el 'lJISO de la T (por ten, d]l!z) y la Y (per b.iJ:;Wry.b]naIlo) com.o eg,pedficaoores de baJsepal:"a decimal y binario, respeenvamente .

R:ea~. £1 ensamblador convierte un valor real dado =uaa ,constame decimal 0 hexadecimal seguida. poor el especificador de base R- en fOM1lato de punto flotante parauso !CO.ll·~J:1Ii coprecesador matemanco.

As~g!1reS!e de dis:ting,uir entr-e ,e] !UIO' de las C·QDs'Eantes nunlerJc,[i"s y de. caracteres, Una, cons~ante de caraerer deflnida como DB 'li2j genera dc.s caracreres AScn, represenrados C0l.10 3132 hex. UnCi constante nnmerlca de'finida como, 12 genera un o1i~.ero htaario, represeotado come Oelle>:,.

l.-as di]'ect~v;ilS (;orrvendon;a[e-s. usadas para. definir datos,) jm!]w con los ID.otMibleS imreducidos per MASM 6.0~ SO]1l.:

ID~~EeTiIV'AS:

IDESCR~P!C:16N CONVEIN:CiIOtNIAIJES

D~REC11/V'AS MASMai.!]

BetTE:

64

Defin.ir Una. pala.i:lra doble DD DWOittl
Defini,r U)'1.;<l! palabra lar91.r.i DF F~lOlID
De f:i.r;ir U.I\<'l! p<l.labra cuach:uple DQ QIi'lORIJ
[h:!:finir d! i-e:z :by tea· 00' 'isnG -

El 'l,exm utiliza las d.irec~i.\las loonvencional,C$ pcrque ;EU uso es aceptado de manera general,

El programa 'ellsa:mlbl.ado de la 'flgur,a 4-4 proporciona ejemplos, de las direc,t~vas que definer cadenas de. caracteres y Co.!:U)f.aJ'lite& nu:me:dcas. con el cOOlgo objeto generado ill la izquj:erda, el 'eu

OMO !1Q
0001 20
M02 .20
0003 59
0004 CW01!l,[ 00 ]
OQ'OE 50 65 1'2 73 61'1'
6.1 6C :.10 43· 61:'
70 75 74 Gs, ;'2
()OlF 33 32 3·6 35 34
0024 02 ~,A 6,1 6E 02
6:'S ri.2 1[113- 4Il Ell! 1:)03Q ~FFO
(H132 0059
0034 DQlF R
(lO]!> 'I)!)03 .000;1, 0007
O(lOS 0009
(104.0 0OO5[ 0000 J
.. ClO,<&A OOClOOOQO
ClO'U: OO,(ICD'7iFJC
OQS2 OO(lOOO(U~:: aO(iOOO31
(10511. 000(1(')000'1
OOSE 00 (1)504~ 0062 OOOOOOOO~!)OOOOOQ D06A ~?4DOOoOO!)OOOOOO 0072 JC'FQOOOO~~OGOOO

page 60,132

TITLll: P04DID'IH {!8XB) lle-t i.ne data item:> • M.OD.BL S:MAlliE.

.MTJ!!.

$I!!: define:" Byt~s = DEI:

6E liD

.

FIiOWB FLD2.DB FLP3'PIl FLOODS FW5DB ~.tDe;DB

? n 21:1}[

o (111)0113 10 DUP(O) 'I?e:t"$¢nal

:Ua ae ini,ci.a

; Const&nt@ de~irna.l ,Con:sta.nte hexadi!.citnal ,Constane@ hin~ri~ ;Die2 cera,s

GOf!1puter'

;caJdena de Caractoeree

FLO 1lJiB DB I 3 ::1 6 54 '1 r N'!1im~ ros C erne c,a~,iiU;; te:!::e,g;

46 FUHIi'Il'B lJ(IB OJ" I J'an I • ,(12. 'F'eb' ,03, 'N(a,~'

n ;1'abl,a de mei:t:'elO!

Se definen ilil;i~:a - :DIfl ~

I FLtllDW FLD,2:DW .I:?"LD3DW FLD4DW

DW on'POH

DW OlOlllOillB DW l"LD7DiB

D1i! 3,4.7,8,9

jConstant@: hexadecimal ;Consta.nte 'binaria ,'Comltant.e d@ iUr~oci6n ;T.ablat de ainf1.o

i COlnstantel'a

FLDSDW Dill S!)uP (OJ ,Cinco ceraa:

\ il.!' \\ ~(! daf ini!illJ Dou.'cl,E! worills - .DD;

; ~l~ , ••••• --------------- ••

FLtn.[)]J ton '? ;No ae :in.1clliI

FLD2 DD DO ,):2.5 n i V1ill Ole d'e,ed .. m;!l.l

FI.l)30D on 14 r 49 (DaiS COil stan t. e iii

FLD400 DD FLO 3D'S • i!"LP;;lIlB ; D.i fe':~e!nei OJ!

i en'~t"e dil'E!·ociones

FLD5DD DO I PC • j, cad'ena de· (;i3.rac:t e~e~

Se d€lfinen Quad "fords -OQ.:

.

F.LD1DQ FLD2DO FLD3DQ

OQ "i'

DO' 04D47H DO ~2S."2

;iro .!I'e illl~i.a

; C'oli.l.!ll:B!n't .. !!!i· t.il!l!!!Xl!u:ll!!,eimal i C'ol'l.!l~am.'te d,e'eimal

OO'A DOOOOOOOO~OOOOOOCo l"LD1DT DT r ;,~o :S~ i.f.ll~ian
00
0.094 563412000000000000 FLD:2D'l' DT 1:234'516 " CQn.sti\nte decimal
GO
OO!;l!1! 4~500000000000QODO PLD3DT OT "I"C''' ;Caden.a dili oa:r""'Ctere~
on CapUulo4

Segments and Groups:
N a m e Length Al:l..g!J'i combine Cia,s!;;
DGROijP . ClRrnJP
nATA 0098 WORD PUBLIC 'DATA'
~'I'iXT OM!) WORD POl\LIC' 'COD.Ei
Syrulbo,ls:
N a IQ e, Typ@ Value Att.r
F'['D1DB L '6Y'FE O(lOQ .DATA
FLDl[)P r.. UWOM 0041!. -D,i!;.Ti\,
F'LDUIQ 1. QWORD OQ.iii~ ~DATA
FLI)1DT L 'I';S)!TE 0011\, -'DATA
FLDl'DI'fl I.. WORD 0030 ~DA']'A
FLD20!lll L .e"l'fB O(l'(l1 ~DATA
FLD,2DD .L, .D!ilQRD 0048 -DATA
FLOQ'oQ L QWORD 001')). D}!I..'rll.
PLD'~lOT L 'fB'lTI'); 0084 -DATA
FLD2'.OW 1.. filORO 0032 :DM'A
FLD3])B [, :B'!TE 01)(12 yA,TA.
FLD3DD L DWORD j)q]5:4 - DA':l'.1lI
F'LD3DQ .L ~!UI 0072 !lATA
FLO]D"T · L TeYTE (lOSE Ol\,TP!
-
FkD3DW L WOPIl OO]~ - DATA
F'LD400 . · r.. BYTE 0003, DATA
._
FLD40D r- OWORD OOSA DJI;TA,
F'LD4DW r. WO.~D 0(13'6 -DATA
FLDSIJEl · L BYTE On04 n~'E.A l.engrth "" IJIOIJl1l.
~~D5!:)D . r.. D\'iI'ORD 005!B -D~TJl.
PLD510W r, 'WORD 0'040 -DATl!!. Lengt:n • o,M5
FIJ.D'EiJDIl r. BYTE OroOE -D.~TA
:!;"UnIJB 'L BYTTl' 010 1 IF' -D~T.~
F'l!..08DB J:. BY''fE 01024 :DATA (I \olarning Errors (I :5ev@re EJ:t;Qrs

F,lgur,g 44 ((;(1[1' i:rJ!l.Iae!dtl)

10 exhortamos a exam~nar. Nolie que el c6dl~go objeto para valeres DO trucializadosaparece como ceres bexad)e;ciG'ul~s. Ya que este p:rog:r.amat consiste solo en WlI segmenro de daroi!l~ no es adeeuado para lejec'lIlci:6tl.

Defiifiir ~yt~H DB 10 BYTE

De [as directivas que definen eleWlIlen(os de da!l:O;S" una. de ]a:s mas uJt[~es. es :DB (defrnwr byte),

Una expreston numeric;:! DB (0' BYTE) puede defiwr unao ma.s constantes de un byte. E] maximO' de WI byte, s,ign.~'fk:at dos dfgib:'i$ hexadeeimales. Con el b]~ ,dem&s a la iZQjll[erda actuando como el de signo, el numero hexadecimal mas grande positivo de un byte es '7F; rodos iDS numeros "superieres" , del 80 al Ff' (en don.de el bit d!e sigue es I), llepre&enl3iDV,alore~ negatives. En termiaos de mimeros declmales, estes Hm~tes, son + 127 y -128. Bl ensamblador convierre consaantes mmericu en c6d]go obj'~to binario (represeutado en hexadecimal), En, la figuraJ 4-4, consraotes DB nru:ner~c~s son FLD2Dil; FLD3DB,. FLD4DIB Y FLDSD.B.

Una expresien d.ecani.ctef'DB puede eomener una eadena de cualquier longlrud, basta el final de la linea. Par ejemp]o, VCIli FLD6.D.B Y FLD'7DH en la figura, El c6dmgo obj:et1Qi muesera el caJll'acter ASCn pan cada byte en orden normal de izquier'd,a a, derecha, 20H represenra un caracter espaeio en blanco.

FLD8DB muestra una mezcla de constames numerlcas 'Y de cadenas de caracteres adecuada para de finir 1IJ'Il3. [;3.1)13,

_,

66

IRequ9lrimiento$ de languaje enearoblador

CapUu!o4

~fblir ~IW palabrar: DW 0' WO'RJI)

La. direetiva DW define elementos cen una ]on:girud de una, palaeea (dos bytes). Una ex;pY,eSi0n ~nm,e:rica DW (<I' WORD) PUOO$ d~ijr-!~~ una Q rn~cons~tes deuna lWil,tbF~.El llJuKier,ohe:xadieciulal [pOsEUv'o die una palabra ea 7'FflF'~ t'odos ]01\1, nUm~roo «8lJ!perruO[es"" desde BOOD hasea FFF'F (dowdt e] bit de signo es 1), representan vaiores negal~vos .. E][ termincs de ml.me:ros declima~,es, ~os, Hmims SOliJJ +3'2.,76] y -32,168.

IU ensamblador convlerte constames numericas DW a Ic..o.d]go objeto bi,rlario (representado enhexadecimal), pew almaeena los bytes e,TI orden inve;r:so.lEn coasecueneia, un valor decimal, d!efioido ~OJ11'O 12345 le cQ~viert'e a 30~911,ex, pero es almaeenade como 3930.

:En la figura 4-4,. FLD IDW y F1JJ<2[DW deflnen censtaates nnmsricas DW. FLD3D\\' define el operande como una direeeien -en este CSiSO! la direecidn desplazada de FLD1'DB. Ei c6diga Qbje~oge;oerildQ If;:S OO[!F (laJ. R ~ la de10ecba sigoificili re'ubicablle). y WSJ, inspeccion de !~ flguramuestrs que la direcdOftIJ desplazada de FLD1DB ([acoh]mna dt la extrema izquierda) ~ :realid!ad es 00 li F ..

Una ,exFliesion de caracseees DW eS:.m ]im:i,tada. a des caracseres, qu~e.l ~n.'ii,amb]ado!fifivi!er': en. el ,c6digo olbje~o ~ aSI que ~p·C~ se convertir:i'a en ~ ,CP' . S,i piensa que DW es de uso Umillado par~ ~a definidoD decadenas de caracreres, esti en. ~o eerrecto,

FLD4DW defl:!Ie~[ija tabla de cinee oomUliliLres aumericas, Note que la longitsd de c~ ecnstame '6S, de uas pa[abr:a (dos byles.).

Deflil1ir palabr~. 'f)'ble.~ UD I)) lDWORJ)

La. drurectlva DD define elementos (jjue t~erlC;:~~ kt:n.gitud de d.GS palabras (eua:[]1o bytes). Una e:::q~~ siam nume.ric(I, DD (0 nWORD) puede d.efllijr una 0 mas COJilsta[lj~es, cada u~a COD nn maximo Ii II.';,UaJtfOb'-ytes, (echo di,giros hexadecnnales J. Ern nnmero hexadectmal mas positive en mJDapaJabJ~ dobllie es 1FFFFFFF (en donde el bit de signo es [),modos 10.s. mimeros ":!l1!l~erI0'res:". desfii ,8DOOOOOO hasta FiPPFIflFFF (en donde et b~t de sigoj() es U.r'e:pr-esellitan valores llegali1'O\s"'~' len:lJ[nos de numero<s, decimales, estes ma:dmo,s, 80111. + 2, ~47 .48;3.647 1 -2.~47,483.'648.

. El ema~b]adOr ~nvieue las c~ns[ant~es num~ric.~ ~~~ _c6d[go obje;(o ~J:fiario (repte's~n

do em. hexa'k~cru:ma~). pero aLm.a~e4ta Eo'S· b¥te~ en orden mverso. Em oow,e~:tlenC].a. un valor diec] definido< como l2345618 Be conv~ene en OOBC614.EH., pew es almacenado como 4B61BCOOH En ]aHg'nII.ra. 4-4. FLD'2DD defme una COTIS[anlenruJJLmeric:a DD,. If FLD3DD define do: coastames m:llrnlericals .• FLD4DD~enef,a Ia diferencia D'l!!Dl,e:rJ.ca entre J as dos direcdoWlies de:fhuid~~ en este Cru30. el re:iuUado es ]a. hlngi,md de FLOODS.

Una, ex:p~esi6n decaracteli DD Ulmbi~D est~ linilirada a des caracteres y es tan. trruvia[ camo~ de .oW .. B] ensamblad:o:r invierte; los caraeteres y los aj:u.s,uaJ.a Ja lzqu~e:rda eJ1JJ URIl palabra doble d: cuateo by~es. como fie Wlue:ura em el iD6d:~~o (libje~to parol. FLDSDD'"

Del1nir ,ala~ra. l:arp,: IlF o FWORD-

La direetiva OF define una pooalbr.al.arrga.de seis Uytes. Su. uso norma[ es para e1803Si5 Y pI'OOOndo.Ji po;sterwotes.

Uefim ,alallJrn cu'dru;,le~ DQQ QWORn

La direetiva DQ define elemenJtos, q-1!lC; I[iiene:!l um:m longitud de euatm palabras (echo byles) .. DQ (I QWORD) de~iI1Ia: ~Jpresi6Q J],um6dca .p'lled.e d.e:flIJjk 1;!.D~. Qi!tia.:s CQmi~a~te'S, cadauaaeoe un ma:ll mo de ocbo byre.s,. e ill6 digims be.udec:irll:!des. E~maty()r n(]me,[QI l1eudlecimal posi'tivo de cuOO\

b d~

(:i7

palsbras es 7 seguido de 151 F. Como un itndkio d~ hi m:agnitud de este Rumer!), e] mimero hexadecimal 1 seguido de 15 ceres es igual at n.llme:m decimal 1,152,921,504,606,84'6,976.

El ensamaladcr maneja. la DQ de valores numences y eadenasde caracteres Igual que 10' bare DO' y DW para va~o:re.s fJiumer~cos. :IBn la figu:ni 44; FLD'21J>Q y FLD3DQ ~][JS:'U"MI sole vslcres DlWnericOis.

Definir diez byt,es: DT 0 TBVTE

La. direcdva DT deflne elementos de dates qne soa de 10 bytes Ide longltud. Su p!£Op6sihl esta relaeionado con lOIS, valo~es numerlcos etnpacados BCD (decimal cedifieado e'!n binario), que soa rois 'uti~e:s para coprccesaderes matematic>OiS que psraoperacienes aIitmeticas esrandar. Un nume~ ro BCD e~na- empacado con 000, dig]ros decimates por byte, con el ultimo bit de ~a izquierda como e] bit de' signo 1(0 (I I), Para UI:1.\a eonstame de:fhtida ,como .12345,678. el lensaMIIlb]ado][' almaeena los bytes en erden inverse '00'[:'0,0 78 56 34 12 ,00 00 (~] 00 00 OCt Note ql'e DT (0 TBYTE), a diifeflencia de las otras directivas de datos. almacena constantes numiric2:s como decimal en lugar de valores hexadecitnales.

La fi:g:ur.li\ 4--4 .wius:tra D7 p,a.ra un ele[l1J;t:mto no iniciallzado, un valor rmmerico y una constanre de dos earaeteres,

Desplegar el segmento ,de datos

El programa en la figur.a 4~4 comlene solo un segmentn de datos. AWilque el ensamblador no geooM me:IiI.<s.ajes, de, ereor, el mipB. del en~;!u::e despreg.6 <C!'Warnli.ng: N~ STACK segment'" ,(Adverteneia: No exists segmento de [a PILA) y e'ID enlazador mostro, "There 'Were I errors detected" (Se d.elocr6 un error). A pesar de las advertencies, usied mn. puede udlizar DEBUG para ver el c..6dig·o objelo, el eual se muesrra en la figura 4-5,

.lBflLsam:ble y elclace el programa, utiliee DESOC;pa:ra. c3.rgar el archive .,EXffij, e lngrese D [IS : II 00 para mostrer les datos. 'B~ La:do derecho del desp~icgue muestta la represema:cion ASCII. 'tal como "Persenal Computer", mientras que tos valores hexadecimales a la iZqUierda indican, los C(lntenid(l'S realmenre almaeenados. Su desplegadlo debe ser i,d'e:nl!:ico al de la figura 4-S para les

Of) :!lID 20 5~ 00 Oil 0'0 QO~OO 0.0 00 OIl) 00 (10 50 'SS,
12 73 61' GE 61 lie' 20 4.3-61' ISD 71) 7'S 74 i6S 72 33
J2 310 J5 ~,4 01 411. 51 6E~'02 46 65 62 03 'liD Ell 72
PO fP 59 00 lI)l (lQ 03 00-04 00 07 0·0 O~' 00 09 GO
()O 00 00 O{) 00 OQ, 00 ~HI-(lO 00 00 00 eo 00 3C 1'F
00 00 D.E, 0(1 00 ,00 l1 00- O'Q 00 '(1.1 00 00 0'0 43· 5,0
00 00 00 00 1)(1 00 00 ee-oc 00 q·7 til 010 00. 001 0,0
00 00 3,C ':e' I) {I 00 00 00-00 00 11)0 {IO {)O (;)0 00 00 ~)F07: '00'00 OFl01:0010 GP1)7.0020 OF07~003{) (lf01l0104Q C!FO'i': ocso oro',: 0060 01;'0'7 : 00> 7(!' ~D

I OF~,:ooa~ 00 Q~ 00 O~ 56 31 12 00-00 00 00 00 00 00 43 50 QFD7:00~O 00 O~ 00 00 00 00 00 00-'2 03 E! 6B 01 2B CO so

O'F07: 0011.0 50 fF' 7(; Q4 as IfS 5·1) a,3-C4 06, OiB .DO 74 {l3 ss 57

OF'a'jl ~ 0000 O'lB8I F,~ FF so 2(! CO SO-PF '76: M :1il:8, 'O'E 50 U (,,4 Qf(l7 ~ OOCO 06 ElI!II lE 11.4 43 Ff' 06 1.4·-4:3 01 83 D1 E3 Al o.E 3C Of'07:: o (I.DO 99 rs 10 3C' 89 8'1 SA 3:2 ~M '97 sc J~ 5E siB I!1S 5D

Of'07:: (tOEO Cl '0 ita 0.5 010 So Be: CC~07 so 6D 46 Il3Q SO illS 2.3

OP07:00fO 6C 83 C4 G6 ~F " 04 8D-46 80 50 EO 98 OD 83 C4

'" y" 4 .. a .,.. iii I I!. mP"e

r;;ll:;m.Ol.l Compu'i:.er3 2654 . .Jan.Feb,Mar

• . .'Y •.•••• , •• , •• " •

., , .••..•.• <.

...••• 1 .. , ,." .. CP •••• , ••.• "GM ••••

, .••• V4 .••.•...• (.'1' ........ r .• k:,,j..!"

P.'!!' ••• ] ••. " .'t .. W

• •• +~.4- .• [i'", ...... " .1 ..

• ••• C.,,, .C •. " ... «:

• •• ·<; .•• ,2' •.•• .2'~ •• ]1

.• , .. p .. ,P.F.P.fj:

1 ..... ,.'1' .•• :r.:p, ....

deS:p'.Lazarmi.ent'Og ,!)I,]OO haSifa 0097. Bspemmos que d1fie;ran la direccien de !llU segmenrc ~()FCl7 en 11 figuu) y lQS d3i!tos des;prue.$ del. desplaJ~amieJlA;Q ()097.

Usted dio 13 jnstrucci6n DS: l(~J:par:fli el despUegue porque ~] cargador esta'b]ecJ.6 DSoon l) d]1\MCion deJ. PSP, y e.l sagmeero de ,i:I.aJ!t().;s, para este p]1og;l'<'IIm~ es :noo b~te's despues de esa diree

ei •....•• ~' L.~.~ •.• cu. 1;.'~nOO'~S\e. DB~UG p~a ~~~gr. ilmas JEXBql!:le mlciaUzan el DS eonIa direccien l' segmeDto de dams, USi~ra, DS.,O para, de:splegIJdo.

LA D:IlmCTIVA EQcV

La d~rleet]va EQU 110 define elemell[Ds de dams . Enlugar de eso, define lIill 'VIDor que el ens,am.b]iJ.t&rr puerle usar para s'IiJs~itwir en etras lnstrueciones. Considere el e.!lu]:J;daci.6 BQU s.iguieme, rodlfiQa"

do en el segrM,e~to de dams: -

El nombre, en este caso TIMBS, puede ser eualqeier nombre aeeptable par el ensamblador. AlitOl ra, S]emp-rf- que en una .i.nsltmcciol)!l 0 eel[[ otra direetiva aparezca 1,a palabra lIMES, el eJl!!s;;!mlbta dar la :s~stitl1!re por el valor [0., Por iejeEp~o, el e:nsamb]atilior eouvlene la directfva

E] erns.ambrni.uil;Qlf roo.m!piazili COUNTR en e~ opew-wo MOV COEil e] vaLlor 051 llilacjend!o de~ operar:. do un vslor Jnmediaio, O-(JmO siestueiera CQdwcado

;:81 ensamhlador susti.tuy~ (!is

Laventaja de EQU €:s que machos encnetedos pueden uuliljzar 'VaJi.ore~:s d!eijn~d.o5 p('it COUNl'B.

Si el valor 00. side eambiado, solQcl:'l!ece-s:ita. camb~a'l" el.enu.fI!ciadJo EQU. No neceslta deGIrsequ pllJede u.Sair m lIIalO!l'·.~gt]a]adiO (ron BQU) ,sOlo en donde UrDa .s.usUruci6!11.menga fle:rrn:.lido para el OnSOlilT blader, lrunJbJ.en puede: igualar (com EQlJ) nombres sim:M~ioo:s,. como ell. el s:igmiente c:6digiO':

E] 'p~rin;H,~iiBQU hace eqJl]iiv.ale:~te (i.~a1~a) el alias TP' ail. e.ie:me[]Jto def]n~dJo -TQ"TALP\I\Y. P.ar cuM.qilJlier instlllcei6n que tenga el operando TI'. el e.Rsamb&a!do[ loreempb.aza COll Ia d~[~cd6n d

TOT ALPA Y. 1&1 segun__rlo EQU permite a on programa usaf la pa~<ilir;a MPY en lugar de I a instrucclon snnbolica MUl.,.

M'ASM 6JJI in1rQ(bljo una directfva TEXrE.QU, para datos de texm, COD el formate

PUNTOS CLAVE

• UIITh comentario esti precedido per punro ., coma I{;) .

• Las palabr,a_s reservadas 'en h::ngua:je easamblador son. usadas para prop6sitos especiales, bajo condiciones espeelales.

• u~ rudendficadoili es UI nombre que se apDic3i a elelne~tos en suspeegrasaas. UlS dos ~i,pQS de identificado'res son no,rlibres" ,que se refleren a direceiones de datos, y e'riquelas, que se refieren a la direecidn de una :instrucd6n.

• Uli1!fI operaeiones usada, par lo connln, para definir ~reas, de datos y cod~ficar instrueciones.

Uli ope;ran.do pr.op<lll"ciollft informacion parala imormac160 que aenia sobre ,ei .

• ' Un pm,grama ccnsiste en 000 01 mas segmentos .• cada uno de los eueles lempie'Z3J I~n un limite de purafo' ..

~ La. directiva BNDS finaliza cada segmento, ENDP eermina cadaproeediraiento y END rell'mlla un programa,

.• La directiv,iS! ASSUME asecia los registros de segmentos CS. DS Y ,SS con sus nombres de segmento :lIpropiados.

'. Losprogramas .. EXE [pero :00' los ,COM) deben properclonar <'11 menos 32paJalbns para el dh:'-eDcion.amienw, de .~~ pila,

'. Para un pro'grama . EXE,. per 10 general se inicializa el registrc DS con la dir,ecci6n del segmem» de datos,

• Para las <Hrecdvas shnpUficadas de segmeutos, ames de def~i:1J~r a~g,oo segmento, se inicializa el modlelo de memoria. Las, opd.ones sal SMALL (un seg~e~uo de c6di.g'O y un segmeneo die datQs). MEDIUM (Icualquier mnnero de segmeatos de ,e6dlgo y un segmento de datos). COMPACT (00 segmento de c6digo y cua]q1liiern-omem de segmentos 00 datos) y LARGE (c:uaJ~quieIli numero de segm.entoo de datos y de oodmgo),

!I, [NT 2 ~ H, :fiw.cion 4fCH. as lao imstncci6:n estan:da:r par,a la saUda de prognmas .

• ' Los nombres de los elementos de datos deben ser unices ":I degrcdp~]vos. Por ejemplo, un elemento pan el salario de un empleado podrta sef SAL:.... EM]?'"

• DB es el tomato, p'referidio para. 131 d:efiruci6n de cad-ens deearaeteres, ya que permite eadenas de mas. de dos bytes. de long iwd y las eonvierte ill la s-ecoencia nO.ninal de :izqwerda a derecha,

, Constantes deeimeles y binarias (hexadeeimales) generan diferemes VaJIGTeS. Ccnsidere el efecto de samar el :25 decimal en centra de :S'i!Jmar 2Shex;:

ADO .AX, 2S ,Suma 25
ADD Jii.X " 2;;;11 H'ilYU1~ 31 10

•. DW, DD Y DQ almacenan valores numerjco8 en c6digo objeto, con 10<8 bytes en ·oOOM inverso·,

• Los elementos DB son usados para proeesar la mtrad de registros (AL. EL. ere.). DW para I,egi:Srl'[,os cempletos (AX, BX. ete.), y DD para regisiros ext.endjdos (EAX1 EBX; ete.), Elementos numerieos mas largos neeesitan de manejo especial.

PREGUNTAS

.4-1.. Sefi~de las diferencias entre un OORlp,ilado[ 'j U[I eesamblader,

4~2. lQue eSllIl'IIlIJ palabra reservada e.n un le",gl!!<tj,e easamblador? De des I;lJe~)]I'~o'5. 4-3. tad]~s .w~, ]os des d[p6S de ~d!~mltjf1cadoreiS']

44. Det:ennine cuales de lus Ilomb~es :sigulel:u.es son ll'aHdos': (a) "C _A T: (b) $:5ll: (c) @$_Z; (d) 34lB.7: (e) AX.

4'''S, ~C!!l"Ues SOl] 13£ difertmdasentre' l)lllili direeiiva y una iJlJ:>tl'11!loci6n?

4-:6.. ~ Qu~ comaii\do.s hacen que el ensamblador (A) i I:rtlJ)rima U'Jllr encabezado ea 1.'1 parte super.io:r de Ul1I! p.~gtna en ~I listl!!do de un p·f\QG.ra;ma y (b) salte a una nueva pagina?

4..7 .. &CU.M es el objeliv·o de cada 1II1'110 dl! los tres ~egfllu~fi~(lS descrirns ell este .capinIJlo'l 4-8... E-I rormaw de ]3. dhecti V<II SEGMENT es

nombri>l SEGMI!ItrIT a1 i ne Ole i an comb i U!I:,'i," , claae r

Expliqne I;li objethro de (a) arni,lleaciofl; {b) comnbmilrr: (c)· 'clase'.

4--9. (a) .i, emu es el objet~';{o de tin p:rrooeClhnielJloo'? (b) ~C611io deflne e:1 i l11i.do Y l:':]t"imlil d.e: un proteclii miem(l (c) i..ClJa:m.d.o Cklfinida WI precedimieerc eQrrll1l~ FAR ."t cutndo co,ma' N~AR.1

·4 .. 10. !ExpUqwc que enulilci3dos END par~k;l,lla!es tnt a n bt finaliza.d6n de. (a) un 'I"rogr<lima; (b) IiJ.t procedilll1iento: .ee) on segmesso,

4&U. Est.a.bleulli las diferenclasenrre Ios enunciados que flnallzan Mil ell.s!lmbJado y los. eaunclados qm fina[IZ..9J1l uaa ejlec:~,d6[1.

,4 .. 12. De' los nembres SnCSEG. DATSEG y CDS~:G ar los ~etmenltO:s: de La pila" de los datos y del c6digill, respecli.\rame.!l!~e. y ·cod'i11que el ASSUME fleres:ario.

4 .. 13. COIM!.S~def·e]a ~1}8trucci.61'l1 MOV AX,4COOH utilizada con [NT 2JR (a) lQ~e haee 1.3. iI'll5~:I!l!!!cci6n'! ~b lCu~: ·0& la fm;di.daO: del 4lC y e:1 OO~

4-14. Pan las direcdvas s:implificadas de s.egmentos. 1<1 direcdv3 .. MODEL proJilorc]ona los: modetos TINY, SMALL" MEDruM. COMPACT}, LAltGE.l,.Bajo qlJ! CifC.UrMtillcias se utiJiLilda cada IiJJlO d; estes modelos?

4-]l5. De las ]o.uu;gIrud.es, en byt~~s .• g~nendas por 1.018 s,igllJie.rU.es dil'CCllV2I5 de datos: (a) :DD~ ~b) DW; (c) DT, (d) DQ;. (e) DB.

·4-16. Defina una eadens de C3rilCler.es con ROIlI'II:rre TITLEl que contenga. ]a COlIIsml'lte; ROB Electronics, ,4~ 17. Definalos valores t!J,u:m:erli:cos siguienres en elementes de dilt.os F!lELDA a FIELDE, rC$peclivtm.tente (a) Un e]en~enm de ,CUlIJwo hy~es con el ,eqlllva]e-nte tu~x.adeci:maJ d~11 215 dlecim>l11. (b) Un clem.enlO de un byte eonel t':ql1ivali~nre hexadecimal. del 35; d~cJim'QI.

/

(c) Uneleraento de dlos by~es con tin valor no definido.

(d) Un deHlenlto de ua byte con !.'.I. equi1l'1Ilc'Iilte b:imn'ir) del 2:5 ,diecimal. (e) UIm, DW 'COilil los valores eonsecnnvos 17,. 19.21.26 r 31.

4-U)" Muestre el codwgo objeeo hexadecimal generado por (aJ) DB 128'; (b) 'DB 28.

4-1.". [l,etetmira.e d >c6d~g!l QbjeJ:O hl.eud~d~lJal ensamblade pasa (11) DB 28H; (b) DW 2,845U; (c;) Dn Z8733AH; (d) DQ 28733Afl.

You might also like