You are on page 1of 75

Tutorial de Ensamblador

Derechos Reservados UNIVERSIDAD DE GUADALAJARA Coordinacin General de Sistemas de Informacin.


DIRECTORIO Dr. V ctor !an"el Gon#$le# Romero Rector General de la Uni%ersidad de G"adala&ara Dr. !isael Gradilla Dam' Vicerrector a E&ec"ti%a ! en C. Jeffre' Ste%en (ern$nde# Rodr )"e# Coordinador General de Sistemas de Informacin In). !nico *rise+o Cort,s Res-onsa.le del ser%idor Gr$fico C"lt"ra ' Entretenimiento /")o 0,re# 0,re# A"tor del t"torial de Ensam.lador Ana !ar a 0era#a Ca-t"ra ' re%isin del te1to

Tutorial de lenguage Ensamblador

Tutorial de lenguage Ensamblador

Introduccin. El doc"mento 2"e est$ %is"ali#ando tiene la f"ncin -rimordial de introd"cirlo a la -ro)ramacin en len)"a&e Ensam.lador3 ' est$ -ensado en a2"ellas -ersonas 2"e n"nca 4an tra.a&ado con este len)"a&e ' -ro.a.lemente con nin)5n otro. El t"torial se enfoca com-letamente 4acia las com-"tadoras 2"e o-eran con -rocesadores de la familia 167 de Intel '3 considerando 2"e el ensam.lador .asa s" f"ncionamiento en los rec"rsos internos del -rocesador3 los e&em-los descritos no son com-ati.les con nin)"na otra ar2"itect"ra. Se estr"ct"r la informacin en forma de "nidades -ara -ermitir el f$cil acceso a cada "no de los t-icos ' facilitar el se)"imiento del t"torial. En la seccin introd"ctoria se mencionan al)"nos de los conce-tos elementales acerca de los sistemas de cm-"to as como del ensam.lador mismo3 ' contin"a con el t"torial -ro-iamente dic4o.

CONTENIDO: Descripcin bsica de un sistema de cmputo El porqu aprender len!ua"e ensamblador

#cercamiento al len!ua"e ensamblador. Esta -rimera -arte esta enfocada al conocimiento de al)"nas de las Caracter sticas de las com-"tadoras ' del ensam.lador. UNIDAD 89 Conce-tos .$sicos UNIDAD :9 0ro)ramacin en ensam.lador $as instrucciones del ensamblador. En esta se)"nda -arte se -rof"ndi#a "n -oco mas en la descri-cin de las instr"cciones del len)"a&e ensam.lador. UNIDAD ;9 Instr"cciones de o-eracin so.re datos UNIDAD <9 Instr"cciones l)icas ' aritm,ticas UNIDAD =9 Instr"cciones -ara control de -rocesos Interrupciones % mane"o de archivos. UNIDAD 79 Interr"-ciones UNIDAD >9 Introd"ccin al mane&o de arc4i%os Introduccin a las macros. UNIDAD 69 !acros ' -rocedimientos

Tutorial de lenguage Ensamblador


E"emplos En esta seccin se e1-onen al)"nos -ro)ramas de e&em-lo en los 2"e se "tili#an los elementos e1-licados en el t"torial. Des-le)ar "n mensa&e en -antalla Des-le)ar n5meros 4e1adecimales del 8= al ? O-eraciones .$sicas Directorio % biblio!ra&'a Comentarios % su!erencias

Descripcin bsica de un sistema de cmputo. Esta seccin tiene como finalidad dar "na .re%e rese+a de las -artes -rinci-ales de "n sistema de cm-"to a "n ni%el .$sico3 2"e -ermita al "s"ario "n ma'or entendimiento de los conce-tos 2"e se tratar$n a lo lar)o del t"torial. @ @ @ @ 0rocesador Central !emoria Central Unidades de Entrada ' Salida Unidades de !emoria A"1iliar

(istema de Cmputo. Le llamamos sistema de cm-"to a la confi)"racin com-leta de "na com-"tadora3 incl"'endo las "nidades -erif,ricas ' la -ro)ramacin de sistemas 2"e la 4acen "n a-arato 5til ' f"ncional -ara "n fin determinado. )rocesador Central. Esta -arte es conocida tam.i,n como "nidad central de -rocesamiento o UC0. formada a s" %e# -or la "nidad de control ' la "nidad aritm,tica ' l)ica. S"s f"nciones consisten en leer ' escri.ir contenidos de las celdas de memoria3 lle%ar ' traer datos entre celdas de memoria ' re)istros es-eciales ' decodificar ' e&ec"tar las instr"cciones de "n -ro)rama. El -rocesador c"enta con "na serie de celdas de memoria 2"e se "tili#an con m"c4a frec"encia ' 2"e3 -or ende3 forman -arte de la UC0. Estas celdas son conocidas con el nom.re de re)istros. Un -rocesador -"ede tener "na docena o dos de estos re)istros. La "nidad aritm,tica ' l)ica de la UC0 reali#a las o-eraciones relacionadas con los c$lc"los n"m,ricos ' sim.licos. T -icamente estas "nidades slo tienen ca-acidad de efect"ar o-eraciones m"' elementales como9 s"ma ' resta de dos n5meros de -"nto fi&o3 m"lti-licacin ' di%isin de -"nto fi&o3 mani-"lacin de .its de los re)istros ' com-aracin del contenido de dos re)istros.

Tutorial de lenguage Ensamblador


Las com-"tadoras -ersonales -"eden clasificarse -or lo 2"e se conoce como tama+o de -ala.ra3 esto es3 la cantidad de .its 2"e el -rocesador -"ede mane&ar a la %e#. *emoria Central. Es "n con&"nto de celdas Aact"almente fa.ricadas con semicond"ctoresB "sadas -ara -rocesos )enerales3 tales como la e&ec"cin de -ro)ramas ' el almacenamiento de informacin -ara las o-eraciones. Cada "na de las celdas -"ede contener "n %alor n"m,rico ' tienen la -ro-iedad de ser direcciona.les3 esto es3 2"e se -"eden distin)"ir "na de otra -or medio de "n n5mero 5nico o direccin -ara cada celda. El nom.re )en,rico de estas memorias es Random Access !emor' A!emoria de acceso aleatorioB o RA! -or s"s si)las en in)l,s. La -rinci-al des%enta&a de este ti-o de memoria es 2"e los circ"itos inte)rados -ierden la informacin 2"e tienen almacenada c"ando se interr"m-e la alimentacin el,ctrica. Esto lle% a la creacin de memorias c"'a informacin no se -ierda c"ando se a-a)a el sistema. Estas memorias reci.en el nom.re de Read Onl' !emor' A!emoria de solo lect"raB o RO!. +nidades de Entrada % (alida. 0ara 2"e "na com-"tadora nos sea 5til es necesario 2"e el -rocesador se com"ni2"e al e1terior -or medio de interfaces 2"e -ermiten la entrada ' la salida de datos del -rocesador ' la memoria. /aciendo "so de estas com"nicaciones es -osi.le introd"cir datos -ara s" -rocesamiento ' la -osterior %is"ali#acin de los datos 'a -rocesados. Al)"nas de las "nidades de entrada mas com"nes son teclados3 lectoras de tar&etas A'a en des"soB3 mo"se3 etc. Las "nidades de salida mas com"nes son las terminales de %ideo ' las im-resoras.

Unidades de !emoria A"1iliar. Como la memoria central de "na com-"tadora es costosa '3 considerando las a-licaciones act"ales3 m"' limitada3 s"r)e entonces la necesidad de crear sistemas de almacenamiento de informacin -r$cticos ' econmicos. Adem$s3 la memoria central -ierde s" contenido al a-a)arse la m$2"ina3 -or lo 2"e no es con%eniente "tili#arla -ara almacenamiento -ermanente de datos. Estos ' otros incon%enientes dan l")ar a la creacin de "nidades -erif,ricas de memoria 2"e reci.en el nom.re de memoria a"1iliar o sec"ndaria. De estas "nidades -erif,ricas las m$s com"nes son las cintas ' los discos ma)n,ticos. La informacin almacenada en estos medios ma)n,ticos reci.e el nom.re de arc4i%o. Un arc4i%o est$ formado -or "n n5mero %aria.le de re)istros3 )eneralmente de tama+o fi&oC los re)istros -"eden contener datos o -ro)ramas.

Tutorial de lenguage Ensamblador


,enta"as del Ensamblador La -rimera ra#n -ara tra.a&ar con ensam.lador es 2"e -ro-orciona la o-ort"nidad de conocer m$s a fondo la o-eracin de s" 0C3 lo 2"e -ermite el desarrollo de softDare de "na manera m$s consistente. La se)"nda ra#n es el control total de la 0C 2"e se tiene con el "so del mismo. Otra ra#n es 2"e los -ro)ramas de ensam.lador son mas r$-idos3 m$s com-actos ' tienen ma'or ca-acidad 2"e los creados en otros len)"a&es. 0or 5ltimo el ensam.lador -ermite "na o-timi#acin ideal en los -ro)ramas tanto en s" tama+o como en s" e&ec"cin. SoftDare En t,rminos de com-"tacin es todo a2"el -roceso o -ro)rama 2"e "tili#a los rec"rsos de la com-"tadora -ara lo)rar el o.&eti%o tra#ado -or s" dise+ador o -ro)ramador.

Conceptos bsicos In&ormacin en las computadoras. Unidades de informacin Sistemas n"m,ricos Con%ertir n5meros .inarios a decimales Con%ertir n5meros decimales a .inarios Sistema /e1adecimal * todos de representacin de datos en una computadora. Cdi)o ASCII !,todo *CD Re-resentacin de -"nto flotante Traba"ando con el len!ua"e ensamblador. 0roceso de creacin de "n -ro)rama Re)istros de la UC0 La estr"ct"ra del ensam.lador N"estro -rimer -ro)rama G"ardar ' car)ar los -ro)ramas Condiciones3 ciclos ' .if"rcaciones Interr"-ciones

Tutorial de lenguage Ensamblador


+nidades de in&ormacin 0ara 2"e la 0C -"eda -rocesar la informacin es necesario 2"e ,sta se enc"entre en celdas es-eciales llamadas re)istros. Los re)istros son con&"ntos de 6 o 87 fli-Eflo-s A.asc"ladores o .iesta.lesB. Un fli-Eflo- es "n dis-ositi%o ca-a# de almacenar dos ni%eles de %olta&e3 "no .a&o3 re)"larmente de ?.= %olts ' otro alto com5nmente de = %olts. El ni%el .a&o de ener) a en el fli-Eflo- se inter-reta como a-a)ado o ?3 ' el ni%el alto como -rendido o 8. A estos estados se les conoce "s"almente como .its3 2"e son la "nidad mas -e2"eFa de informacin en "na com-"tadora. A "n )r"-o de 87 .its se le conoce como -ala.ra3 "na -ala.ra -"ede ser di%idida en )r"-os de 6 .its llamados .'tes3 ' a los )r"-os de < .its les llamamos ni..les. (istemas num ricos El sistema n"m,rico 2"e "tili#amos a diario es el sistema decimal3 -ero este sistema no es con%eniente -ara las m$2"inas de.ido a 2"e la informacin se mane&a codificada en forma de .its -rendidos o a-a)adosC esta forma de codificacin nos lle%a a la necesidad de conocer el c$lc"lo -osicional 2"e nos -ermita e1-resar "n n5mero en c"al2"ier .ase 2"e lo necesitemos. Es -osi.le re-resentar "n n5mero determinado en c"al2"ier .ase mediante la si)"iente form"la9 Donde n es la -osicin del d )ito em-e#ando de derec4a a i#2"ierda ' n"merando a -artir de cero. D es el d )ito so.re el c"al o-eramos ' * es la .ase n"m,rica em-leada. Convertir n-meros binarios a decimales Tra.a&ando en el len)"a&e ensam.lador nos encontramos con la necesidad de con%ertir n5meros del sistema .inario3 2"e es el em-leado -or las com-"tadoras3 al sistema decimal "tili#ado -or las -ersonas. El sistema .inario est$ .asado en 5nicamente dos condiciones o estados3 'a sea encendido A8B o a-a)ado A?B3 -or lo tanto s" .ase es dos. 0ara la con%ersin -odemos "tili#ar la form"la de %alor -osicional9 0or e&em-lo3 si tenemos el n"mero .inario 8??883 tomamos de derec4a a i#2"ierda cada d )ito ' lo m"lti-licamos -or la .ase ele%ada a la n"e%a -osicin 2"e oc"-an9 *inario9 Decimal9 I 8 8 ? ? 8

8@:G? H 8@:G8 H ?@:G: H ?@:G; H 8@:G< 8 H : H ? H ? H 87 I 8J decimal.

Tutorial de lenguage Ensamblador


El caracter G es "tili#ado en com-"tacin como s m.olo de -otenciacin ' el car$cter @ se "sa -ara re-resentar la m"lti-licacin. Convertir n-meros decimales a binarios E1isten %arios m,todos de con%ersin de n5meros decimales a .inariosC A2" solo se anali#ar$ "no. Nat"ralmente es m"c4o mas f$cil "na con%ersin con "na calc"ladora cient fica3 -ero no siem-re se c"enta con ella3 as 2"e es con%eniente conocer -or lo menos "na forma man"al -ara 4acerlo. El m,todo 2"e se e1-licar$ "tili#a la di%isin s"cesi%a entre dos3 )"ardando el resid"o como d )ito .inario ' el res"ltado como la si)"iente cantidad a di%idir. Tomemos como e&em-lo el n5mero <; decimal. <;K: I :8 ' s" resid"o es 8 :8K: I 8? ' s" resid"o es 8 8?K: I = ' s" resid"o es ? =K: I : ' s" resid"o es 8 :K: I 8 ' s" resid"o es ? 8K: I ? ' s" resid"o es 8 Armando el n5mero de a.a&o 4acia arri.a tenemos 2"e el res"ltado en .inario es 8?8?88 (istema he.adecimal En la .ase 4e1adecimal tenemos 87 d )itos 2"e %an del ? al J ' de la letra A 4asta la ( Aestas letras re-resentan los n5meros del 8? al 8=B. 0or lo tanto3 contamos ?3 83 :3 ;3 <3 =3 73 >3 63 J3 A3 *3 C3 D3 E ' (. La con%ersin entre n"meracin .inaria ' 4e1adecimal es sencilla. Lo -rimero 2"e se 4ace -ara "na con%ersin de "n n5mero .inario a 4e1adecimal es di%idirlo en )r"-os de < .its3 em-e#ando de derec4a a i#2"ierda. En caso de 2"e el 5ltimo )r"-o Ael 2"e 2"ede mas a la i#2"ierdaB sea menor de < .its se rellenan los faltantes con ceros. Tomando como e&em-lo el n5mero .inario 8?8?88 lo di%idimos en )r"-os de < .its ' nos 2"eda9 8?C 8?88 Rellenando con ceros el 5ltimo )r"-o Ael de la i#2"ierdaB9 ??8?C 8?88

Tutorial de lenguage Ensamblador


Des-",s tomamos cada )r"-o como "n n5mero inde-endiente ' consideramos s" %alor en decimal9 ??8? I :C 8?88 I 88 0ero como no -odemos re-resentar este n5mero 4e1adecimal como :88 -or2"e ser a "n error3 tenemos 2"e s"stit"ir todos los %alores ma'ores a J -or s" res-ecti%a re-resentacin en 4e1adecimal3 con lo 2"e o.tenemos9 :*/ ADonde la / re-resenta la .ase 4e1adecimalB 0ara con%ertir "n n5mero de 4e1adecimal a .inario solo es necesario in%ertir estos -asos9 se toma el -rimer d )ito 4e1adecimal ' se con%ierte a .inario3 ' l"e)o el se)"ndo3 ' as s"cesi%amente 4asta com-letar el n5mero. Cdi!o #(CII ASCII )eneralmente se -ron"ncia LasMiL3 es "n acrnimo de American Standard Code for Information Interc4an)e. Este cdi)o asi)na a las letras del alfa.eto3 a los d )itos decimales del ? al J ' a %arios s m.olos adicionales "n n5mero .inario de > .its A-oni,ndose el .it 6 en s" estado de a-a)ado o ?B. De esta forma cada letra3 d )ito o car$cter es-ecial oc"-a "n .'te en la memoria de la com-"tadora. 0odemos o.ser%ar 2"e este m,todo de re-resentacin de datos es m"' ineficiente en el as-ecto n"m,rico3 'a 2"e en formato .inario nos .asta "n solo .'te -ara re-resentar n5meros de ? a :==3 en cam.io con el cdi)o ASCII "n .'te -"ede re-resentar 5nicamente "n d )ito. De.ido a esta ineficiencia3 el cdi)o ASCII es -rinci-almente "tili#ado en la memoria -ara re-resentar te1to.

* todo /CD *CD es "n acrnimo de *inar' Coded Decimal. En esta notacin se "tili#an )r"-os de < .its -ara re-resentar cada d )ito decimal del ? al J. Con este m,todo -odemos re-resentar dos d )itos -or .'te de informacin. A5n c"ando este m,todo es m"c4o mas -r$ctico -ara re-resentacin de n5meros en la memoria en com-aracin al ASCII3 toda% a se 2"eda -or de.a&o del .inario3 'a 2"e con "n .'te en el m,todo *CD solo -odemos re-resentar d )itos del ? al JJ3 en cam.io3 en formato .inario -odemos re-resentar todos los d )itos desde ? 4asta :==. Este formato es "tili#ado -rinci-almente -ara re-resentar n5meros m"' )randes en a-licaciones mercantiles 'a 2"e facilita las o-eraciones con los mismos e%itando errores de redondeo.

Tutorial de lenguage Ensamblador


