Instrucciones Ensamblador

download Instrucciones Ensamblador

of 7

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."