Lenguaje Ensamblador - Peter.abel

398

Click here to load reader

Transcript of Lenguaje Ensamblador - Peter.abel

  • LENGUAJE ENSAMBLADOR ;

    Y PROGRAMACION PARA ffiM PC Y COMPATillLES Tercera edici6n

    Peter Abel Bnu'h Columbia lru.ututc of Technology

    TRADCCC16 N: l.k. \ lctor Hugo Ibarra Mua~do Lie:. en FISIQ y MaU:!Nitt&) Coordmador M.tu:nuucu Aphcadas

    ~IK!IJ de: Actuaril Uruvcnicbd An3buac

    l'rof. Raymundo liugo Rangel Gutlerra IJJI.A'-i

    Mru c;, .......... . l'nwmi l'ml Pumo Rxo ~ \'CliCUICb

  • EDICJdN EN 1.\"Cil.ts

    PR.I' PRF.S.~IMANUPAC11JRING BUYER' A('QIIlSITIONS EDITOR EDITOIUAUI'ROD\JCTIOS Sl, PO YlSION

    MD INTEIUOR DESIGN COPY EOITOK. liDITORIAL ASSIST ANT Sl PLEMENT EDITOR.

    BII.L SCAI.ZERO MARCIA tiORTON

    lliOIARD DcLOREN70 BRIAN 8AKHR DOLORES MAllS AUCEDV.OIUU"-

    ABEL: LNGUAJ ENWtBLADOR Y PROCRAMAC/d.V PARA IBM PC Y COMPATI81S (]Q td I

    T111d1Kkkl del ln&IEs de Ia obn: IBM PC ASSJ,MBL Y LANGUAGE AND PROGRAMMfNG. All Rt&Jxs Rcxrvcd. Autbonud ttan>l~- from Endl>h bfta~A.Cc edm1011 publt\lltd II)'

    P~nta Hall toe, A Suoon .t Sbu>ter Coml'olfl) , rodcts los tkrcchUI pemutOn tn wrtuna from the publu.brr

    Pruluboda Ia reprocluct""' tolal o parcQI de C$U obra. ror CIWqwcr muho o mo!IOdo, sm Ia autonDtobn cscma del cdoiOr Dnccho!. r~rnclos 1996 rapeao a b promera cd1ei6n en ~llol pubi!Wl

  • Contenido

    PREFAC/0

    l>arte A ~'undrunenlos dt hardware y soflw1rt dt Ia PC I INTRODUCCI{JN AL HARDWARE DE U PC

    lntroduc:c:i6o 1 Bn~ y bylel 2 NUJDCros bi1W10S 3 ltcpmmx16o hexadecimal 6 C6dtJO ASCII 1 El procesador 7 Memona mtema 9 Segm~otos y dirta:tooanuento 10 Regtstrll$ 13 Puotos tlave 17 Preguntas 18

    2 REQUiiRIMIBNTOS DB SOFTWARE DE LA PC lntroducct6n 19 Caractcnstas del !islcma opcrali>'O 19 El pro=o de manque 20 lntcrfu DOS BIOS 21 Programa cargador del sislcma 21

    .rill

    I

    I

    19

    v

  • vi

    u pdal~l 2l D1reaaonam1cruo de prognuna\ l4 RererendM n !ll(IJIClnJ y a reg~tr

  • Conttntdo

    Luudo del cnsamblador de las derm~~:IOilCs convcnc1onales de ~gmenltll 75 l.ISJado del ensamblador de las duuuvas Strnphlicacbs de -.egmentos 79 Ensamblador d~: do' pa$adas 79 C6mo enlazar un proarma objeto 81 C6mo tJCCutar un proaralllll 83 Lisllldo de rcferencw tntzads 84 Ot:lgnOstiCO de CfTQn:S 8S Punlos clave 86 Prtgunt&S 86

    6 INSTRUCC/0.\l}S I DIRECC/O.VM!IENTO Dlil.. PROCES.WOR lntroducci6n 88 El conjumo de inmucc:to~ del pnx:esador 88 Operandos 92 La mstruaa6n MOV 9S lnsuucc10ne~ para mover ) lltn;~r 96 Opcnndos lnmedWOS 97 La mstrucc~6o XCHG 98 La IIISU"IJCXIOO LEA 99 Lu IIISU'UtCIOile\ INC ) DEC 99 lnslrUCCrones de mo>rmrenro utcodJCio 99 La lllSIJ'uCCrOn INT I 0 I Ah.ncaci6n de dlreccrones 101 Drrecc:ioncs ccrcana )' leJana 102 PrcfiJO que m~11hcb el

  • viii

    u iiiSITUOCI6n C\1P 118 lnstrutetones de qho condtciooal 118 Uanmla a proc:cdlmlen105 121 Efectos co Ia p1la de Ia ejecuc16n de pro8tam!IA 123 Opcraclones booleane C O~rac:lones pllnt la pantalla y eJ teclado 136 9 INTRODUCCION At. PROCESAMIENTO EN PANTAUA Y DEl. TECI.AI>O 136

    lntroducc:iOn 136 u p;lllUIIa 137 Coloc:ac:i6n del CUI'Or 138 Limpiar Ia panU!Ia 138 Fuoc10n 09H del DOS para desphegue en p.u11alla 139 Funti6n OAH del DOS para entrada deltecl3do 14 1 Como accptar y desplegar nombres 142 Uso de carac:lere~ de comrol para desplcgar 146 Funtl6n OZII del DOS para desphegue en panlalla 147 Manejadores de arc:hlvos 148 \1m:Jadores de arc:btvo pua despbegue en panulla 148 Manr11dores de arc:h1vo para cntr.lld.t de~ rltccl

  • Puntos cla\c: 180 Pregumas 180

    II PROCESAMIENTO AVANZADODEL TECU.DO lnuoducca6n 182 Elteclado 183 Estado del shift delteclado 184 Bufer del teclado 185 lntmupc.On 21 H del DOS para e01rad.1 de$dc c:ltecbdo 185 lnterrupc16n 16H del BIOS para emuda dc:sde elteclado 187 Teclas de fWlCi6n c' tendldu y e6d1gos de rastreo 189 Selecct6n de un mtnu 191 lnterrupci6n 09H y el blifcr delteclado 19S C6mo ingresar el conjunto completo de caraclercs ASCII 197 Pwuos cla\e 198 PreguntiiS 198

    Pane 0 Manlpulacl6n de cblos 12 OPERACIONBS CON CA06NAS DE CARACTERES

    lnuoducc J6n 200 Carac1emucas de las operac1ones con caden;u de caractercs 201 REP: PrcfiJO de rcpct1CI6n decade~ 201 MOVS Mo'er una cadena de caractercs 202 LODS: Carga una caOOIJ de caractcres 20l STOS: AhnaccMr una eadeM de caractercs 205 C6mo uansfmr datos coo LODS y STOS 206 C\IPS Comparur cadenas 206 SCAS Bmqucda en cadenas 209 Buscar y reemplaur 210 CodJficactn altc:ma para m

  • X

    DIVI~Kl!l 232 D1~1SI011 por mecho de eomm~e~~1os 236 Camb10 ho\ersiC!n) del SIJIIO 237 Proces.;doru numtncos de !biOS ccoproceudofel) 237 Pumos c:la\e 239 Prerunw 239

    14 ARITMI:.'TICA: 11- PROCSAMIN7'0 DB DATOS ASCII Y BCD lnnoducci6n 241 D;os en fonoa1o dcc1mal 242 ProcesamJenro de datos ASCII 243 Proce5am~en1o de datos BCD desemp.aqutlid BCD cmpaqumdos 248 Concnldo de fonmto ASCII a bUWlu 250 C'on\'trsJOn de foT'IIUro buuno a ASCII 250

    C'omm~emo) redondeo 251 f>ro&l"llN pua COO\emr !bios ASCII 253 Punt01 dae 258 PreJWIIU 259

    IS PROCESA \J/Eh70 DE TABIJIS lntrodu.:ct6o 260 Ddiniclon de ~abl:u 260 Dli'(C(Iorumuemo dJreao en 14blu 262 Busqueda en una labia 266 u tllWUCC16n Xl.AT (Tm!umJ 271 De\phegue de caracttru he~lldcd01.11t' y ASCII 27l OrdenamJeDto de entradis de una labia 274 u wn.tfoo de los opcr~Of"el 279 Puruos cia\ e 279 Pregum:u !80

    Pant f t otnula, wlda &\1llllad3

    16 ORGAN/l.ACION DEL AJ.MJICENWIF.NTO E.V DISCO lnttodu.:clon 282 C'arncterlsucas de los dllCOS !82 Are11 de $1Stemu } trea de datO> en d1..co lRS RCJI$110 de arraoque 186 Duec10r10 287 Tabla de iUI&J1.1ti6n de ucbJ\o~ 288 E:jerck10 que unphca el uso de Ia FAT 292 ProcesamJento de ucbi\OS en dICO Z9J Punr~ da\e 29J f're&WJiiU 295

    241

    260

    282 181

  • Contenldo

    17 PROCESAMIHN1'0 EN DISCO: IESC:HJTURA Y LECTURA DE ARCIIIVOS

    lntroducci6n 296 Cederms ASCIIZ 297 Manej9dorts de archivo~ 297 C6dtgos de error de rcgreso 298

    Apumador~ de md!ivo 298 Uso de manejlldores de archtvo pam crear archtvos en di5CO 298 Uso de mJU]j!jQdorc~ de archtvo para lctr archtvos en di5CO 303 Proctsamiento de archivos ASCII 307 Uso de !rulnejadnrc5 de: arthtvo para proctnmiemo directo 310 Scr.tclos de dtsco que usan bloques de comrol de archtvo 312 Uso de FCB para crcar archt\'0$ en dJSCo 316 Uso de 1-CB para lcetura secucnciat de: archivos en dilco 318 Uso de FCB p.1ra proce5amu:nto diree1o 319 Procesamtento dtrecto de bloques 320 EIS absolulll de d1~0 321 Pumos tlave 322 PrtgWIIDS 323

    18 PROCESAMI6N1'0 EN DISCO: IIOPBRACIONBS DEL DOS PARA SOPORTE DE DISCOS Y ARCH/VOS lntroducct6n 325 Operacnmes p.:tra maneJO de umdades de diSCo 326 Prognma: lectura de lnformnct6n desdc los ~ctorcs 336 Operationcs para mni'K!jar cl dtrectorio) Ia FAT 338 Progcama: Oespheguc del dtrcctono 340 Operru:iones para mancjilr uchivo~ en disco 140 Progcama: 8orra.r archrvo\ de manern sclccuva 347 Puntas clave 350 Prcgumas 350

    xi

    J2S

    19 PROCESAMIEN1'0 EN I)ISCO: IIIOPERACIONES DEL BIOS PARA DISCO 352 lmroducct.6n 352 B}tC de esllldo del BIOS 353 Operaclones basiclli del BIOS para dis

  • xll

    lmpres.on con erabelados de IJI&Jlll 366 lmpres!On de uclu06 ASCII y IIWICJD de libuladorcs 369 DOS 21H. func16n OSH lmpnmtr un carktcr 313 Caractcres espcctales de control p~ra Ia tmprnora 373 FUIICtoneS de Ia INT 17H del BIOS p~r~tmpresion Ji4 Puncos cla~c 376 PregunllS 376

    21 OTRAS FACILIDADES DE ENTRADAISAUDA lntroducciOn 377 Caracter!srlcas delrat6n 377 FUIICIOllCS del r.116n 3 78 Operactones C01IIWltS del ra16n 379 Provama para cl ralim 385 Puertos 388 Gmcrao6n de SOilldtX 390 Punl06 cl&\'1: 391 Pregunus 392

    Pllr1r f Programad6o avanzada 22 ESCRITURA DE MACROS

    lncroduccum 3!13 Un! defimciOn ~ncllla de una m3tro 394 Uso de panlmeu:os cl) JIUicrOS 39-1 Comentanos 396 Uso de una macro demro de una defim.:IOa de una macro 398 Ll dUCCilva lOCAL 399 lnclwr (uxlude} clesdc una btbUOCcCI de mxros 401 Conc!tenact6n 401 0trectJVIS de I"CpCIJCJOO 40)

    ou~cuvas condiCtooale$ 4().1 PuniOi clave -108 Prcgunw -' 10

    Contenodo

    J77

    393

    J9J

    2J ENLACE A SUBPROGRAMAS :Ill lnuoducct6n ~ II Segmcncos 412 Uamadas i:nlmegmrmo 413 U&lll8du lllte!leglllCOIO 414 Atnbutos EXTRN) PUBLIC 4IS Alllbuto. EXTERN) PUBLIC p~ra una ctiQU(I.I 417 Uso de PUBLIC en cl sqmtDIO de cOdtJO 419 Otrecuvas SIDiphfadu de sqmeruo 421 Dllos comU!Ie$ eo $ubprogramu 423

  • DefiruciCSn de datos en ambos prognmas 423 Paso de pari metros 4 2.5 Enlace de proan~ma~ en Pasclll y en lcngwaJc cmamblildor 429 Enlu:ando programu C y lcnguaje cmamblador 431 Puotos c;lnvc 434 Prcgunta. 43S

    XIII

    24 ADMINISTRACION DE U. MMORJA DEL DOS 437 lnuodliCC16n 437 Proaranw pnnc:ipales del DOS 438 Area de mcmona alta 439 COMMAND COM 439 Prefijo de segmcnto de programa (PSPl 440 Bloques de memoria 444 Estratcgia de asagnaca6n de mcmona 447 Carpdor de progr.una 448 Astgnac;a6n y libcracl()n de mcmoru 4S3 Carp y CJCCUCa6n de UDI funcJ6o de programa S-1 Trasbpc de proararm1 458 J>roamnas rc51dcRieS 462 Puntos clave 467 Prcgunw 468

    Pane G Capitulos de rtJtrmda 25 AREAs DE DATOS E INTBRRUPCIOVBS DBL BIOS

    l.ntroc!ueca6n 469 El proceso de amnq~~e 470 El area de datos del BIOS 470 Servtcaos de antcrrupca6n 474 lrucrrupclones del BIOS 4 7S Pumos CII\'C 478 Preauntas 4 79

    16 INTERRUPCIONBS DEL DOS lntrodutca6n 480 lntcnupc10nes del DOS 481 Servic10 de Ia INT 21 H del DOS 481 Puntos clave 486 Preaumu 486

    21 OPERADORS Y Dl/lCTIVAS lnuoducci6n 487 EspecfiCadorco de llpo 487

    469 469

    487

  • xiv

    28 IlL CONJU/\70 DE IVSTRUCCION/i.S DE /.A PC lnlroduccion S 14 Notaca6n de regiSiro- 5 iS Byte del modo de dirtC(:IOOllmJcnto 5 I 5 lnstruccaones de dos bytes 517 lnstrucCIOReS de tres bytes 5 17

    ln 547 0 Opci~ de eruamblado y de enlace 549 E El programa DEBUG del DOS 551 F COdlgos de robtreo del tcclado } Wd1go. ASCII ~64

    RESI'UESTAS A PREGUNTAS SEI.ECC/ONAOAS INDICI~

    Con teNdo

    su

    568 581

    I

  • Pre facio

    El com.6n de Ia compullldora es el microprocesador, 6te maneja las necesidadcs aritmeticas, de l6gica y de control de Ia comp~lladora. El microprocesador tiene su origen en Ia dtcad.l de IllS sesenta, cll!Uldo se diseil6 el circuilo mtegrado (IC por sus stglas en mgles) al combmar vano~ eomponcmes clecu6nicos en un solo componente sobre un "chtp" de sllicio. Los fabricamcs colocaron esre dimmuto chip en un disposiuvo parecido a un ctempi6 y lo conccwon a un ststema en funcionamiento. A principios de los alios setenta Intel imrodujo el chip 8008 el cual, instalado en una comput:adora termmlll , acompail6 a Ia primera gencracJ6n de microproccsadores

    En 1974 el 8008 evoluciono en el 8080. un popular microprocesador de Ia scgunda geoora cion para prop6sitos generales. En 1978 Intel produjo Ia tercera geoeract6n de procesadores 801!6. para proporcionar alguna compatibilidad con el 8080 y que represeman una vance stg~~~ficativo de disello. Ocsputs, l.ntel desarrollo una variacion del 8086 para ofrecer un diseno ligeramerue rna$ seoeillo y compatibilidad con los dispositivos de entradtllsalida de ese momenta. Bste nuevo

    proce.~ador, el 8088, fue selecctoMdo por IBM para su computadora pcrsoMI en 1981 UM versiOn mejorada del 8088 es el 80188. y versiones mejoradas del 8086 son los 80186. 80286, 80386. 80486 y el Pentium (tambien eonocido como PS), cada uno de ellos pcrmitc opcraciones adictonales y mas procesamiemo.

    La variedad de microcomputadoras tambien ocaston6 un renovado inten!s en el lenguaje ensamblador, cuyo uso con! leva dtferemes ventnjas:

    Un programa escrito en lenguaje cnsamblador requiere constderablemenle menos memoria y ttempo de eJecutt6n que un programa escrito en los conoddos como lenguajes de alto nivel. como Pasclll y C.

    Ellenguaje ensamblador da a un programador Ia capacidad de realitar tareas muy tecmcas que ser!an dificiles. si no es que imposibles de realizar en un lengW!je de allo nivel.

    XV

  • XVI

    ___________________ ........

    Pralac.o

    f.l COOOttllllento dellenguaJC enwnblador permlle om comprens111n de Ia arquuec~ura de Ia mAquma que nmglln lenguaje de alto ruvcl puede ofrecer

    Aunque Ia mayona de los espectabstas en wftware desarrolla aphuc10nes en lenguaJes de nho mvel. que son mas flic!les de escribtr y de dar mantenurucnto. om pr.lct!Ca comun es recochfKar en 11':1\&UJJC ensamblador aquellas ruunas que ban causado cuell~ de botclla en el procesamionto.

    ~ prograrn\ restdenlt'S y ruunns de aervtCto de interrupct6n ca.11 siempre son desarrolllldos en lenguaje ensamblador Lo> lcnguajcs de alto nivel futron discl\adc4 para eliminar las p:lnttulandades de UN com

    putadora especifiCa, mtentm que un lenguaJc ensamblador esti dtsel\ado parn una computadora espcctfica. o. de IJUUICra nw correcta para una familia ~ifica de mtCroprocesadores A contt

    nu;~elcin se lutan los requiSil~ paraaprender cllenguaJe en,amblador de Ia PC: Tener o&eceso a IIILl compuwlora persooal de IB\1 (cualquter modelo) o una compauble. Una oopta del SISleJI\3 operativo ~ISDOS o I'CDOS (de preferCIICII, una erst6n rteiiiC) )

    estar fanubartudo con su uso. Una copin de un prograrn ensamblador (Oira ~cz, de pn:ferCIICta, UN \cm6n rcxu~nte)

    Las erMonc.\ de Mtcreoft son cunocida.s c:orno MASM y Quicki\Ssembler TAS\1 es de Borlatkl y OPT AS~ es de Syuem Pan~ el aprcndiaje de lengwaJe cn.\amblad.Jr no es otecsartO lo Stgu~eme

    CollOCimtento prev10 de un lenguaJe de programact6n. aunque el tcncrlo pucde ayudarlc comprender algunos COIICtpiO> de programJCt6n mi~ ripido

    C'onoctmiento prcvlo de electr6nta o cm:uneria Estt ltbro proporctona toda I~ mfonnacllcnw sunibru con un c6dtgo nW 50f1Stkado. pero mcnos claro

  • Prof~

    I

    xvll

    l..cs progrnmJIS tambi~n omilen lllStrucciOilC$ de: mncros (~stas M: ~xplicllO en cl apftulo 22). A pesar de que los programadorcs profcstonalcs utilizan macros consiJintcmmtc. lU apanci6n en un llbro de csta naturaleza interfcrirla con el aprendizaJC de los prtnctpios del lenguajc. Una vn que cstos princtpios &e han aprendtdo, un programador puedc: adoplllr las t~cnlcas intehgentcs del profestonal.

    C6MO EMPLEAR EL LWRO Esta obra puede cmplcarse tanto como libro de texto que como de refere001a permaneme. Para hacer mas cficaz su invcrsi6n en una microcomputadora y software. trabaje can cwdado en cada uno de los apitulos y rela cualquicr material que no sea claro de lnmediato. Tcclcc los progn-lllll5 de CJtmplo en su computadora, conVI~I'Ullos en "m6dulos" cjecutablcs y preptrclos para eJCCUfllrlos (o correrlos"). Tambiin, resuclva los dcllioal de cada apltulo.

    l..cs primeros nucve c:aphulos tratan cl material fundamental para cl hbro y para ellenguaje msamblador. Oespu~ de e,studiarlos pucdc c:ontinuar coo los capftulos 12. 13, 15. 16. 20. 21 o 22. Los capftulos 25. 26. 27 y 28 uencn Ia mtenci6n de ser referenctas. Los capltulos intcrrelacionados son:

    9 a 11 (sobre operaciones con Ia pantalla ) cltcclado) 13 y 14 (sobrc opc:ractones arilmeticas) 16 a 19 (sobre procesamlemo en disco). 23 y 24 (sobrc subprogramas y admmi-~traci6n de Ia memoria) .

    Altermmar cste llbro. U5led senl capaz de: Emcndcr cl hardware de Ia comput~dora personal. Entendllr c6dlgo en lenguaJe de mqulllil y en formato he~tadccunat. Entcnder los pasos al e!Wimblar. enlazar y ejecutar un programa Escriblr programas e.,, leoguaje ensamblador para maneJBT el!eclado y Ia pantalla, rcaliz.ar

    antmeuca, bacer eonvenroncs entre los formatos ASCII y b~~~ar~o. rormar tablas de bUsqueda y orden.amlemo y manej:~r entradas y salidas de disco.

    Rastrcar Ia cjccuci6n de Ia m!quma como ayuda en Ia dcpuraci6n de: programas. Escribtr sus macrolllStrucciones para facllhar Ia codificac!On. Enlazar programas ensarnblados apartc en un programa ejeculable.

    Aprender lcnguajc ensamblador )' conseguir que SU5 programas funcionen es una cxpericn eta excitanJc y desafllllllt. Por eltiempo y csfuen.o mvertidos, las rec:ompensas de seguro son grnndcs,

    NOTAS SOBRE LA TERCERA EDICT6N EstaterceTll edici6n Ueva una considerable canudad de meJoras sabre Ia edic:i6n anterior. Algunas de elias son:

    lnciU5i6n y mayor enfasis en las functones adicionalcs en ~ersionel mas recientes del DOS Programacl6n para operacioncs con el rat6n.

  • ICY Ill Pretaao

    Caracterist.cas de los proctSidcn' 80-1116 ) Penuum de lnrel lnclusi6n dc llUtcrialacen:a del a~ de memoria supenor y el 4rea de memoria aha lndusi6n de matenal sobn: las mis m:rentes \'tl'tiOOtS de ensamblacb. \11yor cobenura de funerones de procesamiento en disco para DOS. Ia tabia dc asignacr6n

    de arthrvos y pnx:csamrcnto du-ecto. Detal!es eomplrt06 de los c6diaos de rasll'tO y de llu eombrnac:rones de techu del teclatlo

    e:ctendrdo Reor~iOn y revlsl6n eomlclcrablu de lu e.ljllicacrones en todas las panes del te~co.

    RECO,.,OCI\IIt..\TO 1!1 aucor esci aaradecrdo por Ia ayuda y eooperacr6n de lodos aquellos que comrlbuyeron eon wgerencras para Ia re>~sr6n y corm:cl6n de cdiciones anceriores Para esta tereera cdrcr6n. 'aya un agradecimJCnto ~ial a Brian R Anderson del Bnush ('olumbra lnsurutc: of Technology por IJ rnformacian sobre el ra16n > Ia pi'OitaJiloiCI6n C

  • ,

    PARTE A - Fundamentos del hardware y software de Ia PC

    CAPiTULO 1

    lntroducci6n al hardware de la PC

    OBJETIVO

    Explicar las caracterlslicas b~1cas del hardware de Ia mJcro-computadora y Ia orgamzac16n de programas.

    l'ffitODUCC16N

    Escribir un programa eo lenguaJe ensamblador requ1ere de conocam,enros acercn del hardware (arquiteenml de Ia oomputadora, su conjunto de instruccio!IC$ y !W. regiiiS de uso. En rste capi-tulo se ofrcce una e.tplicacJ6n del hardware basico: bitS. byte$, rcg1str:os. el proccsador y cl bus de datos. El conjunto de instruecioncs y su uso son desarrollados a lo la110 del libro.

    Los bloques fundrunmtales de mformac16n de una computadora son los btu y los /r,tts. Estos proporcionan los medios por los cualt:sla computadora puedc reprcsentar d.uos e mwuccio-nes en Ia memoria.

    Los elcmemos pnncipales de hardware intemo de Ia computadora son un microprocesador, Ia memoria y los reg1stros; los elementos de hardware extcmo son los dispositivos de entrad:\1 salida. como clteclado, el monitory el disco. El software consta de diversos programas y arch1 vos de datos (incluyendo al sistema operativo) almacenados en cl disco. Para CJCCutar (o corn:r) un programa, el ststema lo copta del disco a Ia memoria mterna. (La memona tntemn es lo que Ia gente enuende euando pide que su eomputadora tenga. por e.Jemplo, 8 megabyn:s de memoria.) El microprocesador ejeeuta las instrucciolle$ del programa. y los regisrros manejllll Ia nntmetica. movimicnto de datos y cl dtrecc1onamiemo

    1

  • 2 lnlroducciOn II hardware de Ia PC Capllulo I

    Un p~ en ~JC: etU&mblador consisle ttl uno o lid$ J'l~ntos pan clefmn cbl~ y almace:nar 1nstruIOOC$ de m6qwn:a y un ac:gmtt~IO II amado stad. (0 prla) que coouenc d1rec"cr

    ne~o lllmacelllld.u.

    BITS Y BYTES u umdad I11U pcquel\3 de mfonn11CI6n en Ia compu~adora t$ tl bil. Un bh puede es1ar no magne lu.ado, o opotado. de modo que w v&lor cs ccro. o b~en, IIIli~. o mwldrdo, de modo que su valor es uno Un solo b11 no proporaooa mucba mfortnlltl6n, pcro cs M>rprendcnle lo que un COnJUnlO de CIIOS pocdc lw:er

    B}les A un 1!JUP0 de nuec bllS ac: le lbma 1111,. claw rrprc:ac:n~~loclllldade de almaccrwnclliO. 1an1o ttl mcmona mu:rna como c:n dlSCOI cAl~ En memoria, cada by1c uene una d1recc6n unica. que IOJCia coo ccro para cl primer byte. CW bylC I lent ocho btiS p~~ra da10 ) un bll de p;and..d

    [ 0 [ 0 I 0 I 0 I 0 I 0 1 0 I 0 -1 I J ---------~~tude doo.-------- I panda!~ I

    l.m ocho b11S de datos proporcionlln Ia base: p:ara Ia anlml!uca bmana y para n:prcscmar cantdc res como Ia tetra A o cl sfmbolo de ISicrisco () Ocbo blls pcnrutcn 256 combulXI apaplo. C()(XXJOOOO) ha'la 1o00s los bus cnccnddos (11111111). Por cJCrnplo. una rcprescntac16n de In~> bii5Jl.lrala ktl'>l A cs 01000001 y para cl as1eruco cs 00101010.1.UJ1UC no tcnclll05 que mcmonurlas

    La pandad requtere que cl mlme:ro de bits cnecndido$ c:n cad;& b)1C ~cmprc ~ rmpar. Puc:11o quc lllletra A con1ienc dos b11S cn~.-cndldos. para forzar Ia p~~nd.'ld tmpar el procl:\allnr es~ablocc de fortnll auiOIIUJ~a su bll de pandad en cnccodoclo (01000001 1) De forma stmll;u, puc:>lo que cl Ulcn.ICO llCne t= b1lS encc:ndidos, para mamcner Ia paridad unpar cl procc~ador csLtblocc cl bu de randad en apagJdo (00101010.0) Cuando Ulllltll,\lruI()O bace referenc~o~a un byte en mcmoru lllltrna, cl procc:gdof crtfla~ randad S11u partd..d es par. el mtcma wpone que un bu esul "perdido" y cx.bibe un mcnsaJe 0 de error. Un error de pamlad pucde ~r l'bull;ulo de una fall~ co cl hardware o un lriSIOillO clectnco; de c:ualquie:r form.1 cs un K

  • 3

    8 )'t ts r~mdonados Un p~ralllll pucde 11'111Ar a un grupo de byu:t como una unidad de infonnac!6n. como uempo o dtstancta A un grupo de uno om's b)IICS que de linen un valor palllcul;ar K le conoce comunmente como campo. u computadora umbK\o emplca ctenos tamallos que le son ruuuralcs:

    Pofabro. Un campo de 2 bytes (16 btts) Los bus cn una palabra son numcrado$ desdc 0 hasta IS. de dcrecha a WIUterda. como se muestra a contiouaet6n p.ua las lttru 'PC'.

    l'l~mcro clc bit 1$ 14 U 11 II 10 9 I 7 h l 4 l 2 I 0 C"CIN

  • 4 lntroduccoon al hardware de Ia PC Capnulo 1

    Si un programa define los datos para propOsuos ariunttJCOs, emonccs 01000001 ~ un numero bmano c:quovalcnte al mlmero deCimal 6S

    Sl un prograau define los ct&tos con prop6s1tos descnprivos. como encabezados. emonces 0 100000 I reprcsenta un cartcler alf&~hco

    C'IWldo mocK Ia programaci6n. vcr.l eon m."ls clandnd csta disunci6n. p~to que define) u11h1.1 elida elemeruo de mform.aciOo para un prop6suo cspc:clfieo. F.n Ia piOICIJca. ram ve:t lo\ dO'> u~os sun fucntc de confusiOn.

    Un numero bmano no e~ld llmitado n 8 bus. Uo proceudor que uriliza una .uquuec:tun de 16 bits (Ode J1 bus) m.tneJa de manera aurom!uca numeros de 16 bus (ode 32 bits) Para 16 bll~ 2 - I. da valores h~ra 6S.SJS. y para 32 boiS. 2u - I. proporc10n.a valores hnsta 4,294.967.295

    ritmitka blnarta LA mcrocompullkklfa rc.ahza arumtL1ca s61o en fornuuo b111ono. En con

  • Num"rot blnanos

    -.:umcro +6S: lnv~mr los b11S: SuiTIIr I Numero -65:

    I

    OI

  • 6 lntrodUCCI6n aJ hardware de Ia PC Capitulo 1

    De bttho, en un numero ncgativo los bus con cero tndiCan su \'alor (absolutol: rrate el valor posacional ck c:acU uno ck los b11> con cero como s1 fueran I, sumc lo-. valores y agrcguc 1.

    Este matcnal sobn: anrmcuca btnarll) numtros nepm0$lo encontrari pro,echosocuando vea los enp11ulns 12 y 13, j,Obre anrm~uca .

    REPRf..5E.''TACI0"1 HEXADECIMAL lmagJnc que qu1cre ver los comemdos de cuarro bytes adyaccntes. que rcprcscntan un valor bma-no, en memoria {unn palllbra doble). Aunque un bytt pucdc tener cualquera de las :!56 comb1Jl3 ciones de btu. no bay lllllllCra de mo~trar o tmprimtt mucbos ck ell!)) como can.:teres ASCII comune1 IEJempiOi ck ales tarliCiern joOO las eonfiguracones ck bu~ para Tab. Enter, Form Feed) Escape ltabulador. lntro, Annce de ~gma y t:sape.) En comccuenca. los dasetladores de compumdoras dcsarrollaron un mi!todo abreviado para repre.sentar mfonnacu~n bmana. El mttodo dtvade todo b)tc en mtades y cxprcs.1 el valor para cada mcdto byte Como ejcmplo, cooslllcre los siguentes cuatro b)m:

    BIN no: 0101 1001 0011 0101 lOll 1001 JWO 1110 Orcanut.

    ' 9 J

    ' II 9

    " 14

    Pues1oquc !01. numc:ro) II. 12 y 14 ne>tllln 2 diguos. se uhende el oremdo de las comu.nres de darns Para dcpura.r sus progrllllW, puede ~ar el pnlgrama DEBUG del DOS. el cualtamb6n muestra las d1rCCC10ntS y to. comemdos de lo< bytes eo toJ'IIIJlo betadccimal

    Mu) prontO eSWi rrabaJando en forma1o bexadecnml Tenaa ~n mente que el ruimcro beudecunill que s1gue mmediiiJ.mcrUe a r es el 10 beudmal. que c:~ el valor decimlll 16. Veamos a contmuaca6n alguno~ c)l!mplos scnclllos de arnmtuca hcx~detimal

  • El procMador

    A

    s - l> -

    D

    F + I 10

    F -+ F -

    IF.

    10 ... JO

    40

    7

    Note tamb1en que cl 40 ~uckcimal c, 1gualal &I d1mal el 100 llrudccuml es el 256 dtcunal y cl 1.000 IIC"Jtadcclmal cs cl4,096 dectrnal

    En un progsama para 111d1car un mimero bcxadccimnl, sc escnbe una w inmediatameme despub del nlimcro, asi 2511 = 37 decimal Por COII\'CJICi6n, un mlmero bcudcclmal scmprc cmp1e1.1 con un dig11o 0 a 9. 1.\1 que debe cod1flcar 88H. como 088H En e.te hbro mdiCllllO$ un valor lle~ildccimal coo Ia palabr~ "hex" o una "II" de~ut~ del numero (como en 4C he\ o 4CII); un valor bmario con Ia palabra "bmarw o una a a contmua~16n del nwnero (como 01001100 bmano o 010011008), y un ~alor dccrmal samplememe por un numero tcomo 761 Sc e~ceptuin los casos en que Ia base cs obvaa por el comcxto.

    ~n el aptodice A sc cxplica oomo con, en II Jlllmcros hcudccimale~ a dcc1mal , > viCcvcrsa

    C60ICO ASCil Para uruformar 11 rcpresentacl6n de cltiCteres. los fabncanteS de miCrocomput

  • 8 lnt10duc:ci6n aJ hardware de Ia PC C.PI1UIO 1

    110286. Este proc:esador puedc COrrcr miS raprdo que lex IDtCriOru y dUCCCIOIIar ha.~a 16 mrlloncs de: bytes. Puede correr en modo real o en modo protegrdo pnra multirareas.

    110386. Este procesador uene regrstrO$ de 32 bit! y un bU! de datos de J2 brts. y pucde drrecctonar hasta cuatro mil millone> de byt~ en memona Pul'de correr en modo rnl o en modo proreJrdo para mulmareu

    80486. Este procesaclor lambien Ilene rcgurros de n bits y un bus de datos de 32 brts (aunque algunos clone~ t1cncn un bU! de datos de 16 bits) y esu! discnado para mCJOrar cl dcscm pcilo Puede corrcr en modo real o en modo protcgido para muluweas

    l'cntium (o PS). Este procesador uene registrO> de: 32 brts un bU! de d;uos de: 64 bits) pul'de CJCCUillr mis de una tllSiruccl6n por crclo de reiOJ (Intel adopr6 cl nombre "Penuum" porquc, a dlfercmcra de IO> mimeros, los nombres pucden rencr derecbos resel'\ idos.)

    Unldud de ejccuci6n y unldnd de intufn del bU! H proce>ador sc dr\ 1de en dos umdadcs 16gicu una umdad de CJCCUCt6n ( EU) )' unn unldad de mterru del bus (BIU). como sc tlustra en Ia liaura I 2 El papcl de Ia EU es eJutar lnstruc:cro-~. m1cntras que Ia BIU envia mstruccroncs y datos a Ia EU La EU comrene una urndad amme lll-IO~IC3 CALU). una un1dad de control (CU) y varros reg!Stros Estos elementos c)CC11t.1lllll> truccrones y operacrones antrneucas y 16gtas

    La funcr6n nhb rmponantc de Ia BIU cs mancJar Ia umdad de control del bus. los reg1~1ros de SCJmcntos) Ia cola de rnstruc:cr~ La BIU controla los bust> que transfiercn los datos a Ia f.U. a Ia rncmona y a los duposiii\'OS de entr3dJ/salidll extcmos. micntras que los regLStros ~ SCJmCntos controlin el dtrcccrOIUmaento de memona

    [U UnoCtM 0t ~ w DIOI'I ' IW ~ Clit ...,.,_,_. M '

    "" I

    "' ... . ....

    CM I C\ o.ti

    "' ...

    .,

    ..

    ..

    AO.Uu.-.,.,.ICO'Idlgllca

    --------

    "' cu..._

    ------.... -~

    --- '- "'"' .. _ .. ll'tlt\IOIIIGf!M

    I I

    ' ' I I I I I I

    ' I I

    I I l ! I

    I ~

    I I

    Cclntrol .... llfOQt M\1

    cs

    DS

    " u

    - I-......... ... ....

    '

    ' e... ..

    ) tfiiCII u cc a ,..

    .

    -

    Figura ll Umdad de eJCCUCI6n > un1dad d~ onterln cld but

    -----~----~----,---------------

  • Memooa 111toma 9

    Otra funci6n de b BtU cs pmn111r el accc~ a WtrucCJOocs Ya que lis wtrucc10~ de un progranu en ejccuct6n sc encucnlraD en Ia mcmana, Ia BtU debe xccsar tllSIIUIXIOOCS de~ Ia memona ) colocarlas en Ia cola d~ mstruc(lants Pucsto que cl tanw'lo de csta cob ~ de -4 ~ 3! b)ICS, de~ndtcndo del procesador, Ia Btl cs capu de adclanlar$C y bustrucc100CS hsw para scr eJCCUI.:ida;

    La t;U y Ia BtU trabajan en paralclo, 11 b1cn Ia BIU sc manuenc: un p;l>O adelantc La l nollfic~ a In 81 U clllindo ncccstla IICccso a los da!~ en memoria o a un diSPCJ3111\ o de 1:./S Tomhtcn, In EU soUcna inmucctones de maquma de Ia cola de tnstruccJOnc:s de Ia DIU La m\trutc10n que sc cncucntra ndelnnte de In cola cs Ia IICtunlmcote OJtcutnblc, y mtentrn~ In FU es1~ ocupada cJecuumdo una umrucci6n. Ia BIU busca 01ra en Ia memoria. Esta bli5ljucda se traslapa con Ia CJCCucin ante$ de mte1ar Ia stgUicme. El Peru1um y pro.;csadore-~tcnorcs tiC!lCn wu ~ria del>/~ (O diiiJI) que I~ ~nrutc c:orrcr vanas ~IOOCS en paralclo

    \l t"\ IORI A I"Tt.Rl'A u mtcrocomput~ po> dos upos de me mora mtcma -Mc>ria dt acusoakatono (RAMI) mtnwna dt sola /~aura (ROM) 1..0 b)tcs en mc:mona sc numcran en forma con!>C\:UIIVi, 101 ctmdo con 00, de modo que elida locali

  • 10 lnlroducoon al hardware de Ia PC Captlulo 1

    RA~1 . Un programador em preocupado pnnctpal1001tc con Ia RAM. que Stria meJOr lla mada memoria de lcctura cscritura" La RAM sc dispone como una "hoJa de trabaJo" pan al111011:=ttnto temporal )' CJtcUCtoo de: pfOl!raiTils

    Ya qot cl contcrudo de Ia RAM q: pierdc cuando sc apaga Ia computadora, debe re-.cJVar almnccnatlllcDio cxtemo para guardar prograrnas y datos Si cuando enclendc Ia compuladora ttenc tn.crudo un disco Oc~tbh: con DOS o un dtiCO duro n\Sial.clo. el proccdumcnto de arranque en R0\1 ruga el ~COMMA 'D COM en RAM. Dcsputs se le pldc a COMMAND COM realu.1rliCC100Cl. comocargarunprogramadc un disco a Ia RAM Puestoqueel COMMAND COM ocupa una pcqucltt pane: de RAM. ~ambien c~"te c

  • SegmentO$ y dlrecctonemlento 11

    Un scgmmto en modo I'CIJ pucde kr de hasa 6-IK Se pucdc tenu ~Jqwer numcro de '\Cg memos; p3ra darecc10nar un segmrmo en parucular basta camtuar Ia dirccca6n en cl rcgmro del seemcnto .apropaado WIre$ SCgmetUO!\ pnncapalcs SOil lOS ~106 de C'Odt~O. de daJOS) de bpda

    Se11m ent o de cOdigo ll ugmtmo dt c(jdigo cCSl contlcnc las anstruccaoncs de m.lquaM que \011 cJecutada< Por lo com WI. Ia pnmcra IDStl'\k:ct6n cJecutablc cta en cl ma~IO del ~gmcmo. y el sastcnu opera! a\ o enla1.a a csa localidad para lnx:1ar Ia CJCCUCJOn del programa. Como su nomine l.lld~a. cl rcgiMru del CS dm:cc1ona el M:emcmo de c6digo. Si '"area de c6!hgo rcquerc m.l~ de MK. su programa

    p~~cde nccesnar delimr mil de un segrncnto de c6 posteriorc:s. In> rc:gJSitOs FS > GS. que uencn usos espcc1.thn~

    Como ya dJJtmos. un sc&mento mJCta en un llmte de parrafo, que e~ una dJrcccu)n por lu comun davtsble entre el 16 damal, o 10 he:~~ Suponga que un scgmcnto de datos meta en Ia localdnd de memoria ~SFOII Ya que en este} todOJ I

  • 12 lnlroduc:co6n at hardware de Ia PC Capilulo 1

    0\'spbwlmitntos de "tgm~ntos En un progroma, todas Ia.~ locahdades de memuria est4n referlda.!l a una dir~co6n Jmclal de segmento. La dis~ancia en by1es desdc Ia dorccci6n drl stgmemo se drfom: como el d~spla;.omunto (offset). Un desplaz.tmocmo de do$ bytes ( 16 bitS) puedeestar en cl rango deOOOOII hasta FFFFH, o bocn, desde cero hasta65.535. Asl, el pnmer byte del segmemo de c:Odigo tiene un desplaw miemo 00. cl segundo byte uene un desplal.1moe.nto 0 I, etc .. ba.~IA et desplazamoento 6S.S:JS Para refcrir cualquier dlrecct6n dt rncmona en un segmcnto, et procc~dor combina Ia direcct6n del stgmento en un rcgistro de :.egmcnco con un Ylllor de desplazamiemo.

    En el ejemplo stguoente, el regutro OS c:onuene Ia direcco6n de segmento del segmenco de datos en 045FIOI hexadrcunal y una instruect6n bacc rerercncta a una loeahdad con un dcsplaza mtento de 003211 bytes dcntro del segrnento de datos.

    " Jxj I I

    dlftt6n de JrJn1C:Nl~ ().ISR)H d16bh llm01

  • Reg~Stros 13

    Oinlonaml~nto 803861486'586. En modo lUI. biOS prornadotcl manqan el dn:c caorgm~eoto de fortiUI muy parcc1cb a como to haec un 8086 En modo prottg111o. los proce'-'llorn unhr.m 48 bus para d dU"tcctanam~ento. lo que pc:rmile dlrcctiOOO. de ~gmento ~ h~ta cuatro miltmllones de bytes. Los regtstros de ~gmcnto de 16 bus actuan como selcccumadore~ para el acceso a dircccione~ de segmento ~ 32 b11s de Ia me mona y ~ra agregar c,te valor 1 un des pia u.m1en10 de dtrccc16n de 32 bus.

    REGISTRO

    Re&UU

  • 14 lolrodUCCIOn aJ hardware de Ja PC Cap11u1o 1

    Reglslro dr opuntador de iJJSlruttiooes El regimo apumador de iostruinnes (rP) de 16 bis cnntiene el dcsplaumiento de direcci6n de Ia siguientc instrucci6n que sc CJuta El IP est! uoc:lado con cl regutro CS en el scnlldo de que el lP mdica latnslruccilln actual de.ntro del scgmemo de cOdtgo que sc esta eJecutando actualmemc. Por to comUn. usted no refwre el regmro lP en un programa. pero, para probar un programa, s1 puede cumbiar su valor por medio del programa DEBUG del DOS. Los procesadorcs 80386 y postcriorcs uenen un IP ~mpliado de 32 b1ts. llamado EIP.

    En cl cjemplo siguiente. el rc~istro CS cootlcnc 25A~(O)H y el IP romiene 41211. Para cnconrrar la sigu~ente lnstrucc16n que sen! tjteutada, el procesadnr combina Ills dircioncs en cl CS y cl IP

    Scgmento de duecei6n en el rc:&istro CS Despla7.am1cnto de direeci6n en el rcgtstro IP: Dircccl6n de Ia sigucntc iostrucci6n:

    R~

  • Reg1stros 15

    I'Cil 0

  • 10 lnlroducol6n al hardware de Ia PC C&pitulo 1

    R~ro St. El regisuo wdice fuentc de 16 bats es rcquendo por algunas open.caooes con de una Dper1Ct6o arumeua

    DF (dlrt'Ccl6n). Deslgna Ia direcci6n hac18 Ia t7quierda o bru:ta Ia dercclta para mover o compa.ra.r cadenas de carac~tres

    IF (inltiTUpdOn). lndtca que una mtemspeiOn utema, como Ia entrada dcsde el tedado. sea procesada o tgnorada.

    Tf' (trampa). Pernute Ia operaci6n del procesador en modo de un paso. Los progr~ ~. como DEBUG. KtJvan nt.a b;indera de manera que usted pueda avanur en Ia cJecuciOD de una sola tnstrucct6n a un ucmpo, para exam.tnar el efecto de esa mstrucCJ6n sobre los regt5110S y Ia memon.a.

    SF (slgno). Con1lene el 5lgno re~ultanlt de una operaci6n anun4!tica (0 ~ posmvo y I negatl\'0)

    ZF (CU'O). Indica el rcsuhado de un.t operaei6n anun4!ltca o de comp3r11Ci6n (0 resul tJdo difereme de cero y I ~ resultado tgual a cero).

    AF ((I(IIITtO auxillar). Contim: un ac:arKO CJUtmo del bu 3 en un d.tto de odJo bats. p:~ra an~ cspccwizacb

    PF (purldad). Indica pandad par o tmpar de una operliC16n en datos de ocho bats de bajo orden (nlis 1 Ia derccM).

    CF (IICSn'tO). Cooucne et aarrco de orden mis alto (mis a Ia czquicrda) del> pun de una opero1C16n ant~uca; wnbtcn lleva el comenido dellilumo bu en una operatiOn de cornmtento o de rot.ae i6n .

    Las ~ras cstAn en el regtstro de banderas en las stgultnlcs pos~eiones:

    'illal de 1'01 IS 14 ll 1: II 10 9 I 7 6 S 4 l 2 I 0

    BonckB llll!oloiITislzii"IIPIIc

  • Puntos clave 17

    w baodem m.ts tmporunte\ p;ua Ia programxl6n en cnwnblador son 0 , S, Z y C, para oper..:tonc$ de tomparacl6o y arumtucas. y 0 para operacaooc\ de eadeM~ de eanctcn:s los proccadores 80286 y postcriore\ ucnen algunas banderas usadll.\ p;~ra prop() de datos y un bu de pandad. DIM. byu:s adyaccnlb eompn:nden una palabra. y cuarro b)1 llllyaa:ntes. una palabra doblc

    El valor de K es igual a 210, 0 1,024 bytes. El form3to heudecimal cs una nOtaCi6n abn:~iada para n:pn:scntar grupos de cuatro bus.

    los clfguos heudecun.tles ().9 y AF n:prcsenan los mimcros bmarios desde OOO'l hasu 1111

    u represcntact6n de datos de caracteres es reah1.ado en el formato ASCII El coraz6n de Ia PC cs cl mtcroprocesador El proccsador almacen.1 datos numeriC()) en

    palabras de me mona en sccuo:ncia i~cn.t de b) tcs l..ol dos llpos de mcmorut JOn ROM y RAM Un programa en lenguajt ensamblador eonsi"e en uno o mb segmentos un scgmcnto de Ia

    ptla para mantener las direcctoncs de regreso, un segmento de datos para dermic !reu de datos y de trabajo y un segmento de c6dlgo para tnstrucctones CJttUt.tblcs. Las locahdode' en un scgmento soo CXJ!fCsad.u como un deJplazamtento n:latt\O a Ia dlrecctOil llllCt.1l del

    ~grnento Los regtstros de CS, OS y SS permuen el dtrtCCIOnamtcnto de los segmeotos de c6dtgo.

    datos y de Ia ptla , n:specthamente El regtsUO IP conuene Ia dtreccJ6n de dcsplv.amlcnlo de Ia \tgweote 11Ulrucct6n que eo

    CJtcUlada Los n:gistros de apuntador SP y BP estin 110e1ados con el n:gimo SS y permuen al ~tstcma

    accesar datos en el scgmento de Ia pill . Los regtstrOS de prop6si!O general AX. BX ex ) ox son los caballos de ~lalla del SI~Cma

    El tilumo b)te 1 Ia llQUJCrda es Ia pam "ah.1", y el tlhtmo b)1e a Ia derecha cs Ia parte ~Ja El AX (acumulador pnncipal) se cmplu para entradaJsaiJda y para Ia ma}or pane de Ia aru.mttU. El BX (regtstro base) puedc scr utado como un Iodice en dtrecclonamiento C\ tcodulo El CX es cooocido como el rcgiSiro contador y el OX como cl n:giSiro de dato\

    l..ol n:gtStros Sl y 01 csW! dtSpomblcs p;ua duecciooamlcnto eJ.lcnchdo y p;ua sumas ) rcstas Estos n:JISiros wnb~ sc ,......iWI para algunas Optl'ICIODCS eon~ de canctcres

  • 18 lntroduccl6n aJ hardware de ta PC Capitulo 1

    El reglstro de buxkras indica el estado aerual de Ia ctomputadora y los resultados de Ia ejec:uclon de las instruccioncs.

    PREGUNTAS

    11. Decermlllt II eonfi&utKo611 bu~ana en hoi$ de los sr&UICI1II:I< rll1rnc:rMr (a) 6: (b) 14. (c) 22; (d) 18: (c) 30. 12. Sumc los stgulentes namuos binarios:

    (1) 00010101 (b) 00111101 tXXlOIIUI 00101010

    (c) 00011101 00000011

    (d) 01010111 00111101

    13. Halle cl cornplcmento 1 dos de I~ stgu~

  • ,

    CAPITULO 2

    Requerimientos de software de Ia PC

    OBJETIVO

    Explicar el ambicme general de software para Ia PC.

    INTRODUCCJON En es1e capitulo desc:nbamos el amb1tn1e de sof1ware de Ia PC' las funciones del DOS y sus componen1es pnnclpales. Examinamos cl proceso de am.nquc (c6mo es que el sislema sc: au1ocarga cuando usled encicnde su compuladora) y consideramos c6mo cl sis1cma carga un proarama para ejccutarlo, c6mo uulil.a Ia ptla y c6mo una insuuc:cl6n en el scamen1o de c6dlao darecciona da1os en el scgmemo de da1os.

    El capitulo sc compltta con Ia uplieaci6n bisaca del sof1wm y hardware de Ia PC y nos permne COillliiWlr coo el capflulo 3, en doode arcamos pr01f1111W clave en Ia memona y los CJCCIIWDOS paso a paso.

    CARACTERiSTICAS DEL SISTEMA OPERATIVO

    El DOS cs un sis1ema operatlvo que proporciona acceso aeneral e independienlc de los dis-posiuvos a los recursos de Ia compuladora. Los disposhlvos que permite mcluycn 1cclados, paOla lias y unidades de disco. Por "independeoc~a de disposativos debe entender que no es preclso diri&irse especlfiCamellte a los disposnivos, ya que el DOS y sus controladoru de disposmvos pueden manejar las operxiOOCS a ruvel de disposmvo.

    19

  • 20 Requenmtentos de software de Ia PC Capitulo 2

    En1re las runclones del DOS que nos conciemen en este libro. est4n las sigutentes: Admm/SiracuJn dt archh'OS. El DOS manuene los direetonos y ardlivos en los discos de

    siStema los programas crun y acruali1.an archivos. pero el DOS ueoe Ia responsabilid3d de admmistrar sus ubicaciooes en el disco.

    Enrrodalsollda (EIS). l.os program.as soltcilllll datos de entrada al DOS o ent~gan inrormaci6n ill DOS por medio de interrupciones. El DOS rclcva al programador de codilicar a nivcl de EJS

    Corgo dt programm. Un USUMto o programa SOlicita 11 ejccuci6o de un programa: cl DOS mancja los pasos necesarios para tener acceso al programa desde el disco. c:olocarlo en Ia memoria e miciallz.arlo para 5U CJCCUC16o

    Adminwraci6n d~ Ia mmwria. Cuando el DOS carga un program a para su ejecuci6n. asigna suficicme espac1o rn memoria para el c6dJgo del programa y sus datos. Los programa5 pueden proce~r druos demro de su area de memoria. ltbcrar memoria que oo oeccsiten y solitnar memoria adicional

    Mantjo dt inrurupciont.s. El DOS pcrmite a los usuarios instalar prograrnas restderues en memoria que sc: adbieren al 5istema de mtl!rrupciones para realwlr rUDCioncs especiales.

    Organilad6n del DOS

    1.os Ires componcmes prmcipales del DOS son lO.SYS. MSDOS.SYS y COMMAND COM El IO.SYS reahza las funciones de inieiali:zaci6n en el momento del arranque y tambibl

    contJCnt 1mponantes funciones de EIS ) conrroladores de d!sposiuvos que d~n el ~ne de EIS bl!SICO en el BIOS de ROM Este componcrue est.i aii!UICCnado en disco como un arth1vo de sistema oculto yes conocido tomo IBMBIO.COM en el PCOOS.

    El MSDOS.SYS ae1tla como el nUc:leo {ktmtl) del DOS y se ocupa de Ia administration de archivos. de memoria y de entrada/salida. E.\te componente e5ul almacenado en dJSCO como un archivo de sistema yen el PC-DOS se conocc como lBMDOS.COM.

    COMMAND COMes un procesador de comandos o sht/1 que actua como Ia int.:rfaz entrt el usuarlo y el SIStema operattvo. Mu~tra Ia indicaci6n del DOS. monitorea el teclado y proce~ los coma.ndos del usuano. como borrado de un atdl1vo o earga de un programa para su eJecud6n.

    EL PROCF.SO DE ARRANQIJE Enceoder Ia computadora provoca una "trucializaci6n" (algunos le llaman arranquc en frio"). El procesador introduce un rstado de restauracion. hmpia todas lr.s localidades de memoria (es decir. col001 cero en todu elias). realiu una verlficaci6n de paridad de Ia memoria y asigna al reglstro CS Ia dircCCt6n del segmeoto FFFF[OJH y a! reglslfO lP el desplawniento cero. Por tanto. IJl pnmera l0Struccl6o a CJtcUWSC esul eo Ia dJttcCi6n foiiiilldll por lA pan:ja CS:IP. que es IFFFOH, Ia cuaJ es el punto de entrada al BIOS eo ROM.

    La rUJina de BIOS que inicia en FFFFOH verifica los direrentes pucnos para ldentincarlos e micialiu los duposmvos que esl4n aonc:ctados a Ia computadora. Despues el BIOS esmblece dos ireas de d.1tos:

    I . Una tabla dt smictos dt mJurupci6n. que micia en memoria baJa en Ia l001lldad 0 ) contiene las direceionts de las mterrupcioncs que ocurrcn

    2. Un drta dtdalos de BIOS que inicb en Ia localidad 40(0], que estJ esrredlamente relaclO!lllda con los dtspositivos conectados.

  • l

    Programa urgador del ststema

    U OI': r----Paz t e t r anal t or i o del COMMAND ~ {program. que ae e atln e jecutando pueden oorr~rlal

    -oiiiponliiie. para uio'd.:'pn:;jraii&.i'' ..... . . ---- ----..... ,. ________ _

    Part e redente del CONMAUD CO~ f raai dt d .anera pera.nentet

    - ...... krchlvoe do al t ea IO.sYS y MSDOS.SYS ----- . ... ..

    Tabl de a.erv1cioa de 1nt.errupc.lonea OK '---

    21

    A contwuaci6n cl BIOS de~crmma s1 est! prcsentc: un dbco que comenga IO> archivos de SIStema del DOS y, m caso de que asi sea. acccsa cl Cllrgador de arranquc dcsdc cse diSCo Estc programa enrga los archi~os de sistema IO.SYS ) MSDOS.SYS desde el disco hacin Ia memoria y transficrc cl conlrol al punto de cntrrula del IO.SYS. el cual comlenc los comroladorcs de dispositivos y otro c6digo cspecifico del hardware. El IO.SYS se rcubica e1 m1smo en memoria y rransficrc cl control nl MSDOS.SYS. l.lst.e m6dulo 1otc1alwa las tablas mtcmas del DOS y Ia porcr6n del DOS de Ia lllbla de mterrupcrones. Tambic!n lee el archJVo CONFJG.SYS y CJtt:Dill sw comandos. Finalmcme. cl MSDOS.SYS pasa cl control al COMMAND COM. cl cual procesa el arclu'o A UTOEXEC .BAT, mucstra $U mdicaci6n y monitorca las tntrndas didas ~ tltcclado.

    En eSIC pun to, Ia memoria convenclonal hasta los ~K aparea: como se muesrra en Ia tigurn 2 1. Por mt:dlo de un admmistrador de roomona, pane del DOS plledc ser reubicado en Ia mt moria alta.

    lNTERFAZ OOS..DIO El BIOS conrieoe un conjunto de rutinns en ROM para dar soponc a los dispositivos. El BIOS prucba e iniclaliza los dispositivos conectados y proporctona los sc:rvictos que son usados para Ia lccrurn y cscritura desde los disposilivos. Una tarca del DOSes hacer tmerfaz con cl BIOS cuando

    e~t~ta una ncccltdad de accesar estas facdldades. Cuando un progrn!Thl u.~wtrio solicita un senicio del DOS, Este podrla transfcnr Ia sollchud

    at BIOS, cl cual a su vez accesa el disposuivo sollcilndo. Sin embargo, algunas veccs un programa haec Ia pc1ici6n dircct:t.mcme al BIOS, espcclficameme para servicios deltcclado y de Ia pantalla. Yen otrn oeasiones -aunque cs raro y no rccomcndablc un programa pucde pasar por alto tanto al DOS como aJ BIOS para llCCeSilC un disposuivo directamemc La ligura 22 muestra cstas trayectorias altmJa.S.

    PROGRAl\fA CARGADOR DEL STSTEMA

    El DOS da sopone ados tipos de programas CJc~:utables: .COM y .EXE. Un programo .COM consta de un segmonto que comiene rodigo, datos y Ia pila. Si sc ncccsira uo pequetlo programa de ulilerfa o un programa rcridcntc en memona (un programa que es instalado permancntemcnte y eslll disponible mient.ras OICOS programas csttn eJecurandosc), sc cscribc un programa . COM. Un programa .EXE consta de scgmcmoo de c6digo, claws y de Ia pita separados yes el m~todo u.sado porIa mayorla de los prograrnas scnos. Este libro usa ambos tipos de progrliJilaS.

  • 22 Requenmoenlos de aohwa1e de Ia PC Caplluto 2

    Prograeaa de uauar loa I

    DOs

    II OS I

    Kar6ware/D1apoa1t1voa I f1cura 2-2 lmcrfu DOSBIOS

    Cuando usted le solicn:a a! DOS cargar un prognuna EXE dcsde el diS

  • 23

    I I I ~ SP

    d,......,

  • 24 Requenmoentos de software de Ia PC CApitulo 2

    S. POP AX rcgJUa Ia palabra que sc encucntra en Ia ptla. en doodt apu01a cl SP. y II cnL1 a1 reawro AXe mcremcou el SP en:! (a !IIH) E1 AX ahora conllell

  • 25

    Oa~amos que 11 U1Struec16n que maca~ en 04B03H copaa los contenido~ de un byte en mtmona al n:g~ro AL; el byte tsl4 en el dc~plaz.anuento 0012H en el c:gmtnro OS: Dtsphuamacnto del scgmento. 01rtcci6n del dato

    4BIOH +0012H

    -IB21H lfaaamos que IJiocahdad 0482m comenaa 18H Entonccs el proce1ador elluae cl 1811 deb localidad O-IB21H y Ia copta en rl rcg1stro AL. como se muctn en Ia figur1 2-3

    CIWldo el procesador busca clda b)1e de Ia IDStrucciOn, ancrcmtnra el n:ghtro IP de manen que cste contenga el de~plazamiemo (0016Hl para Ia saguttnlc IOltruccJOn El prcx:csador ahora est;! prq>a111do para CJecutar Ia s1gwentc U\Struect6o, Ia cuai5C den a otra ''e' de Ia dtrecc16n del !ltgmcmo en el CS (0-IAFOIII m4\ el dcsplozamicoto actual en cliP (0016HI-dc hccho. O-IB06H

    Una mstrucclon tambacn puede accesar nas de un byte a Ia vez. Por ejcmplo. \upongamQS que una mstrua:10n es almaceoar los conten.OO. del rectstro AX (0567tll en dO$ byu: adyacentes en el scgmemo de datos cmpe7.ando co el desplaz.amteruo 001211 B c6dago smb6hco C\ MOV 100121.AX El operando 10012) entre corchetes (un ~>perador de indJCc) mchQ ~ locahdold de mtmona para disUnguulo del s1mple nlimero 12. FJ proo:c.ador carp los do> bytes en cl AX en secucncta ill\'ersa de bytes como

    Contcrudo de los b) tcs: Dcsplaramtnto en cl scgmt'llto de dntos

    67 OS I

    0012 0013 Otra lnstruccii~D, MOV AX.(0012), puede recuperar subse

  • 26 RequenmleniO$ de software de Ia PC Capitulo 2

    REFERENCIAS A MEMORIA Y A REGlSTROS Una caracteristica para obtencr claridad en las ins1111celones es el uso de nombres de operandos, de nombres entre corcbetes y de mimcros. En los ejemplos siguientes. WOROA esli dcfinida como una palabra (dos bytes) en memoria:

    0 1Defino una palabra

    ...

    MOV AX, BX t MUeVI! lo eontenidoe de BX a AX

    MOV AX, WORDA ; MUeve loa eontenldoa de ~'ORDA a AX

    MOV AX, 2S t Mueve el valor 2S a AX

    AX, lBXl ;Mueve loa eontenidoe de la loeeli dad eepee1Cicad& por BX

    Los corcbetes en cl cuarto ejemplo defincn un operodor de Indict que significa: utillzar una direcci6n de desplazamiento en el BX (combinada con Ia dirt:CC16n del segmento en el OS, como DS:BX) para localizar una palabra en memoria y mover su contenido aJAX. Comparese el efccto de esta inslrliCCi6n con aquella del primer ejcmplo, Ia cual slmplemente mueve los comcnidos del BX al AX.

    PUNTOSCLAVE Los tres componerues principalcs del DOS son IO.SYS. MSDOS.SYS y COMMANO.COM. AI cnccnder Ia compmadora se provoca una iniciallzaci6n, Lambien !lamadll arranque en

    frio . Bl procesador introduce un estado de restauracl6n, llmpla todas las localidades de memoria ponlendolas en ccro, reallza una verificaci6n de Ia paridad de Ia memoria y establcce los registros CS e lP al punto de entrada del BIOS en ROM.

    Los dos tipos de programas del DOS son .COM y .E.XE. C\Uindo u.~ted solicita a! DOS cargar un programa .EXE para su ejecuci6n. el DOS construye

    un PSP de 256 bytes ( lOOH} en un limite de ptrrafo eo memoria y a1macena cl programa inrnediauunente despu~s del PSP. Despu& carga Ia dlrecci6n d.el PSP en los reglstros OS y I!S, carga Ja direeci6n del segmento de c6digo en el CS, cstablecc el IP at desplazamicnto de Ia primera instrucci6n en cl segmento de c6digo, carga Ia direcci6n de Ia pila en el SS y establece eltamaJio de Ia pila. Finalmente, el cargador transfiere el control al programa por CJCCUtarse.

    Bl prop6sito de Ia plla es proporcionar un espaeio para el almacenamicnto temporal de direeciones y datos. Cada dato en Ia pila es una palabra (dos bytes).

    El DOS define Ia pila para un programa .COM, mientras que para un programa .EXE se debe defUlir de manera expllcha Ia pila.

    Cuando el procesador busca eada byte de una inslrliCCi6n, Incrementa el registrO IP de manera que cliP contenga el despla:z.amiemo para Ia siguiente insliUCCi6n.

  • Preguntas 27

    PREGUNTAS

    2-1. I.CU!Iu son las cineo funckm

  • CAPITULO 3

    Ejecuci6n de instrucciones

    OBJETIVO

    Dar a conocer c6mo imroducir y CJtCutar programas en Ia me-mona.

    I.NTROOUCC16 N

    28

    Este capitulo uuhz.a un programa dc:l DOS Uama.Jo DEBUG, que pennuc vtsuahz.ar Ia memoria, tntrodudr programas en ellA y rastrcar &u cjecuet6n. E.l texto cxplica cOmo sc puedc:n introducir esto~ programas directamcntc en Ia memoria en un scgmcnto de: eOdigo y da una up1lcact6n de ca!Ll paso CJecutado Algunos lectures pucden tcncr acceso a dc:puradores sofisticados. como CODE VIEW o TurboOebuager; sin embargo, usarcD\01 DEBUG, ya que es scnclllo de usar y est! duponible en cualquter pane.

    Eo los eJe:tt:ICIOS tntctales sc lll$flCCCIOIWI los contemdos de treu paruculares de Ia memo-na El pruner programa de CJCrnplo l.ltlbza dat01o "inmccltatos" defmidos dentro de las mstrucoo-nes para cargar datos en regtsuos y reahur arttllll!uu. El segundo programa de eJCmplo uttliz.a datos dc:fmidoi de fomu scparada 1:11 cl scgme:nto de datos El rastre:o de c6mo sc eJCCUtan estas tnstruectones da una idea de Ia operaci6o de UDa computadora )' Ia f\llltl6n de los regasuos.

    Ustcd pucdc empcw sin cl conocimtento previa de un lenguaje cnsamblador o de uno de progranaci6n Todo lo que necesha es una IBM PC o compatible y Ull dtsco que contenga el st~tema operauvo DOS No obstante. asum1mos que esta famtlianz.ado con cl arranquc de Ia computadora, IJWICJO de diSCOS flexiblcs y Ia scleccl6n de dt~ y archtvos

  • El programa DEBUG

    U . I' ROGRAMA DEBUG F.l DOS vtene con un programa llamado DEBUG que t$ utilizado para problr y dcpurar progra mas CJCCUUiblcs Una ar~tlemuca de DEBUG cs que dcsplqa todo cl cOdtgo del progr&~m )' lOS datos en formato hexadectmal, y cualqulcr dato que s.c mtrodwca a Ia mcmona tamb~en tslll en formato hexadccun.tl. Otra caracterfsuca cs que DEBUG permile CJCCUtar un programa eo nwdo d~ paso una I/o (un paso a Ia ~r..), de IIWICr.l que se puecb 'er cl efccto de cJda UISirucct6o ~rc Ins localidades de memona y los rc:gtstros.

    COnlllndOS de DEBlG DEBUG proporc1ona un con junto de comandos que pennucn realizar difcremcs operactones lit i lcs. Los comandos que nos tntc~ en c:ste mornc01o 100 los sigutenteS

    A Ensnmblar tnstrucctones umoohca~ ) pasarlu a c6c:hgo de ~quina. D Mostru el eontemdo de un .irea de memoria E lwoductr datos tn memoria. tmciancJo en una locahdJd c:specfftca. G Coner el progl'lma C:JC:Cutablc: que se c:ncuentra en memona N 'lombru un programa. P Procedcr 0 CJCCUW liD C:OOJUDtO de 111$UUCCIOI1ts rcUcionad.u . Q Sahr de Ia SCStl\n con DEBUG. R Mostrar cl contcnido de uno o mas regJSiros T Rastrcu ~ eJCCUCtOn de una tnstrucci6n U Dc:sensamblar" c6dtgo de maquma y p.u

  • 30 EjeCUCIOn de IOSIIUCCIOne$ Capltulo 3

    Di race i6n I xx:xx ra t 0 :IOl XX'"'tOl Xi(, JC . ....... . ..

    XlO0

  • 31

    Btl. IS 14 Blrwio: 0 1

    13 12 II 0 0 0

    10 I

    9 0

    8 0

    7 0

    6 I

    A conunuaei6n csti una eJtpliaci6n del c6digo hcudectmal

    BITS OISPOSmvO

    s 4 3 I 0 0

    2 0

    15.14 Numcro de pont ~ralelos ~ tmpresora conectade c I (bmano 011 11 9 Numero de pucnos sc:rwes coneclado$ 2 (btnano 010)

    I I

    0 I

    7.6 Numero de dtsposlliVOS de dtsco Oe:uble 2 (donde 00 I. 01 .. 2, 10 3 )' I I 4)

    S.4 Modo tmelal de video 10 (donde OJ 40 x 2S eo color. 10 p 80 x 12 2S en COlO!')' I I 80 X 12 2S monocromitlco)

    I 1 coprocesador nutenuuco est! presc:me 0 I untdad de dtsco Oe~tble em presente

    Los bytes no cuados no son usados. Puede permanecer eo DEBUO para el Stguienlc cjerctcio o tnlroduzca Q para sallr.

    Vtrif~CKi6n dd tamailo cit Ia memoria El stgutentc paso es uamtnar Ia canttdad de memona que el DOS "ptmsa que ucnc: insiJ.IadJ Dcpeodiendo del modelo de $11 computadora, el valor puede cstar basado en 1111erruptorcs mte"* y puede tnd!car menos memoria de Ia que rcalmence est.i lnstalada El valor est! en cl trea de dacos del BIOS en las localidades 413H y 414H. Tcclee to sigutcnle exac:tamcncc como to \C;

    EJ dcsphcgue debe empear con at go como csco:

    0 4 OOlJ ""

    Los pnmeros dos bytes mostrados en el desplazanuento 001311 son los kilobytes de memona en tv:xadcctmal. con los bytes en sccuencta mversa. Aquf cstin dos ejemplos que mueman hexadc cinules en orden merso. heudccunalcs corregtdos y el equtvalcoce en decimal

    HEXADECIMAL INVRSO 0002 8002

    HEXADECIMAL CORREGIDO 0200 0280

    Vuincac.l6n dtl nllmero de serlc y dt Ia noc.a de dereehos resenados

    OECIMAL(IQ Sl2 6-10

    El rulmcro de sene de Ia colllpiiUdora esa alojado en el ROM de BIOS en Ia localidad FEOOOH. Para verlo. ceclee

    u pamalla debe mos1r111 un mlmero de sene de siece dfg11os sc:autdo, en miqutnas convenctona le$, de una nota de derechos reservlldos. El numero de sc:rie 1e mucscra como mimcro hexadecunal, mte:ntru que Ia nota de derccbos reservados es m4s rcconocablc en el ma ASCII a Ia derecha. La

  • 32 EjocuciOn de lnstruccwnes Capitulo 3

    noiJI de dcrechos rCSilrvados pucde continuar pasando sobre lo que ya esul mostrado: para vcrla. bluta coo pmioruu D, scguida de Ia tctla Enter.

    Vtri0eae16n dt Ill recha en d ROM 810

    La fecba dt fabricaci6n de su ROM BIOS micia en I~ localidad PFFF511, reg~Strada como mml ddlaa. Para vcrla, tcclec

    D PfPP 5 (y presion Etlt.er)

    El coooctmtemo de csta fccba pucde ser uul para dctenrunar Ia edad y modelo de Ia computadorn

    Verilicad6n de Ill idenHOcaci6n del moddo lnmethatamentc despues de Ia fccha de fabncaci6n dtl ROM BIOS cstli Ia tdcotilicact6n del modclo en Ia localidad FFFFEH, o FFPF.E. Aquf csl4n varias idcntifieacioncs de modclos:

    C601GO

    F8 F9 FA FB FC FE PF

    MODEL O

    PS/2 modclos 70 y 80 PC convenible PSI2 modelo 30 PCXT (1986) PCAT (1984). PCXT modelo 2$6. PS/2 modclos 50 y 60. ctc~era PC-XT (1982), portAtil (1982) Pnmera IBM PC

    Ahora que ya s;~be c6mo usar el comando para dcspleg.ar informacion, puede ver el comcm do de cualqutcr loc:ahdad de almaccnamteruo Tambi~n puede av= por Ia memoria coo s61o prcslonar Ddt forma rcpetida: DEBUG mu.eJitra de manera succsiva ocho Uneas. cotttinuaodo a. partir de Ia ultima operac:ion D.

    Cui111do haya tcrminado de curioscar, introdw.ca Q (por Qult). para salir de DEBUG o continue con cl CJercicto sigmeme.

    EJEMPLO I DE LENGUAJE DE MAQUINA: DATOS INMEDlA TOS Ahor3 w;cmos DEBUG para tntroducir el pnrnero de dos programas directamcnte en memoria y rastrcar su e,JCCuct6n. Ambos programas tlustran un sencillo c6digo de lengW'lJC de rmquina y c6mo aparccc en el almacenamirnto principal y los efectos de su ejecuci6n Para este prop6sito. empe T.al't'mos con cl comando DEBUG E (Enter, introducir). Sen muy cuidlldoso en su uso. ya que iotroducir datos incorrcctos o en una locahdad equivocada puede causar resultados impl't'd

  • qemplo I de lengu&Je de m6quma. datos IMledoetos 33

    ~nc~a mel$a de b) tc:). MOV es Ia ansuucca6o. c:t regmro AXes el pnmc:r operando y el \'llor anmtdiaao 0 123H es c:l ~gundo operendo.

    INSTRUCC16N DE C6DIGO MAOUtNA SIMB6UCO EXPLICAC16N

    atHOl MOV All, Ol:U MOVer al valor OlllH a AX O~l~OO ADO AX , OOl~ Su.ar el valor OOl~H a AX . aaoa M,... IX , All KoVar el conttnldo de AX a IX 0)01 AllO IX ,All S....r cl eontenlclo de AX a IX IIICII Ml1V ex,IX Mover el contenldo cl~ IX a ex liCI SUI CX,All tar el oantenldo de All del de ex liCO SUIAX,All aoatar AX de AX ll>P1ar Alll 90 NOP No oporaot6n tno hacer nada),

    Puede babc:r DO{aOO que las ans11'UCC10nes de miquma puedc:n tc:ncr uno. dos o ues bytes de looguud. E1 primer byte es Ia operaca6n real y cual6Quaera ooos bytes, si esW! prescntes, 501\ operandos: referc:ncia a un valor anmcdlilo, uu regiStro o ur1a loulidad de memona La eJe

  • 34

    - CS:lOO ae 2) CS o106 18 08 -II CSolOC n ca R

    AXOOOO BXOOOO DSalCl BS21CI 21Cl 0100 8Ul01 T

    ~0121 &~0000 DS21Cl BS21Cl 21Clo0103 052500 T

    ~0148 BXOOOO DS11C1 BS21Cl 21Cl:Ol05 8908 T

    ~OHS 9XOU8 DS2lCI BSUCl 21C1 0101 0108 T

    ~0148 BX0290 DS21C1 BSo2lC1 21C1:0101\ e&CB T

    AX0148 BX0290 DSllCl E.SHC1 21Cl OlOC 2BC8 T

    AX0148 BX0290 DS21Cl BS21Cl 21Cl:Ol08 28CO T

    IIXOOOO BX02'0 DS21Cl ES-21Cl llCl : OllO '0

    Ejecuctcln de inslrucctOnes Capitulo 3

    01 OS 25 00 03 OS 89 C8 28 co 90

    CXOOOO DXOOOO SPPFBB BPOOOO SlOOOO 0!0000 SS21Cl CS21Cl IPOlOO NV UP B.I Pt. II~ NA PO NC

    NOV AX,OU3

    CXOOOO DXOOOO SPFPBS SS21Cl CS21C1 IPOl03

    ADD AX, 0025

    CXOOOO OXOOOO SP.FF&B SS21C1 CS21Cl IPOl06

    NOV ax.AX

    CXOOOO DXOOOO SPFFB.B SS21Cl CS21Cl IPOIOB

    ADD ax. AX

    CXOOOO DXOOOO SPPF&E SS21Cl CS.21Cl IPOlOI\

    I'IOV ex. ax

    CX0290 DXOOOO SPPPS SS21Cl CS21Cl IPOlOC

    SUB CX, IIX

    CX0148 ox-oooo SP.PPBB SS21Cl CS21Cl lPOlOE

    SUB A.X,AX

    BPOOOO SlOOOO DIOOOO NV liP &I Pt. HZ NA PO NC

    BPOOOO 510000 010000 NV UP 81 Pt. HZ HA P& IIC

    BPOOOO SlOOOO 010000 NV UP Bl PL NZ Nil PB NC

    BPOooo sx-oooo OIOooo NV UP 81 Pt. liZ 1\C PR NC

    BPOOOO SlOOOO 010000 NV UP 1 Pt. liZ 1\C PI! tiC

    BP-DOOO 510000 0!0000 NV UP B I Pt. NZ 1\C pe m:

    CXOl48 DXOOOO SPFPB BPOOOO SIOOOO 010000 SS21Cl CS21Cl lPOliO NV UP Bl PL ZR Nil PS NC

    IIOP

    Figura 3-1 IU.streo de los instruttlo- de miquina

    Ej~ucl6n de lnstrucclones de prognuna Ahora es algo senciUo ejccutar la.s insU'Uccione.s anteriores, una a Ia vez.. La figura 3- 1 mw:s1ra todos los pasos, incluyendo los comandos E. Su pantalla debe most.rar resul~ados scmejame.s cuaodo !ntrod= cada comando DEBUG. AI mismo tiempo, puede ver el coou:nido de los regist:ros de&pues de cada mstruccioo. Los comandos DEBUG que nos coociernen o.qul son R (reg.istro) y T(uace, rarueo).

    Para ver los contenidos iniciales de los regis1ros y las banderas. tectee cl comando R, scgutdo por Ia 1ecla En1er. DEBUG muesua cl c{)ntenido de los regiStros en formato hexadecimal, por ejemplo,

    1\XoOOOG BXOOOO .

  • EJomplo I de longuaja do rn4quma: datos ~nmed~alos 35

    A causa de lu dtftre:ncw emre lu dunnw \trtiOOCS del DOS. el controtdo de IIIUJIOS recJ~ros en su pans.alla pueden dtfcnr de los que muestra en Lt ficura 3-1 El reJISU'O IP muestr1 IPOIOO, mdtcando que Ia cjecuc16n de insuucc:toncs lniC .. IOOH b)'tes ~putt del!DJCIO del segmento de t6dtgo Cpor esto se 100 E CS: 100 para tntroduetr el mloto del proan.~m).

    El repstro de bandcru m 11 figura 3-1 muestn Lt sigulcnte configu111ti6n

    Esta confiJuract6n StSIIlfica DO desbordamtcmo. direcci6n bacta ambl (o hac .. Ia derecha), tnte rrupci6n hllbilil1oda, slgno posltlvo, DO ceto, DO ae&rreo auxlllar, paridad impar y DO acamo.

    respecuvam~c. En cste mommto, mn&WIO de cstOt vllores es tmponantc p:ara nMOito$. El coi!Wido R tamb!Cn mucstra en el ~planmJtnlO OIOOil Lt pnmera IIISUUI:CiOn que es

    ejecutada. Note que en Ia ligura el regutrO CS conume 21 C I Ya que cs seguro que su duecCIOn de segmcnlo CS. dificra de llta, Ia mostraremos como xxu para las tnsiJUCctones:

    XX> 0100 112101 HOY AX,Ol

    xxxx lllllla el tnac:to del segmcnto de c6dJO como xx.u101 El valor ~uxOtOO S~Jmf~ta desplanrse 10011 bytes des~s de Ia dtrecci6n del seamenw CS uxxiOJ

    882301 es el c6d!JO de rmlquina que usted introdujo en CS: 100. MOV AX.OI23 es la tllSitUCCJ6n stmb6hca enensamblador para el c:6dJJO de m.iquina Esta

    tiiSitliCCi6o stgmlica, en realtdad, monr el \llor liUIICdJIIO 0123H at rtJtSirO AX DEBUG hll "dcsensamblado"las instrucctooes de m.iqutna de mllllCra que ustcd pueda mterpreurl:u de manera mu f~cll. En caphulos posteriorcs. codlfiCllti cxcluswamcntc msJtUCCtooes en c6dao ensamblador

    En esu: mommto. Ia instrucxa6n MOV DO bl sldo eJUt..U Para esc propOs!to. teclee T (ITICC, rutrcar) y prestooe Ia tecta Enter. El c6dtJO de rmlqutna es 88 (nlO\er aJ regutro AX) segutdo por 2301 Ll opcraci6n mucve el 23 a 11 mhad baja (AL) del regittro AX y cl 01 a Ia muad alta ( AH) del reatstro AX

    All AI. AX I Ol 12) I

    DEBUG muestra los resultados en los regtstros. El concemdo del rcgJStro IP es OIOJH que lndtca b ubtcact6n del deiplanrmento en el Jegii1CillO de e6digo dt Ia ~IJU!elllC tnstrucc6n que

  • Ejocuca6n de lnstruccaone Capatulo 3

    Ahora tee: lee de manera SUCt\'1 comandos T para pasar por cl resto de las trutruccionc:~ . La tnstriJCca6o ADD wma el conte:tudo de AX a BX. dando 0290H en BX Despub cl programa mueve (copll) el contcrudo de BX a CX. rcsta AX de CX y resta AX de el mismo Despub de: Ia llhnna opcnci6n. Ia bandera de ccro se cambim de NZ (no cero) a ZR (cero). para andiear que cl ruultado de: Ia ullima opc:raci6n fue ccro (rc:star AX de ~I ml5mo lo deJa en ccro)

    St quaere ~olvc:r a CJC:Cutar cs~ ansuucc;aonc:s. trucic el regiStro IP con IOOH y rasttte 01ra ve1. lntrodU1ca R IP. antroduz.ca 100 y despues R y el nllmero requerido de comandos T. tod~ ~auido~ por Ia tecta Enter.

    C6mo mostn1r d contenldo de memoria

    Aunque tamba6n puedc prc:saonar 1' para Ia lllllma instrucci6n, NOP (no operacn6n). cst.s tnslruC ca6n oo reaiiJ.a cosa alauna En Iugar de eso. para vcr cl programa en lcnguaJC de mAqwn~ en cl seameruo de cOchgo. requtere un desphegue como

    D C:S o100

    Ahora DEBUG mucstra 16 byles (32 dlgllos heudecimall:)) de ~los CD cada linea A Ia derech.a l:)ti Ia reprcsentac.On ASCII (sics ampnrruble) de cada byte (parc:Ja de dlgnos he:\adc:c:unalcs) En cl caso de cOd ago de: nulquana. Ia rcpresentaci6n ASCH carece de sigmlicado y pucde ser agnora da Sc:c:ctones postenores cstudtan con mayor detalle el I ado correcto del despliegue.

    La prtlll(ra linea del desphegue ll11Cla en el desplazamaento IOOH del segmemo de c6dago) representa el contemdo de las locahdades CS 100 basta CS I OF. La segunda linea representa el contcrudo de CSI tO hast a CS: II F Aunque au programa termma ~n CS 110. cl comando 0 en rorma a.t.uom.itica muc~tra ocho l!nu.s desde CS IOO hasra CS: 170.

    La figuu 3-2 mul:)tra los rcsulu.dos del comando 0 CS 100 Esperemos que el c6d1go de m.iquma d~ CS: 100 ham 110 sea a~mico at que mueme su pamalla. los bytes que sigucn pueden conrener algo. Tamba~n. Ia figura (3 I) muestrn que los regtstros OS. ES. SS y CS codo\ conuenen Ia masma direc:ca6n Esto cs porquc DEBUG 1111ta cl hca de programa como un segmen to . con c6daao y dalos (sa cJusten) CD cl masmo segmcruo. aunque ustcd dc:be mantcnerlos sep.1ra dos

    lmrodut.C& Q (Quu) par11 termanar In sesa6n con DEBUG, o conunue con cl cJerclcao \1 gutente.

    DCSo100 21Cl o0100 aa 23 01 OS 25 00 18 DIOl Dl 81 CB 21 Cl 21 CO 21

  • E~ II de lenoUII/0 do m6qu11111 datot dofndos 37

    C6mo corregir una tntruda St usted tlllrOd.uce uo valor err6nco en el segmento de uenen prop6sctos espcctficos.

    i':JFI\1PLO II DE LENGUAJF DE MAQUlNA: DATOS OFFINIDOS El CJCrnplo lllllcrior U$6 \'llores mmed1At05 delintdO> dtrectamente en las instrucetone~ MOV y ADD Ahora ilustraremO> un CJCmplo parectdo que define los valores de 105 datos (o con,tM~tes) 012~H y 02SH como elementeKpandos dtnlro del programa El programa es para acu~oar lu locahdade) de memona que conuenen estos valofb

    AI avanzar en escc ejcmplo debe hacerse una Idea de c6mo una computadora accc>a IO> dottos por medio de chreeccones en el rcguuo OS y dareec10nes de dcsplaamaento El cJcmplo define los saguaentes clement~ de datos y concenados

    DESPLAZAMtENTO OS COHTENIDO HEXADECIMAL UOIH 0200K

    0202K

    020tH

    0206H

    250011

    OOOOH

    2A2A2AII

    Recucrdc que un dt&IIO hc'adectmal ocupa medto bycc, ul que, por C:JCmplo, 2311 (cl pnmcr byte) cs almacenado en cl desplaamaento 0200H del Area de datos y 0 I H (el segundo byte) es a! mace nado en cl dtspla18maento 020 I H. A continuact6n es(jn las anstrucciones en lc:nguaje de m6qulna que procesan estos

  • 38 Ejeouci6n de instn.JCCoones Capitulo 3

    el htmallo de Jo~ datos, Ia direcciOn de uansrercncia de datos (de o lulcia un rcgis1ro) y de Ia rcfcrcncia a datos mmcdiatos o en memorill.

    Como lnlroducJr ln.~rucclone.~ de programa Otra vez. puede u1ilizar DEBUG para introdUiltr cl progro.ma y obscrvar su ejecuci6n. Primero. u1illce los comaJJdos E (Emer) para defirur los da1os. u11ciBndo en 05:0200:

    I! DS '0200 23 01 2S oo 00 oo lprea>on" Enter) E OS 0206 2A , ll 2ll [p r u ione Ent e r )

    Ahora wilice el eomando E para teclear l3ii lnstrucciones, otra vc1. inician

  • E OS 200 ll 01 lS 00 00 00 I Dl1lO' lA lA 2A I ClltlOO AI 00 02 Ol O' 02 02 CS1101 A1 04 02 to 0 DS tlOO,lot 21C1 10200 2) 01 25 00 00 00 2A lA2A D Cll1lOO,lOA 21Cl 0100 A1 00 02 Ol 0' 02 02 A104 02 tO

    R AXOOOO IXOOOO DS21Cl lS2lC1 21C1 0100 AIOD02 T

    CXOOOO DXOOOO SPr~ SS21CI CS21CI IP0100

    liOV AX, (0200)

    AXOl2) IXOOOO CXOODO DXOOOO SPrrll DI21C1 IS21Cl SS21Cl CS21Cl IPOlO) llCl 010) 030,0202 ADD AX, (0202) T

    AXOl41 IXOOOO DSll~l ti21Cl 21Ct i0107 A1e402 T

    AXOl41 IXOOOO DS21C1 IS21Cl 21C1 t OlOA '0 0 080200,0201 21Cl tDODO 2l 01 0

    CXODOD DXODOO SPrrEI SSllCl C$21Cl IP0107

    MOV [0204I,AI

    CXOOOO DXoOOOO IPrrll SS21Cl C821Cl IPOIOA

    IIOP

    2S 00 4t 01 2A 2A 2A

    .. ' ...

    IPOOOO SloOOOO 010000 IIV UP II PL h'% IIA PO IIC

    DSI0200012)

    IPOOOO $10000 010000 11V UP El Pt. liZ IIA PO lit'

    O$i0202o002S

    IPOOOO SloOOOO 010000 11V UP II PL II% IIA I'll Iff:

    1111:02040000

    IPOOOO SIOODO 010000 11V OP El PL liZ lUI I'll lit:

    t , R.

    39

    un valor tnmcdtalo. ( Un valor mmecha1o pan lll01itr 0200H al rcgtslt'O AX aparec:eria ee>mo MOV AX.0200.)

    Ahora 1eclcc el comando T (u.:e, rastrear). Ll tnStrucct6o \10V AX.l02001 mucve el con lcntdo de Ia palabra en el desplanmJCntO 0200H al rc&ISiro AX El comenido ts 230 I H, el cual ap.trcce en orden tn\'el'SO en el AX como Ol23H .

    ln&r~ ouo c:omaodo T para pi'O\ocu Ia ejec:uct6n de Ia SJauieruc insuucci6n. ADD Ll operact6n swna el conterudo de Ia palabra de memor.a en OS con desplazamiemo 0202 al rcgtStro AX El re\ulrado en el AX altora es Ia suma de 012311 y 002SH. o 014811

    La S'iUJCnlc irutrucct6n cs MOV [020-lJ,AX Teclee un comando T pan c)CCUWla. La tnslru

  • 40

    camn aparece en memona. Ellado dcrccho s6lo ayudo a locnhar los carllttcrcs de mattcra ma\ ~n..tlla Ad>~ena que c$1~ V11klre\ llcudeclmalC\ wn rcp~tado$ o Ia derccb.t de Ia pmJll por \U. equt\'alen~ ASCII Asi BH genera WI Stmbolo de mimero (I)~ !SH genera un $1mbolo de por ttcnto

  • Uso de Ia 1nstrucc16n INT 41

    1 comando U (Unassmtble, desensamblar) El collWido IJ de DEBUG mucstra el cOdJgo de maquma para $US IIUIIUCCI()IIe) en ltnglllje eosamblador Puedc usnr este comando para ndcarle a DEBUG IllS locahdades de Ia pnmcra y Uluma lnstru.::cionc:s que quiere ver. en esle caso. IOOH y 106H Teclec

    U 100,10' l&nterl

    La panalla de: be mosuar columnas para Ia locahdad, d c6chgo de maquma y cl cochgo ~mb61ico:

    IOCXX:0100 1102!>

    XXX>< : 0 1 Ol II)) 2 ICXXX : 0 11)4 C008 IOCXX:0106 9)

    Ahora rastrec Ia ejecuci6n del programa; el c6digo de maquina es lo que en reahdad se CJCCUU Emp1ece por mtr0duc1r R para desplegar los regiSiros y Ia pruner instrucc100, y ~~ T de maoera suces1va para rastrear las instrucci~ subseeuentes. Cunndo llegue a NOP de Ia locali dad 106H, concinlit con cl eJerccio SI&Ucnte o p~one Q para salir de Ia ejecuel6n.

    Abora puede ver c6mo mgresar un prosrama en cualquiera de los dol., lengUIJC de m4qwna o lenguaJC cnsamblador. Stn embargo, DEBUG est4 proyectado para lo que 'u nombrc mplka -depurar (debug) programas y Ia mayoria de los C5fuerl'os que tnvolutratin el uso de lcngti2Je ensamblador con,eoconal no est'n a~tadc con DEBUG

    USO DE I.A INSTRUCC16N INT Los tres eJemplos ~igutentes mucstra.n c6mo acceur c:l DOS y el BIOS para env1ar mformKJ6n acerca del SIStema. Para este fin, se uhli1.a Ia instrucci6n tNT (intcrrupci6n), Ia cual we de su progra rna, mgresa una ruJmn del DOS ode BIOS. ruliz.lla funcl6n sohcu.ada y regresa a \U programa En Iugar de avanzar un solo paso, usaremos el com.mdo P (Proceed) de DEBUG para ejecutar toda Ia rutina de mterrupcl6n

    C6mo obtener el numero de versi6n del DOS Ex1sten ocastones en que un programa Ot'CC5JII uber cui! es Ia versi6n del DOS que Ia computa-dora es!J cornendo. )a que cada vers16n ciene dspombles nuevas funciones. La lnstruccu>n que entrega el numero de: \'Crti6n e5 INT 21 H del DOS. funci6o 30H; esto es, eargue 30H en cl reg1suo AH y solicne INT 21H .-Para probat esto, mgrcse cl comando A 100 de DEBUG y c)taS instrucc1ones en ensamblador:

    ..H. JO

    21

    l.,.guiclo por un Inter cUctonal l

  • 42 EjecUCIOn de tnSti\IC:Ciooes cap~tuto 3

    Para mt~ar Ia eJecuct6n de lu 11\SIJ\ICttones. pnmero mgrcsc R para \er los rcgiStros y T para riUU'car MOV. En Iugar de rastrcar Ia Jn.suuccl6n INT. mgrcse P (Proceed. proceder) para ejccu tar toda Ia ruttna del DOS. El proctso termina con Ia in.strutti6n NOP Ahora puedc ver en el Al. el nllmero pnnctp;al de Ia versi6o del DOS, como X en DOS X.20, yen cl AH cl ntlmero sceun darto de Ia ~erst6n. como 14H (o 20) en DOS X 20

    PrcsiOIIC Q para sahr 0 l'OIIIInllc COD cl tjc:rtiCIO SICUICDie ()' rcstablaca cl IP a 100) C6mo obtentr Ia tccba at~ual AIIOra que yn sabe c6mo accesnr el nt!mcro de vcrst6n del DOS. puede utili7ar un enfoque SCJO( jante para accesnr Ia fecha actual l.a tn.strucci6n para este prop6stto es INT 21H del DOS. funct6n 2AII Una vtl ms. mgruc cl comando A 100 de DEBUG y despu6 el programa 1tguxn tc de cn.samblador

    1'01 Nl,U.

    1111' 2

    lngresc R para mostru los rcguuos y R para ejecutar MOV. Despub angn:sc: P para procedcr con Ia rutma de tnterrupct6n. Ia operact6n sc dcuene en Ia tllStroeci6n NOP l.os rcgtstros muesttan esta informac:.6n

    Al.: CX: DH. Dl..

    ora de Ia scmnna (dondc 0 Domtngo) Allo (en be~tadeci!IW, por l'Jcmplo, 07COH 1997) Mes lOI a 12) Ofadel mes(OI a31)

    Ptesione Q para sahr o contlnt!e con el CJercicio sigutenle.

    C6mo dtlt nnlnar d tamai\o de Ia munorla En un l'JCrtiCtO anll'nor, venfte61as loahchdes 413H y 414H para saber Ia canttdad de mcmona (RAM) que ucnc su compuUidora E1 BIOS wnb~ proporc100a una rouna de tnll'rrupct6n, INT 12H. que enttega el wnafto de Ia mcmoria. logresc el comaodo A 100 de DEBUG y despub estu IIIW'IJCCIODl'$ ~

    n:r 12

    IIJP

    logn:sc: R para mostrar los rcgiSUOi y Ia pnmcra IDSIJUCc:t6n l.a IDSUUCCt6n, INT 12H, transfterc el control a una ruuna en el BIOS que cnttega el wnaJio de Ia mernona al AX Prestone T ()' Enter) de forma rcpeuda para ~cr c:ada mstrocc:t6o del BIOS que sc CJCCUta (il, estamos VIOiando una regia comra el rutteo de una mterrupc:i6o, pcro esta vez todo funclona bien)

    l.as ln.stroeciones rcales en su BIOS pueden dlrcrir de ~sw. depcndiendo de Ia versi6n inslalada (101 c:omcotarios a Ia derecha soo del awor)

  • C6mo guaniat un pcogmma dt1de DEBUG

    STI PUSK OS 10()\1 AX , 0040

    KaY DS,AX

    KaY AX, IOOIJI

    POP DS

    Dn

    , btablece l tnternopct6n

    CuardA lo cil roccl4n del OS en l a pola

    >Sf:gNnto 40 IOI K

    ....

    , d&.-pl111 :-a.tento OOUN

    J ... taura 1 d&recct6n en el DS

    S& sobrev&ve a esu avenrura con cl BIOS. cl AX condene el wnallo de Ia ~.en IK by~ Ellllumo comando T aale del BIOS y reg;esa a DEBUG. La lnsuu:ci6n mostrada es el NOP que 11.\ted ingres6. Presione Q para aalir o conumie con el cjcrc&ciO slguiente (y res1.11blc1.C11 cliP a 100).

    CO~ tO CUARDAR UN PROCRMtA DESDE DEBUG U&~ puede uuhzar DEBUG pm& &umlar un programa en duc:o b&JO cb tii'CWUWICW

    1. Para leer cl prOJrama, mod&fiCirlo y despub &uard.l.rlo, S&&a estos pasos Lu cl progama b&JO su nombrc DEBUG n nombredearchivo Uulicc cl comando D para vcr cl programa en lcnguaJC de !Mqwna y 11.\C E para m&reSIIr

    IO$ cambiO$. Utihce el comando W (Write, esc:nbir) p3ra gnbar cl program revllado.

    2. User DEBUG para escnb&r un pequcllo prnvama en len&UIJC de m.iquma que ahora quicra &umlar: siga CSIO. pasos SO!il:ltc cl proga1111 DEBUG Utiha: A (ensamblar) y E (ingresu) para crcar el programa Pooga nombre aJ pro~n~ma N nombredcarchivo.COM. La e tcnsi6n del prognma debe

    ser .COM. (V~ase el caphulo 7 para dclallcs de los tn:hlvos .COM.) Ya que 561o 11.\tcd ube d6nde tcrmlna en realldad el programa, ind&quc a DEBUG cl

    wnallo del progn.ma en bytes. Enmine cstc CJcmplo

    ''"'"" 1-.

    _,.:Cl OC AIIO AI., BL

    """" Puesto que Ia llhima&nstrucc&6o, NOP. es de un byte. ct wnallo del prOJmma es de 7 bytes, desdc IOOH basta 106H. ineiUAive.

    Primero uuhce R BX para mostru el BX. e inarese 0 para limpiarlo. Ahora use R CX para mostru el re&Jstro CX. DEBUG responde con CX 0000 (valor

    ccro) y usted contcsta eon cl tanUflo del prognma, 7 Grabe el proarama revisado: W (EoterJ .

  • Ejealei6n de muuc:c- Capitulo 3

    Ll ru6n puallmpllr el BX cs porque Ia IOIIJltucl del pnliTI.IM esli en II parrJI BX ex. aunquoe el ex es aclecll:ldo pan nuestros pr~nos

    DEBUG mucstra un mensaJe wnuna nnnn bytes (Se escribtcron nnnn bytes). Sa cl mlmc ro cs cero, se ha cqutvoeado ll.l uuroducir Ia longauld del prognuna; tntentelo otra vez . Tenga cuidado en cllllmallo del progruna, ya que Ia dluma ln.mucci6n pucdc ser mayor de uo byte.

    F.JEM.PLO DE LENCUAJE F.N~mLAOOR: EL OPERAOOR PTR Abora elWIIllltmos ocro provama que IDiroduce llaunu raractcrisuas nucvu En cstc eJtmplo. DIO\CIJIOS y sutnam01 dato. entrr lu localtcbcks de memona y los regmJU. Aqui CSLtn lu \IISII\ICCIOOC:S p;lrl CSte propOsllO;

    100 I'D( AX.IIlAI

    IOJ Alii M. IIICJ 107 AIXI AX,n

    1.0.\ '1/lN lllE ,AX

    ICII 101 lflR!I 1'1'11 112 I :

  • Preountu 45

    IIA Deline los \"a1orc:~ de b)te 14H y 23H DB tgntlica "delirur b)1e(s)") le penmte defimr d.lto~ que S\1$ rutrucctone\ (como Ia que ~1.6 en 100) e~t.tn re!ermctlllldo

    IIC II E y 120: Oefinen otrm valores de b)te paro1 u.w en el programn.

    Pora CJecuuu este programa. pnmero teclee A 100 [Enterl. y despu~s teclec cada irutrue-c.On simb611c.1 Cpero no Ia loc:ahdad) AI termmar, teclee un Enter adic1011al para ~llr del coman do A Empicce por mtroductr R para mostrar 10 reJiltr~ y Ia pnmera UlSirucctc\n, despues 101rest de ltWler.J sucestva co~ T Salga de Ia eJUCIOn Cti.JMn llegue a NOP en I Ill Tec1ec D 110 para mostrar los tonte!IJCI0 eunbtados de AX C233E)) de las loc:ahdadel IIEH IIFll 131:23), 120H 12111 (2$00) y 122H (30)

    I'UNTOS CLAVI::

    El programa DEBUG cs tltd para pn>b.tr y dc:purar programas escmos en lcngwJC de m.:tqutna y eo 1enguaJe eruamb1ador.

    DEBUG proporctOR.1 uo COOJUOIO de COIIWldo5 que pennuen rtalizar dtferentcs oper~e~ uulcs, como des;~lepr , mtrodiJCir y nutrear

    Como DEBI.iG no dmmgue entre letras mmtlsculu y mo~yusculas. pucde truroductr los eomandos de cualquter forma.

    DEBUG suponc que todo~ los nunu:ros est!n en fonnato helllldecimal Sl usted introduce un 'alor uxorrecto en e1 segmento de data5 o eo e1 segrncnto de ccllro AX; (bt .uaw el l

  • 46 EjeeuciOr~ de instrucciones Cepitulo 3

    34. Supooga que ha uuhudo DEBUG para introducor cl c:omando !oguoente:

    r. C$ Oil ~ 01 ~ ' 00 El valor 4S hexadec:om.al supue,lt

    Cllpltulo w una pilla.) (b) AI cjccuw tSle program.a, U5l

  • Otscns.lmble las 11151rucdclnes y raruee IU eJecuct6n lwl.a NOP y n:v~ el valor m tl BX lk~ de clkb lll>IFUCCIOO

    3-10. LCuil es el prop6sow de Ia oosU'ucco6n INT'

  • PARTE B - Fumlamentos de lenguaje ensamblador

    CAPITULO 4

    Requerimientos de lenguaje ensamblador

    OBJETIVO

    Cubnr lo5 requerinlll:ntos b:lsacos para codlficar un programa en lenguaJe eiUalllblador ) defimr los elementos de datos

    I!I.TRODI:CU6""

    48

    El Cllpuulo 3 mom6 c6mo usu DEBUG para 1eclear y CJCC:Utnr prugumas en lenguaJt de lllliqua na Sm duda ustcd !ue muy c:onscenle de Ia daficultad de llcsc1frar cl c6dago de m4quan.t. aun para un prograrna pequtflo ProiW!lementc nmgun prognma ~e todif~ea nus eo seno en lenguaJC de llliquwque los programu mb pequefos. Un nm:l amsalaodecod!faac:acln csel ru'el cnsamblador. en el que un proanunadDr uullz.a anstrUcc:aones simb61lcas en Iugar de anstrucc10nes de m~qutna y nombrcs descnpu~os para los elementos de dlll05 y para las localldJides de memona Uslcd escn be un programa en enumblador de .:uerdo coo un CODJUDIO eslnCto de reglas que despuCs uubu el prograrna Inductor de eOSimblador para coo,erur cl progmm en ennmb!adlado de un prograrna) las duuuvas para definar segrneotos y proccdamacnlos Tambacn cubrimos Ia organm1c16n general de un programa, anclu)endo Ia 1ructahuci6n yIn 1crmmaca6n de su CJcCuca6n. Por tlluruo, 1!1ltam05 los requasil05 para definar elementos de da1os

  • Comentanos en lenguaie ensamblador 49

    ' AMBLADORES V COMPILADORES Pnmcra tdentilicamos das clases de lengua)es de programad6.n; de alto ni"tl y de bojo mtl. Los programadores que ~nben en u.n lengua)t de alto nivel , como C y Pascal, eodifican CODlllndos poderosos. eada uno de los cualcs puede gencrnr muclw irutrueeiOIIC$ en lcnguaje de mquina. Por otro I ado. los program adores que escriben en un lcnguaje ensamblador de bajo nivel eodifican instrucciones simb6hcas. cada una de las cuales genera una mstrucet6n eo lengoa)e de m6quma A pcsar del becho de que codificar en un lengoaje de alto mvcl es mas productlvo. algunas vcntajas de codificar en lenguaje eosamblador son.

    Proporctona rms contrOl sobrc el manejo particular de los rcqucnmtentos de hardware. Genera m6dulos cjecutables m6s pequeftos y mis compaetos. Con mayor probabihdad ucnc u.na ejecuct6n rruls rnpkb.

    Una prnelica comlin es combinar los bener~tlos de ambos niveles de programaci6n: eodifi c.1r el grueso de u.n proyecw en un lenguajc de allo mvel y los m6dulos crlti'os (aquellos que provocan noUibles retardos) en lenguaje eosamblador.

    Stn imponar ellenguaje de programaci6n que utilice. de todos modos es u.n lenguaje simi lico que tieoe que traductrse a \IIIli forma que Ia computadora pueda ejecutar. Un lc:nguaje de aho nlvel utili7.a un tampiltulor para traducir el c6dtgo fucnte a lenguaJC de miquma (tecmcamcntc. c6digo ob)eto). Un le.nguaje de baJO nivel utillza un ~nsamblador para rcalilar Ia traduecton. Un programa mll11.tufor para ambos niveles, alto y bajo, complera el proceso al convcrtir el c6digo objeto en lcnguaje ejecutable de maquioa.

    COMF..NTAIUOS EN LENGUAJE ENSAMBLADOR El uso de comentarios a lo largo de un programa pucde mejorar su claridad, en especial en lenguaje ensamblador. donde el prop6slto de un con junto de instrueciooes eon rrccueocia no c:s claro. Un comentario cmpieza con punto y coma (;) y. en donde qulcra que lo eodrfique. el ensamblador supone que todos los earactercs a Ia derecha en esa lfoea son comcnWtos. Un comcn-Uino puede conrencr cualquier c:arncter tmprlmible. incluyendo cl espacio cn blanco.

    Uo comeotarto puede aparccer s61o en um lfnca o a contlnuaci6n de un11 ioslTUeci6n en Ia misma lloea, como lo muestran los dos eJemplos stguienJes:

    1 . ;Tod t 11n .. 11 un comentorio

    Ya que un comenUtrio aparecc s6lo en un listado de un programa fuente en ensamblador y no genera c6digo de rrulquina, pucde tncluir cualqulcr camidad de comentarios sin areetar el tamailo o Ia ejecuci6n del programa eosamblado. l!n este libro, las ioslTUCciunes cnsambladas est4.n en letras mayllsculas y los comentanos en letras mimisculas, s61o como convenci6n y para h.acer que los programas scan mas legibles. TW!ica.mcote, usrcd CSill en libenad de uw tetras maytlsculas o minusculas para las iostrueeioncs y comentarios.

  • so Requenmlenlos de 1engua)e -.mblador Caprtulo 4

    Otra manenr de proporclonar comenlarios es por mcdro deLl duectJ\111 COMMENT. que se estudra cn el capitulo 27

    Pi\LABRAS RESE'RVADAS Crenu palabm en lenauaJe cnsamblador est!n rcstnadas para sos prop6snos proptlo ba.JO condiCIOnes espectales. Por c.ttegorlas, las palabras reservldas ux.luyen

    mstnx.ciones, como MOV y ADD, que son operac:10nes que Ia eomputadora puedc cjecuw; dtrecU\IliS, como END o SEGMENT. que se emplean para proporcronar comandos al

    ens.amblador;

    operadores, como FAR y SIZE, que se uuhzan en cxpreslones: y

    slmbolos predefinidos, como @Data y @Model, que regresan rnformac:r6n a su programa.

    El uso de una palabra rcservada para un prop6stto eqwvoc:ldo provoc:a que cl ensamblldor gcotre un mensAJC de error. El apendlcc C muestra una lista de las palabras reservldas del lenguaJe c:nsamblldor.

    IDF.!'

  • 51

    el ensamblador nbc de rorma aucomiuca que AX y BX sc: ref~enm a los regutros. Sm embMgo, en una inscruccl6n como:

    MOY RIG SA VI. AX

    el cnsamblador puede recooocer el nombre REGSA VE s61o ai ae defme en aiJiin lupr del programa.

    ~STRUCCIONES Uo programa en lenguaje ensamblador conscrce en un CODJUnlo de tTUUICiados Los dos upos de enunccados 500'

    t. UISUUCCIOOCS, Ill como MOV y ADO. que el cnsamblador crwbw a c6cliJO OOJCIO; y 2. dcrecuvas, que anchcan aJ cnsamblador que reahce una accl6n espedfte:a, como dcfmir un

    elcmcnco de daco

    A conunuacl6n CJt4 el formaco acoeral de un cnunccado, en donde los corcbeces indican una entrada opcional:

    hdntHladarl opuac16n (operandola' I I e..-ntannl

    Un ideruiflcador (si cxisle), una operact6n y un operando (sc UISie) eslin scparados por aJ menos un cspac10 en blanco o un carllccer de cabulador. Exiscc un mhimo de 132 c.arac:tercs en una linea (Sil dcsde el MASM 6.0). aunquc Ia mayorfa de los programadores prelierc permane-cer en los 80 caracccrcs ya que es el numero mbimo que c:abc en Ia pmtalla A concinuacc6n se preae01a11 clos cjcmplos de enunciados IOENllFICAOOR Directi,. COUitl'

    lnatrucci6n

    OPERAC!Ofl Dl

    OPERAHDO 1

    AX ,O

    COMEHTAAIO ,~re, operaciOn, operando

    ,Op.rac16n. doa operandoa

    ldeoclf!Clldor, operaci6o y operando pucden empezar en cualqucer columna. Sin embargo, si de maoera consiSlcncc se inicia en Ia mlSma columna para csw encradas se bace un programa m4s lcgJblc. Tambtbl. Ia mayoria de los progl'lJIIIS cdnorcs proporciorwl maras de c.abulador cadi ocbo posiciooes para t'acdiW cl espaciam~eDto

    ldcntificador Como ya se c.xpllc6, el ctrmino nombrt sc aplia aJ nombre de un clcrnenco o dlrcctiva defmtda, mlencras que elc~rmino ttiqutto se apllca aJ nombre de una cnscrucct6n; usarcmos escos ctrminos de &bora en adelance.

    La optrnci6n, que debe aer codifccada, es eon mayor frecuenc:ca usada para Ia delinici6n de treas de datos y codlflcacc6n de ins!tUCc:tones. Para un elemcnco de datos, una operaci6n cal como DB o OW define un campo, &rea de crabajo o consWIIC. Para una inscrucci6o, una operacl6n como MOV o ADD end lea una acci6o a realcw.

  • f.l "~"'"""*' Cll n-1 pn>pooc.,.,. lat..-.- pori Ia opouciOo qu< 1duut~> u, m eu&lquler momenta IISicd ptiN: IMrhar esc c.opirulo como r~> cl< ....,.,.,.. m 11110 Unu Su lllftNIO ,...,., n

    El """""'cl< l...u por plpll puodo ,.,lit dad< 10 lwl.a 235. IIUCl>tR> quod ...,..,o c1< .......,.. por lulu dad< 60 IIMI IU Ll-cl< ua cnoiiiCUdo PACE COllA quod~ c.- PAGE 50.80

    SUf)Otlp que ol aolmcro cl< lltlcM pull PACit .. cl

  • , ..... Wl

    ... >Ltn de II plio, om qm

  • I'Uedt uuhur I'U8LIC y C'Or.tMO" en - 1a1p d prope&uo de -binor de loo1111 ~-- ..... mbl-- .... ""'- to woo.-.- ... ~ ..... ..,.,.,... """ClttOO, putde ...,.., Ia opcidll o c:odlfxar 'ONE

    npo - t.a -

  • .......

    , ....

    I:IClD del

    X>S

    -!>5 IIOIIIIMb 'll'fu qu< cl --IDDCIO d DlliDI>n: dd ..,..,......, de Ia ptJa - d ,.,...,., SS. y de.....,,. simalar..,., lot .. ,.,. opr:raodt moul'lldof Los opr:randas pocd BEOIN Esrc proccd..-o aluoua lot rcqu~siiGo .,.. ... ,de aucwaac>llll y de t.alo pan ., propusa EX. Lao doo reqa,..... para llliaahzar- ( 11 .. ,.., a1

  • I

    -TITIZ U , iU POU &at rvr.t\lu .J "" proeuu

    I l , 4 it~ Saauar:- 'AAA ITA.-3 ' ltt> ' , a IM'!:&.$0 l.aw:w. H.aA O.t ..

    II ll II

    " u 11 t 11 21 ,.

    I cx:;un . ., ...

    ~ .. l1"lf;U:Q

    CftWDNador que tqmr,.. uaaa c..- los rtJIMfOI de tejm(Ntl) ) t2) cpr d OS """ Ia dU'

  • -

    r

  • El ~.,., do ,.,,..., pan 1101.1 ocrmlnaclclft noruW do "" proarama pot k> comua n 0 (Clla ~ codifltlr dol MOV -~~~~ -..001- oe _..,.a Ia fOJuta I J

    L.t I-IIlo 401 del DOS ba a~~S~uulolo 1M opA. I LD8 y ~LDC CODIJSO COIIIknc 1M oNitliCCIO

  • I"''T lOH

    >CUtillo

    ~ ...........

    repro

    Oifatwaa "'*' .- WQJI, .,. lit

    ea...1o 11e c.vp"" pdo el diJCo al mcmoou pull"' cl\\11110Cioftrl MOV. IWod ucne qoe lnlcllllar cl rql"rv DS ~ ESI

    a cl upollllo S ~ d .............. , cciiU 1CJCCIIdtloo para l'fOil"'JJA OIII()OIOiriO fcslo cs, un pn>Jt~ma que 110 WAl caluado coo al&un ocro). El modclo TINY c,Mj dtallaodo para UtO w:lutlvo cit P"osra

  • - C0\1 , lot caaks toaw:o - - ldlJO } ptLo oi!JO qucpo """ de IIJ dlrcrn por omblcln de IUII>cJmclltOO (que UOI
  • S.\ti\1 LUllIrulo. cl onsamblodor ll\lDIIJI Jl>
  • Pucdc Ullf tOn lib
  • ! ) limuodao

    1 Ia prllll y tnulao 11lat, como

    o ASCII

    , .... I rO OR XOR y Tl ST

    \'a q.tt d ~ ..,..tcrl< IOdoo loo >alanoo ,..,nm~t~t.;ric:.,OOOI a brDano I) lao ~ m lwudec:lmall . .... def.-- de 11, c "" y 1100 bonano srncron cl ......... ,..., 00001100 biJ\lii'IO o OC hu, dcpcndtendo dc c:6tno >'ytc

    ('6mo ... ktras Dy B ati!Wl.....,cotno"'I)CC'IIadora de- oortiDdi&IIOO h booano, rcp

  • ~ do!flllh 1~ l'lytH

    "' nTn

    J !CliO UliJUA las clircclivn CIOChCDCiomles pnrqae Ill 1110 et ao;copudo dt IIWII:n cmnal ta ..... , ....... ~de 1a r.,..... 4 4 '*"""ciOQII ~" * la\ dinNB 'l"" dcf&DCU

    CHh "de ataltiu 1 ccunntts IWdJiat, wad ~ohjc1o r.earrAII a~ lr~nS.t, rl rml

    -0 - ,. 000~ JO ODtl '!l't 0014 ICQAI H I oooa , , 7J '' '' &&

    'I 'C :IC 41 tlf tiD ..,. n 14 u r:

    101r ,, 12 ~ ,~ ,. 0014 01 4A '1 ~ C) 4L

    ., 62 0) 40 &l ,,

    COJO eon HH

    "" 01

  • C:..pitulo 4

    I ..

    O...trvu .,.,. lo dellnlelOn de dotoo

    ~ .......... d a .. .. . . . a.."'th All .. .-....

    1>j