Representacin de punto &lotante Esta re-resentacin esta .asada en la notacin cient fica3 esto es3 re-resentar "n n5mero en dos -artes9 s" mantisa ' s" e1-onente. 0oniendo como e&em-lo el n5mero 8:;<???3 -odemos re-resentarlo como 8.8:;@8?G73 en esta 5ltima notacin el e1-onente nos indica el n5mero de es-acios 2"e 4a' 2"e mo%er el es-acio 4acia la derec4a -ara o.tener el res"ltado ori)inal. En caso de 2"e el e1-onente f"era ne)ati%o nos est$ indicando el n5mero de es-acios 2"e 4a' 2"e recorrer el -"nto decimal 4acia la i#2"ierda -ara o.tener el ori)inal. )roceso de creacin de un pro!rama 0ara la creacin de "n -ro)rama es necesario se)"ir cinco -asos9 Dise+o del al)oritmo3 codificacin del mismo3 s" trad"ccin a len)"a&e m$2"ina3 la -r"e.a del -ro)rama ' la de-"racin. En la eta-a de dise+o se -lantea el -ro.lema a resol%er ' se -ro-one la me&or sol"cin3 creando dia)ramas es2"em$ticos "tili#ados -ara el me&or -lanteamiento de la sol"cin. La codificacin del -ro)rama consiste en escri.ir el -ro)rama en al)5n len)"a&e de -ro)ramacinC en este caso es-ecNfico en ensam.lador3 tomando como .ase la sol"cin -ro-"esta en el -aso anterior. La trad"ccin al len)"a&e m$2"ina es la creacin del -ro)rama o.&eto3 esto es3 el -ro)rama escrito como "na sec"encia de ceros ' "nos 2"e -"eda ser inter-retado -or el -rocesador. La -r"e.a del -ro)rama consiste en %erificar 2"e el -ro)rama f"ncione sin errores3 o sea3 2"e 4a)a lo 2"e tiene 2"e 4acer. La 5ltima eta-a es la eliminacin de las fallas detectadas en el -ro)rama d"rante la fase de -r"e.a. La correccin de "na falla normalmente re2"iere la re-eticin de los -asos comen#ando desde el -rimero o el se)"ndo. 0ara crear "n -ro)rama en ensam.lador e1isten dos o-ciones3 la -rimera es "tili#ar el !AS! A!acro Assem.ler3 de !icrosoftB3 ' la se)"nda es "tili#ar el de."))er3 en esta -rimera seccin "tili#aremos este 5ltimo 'a 2"e se enc"entra en c"al2"ier 0C con el sistema o-erati%o !SEDOS3 lo c"al lo -one al alcance de c"al2"ier "s"ario 2"e ten)a acceso a "na m$2"ina con estas caracter sticas. De.") solo -"ede crear arc4i%os con e1tensin .CO!3 ' -or las caracter sticas de este ti-o de -ro)ramas no -"eden ser ma'ores de 7< M.3 adem$s de.en comen#ar en el des-la#amiento3 offset3 o direccin de memoria ?8??/ dentro del se)mento es-ecifico.

10

Tutorial de lenguage Ensamblador

Re!istros de la +C)

La UC0 tiene 8< re)istros internos3 cada "no de 87 .its. Los -rimeros c"atro3 AO3 *O3 CO3 ' DO son re)istros de "so )eneral ' tam.i,n -"eden ser "tili#ados como re)istros de 6 .its3 -ara "tili#arlos como tales es necesario referirse a ellos como -or e&em-lo9 A/ ' AL3 2"e son los .'tes alto A4i)4B ' .a&o AloDB del re)istro AO. Esta nomenclat"ra es a-lica.le tam.i,n a los re)istros *O3 CO ' DO. Los re)istros son conocidos -or s"s nom.res es-ec ficos9 AO *O CO DO DS ES SS CS *0 SI DI S0 I0 ( Ac"m"lador Re)istro .ase Re)istro contador Re)istro de datos Re)istro del se)mento de datos Re)istro del se)mento e1tra Re)istro del se)mento de -ila Re)istro del se)mento de cdi)o Re)istro de a-"ntadores .ase Re)istro N ndice f"ente Re)istro N ndice destino Re)istro del a-"ntador de la -ila Re)istro de a-"ntador de si)"iente instr"ccin Re)istro de .anderas

Es -osi.le %is"ali#ar los %alores de los re)istros internos de la UC0 "tili#ando el -ro)rama De."). 0ara em-e#ar a tra.a&ar con De.") di)ite en el -rom-t de la com-"tadora9 C9PQ De.") REnterS En la si)"iente l nea a-arecer$ "n )"in3 ,ste es el indicador del De.")3 en este momento se -"eden introd"cir las instr"cciones del De."). Utili#ando el comando9 E r REnterS Se des-le)aran todos los contenidos de los re)istros internos de la UC0C "na forma alternati%a de mostrarlos es "sar el comando LrL "tili#ando como -ar$metro el nom.re del re)istro c"'o %alor se 2"iera %is"ali#ar. 0or e&em-lo9 E r.1 Esta instr"ccin des-le)ar$ 5nicamente el contenido del re)istro *O ' cam.ia el indicador del De.") de L E L a L 9 L Estando as el -rom-t es -osi.le cam.iar el %alor del re)istro 2"e se %is"ali# tecleando el n"e%o %alor ' a contin"acin REnterS3 o se -"ede de&ar el %alor anterior -resionando REnterS sin teclear nin)5n %alor.

11

Tutorial de lenguage Ensamblador


Es -osi.le cam.iar el %alor del re)istro de .anderas3 as como "tili#arlo como estr"ct"ra de control en n"estros -ro)ramas como se %er$ mas adelante. Cada .it del re)istro tiene "n nom.re ' si)nificado es-ecial3 la lista dada a contin"acin descri.e el %alor de cada .it3 tanto a-a)ado como -rendido ' s" relacin con las o-eraciones del -rocesador9 O%erfloD NV I no 4a' des.ordamientoC OV I sN lo 4a' Direction U0 I 4acia adelanteC DN I 4acia atrasC Interr"-ts DI I desacti%adasC EI I acti%adas Si)n 0L I -ositi%oC NG I ne)ati%o Tero NT I no es ceroC TR I sN lo es A"1iliar' Carr' NA I no 4a' acarreo a"1iliarC AC I 4a' acarreo a"1iliar 0arit' 0O I -aridad nonC 0E I -aridad -arC Carr' NC I no 4a' acarreoC CU I SN lo 4a'

$a estructura del ensamblador

En el len)"a&e ensam.lador las l neas de cdi)o constan de dos -artes3 la -rimera es el nom.re de la instr"ccin 2"e se %a a e&ec"tar ' la se)"nda son los -ar$metros del comando " o-erandos. 0or e&em-lo9 add a4 .4 A2" LaddL es el comando a e&ec"tar Aen este caso "na adicinB ' tanto La4L como L.4L son los -ar$metros. El nom.re de las instr"cciones en este len)"a&e esta formado -or dos3 tres o c"atro letras. a estas instr"cciones tam.i,n se les llama nom.res mnemnicos o cdi)os de o-eracin3 'a 2"e re-resentan al)"na f"ncin 2"e 4a.r$ de reali#ar el -rocesador. E1isten al)"nos comandos 2"e no re2"ieren -ar$metros -ara s" o-eracin3 as como otros 2"e re2"ieren solo "n -ar$metro. Al)"nas %eces se "tili#ar$n las instr"cciones como si)"e9 add al3R8>?S

12

Tutorial de lenguage Ensamblador


Los corc4etes en el se)"ndo -ar$metro nos indican 2"e %amos a tra.a&ar con el contenido de la casilla de memoria n5mero 8>? ' no con el %alor 8>?3 a esto se le conoce como direccionamiento directo.

Nuestro primer pro!rama Vamos a crear "n -ro)rama 2"e sir%a -ara il"strar lo 2"e 4emos estado %iendo3 lo 2"e 4aremos ser$ "na s"ma de dos %alores 2"e introd"ciremos directamente en el -ro)rama9 El -rimer -aso es iniciar el De.")3 este -aso consiste 5nicamente en teclear de.") REnterS en el -rom-t del sistema o-erati%o. 0ara ensam.lar "n -ro)rama en el De.") se "tili#a el comando LaL Aassem.leBC c"ando se "tili#a este comando se le -"ede dar como -ar$metro la direccin donde se desea 2"e se inicie el ensam.lado. Si se omite el -ar$metro el ensam.lado se iniciar$ en la localidad es-ecificada -or CS9I03 "s"almente ?8??/3 2"e es la localidad donde de.en iniciar los -ro)ramas con e1tensin .CO!3 ' sera la localidad 2"e "tili#aremos de.ido a 2"e de.") solo -"ede crear este ti-o es-ecNfico de -ro)ramas. A"n2"e en este momento no es necesario darle "n -ar$metro al comando LaL es recomenda.le 4acerlo -ara e%itar -ro.lemas "na %e# 2"e se 4a)a "so de los re)istros CS9I03 -or lo tanto tecleamos9 E a?8?? REnterS Al 4acer esto a-arecer$ en la -antalla al)o como9 ?C8*9?8?? ' el -osiciona a la derec4a de estos n5meros3 ntese 2"e los -rimeros d )itos Aen sistema 4e1a)esimalB -"eden ser diferentes3 -ero los c"atro de.en ser ?8??3 'a 2"e es la direccin 2"e indicamos como A4ora -odemos introd"cir las instr"cciones9 ?C8*9?8?? ?C8*9?8?; ?C8*9?8?7 ?C8*9?8?6 ?C8*9?8?A mo% mo% add int c"rsor se c"atro 5ltimos inicio.

a13???: Ccoloca el %alor ???: en el re)istro a1 .13???< Ccoloca el %alor ???< en el re)istro .1 a13.1 Cle adiciona al contenido de a1 el contenido de .1 :? C -ro%oca la terminacin del -ro)rama.

No es necesario escri.ir los comentarios 2"e %an des-",s del LCL. Una %e# di)itado el 5ltimo comando3 int :?3 se le da REnterS sin escri.ir nada mas3 -ara %ol%er al -rom-t del de.")er. La 5ltima l nea escrita no es -ro-iamente "na instr"ccin de ensam.lador3 es "na llamada a "na interr"-cin del sistema o-erati%o3 estas interr"-ciones ser$n tratadas mas a fondo en "n ca- t"lo -osterior3 -or el momento solo es necesario sa.er 2"e nos a4orran "n )ran n5mero de l neas ' son m"' 5tiles -ara accesar a f"nciones del sistema o-erati%o. 0ara e&ec"tar el -ro)rama 2"e escri.imos se "tili#a el comando L)L3 al "tili#arlo %eremos 2"e a-arece "n mensa&e 2"e dice9 L0ro)ram terminated normall'L. Nat"ralmente con "n mensa&e como ,ste no -odemos estar se)"ros 2"e el -ro)rama 4a'a 4ec4o la s"ma3 -ero e1iste "na forma sencilla de %erificarlo3 "tili#ando el comando LrL del De.") -odemos %er los contenidos de todos los re)istros del -rocesador3 sim-lemente teclee9

13

Tutorial de lenguage Ensamblador


E r REnterS a-arecer$ en -antalla cada re)istro con s" res-ecti%o %alor act"al9 AOI???7*OI???<COI????DOI????S0I((EE*0I????SII????DII???? DSI?C8*ESI?C8*SSI?C8*CSI?C8*I0I?8?A NV U0 EI 0L NT NA 0O NC ?C8*9?8?A ?( D* o( E1iste la -osi.ilidad de 2"e los re)istros conten)an %alores diferentes3 -ero AO ' *O de.en ser los mismos3 'a 2"e son los 2"e aca.amos de modificar. Otra forma de %er los %alores3 mientras se e&ec"ta el -ro)rama es "tili#ando como -ar$metro -ara L)L la direccin donde 2"eremos 2"e termine la e&ec"cin ' m"estre los %alores de los re)istros3 en este caso ser a9 )8?63 esta instr"ccin e&ec"ta el -ro)rama3 se detiene en la direccin 8?6 ' m"estra los contenidos de los re)istros. Tam.i,n se -"ede lle%ar "n se)"imiento de lo 2"e -asa en los re)istros "tili#ando el comando LtL AtraceB3 la f"ncin de este comando es e&ec"tar l nea -or l nea lo 2"e se ensam.l mostrando cada %e# los contenidos de los re)istros. 0ara salir del De.") se "tili#a el comando L2L A2"itB. 0uardar % car!ar los pro!ramas No ser a -r$ctico tener 2"e di)itar todo "n -ro)rama cada %e# 2"e se necesite3 -ara e%itar eso es -osi.le )"ardar "n -ro)rama en el disco3 con la enorme %enta&a de 2"e 'a ensam.lado no ser$ necesario correr de n"e%o de.") -ara e&ec"tarlo. Los -asos a se)"ir -ara )"ardar "n -ro)rama 'a almacenado en la memoria son9 O.tener la lon)it"d del -ro)rama restando la direccin final de la direccin inicial3 nat"ralmente en sistema 4e1adecimal. Darle "n nom.re al -ro)rama ' e1tensin 0oner la lon)it"d del -ro)rama en el re)istro CO Ordenar a De.") 2"e escri.a el -ro)rama en el disco. Utili#ando como e&em-lo el -ro)rama del ca- t"lo anterior tendremos "na idea mas clara de como lle%ar estos -asos9 Al terminar de ensam.lar el -ro)rama se %er a as 9 ?C8*9?8?? mo% a13???: ?C8*9?8?; mo% .13???< ?C8*9?8?7 add a13.1 ?C8*9?8?6 int :? ?C8*9?8?A E 4 8?a 8?? ?:?a ???a E n -r"e.a.com E rc1 CO ???? 9???a ED Vritin) ???A .'tes

14

Tutorial de lenguage Ensamblador

0ara o.tener la lon)it"d de "n -ro)rama se "tili#a el comando L4L3 el c"al nos m"estra la s"ma ' resta de dos n5meros en 4e1adecimal. 0ara o.tener la lon)it"d del n"estro le -ro-orcionamos como -ar$metros el %alor de la direccin final de n"estro -ro)rama A8?AB ' el %alor de la direccin inicial A8??B. El -rimer res"ltado 2"e nos m"estra el comando es la s"ma de los -ar$metros ' el se)"ndo es la resta. El comando LnL nos -ermite -oner "n nom.re al -ro)rama. El comando Lrc1L nos -ermite cam.iar el contenido del re)istro CO al %alor 2"e o.t"%imos del tama+o del arc4i%o con L4L3 en este caso ???a3 'a 2"e nos interesa el res"ltado de la resta de la direccin inicial a la direccin final. 0or 5ltimo el comando D escri.e n"estro -ro)rama en el disco3 indic$ndonos c"antos .'tes escri.i. 0ara car)ar "n arc4i%o 'a )"ardado son necesarios dos -asos9 0ro-orcionar el nom.re del arc4i%o 2"e se car)ar$. Car)arlo "tili#ando el comando LlL AloadB. 0ara o.tener el res"ltado correcto de los si)"ientes -asos es necesario 2"e -re%iamente se 4a'a creado el -ro)rama anterior. Dentro del De.") escri.imos lo si)"iente9 E n -r"e.a.com E l E " 8?? 8?J ?C;D9?8?? *6?:?? !OV AO3???: ?C;D9?8?; **?<?? !OV *O3???< ?C;D9?8?7 ?8D6 ADD AO3*O ?C;D9?8?6 CD:? INT :? El 5ltimo comando3 L"L3 se "tili#a -ara %erificar 2"e el -ro)rama se car) en memoria3 lo 2"e 4ace es desensam.lar el cdi)o ' mostrarlo 'a desensam.lado. Los -ar$metros le indican a De.") desde donde ' 4asta donde desensam.lar. De.") siem-re car)a los -ro)ramas en memoria en la direccin 8??/3 a menos 2"e se le indi2"e al)"na otra.

Condiciones1 ciclos % bi&urcaciones Estas estr"ct"ras3 o formas de control le dan a la m$2"ina "n cierto )rado de decisin .asado en la informacin 2"e reci.e. La forma mas sencilla de com-render este tema es -or medio de e&em-los. Vamos a crear tres -ro)ramas 2"e 4a)an lo mismo9 des-le)ar "n n5mero determinado de %eces "na cadena de caracteres en la -antalla.

15

Tutorial de lenguage Ensamblador


E a8?? ?C8*9?8?? &m- 8:= C salta a la direccin 8:=/ ?C8*9?8?: REnterS E e 8?: NCadena a %is"ali#ar 8= %ecesN ?d ?a NWN E a8:= ?C8*9?8:= !OV CO3???( C %eces 2"e se des-le)ara la cadena ?C8*9?8:6 !OV DO3?8?: C co-ia cadena al re)istro DO ?C8*9?8:* !OV A/3?J C co-ia %alor ?J al re)istro A/ ?C8*9?8:D INT :8 C des-lie)a cadena ?C8*9?8:( LOO0 ?8:D C si COQ? salta a ?8:D ?C8*9?8;8 INT :? C termina el -ro)rama. 0or medio del comando LeL es -osi.le introd"cir "na cadena de caracteres en "na determinada localidad de memoria3 dada como -ar$metro3 la cadena se introd"ce entre comillas3 le si)"e "n es-acio3 l"e)o el %alor 4e1adecimal del retorno de carro3 "n es-acio3 el %alor de l nea n"e%a ' -or 5ltimo el s m.olo NWN 2"e el ensam.lador inter-reta como final de la cadena. La interr"-cin :8 "tili#a el %alor almacenado en el re)istro A/ -ara e&ec"tar "na determinada f"ncin3 en este caso mostrar la cadena en -antalla3 la cadena 2"e m"estra es la 2"e est$ almacenada en el re)istro DO. La instr"ccin LOO0 decrementa a"tom$ticamente el re)istro CO en "no ' si no 4a lle)ado el %alor de este re)istro a cero salta a la casilla indicada como -ar$metro3 lo c"al crea "n ciclo 2"e se re-ite el n5mero de %eces es-ecificado -or el %alor de CO. La interr"-cin :? termina la e&ec"cin del -ro)rama. Otra forma de reali#ar la misma f"ncin -ero sin "tili#ar el comando LOO0 es la si)"iente9 E a8?? ?C8*9?8?? &m- 8:= C salta a la direccin 8:=/ ?C8*9?8?: REnterS E e 8?: NCadena a %is"ali#ar 8= %ecesN ?d ?a NWN E a8:= ?C8*9?8:= !OV *O3???( C %eces 2"e se des-le)ara la cadena ?C8*9?8:6 !OV DO3?8?: C co-ia cadena al re)istro DO ?C8*9?8:* !OV A/3?J C co-ia %alor ?J al re)istro A/ ?C8*9?8:D INT :8 C des-lie)a cadena ?C8*9?8:( DEC *O C decrementa en 8 a *O ?C8*9?8;? JNT ?8:D C si *O es diferente a ? salta a ?8:D ?C8*9?8;: INT :? C termina el -ro)rama. En este caso se "tili#a el re)istro *O como contador -ara el -ro)rama3 ' -or medio de la instr"ccin LDECL se dismin"'e s" %alor en 8. La instr"ccin LJNTL %erifica si el %alor de * es diferente a ?3 esto con .ase en la .andera NT3 en caso afirmati%o salta 4acia la direccin ?8:D. En caso contrario contin5a la e&ec"cin normal del -ro)rama ' -or lo tanto se termina. Una tima %ariante del -ro)rama es "tili#ando de n"e%o a CO como contador3 -ero en l")ar de "tili#ar LOO0 "tili#aremos decrementos a CO ' com-aracin de CO a ?. E a8?? ?C8*9?8?? &m- 8:= C salta a la direccin 8:=/ ?C8*9?8?: REnterS E e 8?: NCadena a %is"ali#ar 8= %ecesN ?d ?a NWN

16

Tutorial de lenguage Ensamblador


