Академический Документы
Профессиональный Документы
Культура Документы
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.
#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
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.
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.
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
* 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.
10
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
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
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
14
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
16
!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
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
(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
+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
21
22
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
*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
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
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
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
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
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
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.
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.
30
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Interrupcin >D9 0ro-sito9 !ane&ar la entradaKsalida del teclado. Sinta1is9 Int 87/
56
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
("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
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
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
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
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
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
*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
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
66
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
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
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
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
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
71
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
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
74
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