Lenguaje Ensamblador Intel 8086

31
Estudiar para evaluación de la unidad 2 Matetrial para estudiar la unidad 2 Sitio: Sistema de Educación a Distancia UCLA Curso: DCyTCeDSistema de Computacion Libro: Estudiar para evaluación de la unidad 2 Imprimido por: TIFFANY HIGUERA Día: sábado, 13 de junio de 2015, 14:30

description

Lenguaje Ensamblador Intel 8086

Transcript of Lenguaje Ensamblador Intel 8086

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 1/31

    Estudiarparaevaluacindelaunidad2Matetrialparaestudiarlaunidad2

    Sitio: SistemadeEducacinaDistanciaUCLACurso: DCyTCeDSistemadeComputacionLibro: Estudiarparaevaluacindelaunidad2Imprimidopor: TIFFANYHIGUERADa: sbado,13dejuniode2015,14:30

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 2/31

    Tabladecontenidos

    Conceptosyejemplos

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 3/31

    Conceptosyejemplos

    ENSAMBLADORESSon losencargadosdeconvertir losprogramas fuentes,escritosen lenguajeassembler,a

    programaobjetoenlenguajemquina.

    Eltrabajodelensambladorsereducealatraduccinpalabraporpalabra,cambindolaporcdigosdeoperacinnumricosydireccionesreales.

    ENLAZADORES

    Mediante el enlace (linkeo) se convierte un archivo objeto en un archivo ejecutable. Elenlazador completa las direcciones que el ensamblador dejo pendiente en el modulo objeto,asignndolesudireccinreal.

    FormatoGeneraldeunProgramaenEnsamblador

    [DefinicindeMacrosInternas]

    DOSSEG

    [INCLUDE]Inclusindebibliotecasdemacrosyprocedimientos

    .MODELSMALL

    .STACK0100h

    .DATA

    [DefinicindeConstantes]

    [DefinicindeVariables]

    .CODE

    EtiquetaPuntodeEntrada

    [InstruccionesdelPrograma]

    [DefinicindeProcedimientosInternos]

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 4/31

    EndEtiqueta

    DirectivasUtilizadas

    DOSSEG

    Estadirectivaleindicaalensambladorquelossegmentosdebensercargadosenmemoriaenunordenespecifico(PrimeroDATASEGMENTyluegoSTACKSEGMENT),estocausaquequenosenecesiteespacioendiscoparaalmacenarlosdatosdelapila.

    .MODEL

    Conestadirectivasedefineeltipodeprogramaasergeneradoporelensambladoryasea*.COM*.EXE

    Tiny (*.COM) :Estos cuentan comomximo con un segmento (64 Ks) paracdigo,datosypila,esdecir,paratodoelprograma.

    Small (*.EXE) :EnunprogramaEXE, los datos, pila y cdigo se definen ensegmentos independientes. Se utiliza un segmento distinto para cada una deesastresprincipalesestructuras.

    .STACK

    Estadirectivaseutilizaparaindicarcuandoespaciosevaareservarparaelusodelapila.

    .DATA

    Declaraunsegmentodedatosqueseusaparavariablesdememoria.

    .CODE

    Declaraunsegmentodecdigoqueseusaparaalmacenarlalineasdecdigoenmemoria.

    END

    SuformaesEND[Expresin].Esteidentificaelfinaldelprogramafuenteylaexpresinopcionalidentificaelnombredelpuntodeentrada.

    TiposdeDatos

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 5/31

    DatoPseudoOperadorTamao

    ByteDB1ByteWordDW2BytesDoubleWordDD4BytesQuadWordDQ8BytesTWordDT10Bytes

    Identificadores

    Puedentenerhasta31caracteresPuedecontenerletras,nmerosyloscaracteresespeciales(,.,@,_,$,)Nodebeniniciarconunnmerodecimalyelpuntoseutilizasolamentecomoelprimercarcter.Laspalabrasreservadasnopodrnserusadascomoidentificador

    IdentificadoresValidos:

    Etiqueta1

    Suma03

    Cantidad_Veces

    A125%

    IdentificadoresNoValidos

    9Veces

    TotalMonto

    Byte(PalabraReservada)

    Constantes

    MantienenlaparametrizacinenelprogramaNogenerancdigoalmomentodeensamblarSeutilizaelpseudooperadorEQUoelcarcter=paraasignarleunvaloralaconstante

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 6/31

    Nota:

    ElpseudooperadorEQUpermitesoloasignarvaloresquenosobrepasenaun(1)byte,elcarcter=permiteasignarvaloresquenosobrepasen2bytes

    Ejemplos

    VecesEQU25

    Cantidad=29500

    TamaoEQU01h

    Tamao=0001b

    Numero=70000(**ERROR**)(Nodebesobrepasar65535)

    Etiquetas

    Lasetiquetasseempleanconbastantefrecuenciacomopuntodeentradaoderegreso.Sudireccinrepresentaunaidentidadalaquepuedenhacerreferenciaotrasinstrucciones.Estenombresimbolicoestaasociadoconladireccindondecomienzaunainstruccin

    Puedetenerunalongituddehasta31caracteres

    Puedeutilizarzecualquierletra(MaysculaoMinuscula)

    Undigito(desde0a9)

    Cualquieradelossiguientescaracteres:,.,@,_,$.

    DefinicindeunaVariable

    NombredeVariablePseudoOperadorValor_Inicial

    Ejemplos:

    Tamaodb0

    Mayordw01001b

    Vecesdw01Ah

    Menordb400(**ERROR**)(Sobrepasaelvalorde1byte=255)

    Contadordb?

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 7/31

    Nota

    Cuandosedesconoceelvalorquepodriatomarunavariableentoncesseutilizaelcarcter?parainicializarla

    Siempresedebeinicializarunavariablealmomentodedeclararla

    SistemasNumricos

    Binario(base2)

    Simbolos:0,1

    Octal(base8)

    Smbolos:0,1,2,3,4,5,6,7

    Decimal(base10)

    Smbolos:0,1,2,3,4,5,6,7,8,9

    Hexadecimal(base16)

    Smbolos:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

    A=10,B=11,C=12,D=13,E=14,F=15

    REGISTROSINTERNOSDELMICROPROCESADOR

    LaUnidadCentraldeProceso(CPU,porsussiglaseningls)tiene14registrosinternoscadaunode16bits.Losprimeroscuatro,AX,BX,CXyDX,sondeusogeneralysepuedenusartambincomoregistrosde8bits.Esdecir,AXsepuededividirenAHyAL(AHeselbytealto,high,yALeselbytebajo,low)Lomismoesaplicablealosotrostres(BXenBHyBL,CXenCHyCLyDXenDHyDL)

    Estossonlosnicosregistrosquepuedenusarsedemododual(en8o16bits)

    LosregistrosdelaCPUsonconocidosporsusnombrespropios,queson:

    AX(acumulador)

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 8/31

    BX(registrobase)

    CX(registrocontador)

    DX(registrodedatos)

    DS(registrodelsegmentodedatos)

    ES(registrodelsegmentoextra)

    SS(registrodelsegmentodepila)

    CS(registrodelsegmentodecdigo)

    BP(registrodeapuntadoresbase)

    SI(registrondicefuente)

    DI(registrondicedestino)

    SP(registrodelapuntadordepila)

    IP(registrodelapuntadordesiguienteinstruccin)

    F(registrodebanderas)

    El registroAX se usa para almacenar resultados, lectura o escritura desde o hacia lospuertos.ElBXsirvecomoapuntadorbaseondice.ElCXseutilizaenoperacionesdeiteracin,comoun contador que automticamente se incrementa o decrementa de acuerdo con el tipo deinstruccinusada.ElDXseusacomopuenteparaelaccesodedatos.

    ElDSesunregistrodesegmentocuyafuncinesactuarcomopolicadondeseencuentranlos datos. Cualquier dato, ya sea una variable inicializada o no, debe estar dentro de estesegmento.Lanicaexcepcinescuandotenemosprogramasdeltipo*.com,yaqueenstosslopuedeexistirunsegmento.ElregistroEStieneelpropsitogeneraldepermitiroperacionessobrecadenas,perotambinpuedeserunaextensindelDS.

    ElSStienelatareaexclusivademanejarlaposicindememoriadondeseencuentralapila(stack)Estaesunaestructurausadaparaalmacenardatosenformatemporal,tantodeunprogramacomode lasoperaciones internasde lacomputadorapersonal (PC,porsus siglasen ingls)Entrminos de operacin interna, la CPU usa este segmento para almacenar las direcciones deretornodelasllamadasarutinas.ElregistrodesegmentosmsimportanteeselCSosegmentodecdigo. Es aqu donde se encuentra el cdigo ejecutable de cada programa, el cual est

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 9/31

    directamenteligadoalosdiferentesmodelosdememoria.

    El registro BP (base pointer) se usa para manipular la pila sin afectar al registro desegmentosSS.Estilcuandoseusainterfazentrelenguajesdealtonivelyelensamblador.PuestoquedichainterfazsebasaenelconceptodelapilaBP,nospermiteaccederparmetrospasadossinalterarel registrodesegmentoSS.Los registrosSIyDIsontiles paramanejar bloquesdecadenasenmemoria,siendoelprimeroel ndicefuenteyelsegundoel ndicedestino.Enotraspalabras,SI representa la direccin donde se encuentra la cadena yDI la direccin donde sercopiada.

    ElregistroSPapuntaaunreaespecficadememoriaquesirveparaalmacenardatosbajolaestructuraLIFO(ltimoenentrar,primeroensalir),conocidacomopila(stack)ElregistroIP(instructionpointer)apuntaalasiguienteinstruccinqueserejecutadaenmemoria.

    RegistrosdeBanderasSulongitudesde16bits.Cadaunodeestosbitscontieneciertainformacinbooleana

    (verdaderoofalso).Segnelvalordecadaunodeestosbitssea1(verdadero)0(falso),informardelestadodealgunasituacinenparticular.

    DentrodelregistrodeFLAGShay7bitsquenoseutilizan.Losnombresdelosutilizadosson:Of,Df,If,Tf,Sf,Zf,Af,PfyCf.

    Estosbitsseclasificanendosgrupos:

    Flagsdeestado(Cf,Af,Of,Zf,PfySf):muestranelestadodelprocesador.

    Flagsdecontrol(Df,If,Tf):determinancomoelprocesadorresponder

    adeterminadassituaciones.Elprogramadormanipularestosbitsparacontrolarelmododeejecucindealgunasinstrucciones.

    Acontinuacinsemuestraelsignificadodecadaunodelosflags:

    Cf:BitdeCarry(acarreo),seactiva(seponea1)siseproduceacarreooprestamoenunaoperacinaritmtica.

    Pf:Bitdeparidad,seactivasielresultadodeunaoperacintiene

    paridadpar,esdecir,sielresultadotieneunnmeropardeunos.

    Af:Bitdecarryauxiliar,seactivasiunaoperacinaritmticaproduceacarreodepeso16.

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 10/31

    Zf:Bitdecero,seactivasiunaoperacinproduce0comoresultado.

    Sf:Bitdesigno,seactivasielbitmssignificativodeunresultado

    es1.Porconvencincuandoseoperaconnmerosnegativos,se

    utilizaelbitdemayorpesoparaindicarelsigno:sielbitescero,

    entoncessetratadeunnmeropositivo,sies1,setratadenmero

    negativo.

    Tf:Bittrapodesvo.SiTf=1,elprocesadorejecutalasinstrucciones

    una a una bajo control del usuario. Se pone a 1 este bit para realizar depuraciones delcdigoqueseestaejecutando.Deestaformasepuedeseguirelflujodelprograma.

    If:Bitdeinterrupcin,sivale1,lasinterrupcionesestnpermitidasyseranatendidas,ysivale0,no.

    Df:Seusaenlasinstruccionesquemanipulancadenasdebytes.

    Segncoloqueelprogramadorestebit,a'0'oa'1',lascadenas

    debytesserntratadasensentidodedireccionescrecienteso

    decrecientes.

    Of:Bitdeoverflow,indicadesbordamientoenunaoperacinaritmticaoseaelresultadodeunaoperacinesmayorqueelmximovalorposiblederepresentar.

    RepresentacinGrafica

    Registrode16bits

    STACKPila

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 11/31

    EsunaestructuradeDatosenmemoriadondesepuedenalmacenarunaseriededatos,enelcuallasinsercionesylaseliminacionessehacenporunextremo,llamadocima(top)delapila.LaestructurapilatambinseconocecomoLIFO(lastin,firstout,ultimoenentrar,primeroensalir).

    CONJUNTODEINSTRUCCIONES

    Sepuedenclasificarenlossiguientesgrupos:

    InstruccionesdeTransferenciadeDatos.

    Estasinstruccionesmuevendatosdeunaparteaotradelsistemadesdeyhacialamemoriaprincipal,deyalosregistrosdedatos,puertosdeE/Syregistrosdesegmentacin.

    Estemovimientodedatosestsujetoareglasyrestricciones.Algunasdeellassonlasquesecitanacontinuacin.

    Noesposiblemoverdatosdeunalocalidaddememoriaaotradirectamente,esnecesarioprimeromoverlosdatosdelalocalidadorigenhaciaunregistroyluegodelregistroalalocalidaddestino.

    Nosepuedemoverunaconstantedirectamenteaunregistrodesegmentos,primerosedebemoveraunregistrodelaCPU.

    Lasinstruccionesdetransferenciadedatossonlassiguientes:

    MOV

    Permitelatransferenciadedatosentreceldasdememoriaylosregistros

    Sintaxis:MOVDestino,Fuente

    DondeDestino es el lugar a donde semovern los datos y fuente es el lugar donde seencuentrandichosdatos.

    Losdiferentesmovimientosdedatospermitidosparaestainstruccinson:

    Destino:registrodesegmento.>Fuente:memoria/registro

    Destino:memoria/registro.>Fuente:registrodesegmento

    Destino:registro.>Fuente:registro

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 12/31

    Destino:registro.>Fuente:memoria

    Destino:memoria.>Fuente:registro

    Destino:registro.>Fuente:datoinmediato

    Destino:memoria.>Fuente:datoinmediato

    XCHG

    Intercambiaelcontenidodedosregistros,obienelcontenidodeunregistroyeldeunaposicindememoria.

    Sintaxis:XCHGDestino,Fuente

    InstruccionesdeCarga

    LEA

    Cargaladireccinefectiva(Desplazamiento)deloperandofuente

    Sintaxis:

    LEADestino,fuente

    LDS

    CargaenDSladireccindesegmentodeloperandofuenteyenelregistrodestinoladireccindedesplazamientodedichooperandofuente

    Sintaxis:

    LDSDestino,fuente

    InstruccionesdePila

    Permiteelalmacenamientodevaloresenlapila

    PUSH

    Insertaundatoenlapila.Transfiriendoelcontenidodeloperandofuentealapila(TipoWord)

    Sintaxis:PUSHFuente

    POP

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 13/31

    Recuperaundatodelapila,transfiriendoelcontenidodelapilahaciaeloperandodestino

    Sintaxis:POPDestino

    PUSHF

    Insertaelcontenidodelasbanderasenlapila.

    Sintaxis:PUSHF

    Laformadetransferenciadebanderaseslasiguiente:

    BITBANDERA

    0CF

    2PF

    4AF

    6ZF

    7SF

    8TF

    9IF

    10DF

    11OF

    POPF

    Extraeelcontenidodelasbanderasalmacenadasenlapila.

    Sintaxis:POPF

    LaformadetransferenciaesigualalautilizadaenlainstruccinPUSHF

    InstruccionesdeComparacinySalto

    InstruccionesdeComparacin

    CMP

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 14/31

    Comparadosregistrosunregistroyunadireccindememoria,delasiguientemanerarestaeloperandofuentedeldestino,singuardarresultados,perosiafectandoelregistrodebanderas

    Sintaxis:CMPDestino,Fuente

    InstruccionesdeSalto

    Sonutilizadasparatransferirelflujodelprocesoaloperandoindicado.

    SaltosIncondicionales

    JMP

    Esunsaltosincondiciones,conelcualsepodrcambiarelcontroldeflujodelprogramaacualquierpuntosinrevisarbanderasodatos

    Sintaxis:JMPDireccion(Etiqueta)

    SaltosCondicionales

    JO:Jumpifoverflow.Saltasielflagdedesbordamientoestauno

    JNO:Jumpifnotoverflow.Saltasielflagdedesbordamientoestacero.

    JC, JNAE, JB: Los tres sirven para lomismo. Significan: Jump if Carry, Jump if NotAboveorEqualyJumpifBelow.Saltanporlotantosialhaberunacomparacinelflagdeacarreoseponea1.

    JNC,JAE,JNB:Valenexactamenteparalomismo.JumpifnotCarry,JumpifAboveorEqualyJumpifNotBelow.Saltanportantosialhaberunacomparacinelflagdeacarreovale0

    JZoJE:JumpifZerooJumpifEqual.Saltasielflagdeceroesta1,osea,si lasdosinstruccionescomparadassoniguales.

    JNZoJNE:JumpifNotZerooJumpifNotEqual.Saltasielflagdeceroesta0,osea,silasdosinstruccionescomparadasnosoniguales.

    JBEoJNA:JumpifBeloworEqualoJumpifNotAbove.Saltarasienresultadodelacomparacinelprimermiembroesmenoroigualqueelsegundo.

    JA o JNBE: Jump if Above o Jump if Not Below of Equal. Justo lo contrario que laanterior,saltasienelresultadodelacomparacinelprimermiembroesmayoralsegundo.

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 15/31

    JS:JumpifSign.Saltasielflagdesignoestauno.

    JNS:JumpifNotSign.Saltasielflagdesignoestacero.

    JP,JPE:JumpifParityoJumpifParityEven.Saltasielflagdeparidadestauno.

    JNP,JPO:JumpifNotParity,JumpifParityOdd.Saltasielflagdeparidadestacero.

    JL,JNGE: Jump if Less, Jump if Not Greater of Equal. Salta si en el resultado de lacomparacin,elprimernmeroesinferioralsegundo.

    JGE,JNL: Jump if Greater or Equal, Jump if Not Less. Salta si en el resultado de lacomparacin,elprimernmeroesmayoroigualqueelsegundo.

    JLE,JNG: Jump ifLowerorEqual, Jump ifNotGreater.Salta si en el resultadode lacomparacin,elprimernmeroesmenoroigualqueelsegundo.

    JG,JNLE: Jump ifGreater, Jump ifNotLowerorEqual.Salta si en el resultadode lacomparacin,elprimernmeroesmayorqueelsegundo.

    Sintaxis:Jxxxdireccion(Etiqueta)

    InstruccionesdeConteo

    INC

    Incrementaeloperandoenuno,sinmodificarlasbanderas

    Sintaxis:INCoperando

    DEC

    Decrementaeloperandoenuno,sinmodificarlasbanderas

    Sintaxis:DECoperando

    InstruccionesdeCiclo

    LOOP

    ComparaCXconcero,sinoesigual,decrementaCXenunoyvaaladireccindeloperando,sinosigueconlasiguienteinstruccin.

    Sintaxis:Loopdireccion(Etiqueta)

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 16/31

    JCXZ

    Compara CX con cero , si es igual va a la direccion del operando sino sigue con lasiguienteinstruccion

    InstruccionesLgicas

    AND

    AplicaunANDlgicoalosoperandosyguardaresultadoenelprimeroperando.

    FuenteDestino|Destino

    11|1

    10|0

    01|0

    00|0

    Sintaxis:ANDdestino,fuente

    OR

    AplicaunORlgicoalosoperandosyguardaresultadoenelprimeroperando.

    FuenteDestino|Destino

    11|1

    10|1

    01|1

    00|0

    Sintaxis:ORdestino,fuente

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 17/31

    NEG

    Convierteeloperandoacomplementoados.

    Sintaxis:NEGoperando

    NOT

    Convierteeloperandoacomplementoauno.

    Operando|Operando

    1|0

    0|1

    Sintaxis:NOToperando

    TEST

    AplicaunANDlgicoalosoperandosperonoguardaresultado,soloafectaelregistrodebanderas.

    Sintaxis:TESToperando,operando

    XOR

    AplicaunOrexclusivoalosoperandos

    FuenteDestino|Destino

    11|0

    00|1

    01|1

    00|0

    Sintaxis:XORDestino,fuente

    InstruccionesAritmticas

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 18/31

    ADD

    Realizalasumaentredosoperandosdados.Estosoperandosdebenserdelmismotamao.

    Sintaxis:ADDoperando1,operando2.

    Serealizalasumadelosdosoperandos,ysedepositaenoperando1.

    Sedebetenerencuentaquepuedeproducirsedesbordamiento.

    SUB

    Realizalarestaentredosoperandosdados.Estosoperandosdebenserdelmismotamao.

    Sintaxis:SUBoperando1,operando2.

    Restadelprimeroperandoelsegundoyloguardaenelprimero.

    MUL

    Realizalamultiplicacindeloperandodado,conelacumulador.

    Dependiendo del tamao del operando introducido en la operacin, el procesador tomarALoAXcomosegundooperando.

    Sintaxis:MULoperando

    Ej.

    MOVAL,2

    MOVBL,2

    MULBLSEGUARDA4ENAL

    * Operando de tipo byte: El procesador asume que el otro operando se encuentraalmacenadoenelregistroAL,yelresultadodelaoperacinlodepositaenelregistroAX.

    *Operandodetipopalabra:ElprocesadorasumequeelotrooperandoestaalmacenadoenelregistroAX,yelresultadodelaoperacinlodepositarenelparderegistrosDX:AX.TeniendoDXlapartemssignificativademayorpesodelresultado.

    DIV

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 19/31

    Divideeloperandoalmacenadoenelregistroacumuladorporeldivisor.

    Esdecir,acumulador/divisor.

    Dependiendodeltamaodeldivisorintroducido,elprocesadorasumequeeldividendoseencuentraenAXenelparderegistrosDX,AX.

    *Divisordetipobyte:ElprocesadorasumequeeldividendoseencuentraalmacenadoenelregistroAX.ElresultadodelaoperacinsedescomponeenAH(resto)yAL(cociente).

    *Divisordetipopalabra:ElprocesadorasumequeeldividendoseencuentraalmacenadoenelparderegistrosDX,AX.TeniendoDXlapartemssignificativa.ElresultadodelaoperacinsedescomponeenDX(resto)yAX(cociente).

    Sintaxis:DIVoperando

    Ej.

    MOVAL,4

    MOVBL,2

    DIVBLSEGUARDA2ENAL

    InstruccionesdeAjusteASCII

    AAD

    ElAjusteASCIIparalaDivisin,permitemultiplicarAHpor10,aadeelresultadoalcontenidodeALyubicadicho resultadoenAL.LuegoponeaAHencero.Esdecir elnumeroquedaalmacenadodeformaempaquetada.

    Sintaxis:AAD

    AAM

    ElAjusteASCIIparalaMultiplicacin,permitedividirelcontenidodeALentre10 , luego coloca el resultado en AH y el resto en AL. Es decir el numero quedaalmacenadoenformanoempaquetado.

    Sintaxis:AAM

    DireccionamientodeMemoria

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 20/31

    Las maquinas basadas en el microprocesador 8086 utilizan 20 bits para direccionar lamemoria,aunqueelCPUsoloprocesapalabrasde16bitsensusregistrosdedirecciones.

    Parasolventaresto,lasdireccionesestndivididasensegmentosydesplazamientos.

    Unsegmentoesunarea continuadememoriade64KBde largoydebeempezar enunaubicacindememoriacuyadireccinsealimitede16bytes(unprrafo).

    Ladireccindeiniciodeunsegmento,enelregistrodesegmentocorrespondiente,definesulocalizacin.

    Paraaccederlasubicacionesdememoriadentrodeunsegmentoserequiereespecificareldesplazamiento (offset) de la localizacin de memoria, el cual necesita de 16 bits paradefinirtodaslasposicionesposibles.

    Para accesar 1 MB de memoria (full address) se combinan la direccin del segmentocontenidaenelregistrodesegmentorespectivoconladeldesplazamiento.

    Para lograr esto se hace un corrimiento de la direccin del segmento cuatro bits a laizquierda, (multiplicar la direccin de segmento por diez en hexadecimal (16 en basedecimal ) ) introduciendo ceros por la derecha y luego se suma la direccin deldesplazamiento,obtenindoseunadireccinde20bits.

    La notacinmas empleada para indicar la direccin de un par segmentodesplazamientoconsisteensepararcondospuntoslosvaloresenhexadecimaldeambos.

    ModosdeDireccionamiento

    INMEDIATO

    Eloperandofuenteapareceenlainstruccin.Unejemplo,eselquemueveunvalorconstanteaunregistrointerno.

    Ej.:MOVDX,2753h

    MOVAX,75d

    DEREGISTRO

    Indica que el operando a ser usado est contenido en uno de los registrosinternosdepropsitogeneraldelCPU.

    Ej.:MOVDX,BXAXBX

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 21/31

    MOVBL,CLBLCL

    DIRECTO

    Especificaenlainstruccinlalocalidaddememoriaquecontienealoperando.Enestetipodedireccionamiento,seformaunadireccinde20bits.

    Ej:MOVCX,COUNT

    ElvalordeCOUNTesunaconstante.Esusadacomoelvaloroffsetenelclculodeladireccinde20bits

    El 8086/8088 siempre usa un registro de segmento cuando calcula unadireccinfsica(ElsegmentoDSseusapordefecto).

    Tomapordefectoelsegmentodedatos.

    Ladireccindedesplazamientosetomadeunavariableenmemoria.

    Sepuedecambiarelsegmentoindicndoloenlainstruccin.

    DEREGISTROINDIRECTO

    Conelmododedireccionamientoderegistrondice,ladireccinoffsetde16bitsestcontenidaenunregistrobaseoregistro ndice.Estoes, ladireccinresideenelregistroBX,BP,SIoDI.Sepuedecambiarelsegmentoindicndoloenlainstruccin.

    Ej.:MOVAX,[BX]

    MOVDX,[SS:SI]

    Elvalorde16bitscontenidoenelregistroSIdebesereloffsetusadoparacalcularladireccinde20bits.

    Otra vez, debeusarse un registro de segmentopara generar la direccin final.Elvalorde16bitsenSIsecombinaconelsegmentoapropiadoparagenerarladireccin.

    Tomapordefectoelsegmentodedatos.

    Ladireccindedesplazamientosetomadelcontenidodeunregistro.

    UtilizalosregistrosBX,SIyDI.

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 22/31

    DEREGISTROBASEREGISTROINDIRECTOCONUNREGISTROBASEYUNREGISTRONDICE

    Estemododedireccionamientousalasumadedosregistrosinternosparaobtenerladireccinoffsetde16bitsausarseenelclculodeladireccinde20bits.

    Ej.:

    MOV[BP][DI],AXeloffsetesBP+DI

    MOVAX,[BX][SI]eloffsetesBX+SI

    MOVAX,[BX+5]

    UtilizalosregistrosBX,BP.

    ConBXtomapordefectoelsegmentodedatos.

    ConBPtomapordefectoelsegmentodestack.

    La direccin de desplazamiento se toma del contenido de un registro mas undesplazamiento.

    Sepuedecambiarelsegmentoindicndoloenlainstruccin.

    CondesplazamientoceroyregistroBXesigualaderegistroindirecto.

    DEREGISTROINDEXADOREGISTROINDIRECTOCONDEZPLAZAMIENTO

    Estetipodedireccionamientoincluyealosdosmodosdedireccionamientoanteriores.Ladireccinoffsetde16bitssecalculasumandoelvalorde16bitsespecificadoenunregistrointernoyunaconstante.

    Ej.:MOVAX,[SI+5]

    MOVDX,[SS:DI+6]

    MOVAX,COUNT[DI]

    SiCOUNT=0378HyDI=04FAH>COUNT+DI=0872H.

    Entonces,ladireccinoffsetde16bitses0872H

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 23/31

    Tomapordefectoelsegmentodedatos.

    UtilizalosregistrosSI,DI.

    La direccin de desplazamiento se toma del contenido de un registro mas undesplazamiento.

    Sepuedecambiarelsegmentoindicndoloenlainstruccin.

    Condesplazamientoceroesigualareg.Indirecto.

    DEREGISTROBASEINDEXADO REGISTRO NDICE INDIRECTOCONUN REGISTRO BASE, UN REGISTRO NDICE Y UN REGISTROCONSTANTE

    Este es el modo de direccionamiento ms complejo. Es idntico al modo dedireccionamientoanterior,exceptoquesesumaunaconstante.

    Ej.:MOVAX,[BX+SI+5]

    MOVDX,[BP+DI+6]

    MOVAX,COUNT[BX][DI]

    Si,DI=0367H,BX=7890HyCOUNT=0012Hentonces,DI+DX+COUNT=7C09H.

    EstemododedireccionamientoindicaqueeloffsetespecificadoporlasumadeDI+BX+COUNTseausadoparamovereldatoenmemoriaenelregistroAX.

    Ladireccinoffsetde16bitses7C09H.Ladireccincompletaen20bitssecalculadelaexpresin:16(10)*DS+7C09H

    SielDScontiene3000H,ladireccincompletade20bitses:

    3000H+7C09H=37C09H

    Combinaregistrosbaseconindexados.

    ConBXtomapordefectoelsegmentodedatos.

    ConBPtomapordefectoelsegmentodestack.

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 24/31

    Usadosregistrosyundesplazamientoopcional.

    ElprimerregistrodebeserBXoBP.

    ElsegundoregistrodebeserSIoDI.

    EnTurboAssemblerlosregistrospuedenirencualquierorden.

    La direccin de desplazamiento se toma del contenido de los registros mas eldesplazamiento.

    Sepuedecambiarelsegmentoindicndoloenlainstruccin.

    Interrupciones

    Lasinterrupcionesdesoftwaresonfuncionesquesetienendisponiblesparasuutilizacindentrodelprograma,mediantelallamadaaunadeestasfuncionessepuedenrealizaroperacionescomoabrirunarchivo,leeruncarcterdesdeteclado,cambiarelmododevideo,etc.

    Lasinterrupcionesdesoftwarenospermitentrabajarconlosdistintossubsistemas(teclado,video,discoduro,disquetera),deunaformarelativamentecmoda.

    Algunasdelasinterrupcionesmasutilizadas(DOS):

    INT20H(Terminacindeproceso).

    INT21H(ServiciosyfuncionesdelDOS)

    INT22H(Direccindelgestordeterminacindelprogramaencurso).

    INT23H(DireccindelgestordeCTRL+C).

    INT24H(Direccindelgestordeerrorescrticos).

    INT25H(Lecturadesectoresdedisco).

    INT26H(Escrituradesectoresadisco).

    INT27H(Dejarprogramaresidenteysalir).

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 25/31

    INT2FH(InterrupcinmltipleInterrupcindelMultiplexor).

    Interrupcin21H(DOSAPI)

    LamayoradeserviciosyfuncionesdelsistemaoperativoMSDOSseobtienenatravsdelainterrupcinsoftware21H.

    Espor esto que se le denominaDOSAPI:DOSAPPLICATIONPROGRAMINTERFACE,InterfazentreprogramasdeaplicacionesyelMSDOS.

    LaINT21Hestcompuestaporungrupodefunciones.

    CuandoseaccedealaINT21H,hayqueindicarelnmerodefuncinquequeremosejecutar.Endeterminadascasos,unafuncinestancomplejaquenecesitadevariassubfuncionesparapoderdesempeartodosutrabajo.

    Enestecaso,deberemosindicarelnmerodeesafuncin,ytambinelnmerodelasubfuncinalaquequeremosaccederdentrodeesafuncin.

    LallamadaalaINT21Hserealizarcomosigue:

    Introducimosen(AH)elnmerodefuncinalaquedeseamosacceder.

    Encasodequedeseemosaccederaunasubfuncindentrodeuna

    funcin,debemosindicarlointroduciendoen(AL)elnmerodeesa

    subfuncin.

    LlamaralaINT21H.

    FuncionesdelaINT21H

    Funcin01H

    Entradadecarcterconeco

    Llamada:AH=01H

    Devuelve:AL=CdigoASCIIdelCarcterledo

    Descripcin: Se lee un carcter del dispositivo de entrada estndar, y se enva aldispositivoestndardesalida.Sialllamaralafuncinnohabaningncarcterdisponible,seesperaaquelohaya.

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 26/31

    Normalmenteeldispositivoestndardeentradaeselteclado,yeldispositivoestndardesalidaeslapantalla.EsloqueseconoceenMSDOScomoCON(deconsola:tecladoypantalla).

    Funcin02H

    SalidadeCarcter

    Llamada:AH=02H

    DL=CdigoASCIIaenviaraldispositivodesalida

    Devuelve:Nada

    Descripcin:SeenvaelcarcterdepositadoenelregistroDLaldispositivoestndar desalida.

    Funcin09H

    Visualizacindeunacadenadecaracteres

    Llamada:AH=09H

    DS:DX=Segmento:Desplazamientodelacadenaavisualizar.

    DSdebeapuntaralsegmentodondeseencuentralacadena.

    DXdebecontenereldesplazamientodelacadenadentrode

    esesegmento.

    Devuelve:Nada

    Descripcin:Seenvaunacadenadecaracteresaldispositivoestndardesalida.Sinoseharedireccionadolasalida,lacadenaseenviaralapantalla.

    Funcin4CH

    Terminacindelprograma

    Llamada:AH=4CH

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 27/31

    Devuelve:Nada

    Descripcin:Sefinalizalaejecucindelprogramaencurso,ysedevuelveuncdigoderetornoalprogramapadre.

    Laterminacindelprogramaconlleva:

    Liberacindetodalamemoriaasignadaalprograma.

    Todoslosbuffersdeficherosonvaciados.

    Secierracualquierficheroabiertoporelprograma.

    Funcin3CH

    CrearFichero

    Llamada:AH=3CH

    CX=AtributosdelFichero:

    00HFicheroNormal.

    01HFicherodeSloLectura.

    02HFicheroOculto.

    03HFicherodeSistema.

    DS:DX=Segmento:DesplazamientodeunacadenaASCIIconelnombredefichero.

    Devuelve:Siseejecutacorrectamente:

    Flagdeacarreo(Cf)=0

    AX=Handleomanejadordefichero.

    SiNOseejecutcorrectamente:

    Flagdeacarreo(Cf)=1

    AX=Cdigodeerror.

    Descripcin:SielficheroindicadomediantelacadenaASCIIyaexista,entoncessevaca

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 28/31

    sucontenido,quedandoconlongitud0.Sielficheronoexista,entoncessecrea.

    Enamboscasos,elficheroseabre,ysedevuelveunHandlemanejadordeficheroparalosrestantesaccesosadichofichero.

    Funcin3DH

    AbrirFichero

    Llamada:AH=3DH

    AL=Atributosdelectura:

    00HSololectura

    01HSoloEscritura

    02HLecturaEscritura

    DS:DX=Segmento:DesplazamientodeunacadenaASCIIconelnombredefichero.

    Devuelve:Siseejecutacorrectamente:

    Flagdeacarreo(Cf)=0

    AX=Handleomanejadordefichero.

    SiNOseejecutcorrectamente:

    Flagdeacarreo(Cf)=1

    AX=Cdigodeerror.

    Descripcin:Mediante esta funcin se habr un fichero ya existente, y se devuelve unHandleparaaccederalficheroenlosucesivo.

    Funcin3EH

    CerrarFichero

    Llamada:AH=3EH

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 29/31

    BX=Handler

    Devuelve:Siseejecutacorrectamente:

    Flagdeacarreo(Cf)=0

    AX=Handleomanejadordefichero.

    SiNOseejecutcorrectamente:

    Flagdeacarreo(Cf)=1

    AX=Cdigodeerror.

    Descripcin:Medianteestafuncinsecierraunficheroqueestuvieraabierto.SeutilizaelHandleparaindicarelficheroacerrar.Trascerrarelfichero,dichoHandleseliberaparanuevosficheros.

    Funcin3FH

    LecturadeFichero

    Llamada:AH=3FH

    BX=Handler

    CX=Numerodebytesaleer

    DS:DX = Segmento:Desplazamiento del buffer donde se depositaran loscaracteresledos.

    Devuelve:Siseejecutacorrectamente:

    Flagdeacarreo(Cf)=0

    AX=Bytestransferidos

    SiNOseejecutcorrectamente:

    Flagdeacarreo(Cf)=1

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 30/31

    AX=Cdigodeerror.

    Descripcin: Dado un handle vlido, se realiza una transferencia desde el ficheroreferenciadoporesehandlehaciaelbufferdememoriaespecificadomedianteDS:DX.Setransferir n tantos caracteres como se especifique en CX.Acto seguido, se actualiza elpunterodeficherohastaelcarcterquesiguealbloqueledo.

    Funcin40H

    EscrituradeFichero

    Llamada:AH=40H

    BX=Handler

    CX=Numerodebytesaescribir

    DS:DX = Segmento:Desplazamiento del buffer donde se van a tomar loscaracteresaescribir

    Devuelve:Siseejecutacorrectamente:

    Flagdeacarreo(Cf)=0

    AX=Bytestransferidos

    SiNOseejecutcorrectamente:

    Flagdeacarreo(Cf)=1

    AX=Cdigodeerror.

    Descripcin: Dado un handle vlido, se realiza una transferencia desde el buffer dememoria indicado mediante DS:DX hacia el fichero o dispositivo referenciado por elHandle.

    SetransferirntantoscaracterescomoseespecifiqueenCX.Actoseguido,seactualizaelpunterodeficherounaposicinpordelantedelbloqueescrito,paraquefuturasescriturasnosobrescribanlosdatosqueyahubiera.

    MacrosInternas

  • 6/13/2015 Estudiarparaevaluacindelaunidad2

    http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950 31/31

    Elensambladortienefacilidadesqueelprogramadorpuedeusarparadefinirmacros.Sedefineunnombreespecificoparalamacro,juntoconelconjuntodeinstruccionesenlenguajeensambladorquelamacrovaagenerar.Despus,siemprequesenecesitecodificarelconjuntodeinstrucciones,solobastaraconllamaralamacroyelensambladorgenerarademaneraautomticalasinstruccionesquesedefinieron.

    Lasmacrossontilesparalossiguientespropsitos:

    Simplificaryreducirlacantidaddecodificacinrepetitiva.

    Reducirerrorescausadosporlacodificacinrepetitiva.Linealizarunprogramaenlenguajeensambladorparahacerlomaslegible.

    Ejemplosdefuncionesquepuedenserimplementadaspormacrossonoperacionesdeentrada/salidaquecarganregistrosyrealizaninterrupciones,conversionesdeinformacinASCIIybinaria,aritmticaderegistrosmltiples,etc.

    Paramacrosquesenecesitenincluirenunprograma,primerosetienenquedefinir.Unadefinicindemacroapareceantesdecualquierdefinicindesegmento,ademspuedencrearsebibliotecasdemacros.

    Parahacerunamacroflexiblesepermiteelusodeparmetros.SeutilizanlospseudooperadoresMACROyENDMparadefinirla.

    Sedefinendelasiguientemanera:

    Nombre_MacroMACROparmetro1,parmetro2,parmetron

    Instruccin1

    Instruccin2

    Instruccinn

    ENDM

    Yelllamadodelasiguienteforma:

    Nombre_Macroparmetro1,parmetro2,parmetron