E a8:= ?C8*9?8:= ?C8*9?8:6 ?C8*9?8:* ?C8*9?8:D ?C8*9?8:( ?C8*9?8;? ?C8*9?8;: ?C8*9?8;<

!OV DO3?8?: C co-ia cadena al re)istro DO !OV CO3???( C %eces 2"e se des-le)ara la cadena !OV A/3?J C co-ia %alor ?J al re)istro A/ INT :8 C des-lie)a cadena DEC CO C decrementa en 8 a CO JCOT ?8;< C si CO es i)"al a ? salta a ?8;< J!0 ?8:D C salta a la direcciXoa"teCn ?8:D INT :? C termina el -ro)rama

En este e&em-lo se "s la instr"ccin JCOT -ara controlar la condicin de salto3 el si)nificado de tal f"ncin es9 salta si COI? El ti-o de control a "tili#ar de-ender$ de las necesidades de -ro)ramacin en determinado momento. Interrupciones De&inicin de interrupcin: Una interr"-cin es "na instr"ccin 2"e detiene la e&ec"cin de "n -ro)rama -ara -ermitir el "so de la UC0 a "n -roceso -rioritario. Una %e# concl"ido este 5ltimo -roceso se de%"el%e el control a la a-licacin anterior. 0or e&em-lo3 c"ando estamos tra.a&ando con "n -rocesador de -ala.ras ' en ese momento lle)a "n a%iso de "no de los -"ertos de com"nicaciones3 se detiene tem-oralmente la a-licacin 2"e est$.amos "tili#ando -ara -ermitir el "so del -rocesador al mane&o de la informacin 2"e est$ lle)ando en ese momento. Una %e# terminada la transferencia de informacin se rean"dan las f"nciones normales del -rocesador de -ala.ras. Las interr"-ciones oc"rren m"' se)"ido3 sencillamente la interr"-cin 2"e act"ali#a la 4ora del d a oc"rre a-ro1imadamente 86 %eces -or se)"ndo. 0ara lo)rar administrar todas estas interr"-ciones3 la com-"tadora c"enta con "n es-acio de memoria3 llamado memoria .a&a3 donde se almacenan las direcciones de cierta localidad de memoria donde se enc"entran "n &"e)o de instr"cciones 2"e la UC0 e&ec"tar$ -ara des-",s re)resar a la a-licacin en -roceso. En los -ro)ramas anteriores 4icimos "so de la interr"-cin n5mero :?/ -ara terminar la e&ec"cin de n"estros -ro)ramas3 a4ora "tili#aremos otra interr"-cin -ara mostrar informacin en -antalla9 Utili#ando De.") tecleamos9 E a8?? :C8*9?8?? J!0 ?88D :C8*9?8?: RENTERS E E 8?: N/ola3 como estas.N ?D ?A NWN E A?88D :C8*9?88D !OV DO3?8?: :C8*9?8:? !OV A/3?J :C8*9?8:: INT :8 :C8*9?8:; INT :? En este -ro)rama la interr"-cin :8/ manda al monitor la cadena locali#ada en la direccin a la 2"e a-"nta el re)istro DO.

17

Tutorial de lenguage Ensamblador

El %alor 2"e se le da a A/ determina c"al de las o-ciones de la interr"-cin :8/ ser$ "tili#ada3 'a 2"e esta interr"-cin c"enta con %arias o-ciones. El mane&o directo de interr"-ciones es "na de las -artes mas f"ertes del len)"a&e ensam.lador3 'a 2"e con ellas es -osi.le controlar eficientemente todos los dis-ositi%os internos ' e1ternos de "na com-"tadora )racias al com-leto control 2"e se tiene so.re o-eraciones de entrada ' salida.

18

Tutorial de lenguage Ensamblador


)ro!ramacin en ensamblador con *#(* Requerimientos para la pro!ramacin en ensamblador. SoftDare necesario. Utili#acin del !AS! Uso del enla#ador AlinMerB 2ormato de un pro!rama en ensamblador. (ormato interno (ormato e1terno E&em-lo -r$ctico de "n -ro)rama )roceso de ensamblado. Se)mentos Ta.la de s m.olos Tipos de instrucciones. !o%imiento de datos O-eraciones l)icas ' aritm,ticas Saltos3 ciclos ' -rocedimientos

(o&t3are necesario

0ara -oder crear "n -ro)rama se re2"ieren %arias 4erramientas9 0rimero "n editor para crear el pro!rama &uente. Se)"ndo "n compilador 2"e no es mas 2"e "n -ro)rama 2"e Ltrad"ceL el -ro)rama f"ente a "n -ro)rama o.&eto. U tercero "n enla4ador o lin5er3 2"e )enere el -ro)rama e&ec"ta.le a -artir del -ro)rama o.&eto. El editor -"ede ser c"al2"ier editor de te1tos 2"e se ten)a a la mano3 como com-ilador "tili#aremos el *#(* 6macro ensamblador de *icroso&tB 'a 2"e es el mas com5n3 ' como enla#ador "tili#aremos el -ro)rama lin5. La e1tensin "sada -ara 2"e !AS! recono#ca los -ro)ramas f"ente en ensam.lador es .AS!C "na %e# trad"cido el -ro)rama f"ente3 el !AS! crea "n arc4i%o con la e1tensin .O*J3 este arc4i%o contiene "n Lformato intermedioL del -ro)rama3 llamado as -or2"e a"n no es e&ec"ta.le -ero tam-oco es 'a "n -ro)rama en len)"a&e f"ente. El enla#ador )enera3 a -artir de "n arc4i%o .O*J o la com.inacin de %arios de estos arc4i%os3 "n -ro)rama e&ec"ta.le3 c"'a e1tensin es "s"almente .EOE a"n2"e tam.i,n -"ede ser .CO!3 de-endiendo de la forma en 2"e se ensam.l. Este t"torial descri.e la forma de tra.a&ar con la %ersin =.? o -osterior del !AS!3 la diferencia -rinci-al de esta %ersin con otras anteriores es la forma en 2"e se declaran los se)mentos de cdi)o3 datos ' la -ila3 -ero la estr"ct"ra de -ro)ramacin es la misma.

19

Tutorial de lenguage Ensamblador

+tili4acin del *#(* Una %e# 2"e se cre el -ro)rama o.&eto se de.e -asar al !AS! -ara crear el cdi)o intermedio3 el c"al 2"eda )"ardado en "n arc4i%o con e1tensin .O*J. El comando -ara reali#ar esto es9 !AS! Nom.reYArc4i%oC REnterS Donde Nom.reYArc4i%o es el nom.re del -ro)rama f"ente con e1tensin .AS! 2"e se %a a trad"cir. El -"nto ' coma "tili#ados des-",s del nom.re del arc4i%o le indican al macro ensam.lador 2"e )enere directamente el cdi)o intermedio3 de omitirse este car$cter el !AS! -edir$ el nom.re del arc4i%o a trad"cir3 el nom.re del arc4i%o 2"e se )enerar$ as como o-ciones de listado de informacin 2"e -"ede -ro-orcionar el trad"ctor. Es -osi.le e&ec"tar el !AS! "tili#ando -ar$metros -ara o.tener "n fin determinado3 toda la lista de los mismos se enc"entra en el man"al del -ro)rama. Solo recordar, en este t"torial la forma de -asar dic4os -ar$metros al !AS!9 Todo -ar$metro %a des-",s del s m.olo LKL. Es -osi.le "tili#ar %arios -ar$metros a la %e#. Una %e# tecleados todos los -ar$metros se escri.e el nom.re del arc4i%o a ensam.lar. 0or e&em-lo3 si 2"eremos 2"e el !AS! ensam.le "n -ro)rama llamado -r"e.a3 ' adem$s deseamos 2"e des-lie)"e el n"mero de l neas f"ente ' s m.olos -rocesados Aeso lo reali#a con el -ar$metro K%B3 ' si oc"rre "n error 2"e nos di)a en 2"e l nea oc"rri Acon el -ar$metro K#B3 entonces tecleamos9 !AS! K% K# -r"e.aC Uso del enla#ador AlinMerB El !AS! 5nicamente -"ede crear -ro)ramas en formato .O*J3 los c"ales no son e&ec"ta.les -or si solos3 es necesario "n enla#ador 2"e )enere el cdi)o e&ec"ta.le. La "tili#acin del enla#ador es m"' -arecida a la del !AS!3 5nicamente se teclea en el indicador del DOS9 LINZ Nom.reYArc4i%o C Donde Nom.reYArc4i%o es el nom.re del -ro)rama intermedio AO*JB. Esto )enerara directamente "n arc4i%o con el nom.re del -ro)rama intermedio ' la e1tensin .EOE 2ormato interno de un pro!rama 0ara -oder com"nicarnos en c"al2"ier len)"a&e3 incl"'endo los len)"a&es de -ro)ramacin3 es necesario se)"ir "n con&"nto de re)las3 de lo contrario no -odr amos e1-resar lo 2"e deseamos.

20

Tutorial de lenguage Ensamblador


En este a-artado %eremos al)"nas de las re)las 2"e de.emos se)"ir -ara escri.ir "n -ro)rama en len)"a&e ensam.lador3 enfoc$ndonos a la forma de escri.ir las instr"cciones -ara 2"e el ensam.lador sea ca-a# de inter-retarlas. *asicamente el formato de "na l nea de cdi)o en len)"a&e ensam.lador consta de c"atro -artes9 Eti2"eta3 %aria.le o constante9 No siem-re es definida3 si se define es necesario "tili#ar se-aradores -ara diferenciarla de las otras -artes3 "s"almente es-acios3 o al)5n s m.olo es-ecial. Directi%a o instr"ccin9 es el nom.re con el 2"e se conoce a la instr"ccin 2"e 2"eremos 2"e se e&ec"te. O-erandoAsB9 la ma'oria de las instr"cciones en ensam.lador tra.a&an con dos o-erandos3 a"n2"e 4a' instr"cciones 2"e f"ncionan solo con "no. El -rimero normalmente es el o-erando destino3 2"e es el de-sito del res"ltado de al)"na o-eracinC ' el se)"ndo es el o-erando f"ente3 2"e lle%a el dato 2"e ser$ -rocesado. Los o-erandos se se-aran "no del otro -or medio de "na coma L3L. Comentario9 como s" nom.re lo indica es tan solo "n escrito informati%o3 "sado -rinci-almente -ara e1-licar 2"e est$4aciendo el -ro)rama en determinada l neaC se se-ara de las otras -artes -or medio de "n -"nto ' coma LCL. Esta -arte no es necesaria en el -ro)rama3 -ero nos a'"da a de-"rar el -ro)rama en caso de errores o modificaciones. Como e&em-lo -odemos %er "na l nea de "n -ro)rama escrito en ensam.lador9 Eti289 !OV AO3??8A/ C Iniciali#a AO con el %alor ??8A A2"i tenemos la eti2"eta LEti28L AIdentifica.le como eti2"eta -or el s m.olo final L9LB3 la instr"ccin L!OVL3 ' los o-erandos LAOL como destino ' L??8AL como f"ente3 adem$s del comentario 2"e si)"e des-",s del LCL. Un e&em-lo de "na declaracin de "na constante esta dado -or9 UNO E[U ???8/ Donde LUNOL es el nom.re de la constante 2"e definimos3 LE[UL es la directi%a "tili#ada -ara "sar a LUNOL como constante3 ' L???8/L es el o-erando3 2"e en este caso sera el %alor 2"e )"arde UNO. 2ormato E.terno de un pro!rama Ademas de definir ciertas re)las -ara 2"e el ensam.lador -"eda entender "na instr"ccin es necesario darle cierta informacin de los rec"rsos 2"e se %an a "tili#ar3 como -or e&em-lo los se)mentos de memoria 2"e se %an a "tili#ar3 datos iniciales del -ro)rama ' tam.ien donde inicia ' donde termina n"estro cdi)o. Un -ro)rama sencillo -"ede ser el si)"iente9 .!ODEL S!ALL .CODE

21

Tutorial de lenguage Ensamblador


0ro)rama9 !OV AO3<C??/ INT :8/ .STACZ END 0ro)rama El -ro)rama realmente no 4ace nada3 "nicamente coloca el %alor <C??/ en el re)istro AO3 -ara 2"e la interr"-cin :8/ termine el -ro)rama3 -ero nos da "na idea del formato e1terno en "n -ro)rama de ensam.lador. La directi%a .!ODEL define el ti-o de memoria 2"e se "tili#ar$C la directi%a .CODE nos indica 2"e lo 2"e esta a contin"acin es n"estro -ro)ramaC la eti2"eta 0ro)rama indica al ensam.lador el inicio del -ro)ramaC la directi%a .STACZ le -ide al ensam.lador 2"e reser%e "n es-acio de memoria -ara las o-eraciones de la -ilaC la instr"ccin END 0ro)rama marca el final del -ro)rama. E"emplo prctico de un pro!rama A2"i se e&em-lificar$ "n -ro)rama 2"e escri.a "na cadena en -antalla9 .!ODEL S!ALL .CODE 0ro)rama9 !OV AO3 \DATA !OV DS3 AO !OV DO3 Offset Te1to !OV A/3 J INT :8/ !OV AO3<C??/ INT :8/ .DATA Te1to D* N!ensa&e en -antalla.WN .STACZ END 0ro)rama Los -rimeros -asos son i)"ales a los del -ro)rama anterior9 se define el modelo de memoria3 se indica donde inicia el cdi)o del -ro)rama ' en donde comien#an las instr"cciones. A contin"acin se coloca \DATA en el re)istro AO -ara des-"es -asarlo al re)istro DS 'a 2"e no se -"ede co-iar directamente "na constante a "n re)istro de se)mento. El contenido de \DATA es el n5mero del se)mento 2"e ser$ "tili#ado -ara los datos. L"e)o se )"arda en el re)istro DO "n %alor dado -or LOffset Te1toL 2"e nos da la direccin donde se enc"entra la cadena de caracteres en el se)mento de datos. L"e)o "tili#a la o-cin J ADada -or el %alor de A/B de la interr"-cin :8/ -ara des-le)ar la cadena -osicionada en la direccin 2"e contiene DO. 0or 5ltimo "tili#a la o-cin <C/ de la interr"-cin :8/ -ara terminar la e&ec"cin del -ro)rama Aa"n2"e car)amos al re)istro AO el %alor <C??/ la interr"-cin :8/ solo toma como o-cin el contenido del re)istro A/B. La directi%a .DATA le indica al ensam.lador 2"e lo 2"e est$escrito a contin"acin de.e almacenarlo en el se)mento de memoria destinado a los datos. La directi%a D* es "tili#ada -ara Definir *'tes3 ,sto es3 asi)nar a cierto identificador Aen este caso LTe1toLB "n %alor3 'a sea "na constante o "na cadena de caracteres3 en este 5ltimo caso de.er$ estar entre comillas sencillas N ' terminar con el sim.olo LWL.

22

Tutorial de lenguage Ensamblador


(e!mentos La ar2"itect"ra de los -rocesadores 167 o.li)a al "so de se)mentos de memoria -ara mane&ar la informacin3 el tama+o de estos se)mentos es de 7<M.. La ra#n de ser de estos se)mentos es 2"e3 considerando 2"e el tama+o m$1imo de "n n5mero 2"e -"ede mane&ar el -rocesador esta dado -or "na -ala.ra de 87 .its o re)istro3 no ser a -osi.le accesar a m$s de 7==;7 localidades de memoria "tili#ando "no solo de estos re)istros3 a4ora3 si se di%ide la memoria de la -c en )r"-os o se)mentos3 cada "no de 7==;7 localidades3 ' "tili#amos "na direccin en "n re)istro e1cl"si%o -ara locali#ar cada se)mento3 ' entonces cada direccin de "na casilla es-ecifica la formamos con dos re)istros3 nos es -osi.le accesar a "na cantidad de <:J<J7>:J7 .'tes de memoria3 lo c"al es3 en la act"alidad3 m$s memoria de la 2"e %eremos instalada en "na 0C. 0ara 2"e el ensam.lador -"eda mane&ar los datos es necesario 2"e cada dato o instr"ccin se enc"entren locali#ados en el $rea 2"e corres-onde a s"s res-ecti%os se)mentos. El ensam.lador accesa a esta informacin tomando en c"enta la locali#acin del se)mento3 dada -or los re)istros DS3 ES3 SS ' CS3 ' dentro de dic4o re)istro la direccin del dato es-ecNfico. Es -or ello 2"e c"ando creamos "n -ro)rama em-leando el De.") en cada linea 2"e %amos ensam.lando a-arece al)o -arecido a lo si)"iente9 8C*?9?8?: !OV AO3*O En donde el -rimer n5mero3 8C*?3 corres-onde al se)mento de memoria 2"e se est$ "tili#ando3 el se)"ndo se refiere a la direccin dentro de dic4o se)mento3 ' a contin"acin a-arecen las instr"cciones 2"e se almacenaran a -artir de esa direccin. La forma de indicarle al ensam.lador con c"ales de los se)mentos se %a a tra.a&ar es -or medio de las directi%as .CODE3 .DATA ' .STACZ. El ensam.lador se encar)a de a&"star el tama+o de los se)mentos tomando como .ase el n5mero de .'tes 2"e necesita cada instr"ccin 2"e %a ensam.lando3 'a 2"e ser a "n des-erdicio de memoria "tili#ar los se)mentos com-letos. 0or e&em-lo3 si "n -ro)rama "nicamente necesita 8?M. -ara almacenar los datos3 el se)mento de datos "nicamente sera de 8?M. ' no de los 7<M. 2"e -"ede mane&ar.

Tabla de s'mbolos A cada "na de las -artes de "na linea de cdi)o en ensam.lador se le conoce como toMen3 -or e&em-lo en la linea de cdi)o !OV AO3Var tenemos tres toMens3 la instr"ccin !OV3 el o-erando AO3 ' el o-erando VAR. El ensam.lador lo 2"e 4ace -ara )enerar el cdi)o O*J es leer cada "no de los toMens ' ."scarlo en "na ta.la interna de Le2"i%alenciasL conocida como ta.la de -ala.ras reser%adas3 2"e es donde se enc"entran todos los si)nificados de los mnemnicos 2"e "tili#amos como instr"cciones.

23

Tutorial de lenguage Ensamblador


Si)"iendo este -roceso3 el ensam.lador lee !OV3 lo ."sca en s" ta.la ' al encontrarlo lo identifica como "na instr"ccin del -rocesador3 asi mismo lee AO ' lo reconoce como "n re)istro del -rocesador3 -ero al momento de ."scar el toMen Var en la ta.la de -ala.ras reser%adas no lo enc"entra ' entonces lo ."sca en la ta.la de s m.olos 2"e es "na ta.la donde se enc"entran los nom.res de las %aria.les3 constantes ' eti2"etas "tili#adas en el -ro)rama donde se incl"'e s" direccin en memoria ' el ti-o de datos 2"e contiene. Al)"nas %eces el ensam.lador se enc"entra con al)"n toMen no definido en el -ro)rama3 lo 2"e 4ace en estos casos es dar "na se)"nda -asada -or el -ro)rama f"ente -ara %erificar todas las referencias a ese s m.olo ' colocarlo en la ta.la de s m.olos. E1isten s m.olos 2"e no los %a a encontrar 'a 2"e no -ertenecen a ese se)mento ' el -ro)rama no sa.e en 2"e -arte de la memoria se encontrara dic4o se)mento3 en este momento entra en accin el enla#ador3 el c"al crea la estr"ct"ra 2"e necesita el car)ador -ara 2"e el se)mento ' el toMen sean definidos c"ando se car)"e el -ro)rama ' antes de 2"e el mismo sea e&ec"tado.

