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
Top Related