Instituto tecnológico de Durango EDUCACIÓN A DISTANCIA DISTANCIA UNIDAD RODEO Ing. En Sistemas Computacionales Lenguajes de interfaz Unidad V
Programación Programación hibrida
Alumno(a): Oscar Martin Ibarra Guajardo
Numero e Control: 11041778
Rodeo, Dgo.
13 de May de 201
Ta!la e contenio
2
"rogramaci#n $i!ria.............................................................................................3 Directi%as para compilaci#n &'!ria......................................................................4 !je"#$o%..................................................................................................................4 &unciones en !nsa"b$ador....................................................................................
Operaores............................................................................................................... O#eradores 'rit"(ticos.......................................................................................... O#eradores )*gicos............................................................................................... O#eradores re$aciona$es........................................................................................ O#eradores de retorno de +a$ores......................................................................... O#eradores de 'tributos........................................................................................7
Conclusiones.........................................................................................................10
3 "rogramaci#n $i!ria
n $enguaje de #rogra"aci*n -brido /o ni+e$ de $enguaje de #rogra"aci*n -brido es un $enguaje de #rogra"aci*n ue #er"ite #rogra"ar dierentes idio"as #ara co"#artir e$ "is"o c*digo de $a -oja. or eje"#$o, &ree'5I6 -a en$nea de "ontaje de "odo ue a ni+e$ de c*digo de "enores se #uede #er"itir #ara $a #rogra"aci*n de a$to ni+e$. 6o"o ya se "encion*, $a #rogra"aci*n en $enguaje ensa"b$ador #ro#orciona un "ayor contro$ sobre e$ -ardare de $a co"#utadora, #ero ta"bi(n diicu$ta $a buena estructuraci*n de $os #rogra"as. )a #rogra"aci*n -brida #ro#orciona un "ecanis"o #or "edio de$ cua$ #ode"os a#ro+ec-ar $as +entajas de$ $enguaje ensa"b$ador y $os $enguajes de a$to ni+e$, todo esto con e$ in escribir #rogra"as "9s r9#idos y eicientes. :a$ +e; e$ "ayor #rob$e"a con e$ ue nos enrente"os sea e$ de c*"o conectar a"bos #rogra"as /e$ de a$to y e$ de bajo ni+e$ y c*"o #asar +ariab$es de un #rogra"a a$ otro. ara conseguir nuestro objeti+o se uti$i;an #seudoo#eradores, es decir, instrucciones ue a#arecen en e$ c*digo uente de$ ensa"b$ador #ero ue no generan ninguna instrucci*n de "9uina, #ero #ro#orcionan directi+as #ara ue e$ ensa"b$ador #ueda o#erar con datos, ra"iicaciones condiciona$es, generaci*n de $istados y con "acros durante e$ #roceso de ensa"b$e. !$ #seudoo#erador ue nos interesa es de$ ti#o de #seudoo#eradores #ara datos y se conoce co"o PUBLIC , e$ cua$ #er"ite ue s"bo$os en e$ c*digo uente sean en$a;ados #or otros #rogra"as ue se +an a en$a;ar juntos. ara esto, $a inor"aci*n es #asada a$ linker /en$a;ador. PUBLIC #er"ite e$ interca"bio de inor"aci*n entre seg"entos. !$ or"ato de este #seudoo#erador es )I6 n<"ero, +ariab$e o r*tu$o
Directi%as para compilaci#n &'!ria
)a co"#i$aci*n -ibrida es uti$i;ada en $o ue es conocida co"o #rogra"aci*n -ibrida. )a #rogra"aci*n -ibrida es uti$i;ada en $os casos en donde e$ c*digo en ensa"b$ador diicu$ta $a estructuraci*n de$ #rogra"a. )a #rogra"aci*n -brida #ro#orciona un "ecanis"o #or "edio de$ cua$ #ode"os a#ro+ec-ar $as +entajas de$ $enguaje ensa"b$ador y $os $enguajes de a$to ni+e$, todo esto con e$ in escribir #rogra"as "9s r9#idos y eicientes.
Eemplo
3rocedure )i"#ia=3anta$$a> 'sse"b$er> 's" Mo+ '?, 0@00Mo+ A, 18Mo+ 6?, 0000Mo+ D?, 184&Int 10 !nd>
Utilizamos el código en ensamblador y código pascal. El siguiente código sirve para limpiar pantalla, está escrito en ensamblador dentro de una función en pascal
ode"os "e;c$ar e$ c*digo ensa"b$ador con e$ c*digo de cua$uier otro $enguaje ue ad"ita este #rocedi"iento. !n #asca$ antes de escribir e$ c*digo en ensa"b$ador ay ue #oner Asm y a$ ina$ de nuestro c*digo End.
unciones en Ensam!laor
!
Operaores Operaores Aritm*ticos ueden e"#$earse $ibre"ente /B, /, /C y /. !n este <$ti"o caso $a di+isi*n es sie"#re entera. :a"bi(n se ad"iten $os o#eradores MOD /resto de $a di+isi*n y 5A)5AR /des#$a;ar a $a i;uierdaderec-a cierto n<"ero de bits.
Operaores +#gicos ueden ser e$ 'ED, OR, ?OR y EO:. Rea$i;an $as o#eraciones $*gicas en $as eF#resiones
Operaores relacionales De+ue$+en condiciones de cierto /0&&&&- o 0&&- o a$so /0 e+a$uando una eF#resi*n. ueden ser% ! /igua$, E! /no igua$, ): /"enor ue, G: /"ayor ue, )! /"enor o igua$ ue, G! /"ayor o igua$ ue
Operaores e retorno e %alores Operaor SE, De+ue$+e e$ +a$or de$ seg"ento de $a +ariab$e o etiueta, si$o se #uede e"#$ear en #rogra"as de ti#o !?!%
MOH '?,5!G
"
Operaor OSET De+ue$+e e$ des#$a;a"iento de $a +ariab$e o etiueta en su seg"ento% MOH '?,O&&5!: +ariab$e 5i se desea obtener e$ oset de una +ariab$e res#ecto a$ gru#o /directi+a GRO de seg"entos en ue est9 deinida y no res#ecto a$ seg"ento concreto en ue est9 deinida% MOH
'?,O&&5!:
no"bre=gru#o%
Operaor .T-"E De+ue$+e e$ "odo de $a eF#resi*n indicada en un byte. !$ bit 0 indica "odo relativo al código y e$ 1 "odo relativo a datos , si a"bos bits est9n inacti+os
signiica "odo abso$uto. !$ bit indica si $a eF#resi*n es $oca$ /0 si est9 deinida eFterna"ente o indeinida> e$ bit 7 indica si $a eF#resi*n contiene una reerencia eFterna. !ste o#erador es
ino
.:!
Operaor T-"E De+ue$+e e$ ta"aJo /bytes de $a +ariab$e indicada. Eo +a$ido en +ariab$es D Ki$os DL 7@ MOH '?,:! Ki$os > '? N 2
:rat9ndose de etiuetas en $ugar de +ariab$es indica si es $ejana o &'R /0&&&!- o cercana o E!'R /0&&&&-.
#
Operaores SIE / +EN,T$ De+ue$+en e$ ta"aJo /en bytes o e$ n<"ero de e$e"entos, res#ecti+a"ente, de $a +ariab$e indicada /deinida ob$igatoria"ente con D
"atriF DL 100 D /1234 MOH '?,5I! "atri; > '? N 200 MOH ?,)!EG:A "atri; > ? N 100
Operaores 0AS1 / 2IDT$ Inor"an de $os ca"#os de un registro de bits /base R!6ORD
Operaores e Atri!utos Operaor "TR Redeine e$ atributo de ti#o /:!, LORD, DLORD, LORD, ::! o e$ de distancia /E!'R o &'R de un o#erando de "e"oria. or eje"#$o, si se tiene una tab$a deinida de $a siguiente "anera% :ab$a DL 10 D /0 > 10 #a$abras a 0
ara co$ocar en ') e$ #ri"er byte de $a "is"a, $a instrucci*n MOH '), $a tab$a es incorrecta, ya ue tab$a /una cadena 10 #a$abras no cabe en e$ registro '). )o ue desea e$ #rogra"ador debe indic9rse$o en este caso eF#$cita"ente a$ ensa"b$ador de $a siguiente "anera% MOH '),:! :R tab$a
:rabajando con +arios seg"entos, :R #uede redeinir una etiueta E!'R de uno de e$$os #ara con+ertir$a en &'R desde e$ otro, con objeto de #oder $$a"ar$a.
Operaores CS:3 DS:3 ES: / SS $ !$ ensa"b$ador genera un #reijo de un byte ue indica a$ "icro#rocesador e$ seg"ento ue debe e"#$ear #ara acceder a $os datos en "e"oria. or deecto, se su#one D5 #ara $os registros ?, DI o 5I /o sin registros de base o ndice y 55 #ara 5 y . 5i a$ acceder a un dato este no se encuentra en e$ seg"ento #or deecto, e$ ensa"b$ador aJade e$ byte adiciona$ de "anera auto"9tica. 5in e"bargo, e$ #rogra"ador #uede or;ar ta"bi(n esta circunstancia% MOH '), !5% +ariab$e
!n e$ eje"#$o, +ariab$e se su#one ubicada en e$ seg"ento eFtra. 6uando se reerencia una direcci*n ija -ay ue indicar e$ seg"ento, ya ue e$ ensa"b$ador no conoce en ue seg"ento esta $a +ariab$e, es uno de $os #ocos casos en ue debe indicarse. or eje"#$o, $a siguiente $nea dar9 un error a$ ensa"b$ar% MOH '), 0 ara so$ucionar$o -ay ue indicar en u( seg"ento este e$ dato /inc$uso aunue este sea D5% MOH '),D5% 0 !n este <$ti"o eje"#$o e$ ensa"b$ador no generara e$ byte adiciona$ ya ue $as instrucciones MOH o#eran #or deecto sobre D5 /co"o casi todas, #ero -a sido necesario indicar D5 #ara ue e$ ensa"b$ador nos entienda. or $o genera$ no es "uy recuente $a necesidad de indicar eF#$cita"ente e$ seg"ento a$ acceder a una +ariab$e e$ ensa"b$ador "ira en ue seg"ento este dec$arada y seg
Operaor S$ORT
%
Indica ue $a etiueta reerenciada, de ti#o E!'R, #uede a$can;arse con un sa$to corto /128 a B127 #osiciones desde $a actua$ situaci*n de$ contador de #rogra"a. !$ ensa"b$ador :'5M, si se so$icitan dos #asadas, co$oca auto"9tica"ente instrucciones 5AOR: a$$9 donde es #osib$e, #ara econo"i;ar "e"oria /e$ M'5M no.
Operaor 456 Indica $a #osici*n de$ contador de #osiciones /)ocaci*n 6ounter uti$i;ado #or e$ ensa"b$ador dentro de$ seg"ento #ara $$e+ar $a cuenta de #or donde se $$ega ensa"b$ando. &rase D Ssi"#9ticoT )on itud
!
O&&5!:
!n e$ eje"#$o, $ongitud to"ara e$ +a$or V.
Operaores $I,$ / +O2 De+ue$+en $a #arte a$ta o baja, res#ecti+a"ente /8 bits de $a eF#resi*n
dato ! 102 MOH '),)OL dato > ') N 1 MOH 'A,AIGA dato > 'A N 4
&'
Conclusiones !n sntesis, $a #rogra"aci*n -ibrida nos #ro#orciona un "ecanis"o #or "edio de$ cua$ #ode"os a#ro+ec-ar $as +entajas de$ $enguaje ensa"b$ador y $os $enguajes de a$to ni+e$, todo esto con e$ in escribir #rogra"as "9s r9#idos y eicientes. De igua$ "anera recorda"os $as unciones de $os o#eradores con a$gunos eje"#$os. !n in #ode"os "e;c$ar e$ c*digo ensa"b$ador con e$ c*digo de cua$uier otro $enguaje ue ad"ita dic-o #rocedi"iento antes "encionado.