*ovimiento de datos En todo -ro)rama es necesario mo%er datos en la memoria ' en los re)istros de la UC0C e1isten di%ersas formas de 4acer esto9 -"ede co-iar datos de la memoria a al)"n re)istro3 de re)istro a re)istro3 de "n re)istro a "na -ila3 de la -ila a "n re)istro3 transmitir datos 4acia dis-ositi%os e1ternos asi como reci.ir datos de dic4os dis-ositi%os. Este mo%imiento de datos est$s"&eto a re)las ' restricciones. Al)"nas de ellas son las 2"e se citan a contin"acin. No es -osi.le mo%er datos de "na localidad de memoria a otra directamente3 es necesario -rimero mo%er los datos de la localidad ori)en 4acia "n re)istro ' l"e)o del re)istro a la localidad destino. No se -"ede mo%er "na constante directamente a "n re)istro de se)mentos3 -rimero se de.e mo%er a "n re)istro de la UC0. Es -osi.le mo%er .lo2"es de datos -or medio de las instr"cciones mo%s3 2"e co-ia "na cadena de .'tes o -ala.rasC mo%s. 2"e co-ia n .'tes de "na localidad a otraC ' mo%sD co-ia n -ala.ras de "na localidad a otra. Las dos 5ltimas instr"cciones toman los %alores de las direcciones definidas -or DS9SI como )r"-o de datos a mo%er ' ES9DI como n"e%a locali#acin de los datos. 0ara mo%er los datos tam.ien e1isten las estr"ct"ras llamadas -ilas3 en este ti-o de estr"ct"ras los datos se introd"cen con la instr"ccin -"s4 ' se e1traen con la instr"ccin -oEn "na -ila el -rimer dato introd"cido es el 5ltimo 2"e -odemos sacar3 esto es3 si en n"estro -ro)rama "tili#amos las instr"cciones9 0US/ AO 0US/ *O 0US/ CO

24

Tutorial de lenguage Ensamblador


0ara de%ol%er los %alores correctos a cada re)istro al momento de sacarlos de la -ila es necesario 4acerlo en el si)"iente orden9 0O0 CO 0O0 *O 0O0 AO 0ara la com"nicacin con dis-ositi%os e1ternos se "tili#an el comando o"t -ara mandar informacin a "n -"erto ' el comando in -ara leer informacin reci.ida desde al)"n -"erto. La sinta1is del comando o"t es9 OUT DO3AO Donde DO contiene el %alor del -"erto 2"e se "tili#ar$ -ara la com"nicacin ' AO contiene la informacin 2"e se mandar$. La sinta1is del comando in es9 IN AO3DO Donde AO es el re)istro donde se )"ardar$ la informacin 2"e lle)"e ' DO contiene la direccin del -"erto -or donde lle)ar$ la informacin.

O-eraciones l)icas ' aritm,ticas Las instr"cciones de las o-eraciones l)icas son9 and3 not3 or ' 1or3 ,stas tra.a&an so.re los .its de s"s o-erandos. 0ara %erificar el res"ltado de o-eraciones rec"rrimos a las instr"cciones cm- ' test. Las instr"cciones "tili#adas -ara las o-eraciones al)e.raicas son9 -ara s"mar add3 -ara restar s".3 -ara m"lti-licar m"l ' -ara di%idir di%. Casi todas las instr"cciones de com-aracin est$n .asadas en la informacin contenida en el re)istro de .anderas. Normalmente las .anderas de este re)istro 2"e -"eden ser directamente mani-"ladas -or el -ro)ramador son la .andera de direccin de datos D(3 "sada -ara definir las o-eraciones so.re cadenas. Otra 2"e tam.ien -"ede ser mani-"lada es la .andera I( -or medio de las instr"cciones sti ' cli3 -ara acti%ar ' desacti%ar res-ecti%amente las interr"-ciones.

(altos1 ciclos % procedimientos Los saltos incondicionales en "n -ro)rama escrito en len)"a&e ensam.lador est$n dados -or la instr"ccin &m-3 "n salto es alterar el fl"&o de la e&ec"cin de "n -ro)rama en%iando el control a la direccin indicada.

25

Tutorial de lenguage Ensamblador


Un ciclo3 conocido tam.ien como iteracin3 es la re-eticin de "n -roceso "n cierto n5mero de %eces 4asta 2"e al)"na condicin se c"m-la. En estos ciclos se "tili#an los .rincos LcondicionalesL .asados en el estado de las .anderas. 0or e&em-lo la instr"ccin &n# 2"e salta solamente si el res"ltado de "na o-eracin es diferente de cero ' la instr"ccin &# 2"e salta si el res"ltado de la o-eracin es cero. 0or 5ltimo tenemos los -rocedimientos o r"tinas3 2"e son "na serie de -asos 2"e se "saran re-etidamente en el -ro)rama ' en l")ar de escri.ir todo el con&"nto de -asos "nicamente se les llama -or medio de la instr"ccin call. Un -rocedimiento en ensam.lador es a2"el 2"e inicie con la -ala.ra 0roc ' termine con la -ala.ra ret. Realmente lo 2"e s"cede con el "so de la instr"ccin call es 2"e se )"arda en la -ila el re)istro I0 ' se car)a la direccin del -rocedimiento en el mismo re)istro3 conociendo 2"e I0 contiene la locali#acin de la si)"iente instr"ccin 2"e e&ec"tara la UC03 entonces -odemos darnos c"enta 2"e se des%Na el fl"&o del -ro)rama 4acia la direccin es-ecificada en este re)istro. Al momento en 2"e se lle)a a la -ala.ra ret se saca de la -ila el %alor de I0 con lo 2"e se de%"el%e el control al -"nto del -ro)rama donde se in%oc al -rocedimiento. Es -osi.le llamar a "n -rocedimiento 2"e se enc"entre ".icado en otro se)mento3 -ara ,sto el contenido de CS A2"e nos indica 2"e se)mento se est$ "tili#andoB es em-"&ado tam.i,n en la -ila.

Instrucciones de operacin sobre datos Instrucciones de trans&erencia Son "tili#adas -ara mo%er los contenidos de los o-erandos. Cada instr"ccin se -"ede "sar con diferentes modos de direccionamiento. !OV !OVS A!OVS*B A!OVSVB Instrucciones de car!a Son instr"cciones es-ecNficas de los re)istros. Son "sadas -ara car)ar en al)5n re)istro .'tes o cadenas de .'tes. LODS ALODS*B ALODSVB LA/( LDS LEA LES Instrucciones de la pila Estas instr"cciones -ermiten el "so de la -ila -ara almacenar ' e1traer datos. 0O0 0O0( 0US/ 0US/(

26

Tutorial de lenguage Ensamblador

Instruccin *O, 0ro-sito9 Transferencia de datos entre celdas de memoria3 re)istros ' ac"m"lador. Sinta1is9 !OV Destino3("ente Donde Destino es el l")ar a donde se mo%er$n los datos ' f"ente es el l")ar donde se enc"entran dic4os datos. Los diferentes mo%imientos de datos -ermitidos -ara esta instr"ccin son9 Destino9 Destino9 Destino9 Destino9 Destino9 Destino9 Destino9 Destino9 Destino9 E&em-lo9 !OV !OV !OV INT AO3???74 *O3AO AO3<C??4 :8/ memoria. ("ente9 ac"m"lador ac"m"lador. ("ente9 memoria re)istro de se)mento. ("ente9 memoriaKre)istro memoriaKre)istro. ("ente9 re)istro de se)mento re)istro. ("ente9 re)istro re)istro. ("ente9 memoria memoria. ("ente9 re)istro re)istro. ("ente9 dato inmediato memoria. ("ente9 dato inmediato

Este -e2"eFo -ro)rama m"e%e el %alor ???7/ al re)istro AO3 l"e)o m"e%e el contenido de AO A???74B al re)istro *O3 -or 5ltimo m"e%e el %alor <C??4 al re)istro AO -ara terminar la e&ec"cin con la o-cin <C de la interr"-cin :84.

Instruccin *O,( 6*O,(/7 6*O,(87 0ro-sito9 !o%er cadenas de .'tes o -ala.ras desde la f"ente3 direccionada -or SI3 4asta el destino direccionado -or DI. Sinta1is9 !OVS Este comando no necesita -arametros 'a 2"e toma como direccin f"ente el contenido del re)istro SI ' como destino el contenido de DI. La sec"encia de instr"cciones si)"iente il"stran esto9 !OV SI3 O((SET VAR8 !OV DI3 O((SET VAR: !OVS

27

Tutorial de lenguage Ensamblador


0rimero iniciali#amos los %alores de SI ' DI con las direcciones de las %aria.les VAR8 ' VAR: res-ecti%amente3 des-"es al e&ec"tar !OVS se co-ia el contenido de VAR8 a VAR:. Los comandos !OVS* ' !OVSV se "tili#an de la misma forma 2"e !OVS3 el -rimero m"e%e "n .'te ' el se)"ndo "na -ala.ra.

Instruccin $OD( 6$OD(/7 6$OD(87 0ro-sito9 Car)ar cadenas de "n .'te o -ala.ra al ac"m"lador. Sinta1is9 LODS Esta instr"ccin toma la cadena 2"e se enc"entre en la direccin es-ecificada -or SI3 la car)a al re)istro AL Ao AOB ' s"ma o resta 8 Ase)"n el estado de D(B a SI si la transferencia es de .'tes o : si la transferencia es de -ala.ras. !OV SI3 O((SET VAR8 LODS La -rimer linea car)a la direccin de VAR8 en SI ' la se)"nda linea lle%a el contenido de esa localidad al re)istro AL. Los comandos LODS* ' LODSV se "tili#an de la misma forma3 el -rimero car)a "n .'te ' el se)"ndo "na -ala.ra A"tili#a el re)istro com-leto AOB.

Instruccin $#92 0ro-sito9 Transfiere al re)istro A/ el contenido de las .anderas Sinta1is9 LA/( Esta instr"ccin es 5til -ara %erificar el estado de las .anderas d"rante la e&ec"cin de n"estro -ro)rama. Las .anderas 2"edan en el si)"iente orden dentro del re)istro9 S( T( ]^ A( ]^ 0( ]^ C(

El sim.olo L]^L si)nifica 2"e en esos .its 4a.r$. "n %alor indefinido.

28

Tutorial de lenguage Ensamblador


Instruccin $D(

0ro-sito9 Car)ar el re)istro del se)mento de datos Sinta1is9 LDS destino3 f"ente El o-erando f"ente de.e ser "na -ala.ra do.le en memoria. La -ala.ra asociada con la direccin mas )rande es transferida a DS3 o sea 2"e se toma como la direccin del se)mento. La -ala.ra asociada con la direccin menor es la direccin del des-la#amiento ' se de-osita en el re)istro seFalado como destino.

Instruccin $E# 0ro-sito9 Car)a la direccin del o-erando f"ente. Sinta1is9 LEA destino3 f"ente El o-erando f"ente de.e estar ".icado en memoria3 ' se coloca s" des-la#amiento en el re)istro Nndice o a-"ntador es-ecificado en destino. 0ara il"strar "na de las facilidades 2"e tenemos con este comando -on)amos "na e2"i%alencia9 !OV SI3 O((SET VAR8 E2"i%ale a9 LEA SI3 VAR8 Es m"' -ro.a.le 2"e -ara el -ro)ramador sea mas sencillo crear -ro)ramas e1tensos "tili#ando este 5ltimo formato.

Instruccin $E( 0ro-sito9 Car)a el re)istro del se)mento e1tra Sinta1is9 LES destino3 f"ente El o-erando f"ente de.e ser "n o-erando en memoria de -ala.ra do.le. El contenido de la -ala.ra con la direccin ma'or se inter-reta como la direccin del se)mento ' se coloca en ES. La -ala.ra con la direccin menor es la direccin del des-la#amiento ' se coloca en el re)istro es-ecificado en el -ar$metro destino.

29

Tutorial de lenguage Ensamblador

Instruccin )O) 0ro-sito9 Rec"-era "n dato de la -ila Sinta1is9 0O0 destino Esta instr"ccin transfiere el 5ltimo %alor almacenado en la -ila al o-erando destino3 des-"es incrementa en dos el re)istro S0. Este incremento se de.e a 2"e la -ila %a creciendo desde la direccin mas alta de memoria del se)mento 4acia la mas .a&a3 ' la -ila solo tra.a&a con -ala.ras A: .'tesB3 entonces al incrementar en dos el re)istro S0 realmente se le esta restando dos al tama+o real de la -ila.

Instruccin )O)2 0ro-sito9 E1trae las .anderas almacenadas en la -ila. Sinta1is9 0O0( Este comando transfiere .its de la -ala.ra almacenada en la -arte s"-erior de la -ila 4acia el re)istro de .anderas.

La forma de transferencia es la si)"iente9 *IT ? : < 7 > 6 J 8? 88 *ANDERA C( 0( A( T( S( T( I( D( O(

Estas locali#aciones son las mismas -ara el comando 0US/( Una %e# 4ec4a la transferencia se incrementa en : el re)istro S0 dismin"'endo as el tama+o de la -ila.

Instruccin )+(9 0ro-sito9 Coloca "na -ala.ra en la -ila.

30

Tutorial de lenguage Ensamblador


Sinta1is9 0US/ f"ente La instr"ccin 0US/ decrementa en dos el %alor de S0 ' l"e)o transfiere el contenido del o-erando f"ente a la n"e%a direccin res"ltante en el re)istro reci,n modificado. El decremento en la direccin se de.e a 2"e al a)re)ar %alores a la -ila ,sta crece de la direccin ma'or a la direccin menor del se)mento3 -or lo tanto al restarle : al %alor del re)istro S0 lo 2"e 4acemos es a"mentar el tama+o de la -ila en dos .'tes3 2"e es la 5nica cantidad de informacin 2"e -"ede mane&ar la -ila en cada entrada ' salida de datos.

Instruccin )+(92 0ro-sito9 Coloca el %alor de las .anderas en la -ila Sinta1is9 0US/( Este comando decrementa en : el %alor del re)istro S0 ' l"e)o se transfiere el contenido del re)istro de .anderas a la -ila3 en la direccin indicada -or S0. Las .anderas 2"edan almacenadas en memoria en los mismos .its indicados en el comando 0O0(

Instrucciones l!icas % aritm ticas Instrucciones l!icas. Son "tili#adas -ara reali#ar o-eraciones l)icas so.re los o-erandos. AND NEG NOT OR TEST OOR Instrucciones aritm ticas. Se "san -ara reali#ar o-eraciones aritm,ticas so.re los o-erandos. ADC ADD DIV IDIV !UL I!UL S** SU*

31

Tutorial de lenguage Ensamblador


Instruccin #ND 0ro-sito9 Reali#a la con&"ncin de los o-erandos .it -or .it.

Sinta1is9 AND destino3 f"ente Con esta instr"ccin se lle%a a ca.o la o-eracin L'L l)ica de los dos o-erandos9 ("ente Destino _ Destino EEEEEEEEEEEEEEEEEEEEEEEEEE 8 8 _ 8 8 ? _ ? ? 8 _ ? ? ? _ ? El res"ltado de la o-eracin se almacena en el o-erando destino.

Instruccin NE0 0ro-sito9 Genera el com-lemento a : Sinta1is9 NEG destino Esta instr"ccin )enera el com-lemento a : del o-erando destino ' lo almacena en este mismo o-erando. 0or e&em-lo3 si AO )"arda el %alor de 8:;</3 entonces9 NEG AO Nos de&ar a almacenado en el re)istro AO el %alor EDCC/.

Instruccin NOT 0ro-sito9 Lle%a a ca.o la ne)acin .it -or .it del o-erando destino. Sinta1is9 NOT destino El res"ltado se )"arda en el mismo o-erando destino.

32

Tutorial de lenguage Ensamblador

Instruccin OR 0ro-sito9 OR incl"si%o l)ico Sinta1is9 OR destino3 f"ente La instr"ccin OR lle%a a ca.o3 .it -or .it3 la dis'"ncin incl"si%a l)ica de los dos o-erandos9 ("ente Destino _ Destino EEEEEEEEEEEEEEEEEEEEEEEEEE 8 8 _ 8 8 ? _ 8 ? 8 _ 8 ? ? _ ?

Instruccin TE(T 0ro-sito9 Com-arar lo)icamente los o-erandos Sinta1is9 TEST destino3 f"ente Reali#a "na con&"ncin3 .it -or .it3 de los o-erandos3 -ero a diferencia de AND esta instr"ccin no coloca el res"ltado en el o-erando destino3 solo tiene efecto so.re el estado de las .anderas.

Instruccin :OR 0ro-sito9 OR e1cl"si%o Sinta1is9 OOR destino3 f"ente S" f"ncin es efect"ar .it -or .it la dis'"ncin e1cl"si%a l)ica de los dos o-erandos. ("ente Destino _ Destino EEEEEEEEEEEEEEEEEEEEEEEEEE 8 8 _ ? ? ? _ 8 ? 8 _ 8 ? ? _ ?

33

Tutorial de lenguage Ensamblador

Instruccin #DC 0ro-sito9 Adicin con acarreo. Sinta1is9 ADC destino3 f"ente Lle%a a ca.o la s"ma de dos o-erandos ' s"ma "no al res"ltado en caso de 2"e la .andera C( est, acti%ada3 esto es3 en caso de 2"e e1ista acarreo. El res"ltado se )"arda en el o-erando destino.

Instruccin #DD 0ro-sito9 Adicin de los o-erandos. Sinta1is9 ADD destino3 f"ente S"ma los dos o-erandos ' )"arda el res"ltado en el o-erando destino.

Instruccin DI, 0ro-sito9 Di%isin sin si)no Sinta1is9 DIV f"ente El di%isor -"ede ser "n .'te o -ala.ra ' es el o-erando 2"e se le da a la instr"ccin. Si el di%isor es de 6 .its se toma como di%idendo el re)istro de 87 .its AO ' si el di%isor es de 87 .its se tomara como di%idendo el re)istro -ar DO9AO3 tomando como -ala.ra alta DO ' como .a&a AO. Si el di%isor f", "n .'te el cociente se almacena en el re)istro AL ' el resid"o en A/3 si f", "na -ala.ra el cociente se )"arda en AO ' el resid"o en DO. Instruccin IDI, 0ro-sito9 Di%isin con si)no Sinta1is9 IDIV f"ente Consiste .asicamente en lo mismo 2"e la instr"ccin DIV3 solo 2"e esta 5ltima reali#a la o-eracin con si)no.

34

Tutorial de lenguage Ensamblador


0ara s"s res"ltados "tili#a los mismos re)istros 2"e la instr"ccin DIV.

