Академический Документы
Профессиональный Документы
Культура Документы
Estudiarparaevaluacindelaunidad2
Estudiarparaevaluacindelaunidad2
Matetrialparaestudiarlaunidad2
Sitio:
SistemadeEducacinaDistanciaUCLA
Curso:
DCyTCeDSistemadeComputacion
Libro:
Estudiarparaevaluacindelaunidad2
Imprimidopor: TIFFANYHIGUERA
Da:
sbado,13dejuniode2015,14:30
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
1/31
6/13/2015
Estudiarparaevaluacindelaunidad2
Tabladecontenidos
Conceptosyejemplos
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
2/31
6/13/2015
Estudiarparaevaluacindelaunidad2
Conceptosyejemplos
ENSAMBLADORES
Sonlos encargados de convertir losprogramas fuentes, escritos en lenguaje assembler, a
programaobjetoenlenguajemquina.
Eltrabajodelensambladorsereducealatraduccinpalabraporpalabra,cambindolapor
cdigosdeoperacinnumricosydireccionesreales.
ENLAZADORES
Mediante el enlace (linkeo) se convierte un archivo objeto en un archivo ejecutable. El
enlazador 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]
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
3/31
6/13/2015
Estudiarparaevaluacindelaunidad2
EndEtiqueta
DirectivasUtilizadas
DOSSEG
Estadirectivaleindicaalensambladorquelossegmentosdebensercargadosenmemoriaen
unordenespecifico(PrimeroDATASEGMENTyluegoSTACKSEGMENT),estocausaque
quenosenecesiteespacioendiscoparaalmacenarlosdatosdelapila.
.MODEL
Conestadirectivasedefineeltipodeprogramaasergeneradoporelensamblador
yasea*.COM*.EXE
Tiny (*.COM) : Estos cuentan como mximo con un segmento (64 Ks) para
cdigo,datosypila,esdecir,paratodoelprograma.
Small (*.EXE) : En un programa EXE, los datos, pila y cdigo se definen en
segmentos independientes. Se utiliza un segmento distinto para cada una de
esastresprincipalesestructuras.
.STACK
Estadirectivaseutilizaparaindicarcuandoespaciosevaareservarparaelusode
lapila.
.DATA
Declaraunsegmentodedatosqueseusaparavariablesdememoria.
.CODE
Declaraunsegmentodecdigoqueseusaparaalmacenarlalineasdecdigoen
memoria.
END
SuformaesEND[Expresin].Esteidentificaelfinaldelprogramafuenteylaexpresin
opcionalidentificaelnombredelpuntodeentrada.
TiposdeDatos
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
4/31
6/13/2015
Estudiarparaevaluacindelaunidad2
DatoPseudoOperadorTamao
ByteDB1Byte
WordDW2Bytes
DoubleWordDD4Bytes
QuadWordDQ8Bytes
TWordDT10Bytes
Identificadores
Puedentenerhasta31caracteres
Puedecontenerletras,nmerosyloscaracteresespeciales(,.,@,_,$,)
Nodebeniniciarconunnmerodecimalyelpuntoseutilizasolamentecomoelprimer
carcter.
Laspalabrasreservadasnopodrnserusadascomoidentificador
IdentificadoresValidos:
Etiqueta1
Suma03
Cantidad_Veces
A125%
IdentificadoresNoValidos
9Veces
TotalMonto
Byte(PalabraReservada)
Constantes
Mantienenlaparametrizacinenelprograma
Nogenerancdigoalmomentodeensamblar
SeutilizaelpseudooperadorEQUoelcarcter=paraasignarleunvalorala
constante
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
5/31
6/13/2015
Estudiarparaevaluacindelaunidad2
Nota:
ElpseudooperadorEQUpermitesoloasignarvaloresquenosobrepasenaun(1)byte,elcarcter
=permiteasignarvaloresquenosobrepasen2bytes
Ejemplos
VecesEQU25
Cantidad=29500
TamaoEQU01h
Tamao=0001b
Numero=70000(**ERROR**)(Nodebesobrepasar65535)
Etiquetas
Lasetiquetasseempleanconbastantefrecuenciacomopuntodeentradaoderegreso.Su
direccinrepresentaunaidentidadalaquepuedenhacerreferenciaotrasinstrucciones.Este
nombresimbolicoestaasociadoconladireccindondecomienzaunainstruccin
Puedetenerunalongituddehasta31caracteres
Puedeutilizarzecualquierletra(MaysculaoMinuscula)
Undigito(desde0a9)
Cualquieradelossiguientescaracteres:,.,@,_,$.
DefinicindeunaVariable
NombredeVariablePseudoOperadorValor_Inicial
Ejemplos:
Tamaodb0
Mayordw01001b
Vecesdw01Ah
Menordb400(**ERROR**)(Sobrepasaelvalorde1byte=255)
Contadordb?
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
6/31
6/13/2015
Estudiarparaevaluacindelaunidad2
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
REGISTROSINTERNOSDEL
MICROPROCESADOR
LaUnidadCentraldeProceso(CPU,porsussiglaseningls)tiene14registrosinternos
cadaunode16bits.Losprimeroscuatro,AX,BX,CXyDX,sondeusogeneralysepuedenusar
tambincomoregistrosde8bits.Esdecir,AXsepuededividirenAHyAL(AHes el byte alto,
high,yALeselbytebajo,low)Lomismoesaplicablealosotrostres(BXenBHyBL,CXenCH
yCLyDXenDHyDL)
Estossonlosnicosregistrosquepuedenusarsedemododual(en8o16bits)
LosregistrosdelaCPUsonconocidosporsusnombrespropios,queson:
AX(acumulador)
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
7/31
6/13/2015
Estudiarparaevaluacindelaunidad2
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 registro AX se usa para almacenar resultados, lectura o escritura desde o hacia los
puertos.ElBXsirvecomoapuntadorbaseondice.ElCXseutilizaenoperacionesdeiteracin,
como un contador que automticamente se incrementa o decrementa de acuerdo con el tipo de
instruccinusada.ElDXseusacomopuenteparaelaccesodedatos.
ElDSesunregistrodesegmentocuyafuncinesactuarcomopolicadondeseencuentran
los datos. Cualquier dato, ya sea una variable inicializada o no, debe estar dentro de este
segmento.Lanicaexcepcinescuandotenemosprogramasdeltipo*.com,yaqueenstosslo
puedeexistirunsegmento.ElregistroEStieneelpropsitogeneraldepermitiroperacionessobre
cadenas,perotambinpuedeserunaextensindelDS.
ElSStienelatareaexclusivademanejarlaposicindememoriadondeseencuentralapila
(stack)Estaesunaestructurausadaparaalmacenardatosenformatemporal,tantodeunprograma
como de las operaciones internas de la computadora personal (PC,por sus siglas en ingls) En
trminos de operacin interna, la CPU usa este segmento para almacenar las direcciones de
retornodelasllamadasarutinas.ElregistrodesegmentosmsimportanteeselCSosegmentode
cdigo. Es aqu donde se encuentra el cdigo ejecutable de cada programa, el cual est
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
8/31
6/13/2015
Estudiarparaevaluacindelaunidad2
directamenteligadoalosdiferentesmodelosdememoria.
El registro BP (base pointer) se usa para manipular la pila sin afectar al registro de
segmentosSS.Estilcuandoseusainterfazentrelenguajesdealtonivelyelensamblador.Puesto
quedichainterfazsebasaenelconceptodelapilaBP,nospermiteaccederparmetrospasados
sinalterarelregistrodesegmentoSS. Los registros SIyDIson tiles para manejar bloques de
cadenasenmemoria,siendoelprimeroelndicefuenteyelsegundoelndicedestino.Enotras
palabras, SI representa la direccin donde se encuentra la cadena y DI la direccin donde ser
copiada.
ElregistroSPapuntaaunreaespecficadememoriaquesirveparaalmacenardatosbajo
laestructuraLIFO(ltimoenentrar,primeroensalir),conocidacomopila(stack)ElregistroIP
(instructionpointer)apuntaalasiguienteinstruccinqueserejecutadaenmemoria.
RegistrosdeBanderas
Sulongitudesde16bits.Cadaunodeestosbitscontieneciertainformacinbooleana
(verdaderoofalso).Segnelvalordecadaunodeestosbitssea1(verdadero)0(falso),informar
delestadodealgunasituacinenparticular.
DentrodelregistrodeFLAGShay7bitsquenoseutilizan.Losnombresdelosutilizadosson:
Of,Df,If,Tf,Sf,Zf,Af,PfyCf.
Estosbitsseclasificanendosgrupos:
Flagsdeestado(Cf,Af,Of,Zf,PfySf):muestranelestadodelprocesador.
Flagsdecontrol(Df,If,Tf):determinancomoelprocesadorresponder
adeterminadassituaciones.Elprogramadormanipularestosbitsparacontrolarelmodode
ejecucindealgunasinstrucciones.
Acontinuacinsemuestraelsignificadodecadaunodelosflags:
Cf:BitdeCarry(acarreo),seactiva(seponea1)siseproduceacarreooprestamoenuna
operacinaritmtica.
Pf:Bitdeparidad,seactivasielresultadodeunaoperacintiene
paridadpar,esdecir,sielresultadotieneunnmeropardeunos.
Af:Bitdecarryauxiliar,seactivasiunaoperacinaritmticaproduceacarreodepeso16.
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
9/31
6/13/2015
Estudiarparaevaluacindelaunidad2
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 del
cdigoqueseestaejecutando.Deestaformasepuedeseguirelflujodelprograma.
If:Bitdeinterrupcin,sivale1,lasinterrupcionesestnpermitidasyseranatendidas,ysi
vale0,no.
Df:Seusaenlasinstruccionesquemanipulancadenasdebytes.
Segncoloqueelprogramadorestebit,a'0'oa'1',lascadenas
debytesserntratadasensentidodedireccionescrecienteso
decrecientes.
Of:Bitdeoverflow,indicadesbordamientoenunaoperacinaritmticaoseaelresultado
deunaoperacinesmayorqueelmximovalorposiblederepresentar.
RepresentacinGrafica
Registrode16bits
STACKPila
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
10/31
6/13/2015
Estudiarparaevaluacindelaunidad2
EsunaestructuradeDatosenmemoriadondesepuedenalmacenarunaseriededatos,en
elcuallasinsercionesylaseliminacionessehacenporunextremo,llamadocima(top)delapila.
LaestructurapilatambinseconocecomoLIFO(lastin,firstout,ultimoenentrar,primeroen
salir).
CONJUNTODEINSTRUCCIONES
Sepuedenclasificarenlossiguientesgrupos:
InstruccionesdeTransferenciadeDatos.
Estasinstruccionesmuevendatosdeunaparteaotradelsistemadesdeyhacialamemoria
principal,deyalosregistrosdedatos,puertosdeE/Syregistrosdesegmentacin.
Estemovimientodedatosestsujetoareglasyrestricciones.Algunasdeellassonlasque
secitanacontinuacin.
Noesposiblemoverdatosdeunalocalidaddememoriaaotradirectamente,esnecesario
primeromoverlosdatosdelalocalidadorigenhaciaunregistroyluegodelregistroalalocalidad
destino.
Nosepuedemoverunaconstantedirectamenteaunregistrodesegmentos,primerosedebemover
aunregistrodelaCPU.
Lasinstruccionesdetransferenciadedatossonlassiguientes:
MOV
Permitelatransferenciadedatosentreceldasdememoriaylosregistros
Sintaxis:MOVDestino,Fuente
Donde Destino es el lugar a donde se movern los datos y fuente es el lugar donde se
encuentrandichosdatos.
Losdiferentesmovimientosdedatospermitidosparaestainstruccinson:
Destino:registrodesegmento.>Fuente:memoria/registro
Destino:memoria/registro.>Fuente:registrodesegmento
Destino:registro.>Fuente:registro
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
11/31
6/13/2015
Estudiarparaevaluacindelaunidad2
Destino:registro.>Fuente:memoria
Destino:memoria.>Fuente:registro
Destino:registro.>Fuente:datoinmediato
Destino:memoria.>Fuente:datoinmediato
XCHG
Intercambiaelcontenidodedosregistros,obienelcontenidodeunregistroyeldeuna
posicindememoria.
Sintaxis:XCHGDestino,Fuente
InstruccionesdeCarga
LEA
Cargaladireccinefectiva(Desplazamiento)deloperandofuente
Sintaxis:
LEADestino,fuente
LDS
CargaenDSladireccindesegmentodeloperandofuenteyenelregistrodestinoladireccinde
desplazamientodedichooperandofuente
Sintaxis:
LDSDestino,fuente
InstruccionesdePila
Permiteelalmacenamientodevaloresenlapila
PUSH
Insertaundatoenlapila.Transfiriendoelcontenidodeloperandofuentealapila(TipoWord)
Sintaxis:PUSHFuente
POP
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
12/31
6/13/2015
Estudiarparaevaluacindelaunidad2
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
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
13/31
6/13/2015
Estudiarparaevaluacindelaunidad2
Comparadosregistrosunregistroyunadireccindememoria,delasiguientemaneraresta
eloperandofuentedeldestino,singuardarresultados,perosiafectandoelregistrodebanderas
Sintaxis:CMPDestino,Fuente
InstruccionesdeSalto
Sonutilizadasparatransferirelflujodelprocesoaloperandoindicado.
SaltosIncondicionales
JMP
Esunsaltosincondiciones,conelcualsepodrcambiarelcontroldeflujodelprogramaa
cualquierpuntosinrevisarbanderasodatos
Sintaxis:JMPDireccion(Etiqueta)
SaltosCondicionales
JO:Jumpifoverflow.Saltasielflagdedesbordamientoestauno
JNO:Jumpifnotoverflow.Saltasielflagdedesbordamientoestacero.
JC, JNAE, JB: Los tres sirven para lo mismo. Significan: Jump if Carry, Jump if Not
AboveorEqualyJumpifBelow.Saltanporlotantosialhaberunacomparacinelflagde
acarreoseponea1.
JNC,JAE,JNB:Valenexactamenteparalomismo.JumpifnotCarry,JumpifAboveor
EqualyJumpifNotBelow.Saltanportantosialhaberunacomparacinelflagdeacarreo
vale0
JZoJE:JumpifZerooJumpifEqual.Saltasielflagdeceroesta1,osea,silasdos
instruccionescomparadassoniguales.
JNZoJNE:JumpifNotZerooJumpifNotEqual.Saltasielflagdeceroesta0,osea,si
lasdosinstruccionescomparadasnosoniguales.
JBEoJNA:JumpifBeloworEqualoJumpifNotAbove.Saltarasienresultadodela
comparacinelprimermiembroesmenoroigualqueelsegundo.
JA o JNBE: Jump if Above o Jump if Not Below of Equal. Justo lo contrario que la
anterior,saltasienelresultadodelacomparacinelprimermiembroesmayoralsegundo.
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
14/31
6/13/2015
Estudiarparaevaluacindelaunidad2
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 la
comparacin,elprimernmeroesinferioralsegundo.
JGE, JNL: Jump if Greater or Equal, Jump if Not Less. Salta si en el resultado de la
comparacin,elprimernmeroesmayoroigualqueelsegundo.
JLE, JNG: Jump if Lower or Equal, Jump if Not Greater. Salta si en el resultado de la
comparacin,elprimernmeroesmenoroigualqueelsegundo.
JG, JNLE: Jump if Greater, Jump if Not Lower or Equal. Salta si en el resultado de la
comparacin,elprimernmeroesmayorqueelsegundo.
Sintaxis:Jxxxdireccion(Etiqueta)
InstruccionesdeConteo
INC
Incrementaeloperandoenuno,sinmodificarlasbanderas
Sintaxis:INCoperando
DEC
Decrementaeloperandoenuno,sinmodificarlasbanderas
Sintaxis:DECoperando
InstruccionesdeCiclo
LOOP
ComparaCXconcero,sinoesigual,decrementaCXenunoyvaaladireccindel
operando,sinosigueconlasiguienteinstruccin.
Sintaxis:Loopdireccion(Etiqueta)
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
15/31
6/13/2015
Estudiarparaevaluacindelaunidad2
JCXZ
Compara CX con cero , si es igual va a la direccion del operando sino sigue con la
siguienteinstruccion
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
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
16/31
6/13/2015
Estudiarparaevaluacindelaunidad2
NEG
Convierteeloperandoacomplementoados.
Sintaxis:NEGoperando
NOT
Convierteeloperandoacomplementoauno.
Operando|Operando
1|0
0|1
Sintaxis:NOToperando
TEST
AplicaunANDlgicoalosoperandosperonoguardaresultado,soloafectael
registrodebanderas.
Sintaxis:TESToperando,operando
XOR
AplicaunOrexclusivoalosoperandos
FuenteDestino|Destino
11|0
00|1
01|1
00|0
Sintaxis:XORDestino,fuente
InstruccionesAritmticas
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
17/31
6/13/2015
Estudiarparaevaluacindelaunidad2
ADD
Realizalasumaentredosoperandosdados.Estosoperandosdebenserdelmismo
tamao.
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 tomar
ALoAXcomosegundooperando.
Sintaxis:MULoperando
Ej.
MOVAL,2
MOVBL,2
MULBLSEGUARDA4ENAL
* Operando de tipo byte: El procesador asume que el otro operando se encuentra
almacenadoenelregistroAL,yelresultadodelaoperacinlodepositaenelregistroAX.
*Operandodetipopalabra:Elprocesadorasumequeelotrooperandoestaalmacenado
enelregistroAX,yelresultadodelaoperacinlodepositarenelparderegistrosDX:AX.
TeniendoDXlapartemssignificativademayorpesodelresultado.
DIV
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
18/31
6/13/2015
Estudiarparaevaluacindelaunidad2
Divideeloperandoalmacenadoenelregistroacumuladorporeldivisor.
Esdecir,acumulador/divisor.
Dependiendodeltamaodeldivisorintroducido,elprocesadorasumequeeldividendose
encuentraenAXenelparderegistrosDX,AX.
*Divisordetipobyte:Elprocesadorasumequeeldividendoseencuentraalmacenadoen
elregistroAX.ElresultadodelaoperacinsedescomponeenAH(resto)yAL(cociente).
*Divisordetipopalabra:Elprocesadorasumequeeldividendoseencuentra
almacenadoenelparderegistrosDX,AX.TeniendoDXlapartemssignificativa.El
resultadodelaoperacinsedescomponeenDX(resto)yAX(cociente).
Sintaxis:DIVoperando
Ej.
MOVAL,4
MOVBL,2
DIVBLSEGUARDA2ENAL
InstruccionesdeAjusteASCII
AAD
ElAjusteASCIIparalaDivisin,permitemultiplicarAHpor10,aadeelresultadoal
contenido de AL y ubica dicho resultado en AL. Luego pone a AH en cero. Es decir el
numeroquedaalmacenadodeformaempaquetada.
Sintaxis:AAD
AAM
ElAjusteASCIIparalaMultiplicacin,permitedividirelcontenidodeALentre
10 , luego coloca el resultado en AH y el resto en AL. Es decir el numero queda
almacenadoenformanoempaquetado.
Sintaxis:AAM
DireccionamientodeMemoria
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
19/31
6/13/2015
Estudiarparaevaluacindelaunidad2
INMEDIATO
Eloperandofuenteapareceenlainstruccin.Unejemplo,eselquemueveun
valorconstanteaunregistrointerno.
Ej.:MOVDX,2753h
MOVAX,75d
DEREGISTRO
Indica que el operando a ser usado est contenido en uno de los registros
internosdepropsitogeneraldelCPU.
Ej.:MOVDX,BXAXBX
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
20/31
6/13/2015
Estudiarparaevaluacindelaunidad2
MOVBL,CLBLCL
DIRECTO
Especificaenlainstruccinlalocalidaddememoriaquecontienealoperando.
Enestetipodedireccionamiento,seformaunadireccinde20bits.
Ej:MOVCX,COUNT
ElvalordeCOUNTesunaconstante.Esusadacomoelvaloroffsetenel
clculodeladireccinde20bits
El 8086/8088 siempre usa un registro de segmento cuando calcula una
direccinfsica(ElsegmentoDSseusapordefecto).
Tomapordefectoelsegmentodedatos.
Ladireccindedesplazamientosetomadeunavariableenmemoria.
Sepuedecambiarelsegmentoindicndoloenlainstruccin.
DEREGISTROINDIRECTO
Conelmododedireccionamientoderegistrondice,ladireccinoffsetde16bits
estcontenidaenunregistrobaseoregistrondice.Estoes,ladireccinresideenel
registroBX,BP,SIoDI.Sepuedecambiarelsegmentoindicndoloenlainstruccin.
Ej.:MOVAX,[BX]
MOVDX,[SS:SI]
Elvalorde16bitscontenidoenelregistroSIdebesereloffsetusadoparacalcular
ladireccinde20bits.
Otra vez, debe usarse un registro de segmento para generar la direccin final. El
valorde16bitsenSIsecombinaconelsegmentoapropiadoparagenerarladireccin.
Tomapordefectoelsegmentodedatos.
Ladireccindedesplazamientosetomadelcontenidodeunregistro.
UtilizalosregistrosBX,SIyDI.
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
21/31
6/13/2015
Estudiarparaevaluacindelaunidad2
DEREGISTROBASEREGISTROINDIRECTOCONUNREGISTROBASE
YUNREGISTRONDICE
Estemododedireccionamientousalasumadedosregistrosinternosparaobtener
ladireccinoffsetde16bitsausarseenelclculodeladireccinde20bits.
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 un
desplazamiento.
Sepuedecambiarelsegmentoindicndoloenlainstruccin.
CondesplazamientoceroyregistroBXesigualaderegistroindirecto.
DEREGISTROINDEXADOREGISTROINDIRECTOCON
DEZPLAZAMIENTO
Estetipodedireccionamientoincluyealosdosmodosdedireccionamiento
anteriores.Ladireccinoffsetde16bitssecalculasumandoelvalorde16bits
especificadoenunregistrointernoyunaconstante.
Ej.:MOVAX,[SI+5]
MOVDX,[SS:DI+6]
MOVAX,COUNT[DI]
SiCOUNT=0378HyDI=04FAH>COUNT+DI=0872H.
Entonces,ladireccinoffsetde16bitses0872H
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
22/31
6/13/2015
Estudiarparaevaluacindelaunidad2
Tomapordefectoelsegmentodedatos.
UtilizalosregistrosSI,DI.
La direccin de desplazamiento se toma del contenido de un registro mas un
desplazamiento.
Sepuedecambiarelsegmentoindicndoloenlainstruccin.
Condesplazamientoceroesigualareg.Indirecto.
23/31
6/13/2015
Estudiarparaevaluacindelaunidad2
Usadosregistrosyundesplazamientoopcional.
ElprimerregistrodebeserBXoBP.
ElsegundoregistrodebeserSIoDI.
EnTurboAssemblerlosregistrospuedenirencualquierorden.
La direccin de desplazamiento se toma del contenido de los registros mas el
desplazamiento.
Sepuedecambiarelsegmentoindicndoloenlainstruccin.
Interrupciones
Lasinterrupcionesdesoftwaresonfuncionesquesetienendisponiblesparasuutilizacindentro
delprograma,mediantelallamadaaunadeestasfuncionessepuedenrealizaroperacionescomo
abrirunarchivo,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).
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
24/31
6/13/2015
Estudiarparaevaluacindelaunidad2
INT2FH(InterrupcinmltipleInterrupcindelMultiplexor).
Interrupcin21H(DOSAPI)
LamayoradeserviciosyfuncionesdelsistemaoperativoMSDOSseobtienenatravsde
lainterrupcinsoftware21H.
Es por esto que se le denomina DOSAPI: DOSAPPLICATIONPROGRAMINTERFACE,
InterfazentreprogramasdeaplicacionesyelMSDOS.
LaINT21Hestcompuestaporungrupodefunciones.
CuandoseaccedealaINT21H,hayqueindicarelnmerodefuncinquequeremosejecutar.En
determinadascasos,unafuncinestancomplejaquenecesitadevariassubfuncionesparapoder
desempeartodosutrabajo.
Enestecaso,deberemosindicarelnmerodeesafuncin,ytambinelnmerodelasubfuncin
alaquequeremosaccederdentrodeesafuncin.
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 al
dispositivoestndardesalida.Sialllamaralafuncinnohabaningncarcterdisponible,
seesperaaquelohaya.
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
25/31
6/13/2015
Estudiarparaevaluacindelaunidad2
Normalmenteeldispositivoestndardeentradaeselteclado,yeldispositivoestndarde
salidaeslapantalla.EsloqueseconoceenMSDOScomoCON(deconsola:tecladoy
pantalla).
Funcin02H
SalidadeCarcter
Llamada:AH=02H
DL=CdigoASCIIaenviaraldispositivodesalida
Devuelve:Nada
Descripcin:SeenvaelcarcterdepositadoenelregistroDLaldispositivoestndar de
salida.
Funcin09H
Visualizacindeunacadenadecaracteres
Llamada:AH=09H
DS:DX=Segmento:Desplazamientodelacadenaavisualizar.
DSdebeapuntaralsegmentodondeseencuentralacadena.
DXdebecontenereldesplazamientodelacadenadentrode
esesegmento.
Devuelve:Nada
Descripcin:Seenvaunacadenadecaracteresaldispositivoestndardesalida.Sinose
haredireccionadolasalida,lacadenaseenviaralapantalla.
Funcin4CH
Terminacindelprograma
Llamada:AH=4CH
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
26/31
6/13/2015
Estudiarparaevaluacindelaunidad2
Devuelve:Nada
Descripcin:Sefinalizalaejecucindelprogramaencurso,ysedevuelveuncdigode
retornoalprogramapadre.
Laterminacindelprogramaconlleva:
Liberacindetodalamemoriaasignadaalprograma.
Todoslosbuffersdeficherosonvaciados.
Secierracualquierficheroabiertoporelprograma.
Funcin3CH
CrearFichero
Llamada:AH=3CH
CX=AtributosdelFichero:
00HFicheroNormal.
01HFicherodeSloLectura.
02HFicheroOculto.
03HFicherodeSistema.
DS:DX=Segmento:DesplazamientodeunacadenaASCIIconelnombre
defichero.
Devuelve:Siseejecutacorrectamente:
Flagdeacarreo(Cf)=0
AX=Handleomanejadordefichero.
SiNOseejecutcorrectamente:
Flagdeacarreo(Cf)=1
AX=Cdigodeerror.
Descripcin:SielficheroindicadomediantelacadenaASCIIyaexista,entoncessevaca
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
27/31
6/13/2015
Estudiarparaevaluacindelaunidad2
sucontenido,quedandoconlongitud0.Sielficheronoexista,entoncessecrea.
Enamboscasos,elficheroseabre,ysedevuelveunHandlemanejadordeficheropara
losrestantesaccesosadichofichero.
Funcin3DH
AbrirFichero
Llamada:AH=3DH
AL=Atributosdelectura:
00HSololectura
01HSoloEscritura
02HLecturaEscritura
DS:DX=Segmento:DesplazamientodeunacadenaASCIIconelnombre
defichero.
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 un
Handleparaaccederalficheroenlosucesivo.
Funcin3EH
CerrarFichero
Llamada:AH=3EH
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
28/31
6/13/2015
Estudiarparaevaluacindelaunidad2
BX=Handler
Devuelve:Siseejecutacorrectamente:
Flagdeacarreo(Cf)=0
AX=Handleomanejadordefichero.
SiNOseejecutcorrectamente:
Flagdeacarreo(Cf)=1
AX=Cdigodeerror.
Descripcin:Medianteestafuncinsecierraunficheroqueestuvieraabierto.Seutilizael
Handleparaindicarelficheroacerrar.Trascerrarelfichero,dichoHandleseliberapara
nuevosficheros.
Funcin3FH
LecturadeFichero
Llamada:AH=3FH
BX=Handler
CX=Numerodebytesaleer
DS:DX = Segmento:Desplazamiento del buffer donde se depositaran los
caracteresledos.
Devuelve:Siseejecutacorrectamente:
Flagdeacarreo(Cf)=0
AX=Bytestransferidos
SiNOseejecutcorrectamente:
Flagdeacarreo(Cf)=1
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
29/31
6/13/2015
Estudiarparaevaluacindelaunidad2
AX=Cdigodeerror.
Descripcin: Dado un handle vlido, se realiza una transferencia desde el fichero
referenciadoporesehandlehaciaelbufferdememoriaespecificadomedianteDS:DX.Se
transferir n tantos caracteres como se especifique en CX. Acto seguido, se actualiza el
punterodeficherohastaelcarcterquesiguealbloqueledo.
Funcin40H
EscrituradeFichero
Llamada:AH=40H
BX=Handler
CX=Numerodebytesaescribir
DS:DX = Segmento:Desplazamiento del buffer donde se van a tomar los
caracteresaescribir
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 de
memoria indicado mediante DS:DX hacia el fichero o dispositivo referenciado por el
Handle.
SetransferirntantoscaracterescomoseespecifiqueenCX.Actoseguido,seactualizael
punterodeficherounaposicinpordelantedelbloqueescrito,paraquefuturasescrituras
nosobrescribanlosdatosqueyahubiera.
MacrosInternas
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
30/31
6/13/2015
Estudiarparaevaluacindelaunidad2
Elensambladortienefacilidadesqueelprogramadorpuedeusarparadefinirmacros.Sedefineun
nombreespecificoparalamacro,juntoconelconjuntodeinstruccionesenlenguajeensamblador
quelamacrovaagenerar.Despus,siemprequesenecesitecodificarelconjuntode
instrucciones,solobastaraconllamaralamacroyelensambladorgenerarademanera
automticalasinstruccionesquesedefinieron.
Lasmacrossontilesparalossiguientespropsitos:
Simplificaryreducirlacantidaddecodificacinrepetitiva.
Reducirerrorescausadosporlacodificacinrepetitiva.
Linealizarunprogramaenlenguajeensambladorparahacerlomaslegible.
Ejemplosdefuncionesquepuedenserimplementadaspormacrossonoperacionesdeentrada/
salidaquecarganregistrosyrealizaninterrupciones,conversionesdeinformacinASCIIy
binaria,aritmticaderegistrosmltiples,etc.
Paramacrosquesenecesitenincluirenunprograma,primerosetienenquedefinir.Una
definicindemacroapareceantesdecualquierdefinicindesegmento,ademspuedencrearse
bibliotecasdemacros.
Parahacerunamacroflexiblesepermiteelusodeparmetros.Seutilizanlospseudooperadores
MACROyENDMparadefinirla.
Sedefinendelasiguientemanera:
Nombre_MacroMACROparmetro1,parmetro2,parmetron
Instruccin1
Instruccin2
Instruccinn
ENDM
Yelllamadodelasiguienteforma:
Nombre_Macroparmetro1,parmetro2,parmetron
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950
31/31