Instrucciones Ensamblador
-
Upload
samuel-zepeda -
Category
Documents
-
view
220 -
download
0
Transcript of Instrucciones Ensamblador
-
8/16/2019 Instrucciones Ensamblador
1/7
OPERACIONES ARITMETICAS
• ADD destino, origen (ADDition, sumar) {O,S,Z,A,P,C}Suma origen destino, guardando e! resu!tado en destino" Si a! sumar!os dos #!timos $its %me !!e&o una% e! $it de 'arr se one a ( si no,a *)"
• ADC destino,origen (ADdition +it Carr, sumar 'on a'arreo){O,S,Z,A,P,C}Suma origen, destino e! $it de 'arr, guardando e! resu!tado endestino" Sir&e entre otras 'osas ara sumar n#meros de m-s de .$its arrastrando e! $it de 'arr de una suma a otra" Si /uisi0ramossumar dos n#meros enteros de .1 $its a!ma'enados en EA23E42 EC23ED2, odr5amos sumar!os 'on ADD E42,ED2 rimero ADCEA2,EC2 desu0s (ara sumar !as artes a!tas de 67 $its 'on %!a /uenos !!e&a$amos% de !as artes $a8as)" Sumar 'on ADC uede generara su &e9 'arr, 'on !o /ue te:ri'amente odr5amos sumar n#meros
enteros de 'ua!/uier tama;o, roagando e! 'arr de una suma aotra"• INC destino (INCrement, in'rementar) {O,S,Z,A,P}
In'rementa e! oerando destino en " Puede ser un oerando detama;o %$te% o suerior, tanto un registro 'omo una osi'ion dememoria< en este #!timo 'aso a /ue ese'i='ar tama;o 'on >ORD,D>ORD et',
• SUB destino, origen (S?4stra't, resta) {O,S,Z,A,P,C}Resta a destino !o /ue aa en origen"
• SBB destino, origen (Su4stra't +it 4orro+, restar 'on !!e&ada){O,S,Z,A,P,C}
Resta a destino !o /ue aa en origen" Si e! @ag C resta uno m-s"An-!oga a ADC"• DEC destino (DECrement, de'rementar) {O,S,Z,A,P}
Igua! /ue INC, ero /ue resta en &e9 de sumar!o"• IMUL origen (Integer M?Bti!i'ation, mu!ti!i'a'i:n entera 'on signo)
{O,C} Mu!ti!i'a origen, entero 'on signo (en 'om!emento a dos), de!ongitud $te o +ord, or AB o A2 rese'ti&amente" Si origen es un$te e! resu!tado se guarda en A2< si es tama;o +ord se a!ma'ena ene! ar D23A2 (arte a!ta en D2, arte $a8a en A2)" Si !as mitades demaor eso son distintas de *, sea 'ua! sea e! signo, C O seonen a uno"
• MUL origen (M?Bti!i'ation, mu!ti!i'a'i:n entera sin signo) {O,C}Como IM?B, sa!&o /ue mu!ti!i'a enteros sin signo" S:!o admite !aorma 'on un #ni'o oerando"
• IDIV origen (Integer DIide, di&isi:n entera 'on signo)Di&ide n#meros 'on signo" Ca!'u!a e! 'o'iente e! resto de di&idir A2entre e! oerando (tama;o $te)" Si e! oerando es de . $its !o /uedi&ide es e! ar D23A2" Si e! oerando es de 67 $its (F*6F.G), !o /uedi&ide es e! ar ED23EA2" E! 'o'iente !o guarda en AB, A2 o EA2 seg#ne! 'aso" E! resto en AH, D2 o ED2" Si e! 'o'iente es maor /ue e!tama;o m-imo (F, . o 67 $its) tanto 'o'iente 'omo resto /uedaninde=nidos, sa!ta una interru'i:n *
• DIV origen (DIide, di&isi:n entera sin signo)Igua! /ue IDI, s:!o /ue ara n#meros sin signo"
-
8/16/2019 Instrucciones Ensamblador
2/7
INSTR?CCIONES DE MOIMIENTO DE DATOS
• MOV destino, origen (MOe, mo&er)• XCHG destino, origen (e2CHanJe, inter'am$iar)
Inter'am$ia destino 'on origen< no se uede usar 'on registros desegmento"
INSTR?CCIONES DE SOPORTE ARITMKTICO
Ba maor arte de estas instru''iones sir&en ara etender e! signo"
• CWD (Con&ert >ord to Dou$!e+ord, 'on&ertir a!a$ra a a!a$rado$!e)Etiende e! signo de A2 a D2, resu!tando e! n#mero D23A2
• CQD (Con&ert Dou$!e+ord to Luad3+ord, 'on&ertir a!a$ra do$!e aa!a$ra 'u-dru!e) Etiende e! signo de EA2 a ED2, resu!tando e!
n#mero ED23EA2• CBW (Con&ert 4te to >ord, 'on&ertir $te a a!a$ra)
Etiende e! signo de AB a AH, resu!tando e! n#mero A2• CWDE (Con&ert >ord to Dou$!e+ord Etended, 'on&ertir a!a$ra a
a!a$ra do$!e etendida) Etiende e! signo de A2 a EA2, resu!tando e!n#mero EA2
• MOVSX destino,origen (Mo&e +it Sign Etension, mo&er 'onetensi:n de signo) Mue&e origen a destino, etendiendo e! signo" Sie! destino es de . $its, origen a de ser de F" Si destino es de 67$its, origen uede ser de F o de ." S:!o a'eta mo&er a un registro(de datos)"
• MOVZX destino,origen (Mo&e +it Zero Etension, mo&er 'onetensi:n de 'eros) Ea'tamente 'omo MOZ2, s:!o /ue en &e9 deetender e! signo re!!ena de *s"
• NEG destino (NEJate, negar){O,S,Z,A,P,C} Cam$ia de signo e!n#mero en 'om!emento a dos de! destino" E/ui&a!e a a'er NOT !uego INC"
INSTR?CCIONES BJICAS
• AND destino,origen• OR destino,origen
• XOR destino,origen• NOT destino
DESPBAZAMIENTOS ROTACIONES
• SAL destino,origen (Sit Aritmeti' Bet, des!a9amiento aritm0ti'o a!a i9/uierda) {O,S,Z,P,C}
• SAR destino,origen (Sit Aritmeti' Rigt, des!a9amiento aritm0ti'oa !a dere'a) {O,S,Z,P,C}
• SHL destino,origen (SHit !ogi' Bet, des!a9amiento !:gi'o a !ai9/uierda) {O,S,Z,P,C}
•
SHR destino,origen (SHit !ogi' Rigt, des!a9amiento !:gi'o a !adere'a) {O,S,Z,P,C}
-
8/16/2019 Instrucciones Ensamblador
3/7
• ROL destino,origen (ROtate Bet, rota'i:n a !a i9/uierda) {O,C}• ROR destino,origen (ROtate Rigt, rota'i:n a !a dere'a) {O,C}• RCL destino,origen (Rotate +it Carr Bet, rota'i:n a !a i9/uierda 'on
'arr) {O,C}• RCR destino,origen (Rotate +it Carr Rigt, rota'i:n a !a dere'a
'on 'arr) {O,C}
Am$as des!a9an o rotan e! oerando destino a'ia e! sentido indi'adotantas &e'es 'omo diga e! oerando origen" Este #!timo oerando uede serun &a!or inmediato o CB"
Es $ueno re'ordar /ue des!a9ar un n#mero a !a i9/uierda un $it e/ui&a!e amu!ti!i'ar or dos, des!a9ar!o a !a dere'a di&idir entre dos" Cuando/ueramos rea!i9ar a!guna de estas oera'iones en un a'tor oten'ia de dossiemre ser- mu'o ms r-ido des!a9ar un registro (o &arios, roagandoe! 'arr) /ue rea!i9ar una mu!ti!i'a'i:ndi&isi:n" Hi!ando un o'o ms =no, sitenemos /ue mu!ti!i'ar un n#mero or a!go /ue no sea una oten'ia dedos ero %se !e are9'a mu'o%, e! m0todo uede seguir 'omensando" Paramu!ti!i'ar or 7* odemos a'er una 'oia de! registro, des!a9ar!o or un!ado 1 $its (ara mu!ti!i'ar or .) or otro 7 $its (ara mu!ti!i'ar or 1), sumar am$os resu!tados ar'ia!es"
INSTR?CCIONES DE COMPARACIN
• CMP oerando,oerando7 (CoMPare, 'omarar) {O,S,Z,A,P,C}un'iona ea'tamente igua! /ue S?4 so!amente /ue sin a!ma'enar e!resu!tado (o sea, ee't#a !a oera'i:n oerando3oerando7,a!terando !os @ags en 'onse'uen'ia)
• TEST oerando,oerando7 (TEST, 'omro$ar) {O,S,Z,A,P,C}Como !a anterior, ero 'on !a oera'i:n AND en !ugar de S?4"
INSTR?CCIONES DE SABTO
JMP dire''i:n (uMP, sa!tar)
-
8/16/2019 Instrucciones Ensamblador
4/7
Sa!ta a !a dire''i:n indi'ada" Este sa!to uede ser tanto !e8ano 'omo'er'ano, !a dire''i:n uede &enir dada en &a!or inmediato (genera!mentemediante una eti/ueta) o en memoria"
Cuando /ueremos a'er un sa!to 'ondi'ionado or una 'omara'i:n, nodire'tamente or e! estado de !os @ags, !o /ue a'emos es una 'omara'i:nCMP A,4" A 'ontinua'i:n usamos una instru''i:n de sa!to de entre !assiguientesQ
Para a'er 'i'!os (a!go as5 'omo or i to *) !a ami!ia de! F*F. 'uenta 'onBOOP !a are8a BOOPEBOOPZ (mnem:ni'os de !o mismo)
• LOOP dire''i:n (BOOP, 'i'!o) De'rementa C2 si e! resu!tado es
distinto de * sa!ta a !a dire''i:n dada" Estri'tamente a$!ando no esuna dire''i:n sino un des!a9amiento en e! rango G737F $tesrese'to a IP ara e! F*F.
• LOOPZLOOPE tienen !a misma sintais /ue BOOP" Bo /ue a'en esde'rementar C2 sa!tar a !a dire''i:n dada si C2 es distinto de * Z" Ba idea es ee'tuar un 'i'!o 'on una 'ondi'i:n dada, /ue sereita un m-imo de C2 &e'es"
INSTR?CCIONES PARA O4TENER DIRECCIONES
• LEA destino,origen (Boad Ee'ti&e Address, 'argar dire''in ee'ti&a)
-
8/16/2019 Instrucciones Ensamblador
5/7
Carga !a dire''i:n ee'ti&a de! oerando origen en destino" %BEA A2,42GDIG7U% 'a!'u!ar5a !a suma 42GDIG7 e introdu'ir5a e! resu!tado enA2 ( no e! 'ontenido de !a dire''i:n auntada or 42GDIG7, ueseso ser5a un MO)"
• LDS destino,origen (Boad ointer using DS, 'argar untero usando
DS)Esta instru''i:n sus &ariantes aorran mu'o tiemo einstru''iones en !a 'arga de unteros" origen ser- siemre memoria'onteniendo un untero, es de'ir, un segmento un des!a9amiento"Ba rimera a!a$ra 'orresonde a! oset !a segunda a! segmento" E!oset se 'arga en destino e! segmento en DS"
Eisten m-s instru''iones, una or 'ada registro desegmentoQ LES,LFS,LGS LSS (mu'o 'uidadito 'on esta #!tima, or/uenos desmadra !a i!a)"
INSTR?CCIONES DE CADENA
Ha un 'on8unto de instru''iones 'ono'ido a &e'es 'omo %de 'adena%, /uesir&en ara mo&er 'omarar e!ementos disuestos en arra,in'rement-ndose 'ada &e9 e! untero a !a 'adena" estas se &en ae'tadasor e! $it de dire''i:n (/ue indi'a e! sentido en /ue se re'orre !a 'adena)"Mediante !a instru''i:n STD (SeT Dire'tion @ag) a'emos D, 'on CLD (CBear Dire'tion @ag) D*
LODSB LODSW (BOaD String, 4te BOad String, >ord), sin oerandos,!een e! $te o a!a$ra en !a dire''i:n dada or DSQSI(ESI) !a a!ma'enan en
AB o A2 rese'ti&amente"
STOSB STOSW (STOre String, 4te>ord) un'ionan 'on e! mismorin'iio en 'uanto a! @ag de dire''i:n, !o /ue a'en es a!ma'enar enESQDI(EDI) e! 'ontenido de! a'umu!ador (AB o A2 seg#n 'ada 'aso)" Demanera an-!oga odemos usar STOS oerando"
MOVSB MOVSW (MO String, 4te>ord) &an m-s a!!-< mue&en e! $te oa!a$ra en DSQSI a ESQDI" emos aora /ue SI es e! Sour'e Inde, DIe! Destination Inde" Tras e! mo&imiento de datos SI DI son in'rementadoso de'rementados siguiendo !a !:gi'a des'rita ara BODS"
SCASB SCASW (SCAn String) rea!i9an !a 'omara'i:n %CMP AB,ESQDIU% o%CMP A2,ESQDIU%, a!terando !:gi'amente !os @ags, a 'ontinua'i:nmodi='ando DI 'omo es de$ido" (Eiste SCAS oerando 'on id0nti'as'onsidera'iones a !as anteriores instru''iones de 'adena 'on oerando enmemoria)"
CMPSB CMPSW (CoMPare String) e/ui&a!en a %CMP DSQSIU,ESQDIU%tama;o $te o +ord seg#n 'orresonda, a!terando !os @ags en un'i:n de !a'omara'i:n e in'rementando SI DI seg#n e! tama;o de! dato e! @ag dedire''i:n (a$iendo asimismo un CMPS /ue un'iona an-!ogamente a MOSen 'uanto a !!e&ar oerandos en memoria)" Esto uede no are'er
imresionante (a /ue REP a/u5 no inta nada), ero es /ue eisten dosre=8os (en rea!idad 1, ero son are8as de mnem:ni'os de instru''iones
-
8/16/2019 Instrucciones Ensamblador
6/7
id0nti'as) m-s, REPE/REPZ REPNE/REPNZ" Estos re=8os un'ionan 'omoREP en 'uanto a /ue reiten !a instru''i:n /ue re'eden tantas &e'es 'omoindi/ue C2 e'eto en /ue adem-s a de &eri='arse !a 'ondi'i:n /uereresentan" REPZ se reite mientras e! @ag de 'ero est- a uno (REPeat+i!e Zero), mientras /ue REPNZ se reite, !:gi'amente, mientras est- a
'ero (REPeat +i!e Not Zero)" De esta manera es mu -'i! rea!i9ar un':digo /ue !o'a!i'e una determinada a!a$ra dentro de un arra, o /ueen'uentre !a dieren'ia entre dos 9onas de memoria"
INSTR?CCIONES 4CD
AAA (ASCII Ad8ust A2 Ater Addition) {A,C}
Con&ierte e! n#mero a!ma'enado en AB a 4CD desema/uetado" Ba idea esa!i'ar!o desu0s de sumar 4CDs no ema/uetados" Esta instru''i:n mira!os 1 $its ms $a8os de ABQ si es maor /ue V o A (!ag Aui!iar) es igua! a ,suma . a AB, a AH, a'e AC, !os 'uatro $its m-s signi='ati&os deAB !os de8a a *" WBo /u0X
amos 'on e! e8em!i!!o de marras" Tenemos en A2 e! 4CD no ema/uetado1 (*1*) en 42 1 (**1)" Lueremos sumar!os, /ue e! resu!tado sigasiendo un 4CD no ema/uetado, ara o$tener un resu!tado 'oerente"Partimos de /ue A*" Primero sumamos 'on ADD A2,42 or/ue nosa$emos a'er otra 'osa, e! resu!tado /ue nos de8a es A2*Y*4" ?, nior e! orro" WLu0 a'emosX Aaa""" Eso, !a instru''i:n AAA" Como !a arte$a8a de AB es maor /ue V, se da 'uenta r-idamente de /ue ese n#meroa /ue a8ustar!o ('osa /ue a sa$emos, ero en =n)" A!i'a !a re'etaQ suma
. a AB, a AH" A2 enton'es /ueda *." Carga 'on 'eros !a arte a!ta deAH, A2*.*" aa, esto a est- me8or" As5 /ue 'on esto odemos a'erminisumas en 4CD" Con !os @ags, mo&s un o'o de imagina'i:n se uedena'er sumas en 4CD ms grandes" Mi 'onse8o es /ue, una &e9 entendidoesto, te o!&ides de !as instru''iones ara 4CD< e! 'oro'esador matem-ti'oin'!ue instru''iones de 'on&ersi:n mu'o menos enre&esadas ('oges dosn#meros enormes, !os sumas, guardas e! resu!tado gordo dire'tamente'omo 4CD)
Bo de %ASCII% ara este tio de instru''iones 'on 4CD no ema/uetados&iene de /ue se uede o$tener -'i!mente e! ':digo ASCII de un n#mero de
estosQ so!o a /ue sumar!e e! ':digo de! 'ero (1F) a 'ada d5gito" Siestu&iera ema/uetado no odremos, or/ue !o /ue tenemos es un ni$$!eara 'ada d5gito, no un $te ( e! as'ii es un $te, '!aro, a me dir-s 'omo!e sumas 1F si no)"
DAA (De'ima! Ad8ust AB ater Addition) {S,Z,A,P,C}
A!go are'ido a AAA, s!o /ue se usa tras !a suma de dos $tes 'on d5gitos4CD ema/uetados (dos n#meros or tanto de dos d5gitos)" En &e9 desumar . a AH suma . a! ni$$!e a!to de AB, et'" Para sumar dos n#meros dedos d5gitos 4CD ema/uetados, ADD AB, !o /ue sea !uego DAA"
AAS (Ad8ust A2 Ater Su$tra'tion) {A,C}Como AAA ero ara a8ustar desu0s de una resta, en &e9 de una suma"
-
8/16/2019 Instrucciones Ensamblador
7/7
DAS (De'ima! Ad8ust AB ater Su$tra'tion) {S,Z,A,P,C}
An-!oga a DAA, ero ara !a resta"
AAM (ASCII Ad8ust A2 Ater Mu!ti!) {S,Z,P}
De !a misma 'a;ada /ue AAA,AAS" A8usta e! resu!tado guardado en A2 demu!ti!i'ar dos d5gitos 4CD no ema/uetados" Por e8em!o, si AB* 4B*F, tras M?B 4B AAM tendremos A2*Y*. (or/ue FY.)"Aasionante"
AAD (ASCII Ad8ust A2 4eore Di&ision) {S,Z,P}
M-s de !o mismo" Pero o8o, /ue aora AAD se a!i'a antes de di&idir, nodesu0s" o!&iendo a! e8em!o anterior, si 'on nuestros A2*Y*., 4B*Fa'emos AAD !uego DI 4B o$tenemos"" a8, AB* 4B*F, !o /ue'on=rma nuestra teor5a de /ue FY."