Instruccin *+$ 0ro-sito9 !"lti-licacin sin si)no Sinta1is9 !UL f"ente El ensam.lador as"me 2"e el m"lti-licando sera del mismo tama+o 2"e el del m"lti-licador3 -or lo tanto m"lti-lica el %alor almacenado en el re)istro 2"e se le da como o-erando -or el 2"e se enc"entre contenido en A/ si el m"lti-licador es de 6 .its o -or AO si el m"lti-licador es de 87 .its. C"ando se reali#a "na m"lti-licacin con %alores de 6 .its el res"ltado se almacena en el re)istro AO ' c"ando la m"lti-licacin es con %alores de 87 .its el res"ltado se almacena en el re)istro -ar DO9AO.

Instruccin I*+$ 0ro-sito9 !"lti-licacin de dos enteros con si)no. Sinta1is9 I!UL f"ente Este comando 4ace lo mismo 2"e el anterior3 solo 2"e si toma en c"enta los si)nos de las cantidades 2"e se m"lti-lican. Los res"ltados se )"ardan en los mismos re)istros 2"e en la instr"ccin !OV.

Instruccin (// 0ro-sito9 S".straccin con acarreo Sinta1is9 S** destino3 f"ente Esta instr"ccin resta los o-erandos ' resta "no al res"ltado si C( est$ acti%ada. El o-erando f"ente siem-re se resta del destino. Este ti-o de s".straccin se "tili#a c"ando se tra.a&a con cantidades de ;: .its.

35

Tutorial de lenguage Ensamblador


Instruccin (+/ 0ro-sito9 S".straccin Sinta1is9 SU* destino3 f"ente Resta el o-erando f"ente del destino.

Instrucciones l!icas % aritm ticas Instrucciones de salto Son "tili#adas -ara transferir el fl"&o del -roceso al o-erando indicado. J!0 JA AJN*EB JAE AJN*EB J* AJNAEB J*E AJNAB JE AJTB JNE AJNTB JG AJNLEB JGE AJNLB JL AJNGEB JLE AJNGB JC JNC JNO JN0 AJ0OB JNS JO J0 AJ0EB JS Instrucciones para ciclos: $OO) Transfieren el fl"&o del -roceso3 condicional o incondicionalmente3 a "n destino re-itiendose esta accin 4asta 2"e el contador sea cero. LOO0 LOO0E LOO0NE Instrucciones de conteo Se "tili#an -ara decrementar o incrementar el contenido de los contadores. DEC INC

36

Tutorial de lenguage Ensamblador


Instrucciones de comparacin Son "sadas -ara com-arar o-erandos3 afectan al contenido de las .anderas. C!0 C!0S AC!0S*B AC!0SVB Instrucciones de banderas Afectan directamente al contenido de las .anderas. CLC CLD CLI C!C STC STD STI Instruccin ;*) 0ro-sito9 Salto incondicional Sinta1is9 J!0 destino Esta instr"ccin se "tili#a -ara des%iar el fl"&o de "n -ro)rama sin tomar en c"enta las condiciones act"ales de las .anderas ni de los datos. Instruccin ;# 6;N/E7 0ro-sito9 Salto condicional Sinta1is9 JA Eti2"eta Des-",s de "na com-aracin este comando salta si est$ arri.a o salta si no est$ a.a&o o si no es i)"al. Esto si)nifica 2"e el salto se reali#a solo si la .andera C( esta desacti%ada o si la .andera T( esta desacti%ada A2"e al)"na de las dos sea i)"al a ceroB.

Instruccin ;#E 6;N/7 0ro-sito9 salto condicional Sinta1is9 JAE eti2"eta Salta si est$arri.a o si es i)"al o salta si no est$a.a&o.

37

Tutorial de lenguage Ensamblador


El salto se efect"a si C( esta desacti%ada.

Instruccin ;/ 6;N#E7 0ro-sito9 salto condicional Sinta1is9 J* eti2"eta Salta si est$a.a&o o salta si no est$arri.a o si no es i)"al. Se efect5a el salto si C( esta acti%ada.

Instruccin ;/E 6;N#7 0ro-sito9 salto condicional Sinta1is9 J*E eti2"eta Salta si est$a.a&o o si es i)"al o salta si no est$arri.a. El salto se efect5a si C( est$acti%ado o si T( est$acti%ado A2"e c"al2"iera sea i)"al a 8B.

Instruccin ;E 6;<7 0ro-sito9 salto condicional Sinta1is9 JE eti2"eta Salta si es i)"al o salta si es cero. El salto se reali#a si T( est$acti%ada.

Instruccin ;NE 6;N<7 0ro-sito9 salto condicional Sinta1is9 JNE eti2"eta Salta si no es i)"al o salta si no es cero. El salto se efect"a si T( est$desacti%ada.

38

Tutorial de lenguage Ensamblador


Instruccin ;0 6;N$E7 0ro-sito9 salto condicional3 se toma en c"enta el si)no. Sinta1is9 JG eti2"eta Salta si es m$s )rande o salta si no es menor o i)"al. El salto oc"rre si T( I ? " O( I S(.

Instruccin ;0E 6;N$7 0ro-sito9 salto condicional3 se toma en c"enta el si)no. Sinta1is9 JGE eti2"eta Salta si es m$s )rande o i)"al o salta si no es menor 2"e. El salto se reali#a si S( I O(

Instruccin ;$ 6;N0E7 0ro-sito9 salto condicional3 se toma en c"enta el si)no. Sinta1is9 JL eti2"eta Salta si es menor 2"e o salta si no es ma'or o i)"al. El salto se efect5a si S( es diferente a O(.

Instruccin ;$E 6;N07 0ro-sito9 salto condicional3 se toma en c"enta el si)no. Sinta1is9 JLE eti2"eta Salta si es menor o i)"al o salta si no es m$s )rande. El salto se reali#a si T( I 8 o si S( es diferente a O(

39

Tutorial de lenguage Ensamblador


Instruccin ;C 0ro-sito9 salto condicional3 se toman en c"enta las .anderas. Sinta1is9 JC eti2"eta Salta si 4a' acarreo. El salto se reali#a si C( I 8

Instruccin ;NC 0ro-sito9 salto condicional3 se toma en c"enta el estado de las .anderas. Sinta1is9 JNC eti2"eta Salta si no 4a' acarreo. El salto se efect5a si C( I ?.

Instruccin ;NO 0ro-sito9 salto condicional3 se toma en c"enta el estado de las .anderas. Sinta1is9 JNO eti2"eta Salta si no 4a' des.ordamiento. El salto se efect"a si O( I ?.

Instruccin ;N) 6;)O7 0ro-sito9 salto condicional3 toma en c"enta el estado de las .anderas. Sinta1is9 JN0 eti2"eta Salta si no 4a' -aridad o salta si la -aridad es non. El salto oc"rre si 0( I ?. Instruccin ;N( 0ro-sito9 salto condicional3 toma en c"enta el estado de las .anderas.

40

Tutorial de lenguage Ensamblador


Sinta1is9 JN0 eti2"eta Salta si el si)no esta desacti%ado. El salto se efect5a si S( I ?.

Instruccin ;O 0ro-sito9 salto condicional3 toma en c"enta el estado de las .anderas. Sinta1is9 JO eti2"eta Salta si 4a' des.ordamiento Ao%erfloDB. El salto se reali#a si O( I 8.

Instruccin ;) 6;)E7 0ro-sito9 salto condicional3 toma en c"enta el estado de las .anderas. Sinta1is9 J0 eti2"eta Salta si 4a' -aridad o salta si la -aridad es -ar. El salto se efect5a si 0( I 8.

Instruccin ;( 0ro-sito9 salto condicional3 toma en c"enta el estado de las .anderas. Sinta1is9 JS eti2"eta Salta si el si)no est$ -rendido. El salto se efect5a si S( I 8.

Instruccin $OO) 0ro-sito9 Generar "n ciclo en el -ro)rama. Sinta1is9 LOO0 eti2"eta

41

Tutorial de lenguage Ensamblador


La instr"ccin loo- decrementa CO en 83 ' transfiere el fl"&o del -ro)rama a la eti2"eta dada como o-erando si CO es diferente a 8.

Instruccin $OO)E 0ro-sito9 Generar "n ciclo en el -ro)rama considerando el estado de T( Sinta1is9 LOO0E eti2"eta Esta instr"ccin decrementa CO en 8. Si CO es diferente a cero ' T( es i)"al a 83 entonces el fl"&o del -ro)rama se transfiere a la eti2"eta indicada como o-erando.

Instruccin $OO)NE 0ro-sito9 Generar "n ciclo en el -ro)rama3 considerando el estado de T( Sinta1is9 LOO0NE eti2"eta Esta instr"ccin decrementa en "no a CO ' transfiere el fl"&o del -ro)rama solo si T( es diferente a ?.

Instruccin DEC 0ro-sito9 Decrementar el o-erando Sinta1is9 DEC destino Esta o-eracin resta 8 al o-erando destino ' almacena el n"e%o %alor en el mismo oe-rando.

Instruccin INC 0ro-sito9 Incrementar el o-erando. Sinta1is9 INC destino La instr"ccin s"ma 8 al o-erando destino ' )"arda el res"ltado en el mismo o-erando destino.

42

Tutorial de lenguage Ensamblador


Instruccin C*) 0ro-sito9 Com-arar los o-erandos. Sinta1is9 C!0 destino3 f"ente Esta instr"ccin resta el o-erando f"ente al o-erando destino -ero sin 2"e ,ste almacene el res"ltado de la o-eracin3 solo se afecta el estado de las .anderas.

Instruccin C*)( 6C*)(/7 6C*)(87 0ro-sito9 Com-arar cadenas de "n .'te o -ala.ra. Sinta1is9 C!0 destino3 f"ente Con esta instr"ccin la cadena de caracteres f"ente se resta de la cadena destino. Se "tili#an DI como indice -ara el se)mento e1tra de la cadena f"ente ' SI como indice de la cadena destino. Solo se afecta el contenido de las .anderas ' tanto DI como SI se incrementan.

Instruccin C$C 0ro-sito9 Lim-iar .andera de acarreo. Sinta1is9 CLC Esta instr"ccin a-a)a el .it corres-ondiente a la .andera de acarreo3 o sea3 lo -one en cero.

Instruccin C$D 0ro-sito9 Lim-iar .andera de direccin Sinta1is9 CLD La instr"ccin CLD -one en cero el .it corres-ondiente a la .andera de direccin.

43

Tutorial de lenguage Ensamblador

Instruccin C$I 0ro-sito9 Lim-iar .andera de interr"-cin Sinta1is9 CLI CLI -one en cero la .andera de interr"-ciones3 desa.ilitando as interr"-ciones enmascara.les. a2"ellas

Una interr"-cin enmascara.le es a2"ella c"'as f"nciones son desacti%adas c"ando I( I ?.

Instruccin C*C 0ro-sito9 Com-lementar la .andera de acarreo. Sinta1is9 C!C Esta instr"ccin com-lementa el estado de la .andera C(3 si C( I ? la instr"ccin la i)"ala a 83 ' si es 8 la instr"ccin la i)"ala a ?. 0odemos decir 2"e "nicamente Lin%ierteL el %alor de la .andera.

Instruccin (TC 0ro-sito9 Acti%ar la .andera de acarreo. Sinta1is9 STC Esta instr"ccin -one la .andera C( en 8. Instruccin (TD 0ro-sito9 Acti%ar la .andera de direccin. Sinta1is9 STD La instr"ccin STD -one la .andera D( en 8. Instruccin (TI 0ro-sito9 Acticar la .andera de interr"-cin.

44

Tutorial de lenguage Ensamblador


Sinta1is9 STI La instr"ccin acti%a la .andera I(3 esto 4a.ilita las interr"-ciones e1ternas enmascara.les Alas 2"e f"ncionan "nicamente c"ando I( I 8 B.

Interrupciones Interrupciones internas de hard3are Interrupciones e.ternas de hard3are Interrupciones de so&t3are Interrupciones mas usuales: Int :8/ Ainterr"-cin del DOSB !"lti-les llamadas a f"nciones del DOS. Int 8?/ Ainterr"-cin del *IOSB EntradaKsalida de %ideo. Int 87/ AInterr"-cin del *IOSB EntradaKsalida de teclado. Int 8>/ AInterr"-cin del *IOSB EntradaKsalida de la im-resora.

Interrupciones internas de hard3are Las interr"-ciones internas son )eneradas -or ciertos e%entos 2"e s"r)en d"rante la e&ec"cin de "n -ro)rama. Este ti-o de interr"-ciones son mane&adas en s" totalidad -or el 4ardDare ' no es -osi.le modificarlas. Un e&em-lo claro de este ti-o de interr"-ciones es la 2"e act"ali#a el contador del relo& interno de la com-"tadora3 el 4ardDare 4ace el llamado a esta interr"-cin %arias %eces d"rante "n se)"ndo -ara mantener la 4ora act"ali#ada. A"n2"e no -odemos mane&ar directamente esta interr"-cin Ano -odemos controlar -or softDare las act"ali#aciones del relo&B3 es -osi.le "tili#ar s"s efectos en la com-"tadora -ara n"estro .eneficio3 -or e&em-lo -ara crear "n Lrelo& %irt"alL act"ali#ado contin"amente )racias al contador del relo& interno. Unicamente de.emos escri.ir "n -ro)rama 2"e lea el %alor act"al del contador ' lo trad"#ca a "n formato entendi.le -ara el "s"ario. Interrupciones e.ternas de hard3are Las interr"-ciones e1ternas las )eneran los dis-ositi%os -erifericos3 como -"eden ser9 teclado3 im-resoras3 tar&etas de com"nicaciones3 etc. Tam.i,n son )eneradas -or los co-rocesadores.

45

Tutorial de lenguage Ensamblador


No es -osi.le desacti%ar a las interr"-ciones e1ternas. Estas interr"-ciones no son en%iadas directamente a la UC03 sino 2"e se mandan a "n circ"ito inte)rado c"'a f"ncin es e1cl"si%amente mane&ar este ti-o de interr"-ciones. El circ"ito3 llamado 0IC 6:=JA3 si es controlado -or la UC0 "tili#ando -ara tal control "na serie de %ias de com"nicacin llamadas -"ertos. Interrupciones de so&t3are Las interr"-ciones de softDare -"eden ser acti%adas directamente -or el ensam.lador in%ocando al n5mero de interr"-cin deseada con la instr"ccin INT. El "so de las interr"-ciones nos a'"da en la creacin de -ro)ramas3 "tili#andolas n"estros -ro)ramas son m$s cortos3 es m$s f$cilentenderlos ' "s"almente tienen "n me&or desem-e+o de.ido en )ran -arte a s" menor tama+o. Este ti-o de interr"-ciones -odemos se-ararlas en dos cate)orias9 las interr"-ciones del sistema o-erati%o DOS ' las interr"-ciones del *IOS. La diferencia entre am.as es 2"e las interr"-ciones del sistema o-erati%o son m$s f$ciles de "sar -ero tam.i,n son m$s lentas 'a 2"e estas interr"-ciones 4acen "so del *IOS -ara lo)rar s" cometido3 en cam.io las interr"-ciones del *IOS son m"c4o m$s r$-idas -ero tienen la des%enta&a 2"e3 como son -arte del 4ardDare son m"' es-ec ficas ' -"eden %ariar de-endiendo incl"so de la marca del fa.ricante del circ"ito. La eleccin del ti-o de interr"-cin a "tili#ar de-ender$ "nicamente de las caracteristicas 2"e le 2"iera dar a s" -ro)rama9 %elocidad A"tili#ando las del *IOSB o -orta.ilidad A"tili#ando las del DOSB.

Interrupcin =>9 0ro-sito9 Llamar a di%ersas f"nciones del DOS. Sinta1is9 Int :8/ Nota9 C"ando tra.a&amos en !AS! es necesario es-ecificar 2"e el %alor 2"e estamos "tili#ando es 4e1adecimal. Esta interr"-cin tiene %arias f"nciones3 -ara accesar a cada "na de ellas es necesario 2"e el el re)istro A/ se enc"entre el n5mero de f"ncin 2"e se re2"iera al momento de llamar a la interr"-cin. 2unciones para desple!ar in&ormacin al video. ?:/ E14i.e salida ?J/ Im-resin de cadena A%ideoB <?/ Escrit"ra en dis-ositi%oKArc4i%o

46

Tutorial de lenguage Ensamblador


2unciones para leer in&ormacin del teclado. ?8/ Entrada desde teclado ?A/ Entrada desde teclado "sando ."ffer ;(/ Lect"ra desde dis-ositi%oKarc4i%o 2unciones para traba"ar con archivos. En esta seccin "nicamente se e1-one la tarea es-ecNfica de cada f"ncin3 -ara "na referencia acerca de los conce-tos em-leados refierase a la "nidad >3 tit"lada9 LIntrod"ccin al mane&o de arc4i%osL. * todo 2C/ ?(/ 8</ 8=/ 87/ :8/ ::/ A.rir arc4i%o Lect"ra sec"encial Escrit"ra sec"encial Crear arc4i%o Lect"ra aleatoria Escrit"ra aleatoria

9andles ;C/ ;D/ ;E/ ;(/ <?/ <:/ Crear arc4i%o A.rir arc4i%o Cierra mane&ador de arc4i%o Lect"ra desde arc4i%oKdis-ositi%o Escrit"ra en arc4i%oKdis-ositi%o !o%er a-"ntador de lect"raKescrit"ra en arc4i%o

2uncin ?=9 Uso9 Des-lie)a "n caracter a la -antalla. Re)istros de llamada9 A/ I ?:/ DL I Valor del caracter a des-le)ar. Re)istros de retorno9 Nin)"no Esta f"ncin nos des-lie)a el caracter c"'o codi)o 4e1a)esimal corres-onde al %alor almacenado en el re)istro DL3 no se modifica nin)5n re)istro al "tili#ar este comando. Es recomendado el "so de la f"ncin <?/ de la misma interr"-cin en l")ar de esta f"ncin.

47

Tutorial de lenguage Ensamblador


2uncin ?@9 Uso9 Des-lie)a "na cadena de carateres en la -antalla. Re)istros de llamada9 A/ I ?J/ DS9DO I Direccin de inicio de "na cadena de caracteres Re)istros de retorno9 Nin)"no. Esta f"ncin des-lie)a los caracteres3 "no a "no3 desde la direccin indicada en el re)istro DS9DO 4asta encontrar "n caracter W3 2"e es inter-retado como el final de la cadena. Se recomienda "tili#ar la f"ncin <?/ en l")ar de esta f"ncin.

2uncin A?9 Uso9 Escri.ir a "n dis-ositi%o o a "n arc4i%o. Re)istros de llamada9 A/ I <?/ *O I VNa de com"nicacin CO I Cantidad de .'tes a escri.ir DS9DO I Direccin del inicio de los datos a escri.ir Re)istros de retorno9 C( I ? si AO I C( I 8 si AO I no 4".o error N5mero de .'tes escritos 4".o error Cdi)o de error

El "so de esta f"ncin -ara des-le)ar informacin en -antalla se reali#a dandole al re)istro *O el %alor de 8 2"e es el %alor -reasi)nado al %ideo -or el sistema o-erati%o !SEDOS.

2uncin ?>9 Uso9 Leer "n caracter del teclado ' des-le)arlo. Re)istros de llamada9 A/ I ?8/

48

Tutorial de lenguage Ensamblador


Re)istros de retorno9 AL I Caracter leNdo Con esta f"ncin es m"' sencillo leer "n caracter del teclado3 el cdi)o 4e1adecimal del caracter leNdo se )"arda en el re)istro AL. En caso de 2"e sea "n caracter e1tendido el re)istro AL contendra el %alor de ? ' ser$ necesario llamar de n"e%o a la f"ncin -ara o.tener el cdi)o de este caracter. 2uncin ?#9 Uso9 Leer caracteres del teclado ' almacenarlos en "n ."ffer. Re)istros de llamada9 A/ I ?A/ DS9DO I Direccin del $rea de almacenamiento *UTE ? I Cantidad de .'tes en el $rea *UTE 8 I Cantidad de .'tes leNdos desde *UTE : 4asta *UTE ? H : I caracteres leNdos Re)istros de retorno9 Nin)"no Los caracteres son leNdos ' almacenados en "n es-acio -redefinido de memoria. La estr"ct"ra de este es-acio le indica 2"e en el -rimer .'te del mismo se indican c"antos caracteres ser$n leNdos. En el se)"ndo .'te se almacena el n5mero de caracteres 2"e 'a se le'eron3 ' del tercer .'te en adelante se escri.en los caracteres leNdos. C"ando se 4an almacenado todos los caracteres indicados menos "no la .ocina s"ena ' c"al2"ier caracter adicional es i)norado. 0ara terminar la ca-t"ra de la cadena es necesario darle RENTERS.

2uncin B29 Uso9 Leer informacin de "n dis-ositi%o o arc4i%o. Re)istros de llamada9 A/ I ;(/ *O I N5mero asi)nado al dis-ositi%o CO I N5mero de .'tes a -rocesar DS9DO I Direccin del $rea de almacenamiento Re)istros de retorno9 C( I ? si no 4a' error ' AO I n5mero de .'tes leidos. C( I 8 si 4a' error ' AO contendra el cdi)o del error.

49

Tutorial de lenguage Ensamblador


2uncin ?29 Uso9 A.rir arc4i%o (C* Re)istros de llamada9 A/ I ?(/ DS9DO I A-"ntador a "n (C* Re)istros de retorno9 AL I ??/ si no 4".o -ro.lema3 de lo contrario re)resa ?((/

2uncin >A9 Uso9 Leer sec"encialmente "n arc4i%o (C*. Re)istros de llamada9 A/ I 8</ DS9DO I A-"ntador a "n (C* 'a a.ierto. Re)istros de retorno9 AL I ? si no 4".o errores3 de lo contrario se re)resara el cdi)o corres-ondiente de error9 8 error al final del arc4i%o3 : error en la estr"ct"ra del (C* ' ; error de lect"ra -arcial. Esta f"ncin lo 2"e 4ace es 2"e lee el si)"iente .lo2"e de informacin a -artir de la direccin dada -or DS9DO3 ' act"ali#a este re)istro.

2uncin >C9 Uso9 Escri.ir sec"encialmente a "n arc4i%o (C* Re)istros de llamada9 A/ I 8=/ DS9DO I A-"ntador a "n (C* 'a a.ierto Re)istros de retorno9 AL I ??/ si no 4".o errores3 de lo contrario contendra el cdi)o del error9 8 disco lleno o arc4i%o de solo lect"ra3 : error en la formacin o es-ecificacin del (C*. La f"ncin 8=/ des-",s de escri.ir el re)istro al .lo2"e act"al act"ali#a el (C*.

50

Tutorial de lenguage Ensamblador


2uncin >D9 Uso9 Crear "n arc4i%o (C*. Re)istros de llamada9 A/ I 87/ DS9DO I A-"ntador a "n (C* 'a a.ierto. Re)istros de retorno9 AL I ??/ si no 4".o errores3 de lo contrario contendra el %alor ?((/ Se .asa en la informacin -ro%eida en "n (C* -ara crear "n arc4i%o en el disco.

2uncin =>9 Uso9 Leer en forma aleatoria "n arc4i%o (C*. Re)istros de llamada9 A/ I :8/ DS9DO I A-"ntador a "n (C* 'a a.ierto. Re)istros de retorno9 A I ??/ si no 4".o error3 de lo contrario A/ contendra el cdi)o del error9 8 si es fin de arc4i%o3 : si e1iste error de es-ecificacin de (C* ' ; si se le' "n re)istro -arcial o el a-"ntador del arc4i%o se enc"entra al final del mismo. Esta f"ncin lee el re)istro es-ecificado -or los cam-os del .lo2"e act"al ' re)istro act"al de "n (C* a.ierto ' coloca la informacin en el DTA A$rea de transferencia de disco o DisM Transfer AreaB. 2uncin ==9 Uso9 Escri.ir en forma aleatoria en "n arc4i%o (C*. Re)istros de llamada9 A/ I ::/ DS9DO I A-"ntador a "n (C* a.ierto. Re)istros de retorno9 AL I ??/ si no 4".o error3 de lo contrario contendr$ el cdi)o del error9 8 si el disco est$lleno o es arc4i%o de solo lect"ra ' : si 4a' error en la es-ecificacin de (C*.

51

Tutorial de lenguage Ensamblador


Escri.e el re)istro es-ecificado -or los cam-os del .lo2"e act"al ' re)istro act"al de "n (C* a.ierto. Escri.e dic4a informacin a -artir del contenido del DTA A$rea de transferencia de discoB.

2uncin BC9 Uso9 Crear "n arc4i%o si no e1iste o de&arlo en lon)it"d ? si e1iste. A/andleB Re)istros de llamada9 A/ I ;C/ C/ I Atri."to de arc4i%o DS9DO I A-"ntador a "na es-ecificain ASCIIT Re)istros de retorno9 C( I ? ' AO el n5mero asi)nado al 4andle si no 4a' error3 en caso de 4a.erlo C( ser$ 8 ' AO contendra el cdi)o de error9 ; r"ta no encontrada3 < no 4a' 4andles dis-oni.les -ara asi)nar ' = acceso ne)ado. Esta f"ncin s"stit"'e a la 87/. El nom.re del arc4i%o es es-ecificado en "na cadena ASCIIT3 la c"al tiene como caracter stica la de ser "na cadena de .'tes con%encional terminada con "n caracter ?. El arc4i%o creado contendra los atri."tos definidos en el re)istro CO en la si)"iente forma9 Valor ??/ ?:/ ?</ ?7/ Atri."tos Normal Escondido Sistema Escondido ' de sistema

El arc4i%o se crea con los -ermisos de lect"ra ' escrit"ra. No es -osi.le crear directorios "tili#ando esta f"ncin.

2uncin BD9 Uso9 A.re "n arc4i%o ' re)rese "n 4andle Re)istros de llamada9 A/ I ;D/ AL I modo de acceso DS9DO I A-"ntador a "na es-ecificacin ASCIIT Re)istros de retorno9 C( I ? ' AO I n5mero de 4andle si no 4a' errores3 de lo contrario C( I 8 ' AO I cdi)o de error9 ?8/ si no es %$lida la f"ncin3 ?:/ si no se encontr el arc4i%o3 ?;/ si no se encontrXac"teCo la r"ta3 ?</ si no 4a' 4andles

52

Tutorial de lenguage Ensamblador


dis-oni.les3 ?=/ en caso de acceso ne)ado3 ' ?C/ si el cdi)o de acceso no es %$lido. El 4andle re)resado es de 87 .its. El cdi)o de acceso se es-ecifica en la si)"iente forma9 *ITS > 7 = < ; : 8 . . . . . . . . . . . . . . . O ? ? ? . ? ? 8 . ? 8 ? . Solo lect"ra Solo escrit"ra Lect"raKEscrit"ra RESERVADO

2uncin BE9 Uso9 Cerrar arc4i%o A/andleB. Re)istros de llamada9 A/ I ;E/ *O I /andle asi)nado Re)istros de retorno9 C( I ? si no 4".o errores3 en caso contrario C( ser$ 8 ' AO contendr$ el cdi)o de error9 ?7/ si el 4andle es in%$lido. Esta f"ncin act"ali#a el arc4i%o ' li.era o de&a dis-oni.le el 4andle 2"e esta.a "tili#ando.

2uncin B29 Uso9 Leer de "n arc4i%o a.ierto "na cantdad definida de .'tes ' los almacena en "n ."ffer es-ecNfico. Re)istros de llamada9 A/ I ;(/ *O I /andle asi)nado CO I Cantidad de .'tes a leer DS9DO I A-"ntador a "n $rea de tra.a&o. Re)istros de retorno9 C( I ? ' AO I n5mero de .'tes leidos si no 4".o error3 en caso contrario C( I 8 ' AO I cdi)o de error9 ?=/ si acceso ne)ado ' ?7/ si no es %$lido el 4andle.

53

Tutorial de lenguage Ensamblador


2uncin A?9 Uso9 Escri.e a "n arc4i%o 'a a.ierto "na cierta cantidad de .'tes a -artir del ."ffer desi)nado. Re)istros de llamada9 A/ I <?/ *O I /andle asi)nado CO I Cantidad de .'tes a escri.ir. DS9DO I A-"ntador al ."ffer de datos. Re)istros de retorno9 C( I ? ' AO I n5mero de .'tes escritos si no 4a' errores3 en caso de e1istir C( I 8 ' AO I cdi)o del error9 ?=/ si el acceso es ne)ado ' ?7/ si el 4andle es in%$lido. 2uncin A=9 Uso9 !o%er a-"ntador al arc4i%o A/andleB Re)istros de llamada9 A/ AL *O CO DO I I I I I <:/ m,todo "tili#ado /andle asi)nado La -arte m$s si)nificati%a del offset La -arte menos si)nificati%a del offset

Re)istros de retorno9 C( I ? ' DO9AO I la n"e%a -osicin del a-"ntador. En caso de error C( ser$ 8 ' AO I cdi)o de error9 ?8/ si la f"ncin no es %$lida ' ?7/ si el 4andle no es %$lido. El m,todo "tili#ado se confi)"ra como si)"e9 Valor de AL ??/ ?8/ ?:/ !,todo A -artir del -rinci-io del arc4i%o A -artir de la -osicin act"al A -artir del final del arc4i%o

Interrupcin >?9 0ro-sito9 Llamar a di%ersas f"nciones de %ideo del *IOS. Sinta1is9 Int 8?/

54

Tutorial de lenguage Ensamblador


Esta interr"-cin tiene di%ersas f"nciones3 todas ellas nos sir%en -ara controlar la entrada ' salida de %ideo3 la forma de acceso a cada "na de las o-ciones es -or medio del re)istro A/. En este t"torial "nicamente %eremos al)"nas de las f"nciones de esta interr"-cin. 2unciones comunes de la interrupcin >?9. ?:/ ?J/ ?A/ ?E/ Seleccin de -osicin del c"rsor Escri.e atri."to ' caracter en el c"rsor Escri.e caracter en la -osicin del c"rsor Escrit"ra de caracteres en modo alfan"m,rico

2uncin ?=9 Uso9 0osiciona el c"rsor en la -antalla dentro de las coordenadas %$lidas de te1to. Re)istros de llamada9 A/ */ D/ DL I I I I ?:/ 0$)ina de %ideo en la 2"e se -osicionar$ el c"rsor. (ila Col"mna

Re)istros de retorno9 Nin)"no. Las -osiciones de locali#acin del c"rsor son definidas iniciando en ?3?3 2"e corres-onde a la es2"ina s"-erior corres-ondientes a la es2"ina inferior derec4a. Tenemos 2"e -"eden tomar los re)istros D/ ' DL en modo de te1to 4asta :< ' de ? 4asta >J res-ecti%amente. -or coordenadas i#2"ierda 4asta >J3:< entonces 2"e los %alores de 6? 1 := son de ?

2uncin ?@9 Uso9 Des-le)ar "n caracter "n determinado n5mero de %eces con "n atri."to definido em-e#ando en la -osicin act"al del c"rsor. Re)istros de llamada9 A/ I ?J/ AL I Caracter a des-le)ar */ I 0$)ina de %ideo en donde se des-le)ar$ *L I Atri."to a "sar N5mero de re-eticiones.

55

Tutorial de lenguage Ensamblador


Re)istros de retorno9 Nin)"no Esta f"ncin des-lie)a "n caracter el n5mero de %eces es-ecificado en CO -ero sin cam.iar la -osicin del c"rsor en la -antalla.

2uncin ?#9 Uso9 Des-le)ar "n caracter en la -osicin act"al del c"rsor. Re)istros de llamada9 A/ AL */ *L CO I I I I I ?A/ Caracter a des-le)ar 0$)ina en donde des-le)ar Color a "sar Aslo en )r$ficosB. N5mero de re-eticiones

Re)istros de retorno9 Nin)"no. La 5nica diferencia entre esta f"ncin ' la anterior es 2"e ,sta no -ermite modificar los atri."tos3 sim-lemente "sa los atri."tos act"ales. Tam-oco se altera la -osicin del c"rsor con esta f"ncin.

2uncin ?E9 Uso9 De-le)ar "n caracter en la -antalla act"ali#ando la -osicin del c"rsor. Re)istros de llamada9 A/ AL */ *L I I I I ?E/ Caracter a des-le)ar 0$)ina donde se des-le)ara el caracter Color a "sar Asolo en )r$ficosB

Re)istros de retorno9 Nin)"no

Interrupcin >D9 0ro-sito9 !ane&ar la entradaKsalida del teclado. Sinta1is9 Int 87/

56

Tutorial de lenguage Ensamblador


Veremos dos o-ciones de la interr"-cin 87/3 estas o-ciones3 al i)"al 2"e las de otras interr"-ciones3 son llamadas "tili#ando el re)istro A/. ("nciones de la interr"-cin 87/ ??/ Lee "n caracter de teclado ?8/ Lee estado del teclado

2uncin ??9 Uso9 Leer "n caracter del teclado. Re)istros de llamada9 A/ I ??/ Re)istros de retorno9 A/ I cdi)o de .arrido Ascan codeB del teclado AL I Valor ASCII del caracter. C"ando se "tili#a esta interr"-cin se detiene la e&ec"cin del -ro)rama 4asta 2"e se introd"#ca "n caracter desde el teclado3 si la tecla -resionada es "n caracter ASCII s" %alor ser$ )"ardado en el re)istro A/3 de lo contrario el cdi)o de .arrido ser$ )"ardado en AL ' A/ contendr$ el %alor ??/. El cdi)o de .arrido f", creado -ara mane&ar las teclas 2"e no tienen "na re-resentacin ASCII como RALTS3 RCONTROLS3 las teclas de f"ncin3 etc. 2uncin ?>9 Uso9 Leer estado del teclado. Re)istros de llamada9 A/ I ?8/ Re)istros de retorno9 Si la .andera de cero3 T(3 est$a-a)ada si)nifica 2"e 4a' informacin en el ."ffer3 si se enc"entra -rendida es 2"e no 4a' teclas -endientes. En caso de e1istir informacin el re)istro A/ contendr$ el cdi)o de la tecla )"ardada en el ."ffer.

57

Tutorial de lenguage Ensamblador


Interrupcin >E9 0ro-sito9 !ane&ar la entradaKsalida de la im-resora. Sinta1is9 Int 8>/ Esta interr"-cin es "tili#ada -ara escri.ir caracteres a la im-resora3 iniciali#arla ' leer s" estado.

("nciones de la interr"-cin 8>/ ??/ Im-rime "n caracter ASCII ?8/ Iniciali#a la im-resora ?:/ 0ro-orciona el estado de la im-resora

("ncin ??/ Uso9 Escri.ir "n caracter a la im-resora. Re)istros de llamada9 A/ I ??/ AL I Caracter a im-rimir DO I 0"erto a "tili#ar Re)istros de retorno9 A/ I Estado de la im-resora. El -"erto a "tili#ar3 definido en DO3 se es-ecifica as 9 L0T8 I ?3 L0T: I 83 L0T; I : ... El estado de la im-resora se codifica .it -or .it como si)"e9 *IT 8K? SIGNI(ICADO EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE ? 8 Se a)ot el tiem-o de es-era 8 E : E ; 8 Error de entradaKsalida < 8 Im-resora seleccionada = 8 0a-el a)otado 7 8 Reconocimiento de com"nicacin > 8 La im-resora se enc"entra li.re Los .its 8 ' : no son rele%antes. La ma'oria de los *IOS "nicamente so-ortan ; -"ertos -aralelos a"n2"e e1isten al)"nos 2"e so-ortan <.

58

Tutorial de lenguage Ensamblador


2uncin ?>9 Uso9 Iniciali#ar "n -"erto de im-resin. Re)istros de llamada9 A/ I ?8/ DO I 0"erto a "tili#ar Re)istros de retorno9 A/ I Stat"s de la im-resora El -"erto a "tili#ar3 definido en DO3 se es-ecifica as 9 L0T8 I ?3 L0T: I 83 etc. El estado de la im-resora se codifica .it -or .it como si)"e9 *IT 8K? SIGNI(ICADO EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE ? 8 Se a)ot el tiem-o de es-era 8 E : E ; 8 Error de entradaKsalida < 8 Im-resora seleccionada = 8 0a-el a)otado 7 8 Reconocimiento de com"nicacin > 8 La im-resora se enc"entra li.re Los .its 8 ' : no son rele%antes. La ma'oria de los *IOS "nicamente so-ortan ; -"ertos -aralelos a"n2"e e1isten al)"nos 2"e so-ortan <.

2uncin ?=9 Uso9 O.tener el estado de la im-resora. Re)istros de llamada9 A/ I ?8/ DO I 0"erto a "tili#ar Re)istros de retorno9 A/ I Stat"s de la im-resora. El -"erto a "tili#ar3 definido en DO3 se es-ecifica as 9 L0T8 I ?3 L0T: I 83 etc.

59

Tutorial de lenguage Ensamblador


El estado de la im-resora se codifica .it -or .it como si)"e9 *IT 8K? SIGNI(ICADO EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE ? 8 Se a)ot el tiem-o de es-era 8 E : E ; 8 Error de entradaKsalida < 8 Im-resora seleccionada = 8 0a-el a)otado 7 8 Reconocimiento de com"nicacin > 8 La im-resora se enc"entra li.re Los .its 8 ' : no son rele%antes. La ma'oria de los *IOS "nicamente so-ortan ; -"ertos -aralelos a"n2"e e1isten al)"nos 2"e so-ortan <.

Introducin al mane"o de archivos 2ormas de traba"ar con archivos !,todos de tra.a&o con arc4i%os * todo 2C/ Introd"ccin A.rir arc4i%os Crear "n arc4i%o n"e%o Escrit"ra sec"encial Lect"ra sec"encial Lect"ra ' escritra aleatoria Cerrar "n arc4i%o * todo de canales de comunicacin Tra.a&ando con 4andles ("nciones -ara "tili#ar 4andles

* todos de traba"o con archivos E1isten dos formas de tra.a&ar con arc4i%os3 la -rimera es -or medio de .lo2"es de control de arc4i%os o L(C*L ' la se)"nda es -or medio de canales de com"nicacin3 tam.ien conocidos como L4andlesL. La -rimera forma de mane&o de arc4i%os se %iene "tili#ando desde el sistema o-erati%o C0!3 antecesor del DOS3 -or lo mismo ase)"ra cierta com-ati.ilidad con arc4i%os m"' anti)"os tanto del C!0 como de la %ersin 8.? del DOS3 adem$s este m,todo nos -ermite tener "n n5mero ilimitado de arc4i%os a.iertos al mismo tiem-o. Si se 2"iere crear "n %ol"men -ara el disco la 5nica forma de lo)rarlo es "tili#ando este m,todo. A5n considerando las %enta&as del (C* el "so de los canales de com"nicacin es m"c4o m$s sencillo ' nos -ermite "n me&or mane&o de errores3 adem$s3 -or ser m$s no%edoso es m"' -ro.a.le 2"e los arc4i%os as creados se manten)an com-ati.les a tra%,s de %ersiones -osteriores del sistema o-erati%o.

60

Tutorial de lenguage Ensamblador


0ara "na ma'or facilidad en las e1-licaciones -osteriores me referir, a el m,todo de .lo2"es de control de arc4i%os como (C*s ' al m,todo de canales de com"nicacin como 4andles.

Introduccin E1isten dos ti-os de (C*3 el normal3 c"'a lon)it"d es de ;> .'tes ' el e1tendido de << .'tes. En este t"torial "nicamente se tratar$ el -rimer ti-o3 as 2"e de a4ora en adelante c"ando me refiera a "n (C* realmente esto' 4a.lando de "n (C* de ;> .'tes. El (C* se com-one de informacin dada -or el -ro)ramador ' -or informacin 2"e toma directamente del sistema o-erati%o. C"ando se "tili#an este ti-o de arc4i%os "nicamente es -osi.le tra.a&ar en el directorio act"al 'a 2"e los (C* no -ro%een a-o'o -ara el "so de la or)ani#acin -or directorios del DOS. El 2C/ est&ormado por los si!uientes campos:

0OSICION ??/ ?8/ ?J/ ?C/ ?E/ 8?/ 8</ 87/ 86/ :?/ :8/

LONGITUD 8 *'te 6 *'tes ; *'tes : *'tes : *'tes < *'tes : *'tes : *'tes 6 *'tes 8 *'te < *'tes

SIGNI(ICADO Dri%e Nom.re del arc4i%o E1tensin N5mero de .lo2"e Tama+o del re)istro Tama+o del arc4i%o (ec4a de creacin /ora de creacin Reser%ados Re)istro act"al Re)sitro aleatorio

0ara seleccionar el dri%e de tra.a&o se si)"e el si)"iente formato9 dri%e A I 8C dri%e * I :C etc. Si se "tili#a ? se tomar$ como o-cin el dri%e 2"e se est, "tili#ando en ese momento. El nom.re del arc4i%o de.e estar &"stificado a la i#2"ierda ' en caso de ser necesario se de.er$n rellenar los .'tes so.rantes con es-acios3 la e1tensin del arc4i%o se coloca de la misma forma. El .lo2"e act"al ' el re)istro act"al le dicen a la com-"tadora 2"e re)istro ser$ accesado en o-eraciones de lect"ra o escrit"ra. Un .lo2"e es "n )r"-o de 8:6 re)istros. El -rimer .lo2"e del arc4i%o es el .lo2"e ?. El -rimer re)istro es el re)istro ?3 -or lo tanto el 5ltimo re)istro del -rimer .lo2"e ser a 8:>3 'a 2"e la n"meracin inici con ? ' el .lo2"e -"ede contener 8:6 re)istros en total. #brir archivos 0ara a.rir "n arc4i%o (C* se "tili#a la interr"-cin :8/3 f"ncin ?(/. La "nidad3 el nom.re ' e1tensin del arc4i%o de.en ser iniciali#ados antes de a.rirlo.

61

Tutorial de lenguage Ensamblador


El re)istro DO de.e a-"ntar al .lo2"e. Si al llamar a la interr"-cin ,sta re)resa %alor de ((/ en el re)istro A/ es 2"e el arc4i%o no se encontr3 si todo sali .ien se de%ol%era "n %alor de ?. Si se a.re el arc4i%o DOS iniciali#a el .lo2"e act"al a ?3 el tama+o del re)istro a 8:6 .'tes ' el tama+o del mismo ' s" fec4a se llenan con los datos encontrados en el directorio.

Crear un archivo nuevo 0ara la creacin de arc4i%os se "tili#a la interr"-cin :8/ f"ncin 87/ . DO de.e a-"ntar a "na estr"ct"ra de control c"'os re2"isitos son 2"e al menos se enc"entre definida la "nidad l)ica3 el nom.re ' la e1tensin del arc4i%o. En caso de e1istir al)"n -ro.lema se de%ol%er$ el %alor ((/ en AL3 de lo contrario este re)istro contendr$ el %alor de ?.

Escritura secuencial Antes de 2"e -odamos reali#ar escrit"ras al disco es necesario definir el $rea de transferencia de datos "tili#ando -ara tal fin la f"ncin 8A/ de la interr"-cin :8/. La f"ncin 8A/ no re)resa nin)5n estado del disco ni de la o-eracin3 -ero la f"ncin 8=/3 2"e es la 2"e "saremos -ara escri.ir al disco3 si lo 4ace en el re)istro AL3 si ,ste es i)"al a cero no 4".o error ' se act"ali#an los cam-os del re)istro act"al ' .lo2"e.

$ectura secuencial Antes 2"e nada de.emos definir el $rea de transferencia de arc4i%os o DTA. 0ara leer sec"encialmente "tili#amos la f"ncin 8</ de la int :8/. El re)istro a ser leido es el 2"e se enc"entra definido -or el .lo2"e ' el re)istro act"al. El re)istro AL re)resa el estado de la o-eracin3 si AL contiene el %alor de 8 o ; es 2"e 4emos lle)ado al final del arc4i%o. Un res"ltado de : si)nifica 2"e el (C* est$mal estr"ct"rado. En caso de no e1istir error AL contendr$ el %alor de ? ' los cam-os .lo2"e act"al ' re)istro act"al son act"ali#ados.

$ectura % escritura aleatoria La f"ncin :8/ ' la f"ncin ::/ de la interr"-cin :8/ son las encar)adas de reali#ar las lect"ras ' escrit"ras aleatorias res-ecti%amente.

62

Tutorial de lenguage Ensamblador


El n5mero de re)istro aleatorio ' el .lo2"e act"al son "sados -ara calc"lar la -osicin relati%a del re)istro a leer o escri.ir. El re)istro AL re)resa la misma informacin 2"e -ara lect"ra o escrit"ra sec"encial. La informacin 2"e ser$ leNda se re)resar$ en el $rea de transferencia de disco3 as mismo la informacin 2"e ser$ escrita reside en el DTA.

Cerrar un archivo 0ara cerrar "n arc4i%o "tili#amos la f"ncin 8?/ de la interr"-cin :8/. Si des-",s de in%ocarse esta f"ncin el re)istro AL contiene el %alor de ((/ si)nifica 2"e el arc4i%o 4a cam.iado de -osicin3 se cam.i el disco o 4a' "n error de acceso al disco.

Traba"ando con handles El "so de 4andles -ara mane&ar los arc4i%os facilita en )ran medida la creacin de arc4i%os ' el -ro)ramador -"ede concentrarse en otros as-ectos de la -ro)ramacin sin -reoc"-arse en detalles 2"e -"eden ser mane&ados -or el sistema o-erati%o. La facilidad en el "so de los 4andles consiste en 2"e -ara o-erar so.re "n arc4i%o "nicamente es necesario definir el nom.re del mismo ' el n5mero del 4andle a "tili#ar3 toda la dem$s informacin es mane&ada internamente -or el DOS. C"ando "tili#amos este m,todo -ara tra.a&ar con arc4i%os no e1iste "na distincin entre accesos sec"enciales o aleatorios3 el arc4i%o es tomado sim-lemente como "na cadena de .'tes.

2unciones para utili4ar handles Las f"nciones "tili#adas -ara el mane&o de arc4i%os -or medio de 4andles son descritas en la "nidad 79 Interr"-ciones3 en la seccin dedicada a la interr"-cin :8/.

63

Tutorial de lenguage Ensamblador

*acros % procedimientos )rocedimientos. Definicin de -rocedimiento Sinta1is de "n -rocedimiento *acros. Definicin de "na macro Sinta1is de "na macro *i.liotecas de macros

De&inicin de procedimiento Un -rocedimiento es "n con&"nto de instr"cciones a los 2"e -odemos diri)ir el fl"&o de n"estro -ro)rama3 ' "na %e# terminada la e&ec"cin de dic4as instr"cciones se de%"el%e el control a la si)"iente linea a -rocesar del cdi)o 2"e mando llamar al -rocedimiento. Los -rocedimientos nos a'"dan a crear -ro)ramas le)i.les ' f$ciles de modificar. Al momento de in%ocar a "n -rocedimiento se )"arda en la -ila la direccin de la si)"iente instr"ccin del -ro)rama -ara 2"e3 "na %e# transferido el fl"&o del -ro)rama ' terminado el -rocedimiento3 se -"eda re)resar a la linea si)"iente del -ro)rama ori)inal Ael 2"e llam al -rocedimientoB.

(inta.is de un procedimiento E1isten dos ti-os de -rocedimientos3 los intrase)mentos3 2"e se enc"entran en el mismo se)mento de instr"cciones ' los interse)mentos 2"e -"eden ser almacenados en diferentes se)mentos de memoria. C"ando se "tili#an los -rocedimientos intrase)mentos se almacena en la -ila el %alor de I0 ' c"ando se "tili#an los interse)mentos se almacena el %alor CS9I0 0ara des%iar el fl"&o a "n -rocedimiento AllamarloB se "tili#a la directi%a9 CALL Nom.reDel0rocedimiento Las -artes 2"e com-onen a "n -rocedimiento son9 Declaracin del -rocedimiento Cdi)o del -rocedimiento Directi%a de re)reso Terminacin del -rocedimiento

64

Tutorial de lenguage Ensamblador


0or e&em-lo3 si 2"eremos "na r"tina 2"e nos s"me dos .'tes3 almacenados en A/ ' AL cada "no ' )"ardar la s"ma en el re)istro *O9 S"ma 0roc !o% *13 !o% *l3 !o% A43 Add *13 Ret S"ma EndNear ? A4 ?? A1 CDeclaracin del -rocedimiento CContenido del -rocedimiento

CDirecti%a de re)reso CDeclaracin de final del -rocedimiento

En la declaracin la -rimera -ala.ra3 S"ma3 corres-onde al nom.re de n"estro -rocedimiento3 0roc lo declara como tal ' la -ala.ra Near le indica al !AS! 2"e el -rocedimiento es intrase)mento. La directi%a Ret car)a la direccin I0 almacenada en la -ila -ara re)resar al -ro)rama ori)inal3 -or 5ltimo3 la directi%a S"ma End- indica el final del -rocedimiento. 0ara declarar "n -rocedimiento interse)mento s"stit"imos la -ala.ra Near -or la -ala.ra (AR. El llamado de este -rocedimiento se reali#a de la si)"iente forma9 Call S"ma Las macros ofrecen "na ma'or fle1i.ilidad en la -ro)ramacin com-aradas con los -rocedimientos3 -ero no -or ello se de&ar$n de "tili#ar estos 5ltimos. Definicin de "na macro Una macro es "n )r"-o de instr"cciones re-etiti%as en "n -ro)rama 2"e se codifican solo "na %e# ' -"eden "tili#arse c"antas %eces sea necesario. La -rinci-al diferencia entre "na macro ' "n -rocedimiento es 2"e en la macro se 4ace -osi.le el -aso de -ar$metros ' en el -rocedimiento no Aesto es a-lica.le solo -ara el !AS!3 4a' otros len)"a&es de -ro)ramacin 2"e si lo -ermitenB. Al momento de e&ec"tarse la macro cada -ar$metro es s"stit"ido -or el nom.re o %alor es-ecificado al momento de llamarla. 0odemos decir entonces 2"e "n -rocedimiento es "na e1tensin de "n determinado -ro)rama3 mientras 2"e la macro es "n md"lo con f"nciones es-ecNficas 2"e -"ede ser "tili#ado -or diferentes -ro)ramas. Otra diferencia entre "na macro ' "n -rocedimiento es la forma de llamar a cada "no3 -ara llamar a "n -rocedimiento se re2"iere el "so de "na directi%a3 en cam.io la llamada a las macros se reali#a como si se tratara de "na instr"ccin del ensam.lador. (inta.is de una macro Las -artes 2"e com-onen a "na macro son9 Declaracin de la macro Cdi)o de la macro Directi%a de terminacin de la macro

65

Tutorial de lenguage Ensamblador


La declaracin de la macro se lle%a a ca.o de la si)"iente forma9 Nom.re!acro !ACRO R-arametro83 -arametro:...S A"n2"e se tiene la f"ncionalidad de los -arametros es -osi.le crear "na macro 2"e no los necesite. La directi%a de terminacin de la macro es9 END! Un e&em-lo de macro3 -ara colocar el c"rsor en al)"na -osicin determinada de la -antalla es9 0osicion !ACRO (ila3 Col"mna 0US/ AO 0US/ *O 0US/ DO !OV A/3 ?:/ !OV D/3 (ila !OV DL3 Col"mna !OV */3 ? INT 8?/ 0O0 DO 0O0 *O 0O0 AO END! 0ara "tili#ar "na macro solo es necesario llamarla -or s" nom.re3 como si f"era "na instr"ccin mas del ensam.lador3 'a no son necesarias las directi%as como en el caso de los -rocedimientos. E&em-lo9 0osicion 63 7 /ibliotecas de macros Una de las facilidades 2"e ofrece el "so de las macros es la creacin de .i.liotecas3 las c"ales son )r"-os de macros 2"e -"eden ser incl"idas en "n -ro)rama desde "n arc4i%o diferente. La creacin de estas .i.liotecas es m"' sencilla3 "nicamente tenemos 2"e escri.ir "n arc4i%o con todas las macros 2"e se necesitar$n ' )"ardarlo como arc4i%o de te1to. 0ara llamar a estas macros solo es necesario "tili#ar la instr"ccin Incl"de Nom.reDelArc4i%o3 en la -arte de n"estro -ro)rama donde escri.iriamos normalmente las macros3 esto es3 al -rinci-io de n"estro -ro)rama Aantes de la declaracin del modelo de memoriaB. S"-oniendo 2"e se )"ard el arc4i%o de las macros con el nom.re de !ACROS.TOT la instr"ccin Incl"de se "tili#ar a de la si)"iente forma9 CInicio del -ro)rama Incl"de !ACROS.TOT .!ODEL S!ALL .DATA CA2"i %an los datos .CODE Inicio9 CA2"i se inserta el cdi)o del -ro)rama

66

Tutorial de lenguage Ensamblador


.STACZ CSe define la -ila End Inicio CTermina n"estro -ro)rama

E"emplos: Desple!ar un mensa"e en pantalla Uno de los -ro)ramas m$s sencillos3 -ero en cierta forma -r$ctico3 es "no 2"e des-lie)"e "na cadena de caracteres en la -antalla. Eso es lo 2"e 4ace el si)"iente -ro)rama9 0ro)rama 9

C 0rimero definimos el .!ODEL S!ALL .CODE C Inicio9 C !OV AO3\DATA C !OV DS3AO C !OV DO3O((SET Cadena C C !OV A/3?J C INT :8/ C !OV A/3<C/ C INT :8/ C .DATA C Cadena D* N!ensa&e del .STACZ C END Inicio C

modelo de memoria3 en este caso small Declaramos el $rea 2"e contendr$ el cdi)o Eti2"eta de inicio del -ro)rama9 Vamos a colocar la direccin del se)mento de datos en DS3 "sando como intermediario a AO Colocamos en DO la direccin3 dentro del se)mento3 de la cadena a des-le)ar Utili#aremos la f"ncin ?J de la interr"-cin :8/ -ara des-le)ar la cadena. 0or medio de la f"ncin <C/ de la interr"-cin :8/ terminaremos n"estro -ro)rama Declaramos el semento de datos -ro)rama.WN C Cadena a des-le)ar Declaramos la -ila (inal de n"estro -ro)rama

Ua se e1-lic en el t"torial "n -ro)rama casi i)"al a este3 -or lo tanto no re2"iere nin)5n comentario adicional. C"ando se crea "n -ro)rama no es necesario escri.ir los comentarios 2"e %an des-"es de las comillas3 sin em.ar)o es "na t,cnica recomenda.le -ara 2"e en caso de errores o me&oras al cdi)o sea m$s sencillo encontrar la -arte deseada. 0ara ensam.lar este -ro)rama -rimero se )"arda en formato ASCII con "n nom.re %$lido3 -or e&em-lo9 -ro)ram8.asm 0ara ensam.larlo se "tili#a el !AS!3 el comando de ensam.le es9 masm -ro)ram8C 0ara enla#arlo ' 4acerlo e&ec"ta.le tecleamos9 linM -ro)ram8C Una %e# terminados estos -asos es -osi.le e&ec"tarlo tecleando9 -ro)ram8 REnterS

67

Tutorial de lenguage Ensamblador

0ara "tili#ar el -ro)rama directamente en s" com-"tadora )"arde este arc4i%o como ASCII o te1to3 ll,%elo a s" 0C3 con al)"n editor elimine todos estos comentarios ' los comentarios del -rinci-io ' ens$m.lelo.

Desple!ar n-meros he.adecimales del >C al ? Este -ro)rama des-lie)a los 87 caracteres corres-ondientes al cdi)o 4e1adecimal en orden descendente. 0ro)rama9 C Inicio del -ro)rama3 definimos el modelo de memoria a "sar ' el se)mento C de cdi)o .!ODEL S!ALL C !odelo de memoria .CODE C Area de cdi)o Inicio9 C Eti2"eta de inicio del -ro)rama !OV AO3\DATA C Iniciali#a el re)istro DS con la direccin dada !OV DS3AO C -or \DATA ASe)mento de datosB. !OV DO3 O((SET Tit"lo C O.tiene la direccin de la cadena de caracteres !OV A/3?J C Usamos la f"ncin ?J/ de la interr"-cin :8/ INT :8/ C -ara des-le)ar la cadena c"'a direccin o.t"%imos. !OV CO387 C Contador de caracteres 2"e se mostrar$n !OV *O3 O((SET Cadena C 0ermite acceso a la cadena donde se enc"entran los C %alores a des-le)ar Ciclo9 C Eti2"eta -ara )enerar "n ciclo !OV AL3CL C Coloca en AL el n5mero a trad"cir ' lo trad"ce OLAT C "sando la instr"ccin OLAT !OV DL3AL C Coloca en DL el %alor a ser des-le)ado -or medio de la !OV A/3?: C f"ncin : de la interr"-cin :8/ INT :8/ C Des-lie)a el caracter !OV DL38? C Salta "na linea des-le)ando el caracter 8? INT :8/ C Des-lie)a el caracter !OV DL38; C 0rod"ce "n retorno de carro des-le)ando el caracter 8; INT :8/ C Des-lie)a el retorno de carro LOO0 Ciclo C Decrementa en "no a CO ' salta a la eti2"eta Ciclo C siem-re ' c"ando CO no sea i)"al a cero !OV A/3<C C Utili#a la f"ncin <C de la interr"-cin :8/ -ara INT :8/ C finali#ar el -ro)rama C Inicio del se)mento de datos .DATA CDefine el se)mento de datos Tit"lo D* 8;38?3NDes-le)ar los n5meros 4e1adecimales del 8= al 8N D* 8;38?3NWN C Cadena a des-le)ar al inicio del -ro)rama Cadena D* N?8:;<=7>6JA*CDE(N C Cadena con los d )itos 4e1adecimales C Declaracin del se)mento de la -ila .STACZ END Inicio CDeclaracin del final del -ro)rama El comando OLAT ."sca la cadena o ta.la locali#ada en *O3 el re)istro AL contiene el n5mero de .'tes3 a -artir de la direccin de inicio3 2"e se recorrer$ el a-"ntador -ara ."scar "n dato3 el contenido de AL es rem-la#ado -or el .'te donde se enc"entra el a-"ntador. El -roceso de ensam.lado es i)"al al del e&em-lo anterior.

68

Tutorial de lenguage Ensamblador


Operaciones bsicas En el si)"iente e&em-lo se "tili#an la ma'or -arte de las instr"cciones %istas en el t"torial3 s" o.&eti%o es reali#ar las o-eraciones de s"ma3 resta3 m"lti-licacin o di%isin de dos cantidades. 0ara accesar a cada "na de las o-ciones dis-oni.les se 4ace "so de "n men5 en el 2"e se -resentan las o-eraciones dis-oni.les. 0ro)rama9 .!ODEL S!ALL .DATA ErrorCA0 D* ? Cantidad D* ? CantUnoR CantDosR CantUnoN CantDosN ("ncion Res"lta Res"ltaR !ensa&e DV DV D* D* D* D* D* D* D* 0re)"nta D* D* D* D* D* D* Error D* Error8 D* Error: D* Error; D* Error< D* CantUno! D* CantDos! D* C Define el modelo de memoria C Define el se)mentos de datos C*andera de error en la ca-t"ra de las cantidades CCantidad so.re la 2"e se o-era. Si es ? la cantidad C ser$ la 83 ' si es 8 ser$ la :. ? CG"ardar$ la cantidad 8 con%ertida en .inario ? CG"ardar$ la cantidad : con%ertida en .inario 73?37 DU0A^B CVaria.le 2"e almacena la cantidad 8 73?37 DU0A^B CVaria.le 2"e almacena la cantidad : ? CVaria.le 2"e almacena la o-cin a reali#ar 8;38?3NRes"ltado9 WN 88 DU0A^B 8;38?3NO-eraciones .$sicas entre dos n5merosN 8;38?38;38?3NWN 8;38?3N0resione9 N38;38? N 8 !"lti-licacin N38;38? N : Di%isin N38;38? N ; S"ma N38;38? N < Resta N38;38? N = Salir N38;38?3NWN >38;38?3NSeleccin in%$lida A8E=BN38;38?3NWN >38;38?3NCantidad 8 in%$lida. N38;38?3NWN >38;38?3NCantidad : in%$lida. N38;38?3NWN >38;38?3NCantidad f"era de ran)o A7==;=B N38;38?3NWN >38;38?3NIntento de di%isin -or cero. N38;38?3NWN 8;38?3NIntrod"#ca la cantidad 8 A!enor a 7==;=B9 WN 8;38?3NIntrod"#ca la cantidad : A!enor a 7==;=B9 WN

C Ta.la de -otencias -ara con%ersin .inariaKASCII 0otencia DV ???843 ???A43 ??7<43 ?;E643 :>8?4 0otencia( DV W .CODE Em-ie#a9 CDefine el $rea de cdi)o CEti2"eta de inicio del -ro)rama CO.tiene modo de %ideo act"al CCam.ia el modo de %ideo al mismo anterior C con la finalidad de 2"e se .orre la -antalla CO.tiene la direccin del se)mento de datos CIniciali#a a DS con esa direccin CDes-lie)a el tNt"lo del -ro)rama CLlama a "n -rocedimiento CIniciali#a la %aria.le Res"ltaR

!o% A/3 ?(4 Int 8?4 !o% A/3 ?? Int 8?4 !o% AO3 \Data !o% Ds3 A1 !o% D13 Offset !ensa&e Call Im-rime !o% Si3 Offset Res"ltaR Add Si388

69

Tutorial de lenguage Ensamblador


!o% Al3NWN !o% RSiS3 Al OTRA9 !o% D13Offset 0re)"nta Call Im-rime Call O.tenTecla Cm- Al3 <J Jae SIGUE !o% D13 Offset Error Call Im-rime Jm- OTRA SIGUE9 Cm- Al3=; J.e TODO*IEN !o% D13 Offset Error Call Im-rime Jm- OTRA TODO*IEN9 Cm- Al3=; Jn# C/ECATODO Jm- (UNCION= C/ECATODO9 !o% ("ncion3 Al CA0CANT?89 !o% D13 Offset CantUno! Call Im-rime !o% A43 ?A4 !o% D13 Offset CantUnoN Int :84 !o% ErrorCA03 ? !o% Cantidad3 ? Call Con%NU! Cm- ErrorCA03 8 J# CA0CANT?8 !o% CantUnoR3 *1 CA0CANT?:9 !o% ErrorCA03 ? !o% Cantidad3 8 !o% D13 Offset CantDos! Call Im-rime !o% A43 ?A4 !o% D13 Offset CantDos! Int :8/ Call Con%N"m Cm- ErrorCA03 8 J#3 CA0CANT?: !o% CantDosR3 *1

CDes-lie)a men5 de o-ciones CEs-era a 2"e se -resione la o-cin deseada CCom-ara la seleccin con el d )ito 8 ASCII CSi la o-cin es ma'or a 8 salta a SIGUE CDes-lie)a mensa&e de error CSalta a OTRA -ara %ol%er a -re)"ntar CCom-ara la seleccin con el d )ito = ASCII CSi es menor a = salta a TODO*IEN3 sino contin5a CSi la o-cin f", ma'or a = des-ie)a el error

CCom-ara la selecin con el d )ito = ASCII CSi no es i)"al salta a C/ECATODO CSi es i)"al salta a (UNCION= -ara terminar CG"arda el n5mero de f"ncin a reali#ar C!ensa&e de ca-t"ra de la cantidad 8 CCa-t"ra la cantidad A4asta 6 d )itosB CS"-one 2"e no 4a' errores ' 2"e se est$ C o-erando so.re la cantidad 8 CCon%ierte cantidad 8 a .inario CVerifica si 4".o error CEn caso afirmati%o re)resa a la ca-t"ra. CG"arda el res"ltado de la con%ersin CS"-one 2"e no 4a' error CIndica a Con%NU! 2"e se tra.a&ar$ con cantidad : C!ensa&e de ca-t"ra de cantidad : CCa-t"ra de la cantidad : CCon%ierte la cantidad : a .inario CVerifica si e1isti al)"n error CEn caso afirmati%o re)resa a la ca-t"ra CAlmacena el %alor .inario de cantidad :

CLa si)"iente -arte es el -roceso de seleccin de la o-eracin C["e se reali#ara9 !o% Al3 ("ncion Cm- Al3 ;84 Jne (UNCION: Call !"lti-lica Jm- OTRA CCar)a en Al la f"ncin 2"e seleccion el "s"ario CRe%isa si es 8 CSi no es salta a (UNCION: C!"lti-lica las cantidades CRe)resa al men5 -rinci-al

70

Tutorial de lenguage Ensamblador


(UNCION:9 Cm- Al3 ;:4 Jne (UNCION; Call Di%ide Jm- OTRA (UNCION;9 Cm- Al3 ;;4 Jne (UNCION< Call S"ma Jm- OTRA (UNCION<9 Cm- Al3 ;<4 Jne (UNCION= Call Resta Jm- OTRA (UNCION=9 !o% A13 <C??4 Int :84 CRe%isa si es : CSi no es salta a (UNCION; CDi%ide las cantidades

CRe%isa si es ; CSi no es salta a (UNCION< CS"ma las cantidades

CRe%isa si es < CSi no es salta a (UNCION= CResta las cantidades

CEsta f"ncin termina la e&ec"cin Cdel -ro)rama

C 0rocedimientos o r"tinas del -ro)rama !"lti-lica 0roc Near Oor D13 D1 !o% A13 CantUnoR !o% *13 CantDosR !"l *1 C!"lti-lica Call Con%ASCII !o% D13 Offset Res"lta Call Im-rime !o% D13 Offset Res"ltaR Call Im-rime Ret !"lti-lica EndDi%ide 0roc Near !o% A13 CantUnoR !o% *13 CantDosR Cm- *13 ? Jn# DIVIDE?8 !o% Cantidad3 ; -ro)rama Call /".oError Ret DIVIDE?89 Di% *1 Oor D13 D1 Call Con%ASCII !o% D13 Offset Res"lta Call Im-rime !o% D13 Offset Res"ltaR Call Im-rime Ret Di%ide EndS"ma 0roc Near Oor D13 D1 !o% A13 CantUnoR CIndicador de inicio de -rocedimiento CD1 I ? C0rimera cantidad CSe)"nda cantidad CCon%ierte en ASCII CIm-rime mensa&e del res"ltado CIm-rime res"ltado CRe)resa al -ro)rama -rinci-al CIndicador de fin de -rocedimiento CCar)a la cantidad 8 Adi%idendoB CCar)a la cantidad : Adi%isorB CRe%isa 2"e el di%isor no sea cero CSi no es cero salta a DIVIDE?8 C/".o error asi 2"e des-lie)a el mensa&e ' re)resa al

CEfect5a la di%isin CD1 I ?. El resid"o no es "tili#ado CCon%ierte en ASCII el res"ltado CDes-lie)a el mensa&e del res"ltado CDe-lie)a el res"ltado

CD1 I ? -or si acaso e1iste acarreo CCantidad 8

71

Tutorial de lenguage Ensamblador


!o% *13 CantDosR Add A13 *1 Jnc SU!ACONV Adc D13? SU!ACONV9 Call Con%ASCII !o% D13 Offset Res"lta Call Im-rime !o% D13 Offset Res"ltaR Call Im-rime Ret S"ma EndResta 0roc Near Oor D13 D1 !o% A13 CantUnoR !o% *13 CantDosR S". A13 *1 Jnc RESTACONV S.. D13? RESTACONV9 Call Con%ASCII !o% D13 Offset Res"lta Call Im-rime !o% D13 Offset Res"ltaR Call Im-rime Ret Resta EndIm-rime 0roc Near !o% A43 ?J Int :84 Ret Im-rime EndO.tenTecla 0roc Near !o% a43 ? Int 874 Ret O.tenTecla EndCon%N"m 0roc Near !o% D13 ?A4 Cm- Cantidad3 ? Jn# CONVNU!?8 !o% Di3 Offset CantUnoN !o% C13 RDiS !o% Si3 Offset CantUnoN Jm- CONVNU!?: CONVNU!?89 !o% Di3 Offset CantDosN !o% C13 RDiS !o% Si3 Offset CantDosN CONVNU!?:9 Oor C43 C4 CC/ I ? !o% Di3 Offset 0otencia Dec Si Add Si3 C1 CD1 I ? -or si e1iste acarreo CA1 I cantidad 8 C*1 I cantidad : CReali#a la resta CSi no 4a' acarreo salta a RESTACONV CSi 4a' acarreo CCon%ierte en ASCII el res"ltado CDes-lie)a el mensa&e del res"ltado CDes-lie)a el res"ltado CCantidad : CReali#a la s"ma CSi no e1isti acarreo salta a SU!ACONV CSi e1isti CCon%ierte en ASCII el res"ltado CDes-lie)a el mensa&e del res"ltado CDes-lie)a el res"ltado

CUtili#a la f"ncin J de la interr"-cin C:84 -ara des-le)ar "na cadena

CUtili#a la interr"-cin 874 -ara C leer "na tecla

C!"lti-licador es 8? CVerifica si es la cantidad 8 CNo f",3 entonces es cantidad : ' salta H 8 C*'tes leidos en la cantidad 8 H : CLa cantidad 8 H 8 C*'tes leidos de la cantidad : H : CLa cantidad : CDireccin de la ta.la de -otencias

72

Tutorial de lenguage Ensamblador


Oor *13 *1 Std CONVNU!;9 Lods. Cm- Al3 L?L J. CONVNU!?< Cm- Al3 LJL Ja CONVNU!?< S". Al3 ;?4 C.D !o% D13 RDiS !"l D1 Jc CONVNU!?= Add *13 A1 Jc CONVNU!?= Add Di3 : Loo- CONVNU!?; Jm- CONVNU!?7 CONVNU!?<9 Call /".oERROR Jm- CONVNU!?7 CONVNU!?=9 !o% Cantidad3 : Call /".oERROR CONVNU!?79 Cld Ret Con%N"m EndCon%ASCII 0roc Near 0"s4 D1 0"s4 A1 !o% Si3 Offset Res"ltaR !o% C13 8? !o% Al3 N@N Con%ASCII?89 !o% RSiS3 Al Inc Si Loo- Con%ASCII?8 0o- A1 0o- *1 !o% *13 A1 !o% A13 D1 !o% Si3 Offset Res"ltaR Add Si3 88 !o% C13 8? O*TENDIGITO9 Dec Si Oor D13 D1 Di% C1 !o% Di3 A1 !o% A13 *1 Di% C1 !o% *13 A1 !o% A13 Di Add Dl3 ;?4 !o% RSiS3 Dl CG"arda el res"ltado en la -ila CIniciali#a la %aria.le Res"ltaR C llenandola con asteriscos

CCar)a en AL el .'te c"'a direccin es DS9SI CCom-ara el .'te con el d )ito ? CSi es menor es in%$lido ' salta CCom-ara el .'te con el d )ito J CSi es ma'or es in%$lido ' salta CCon%ierte el d )ito de ASCII a .inario CCon%ierte a -ala.ra CO.tiene la -otencia a ser "sada -ara m"lti-licar C!"lti-lica el n5mero CSi 4a' acarreo salta Af", ma'or a 7==;=B CS"ma el res"ltado a *O CSi 4a' acarreo salta CVa a la si)"iente -otencia de 8? CSalta 4asta 2"e CO sea i)"al a ? C/".o al)"n error3 de-lie)a mensa&e CSalta a CONVNU!?7 C/".o acareo en la con%ersin3 lo 2"e C si)nifica 2"e la cantidad es ma'or a 7==;= CRe)resa la .andera de direccin a s" estado C normal

C0ala.ra .a&a de la cantidad C0ala.ra alta de la cantidad CCadena donde se )"arda el res"ltado CDi%isor I 8?

CDO contrendr$ el resid"o CDi%ide la -ala.ra alta CG"arda cociente en DI CCar)a -ala.ra .a&a en AO CDO contiene re)istro de la di%isin CG"arda el cociente CRe)resa la -ala.ra alta CCon%ierte resid"o en ASCII CLo almacena

73

Tutorial de lenguage Ensamblador


Or A13 A1 Jn# O*TENDIGITO Or *13 *1 Jn# O*TENDIGITO Ret Con%ASCII End/".oERROR 0roc Near Cm- Cantidad3? Jn# /U*OERROR?: !o% D13 Offset Error8 Call Im-rime !o% ErrorCA03 8 Jm- /U*OERROR?= /U*OERROR?:9 Cm- Cantidad3 8 Jn# /U*OERROR?; !o% D13 Offset Error: Call Im-rime !o% ErrorCA03 8 Jm- /U*OERROR?= /U*OERROR?;9 Cm- Cantidad3 : Jn# /U*OERROR?< !o% D13 Offset Error; Call Im-rime !o% ErrorCA03 8 Jm- /U*OERROR?= /U*OERROR?<9 !o% D13 Offset Error< Call Im-rime !o% ErrorCA03 8 /U*OERROR?=9 Ret /".oERROR End.STACZ End Em-ie#a CSi la -ala.ra alta no es cero C salta a O*TENDIGITO CSi la -ala.ra .a&a no es cero C salta a O*TENDIGITO

CEs la cantidad 8^ Cno CEnciende la .andera de error CEs la cantidad :^ Cno

CEs "na cantidad f"era de ran)o^ Cno

CError de di%isin -or cero

74

Tutorial de lenguage Ensamblador

Directorio % biblio!ra&'a Cr,ditos In). !nico *rise+o C. Idea ori)inal /")o Ed"ardo 0,re# 0. Desarrollo e im-lementacin *i.lio)raf a Len)"a&e Ensam.lador 0ara !icrocom-"tadoras I*! J. Terr' Godfre' Ed. 0rentice /all /is-anoamericana3 S.A. !,1ico Ensam.lador *$sico A. Ro&as Ed. Com-"tec Editores S.A. de C.V. !,1ico I*! 0ersonal Com-"ter Assem.l' Lan)"a&e T"torial Jos4"a A"er.ac4 Uale Uni%ersit'

Necesitamos tu opininF N"estra finalidad con este doc"mento es lle%ar el conocimiento a t"s manos. 0ara 4acerlo en "na forma m$s eficiente es necesario conocer t" o-inin3 s")erencias ' cr ticas. Nos )"star a 2"e nos mandaras t"s -ro)ramas escritos en ensam.lador AEn cdi)o f"ente -or fa%or`B -ara mostrarlos en este es-acio3 as como -ara darte el reconocimiento 2"e mereces. 0roc"ra incl"ir todos t"s datos9 t" nom.re3 domicilio3 -rofesin ' t" direccin electrnica Asi la tienesB3 ' la %ersin de ensam.lador 2"e "sas. !anda t"s -ro)ramas ' s")erencias relacionados con este t"torial a la direccin 4"-ere#\r"lfo.dca."d).m1 o si lo deseas manda t"s comentarios so.re el ser%idor en )eneral a la direccin monico\red"d)."d).m1 Como informacin so' "n al"mno de la Uni%ersidad de G"adala&ara3 del De-artamento de Ciencias Com-"tacionales. Est"dio la carrera de In)enier a en Com-"tacin ' me )"star a a-render de ti. La -rimera direccin es mi direccin -ersonal3 as 2"e sientete li.re de mandar t"s comentarios.

75

You might also like