Вы находитесь на странице: 1из 31

6/13/2015

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

Las maquinas basadas en el microprocesador 8086 utilizan 20 bits para direccionar la


memoria,aunqueelCPUsoloprocesapalabrasde16bitsensusregistrosdedirecciones.
Parasolventaresto,lasdireccionesestndivididasensegmentosydesplazamientos.
Un segmento es un area continua de memoria de 64KB de largo y debe empezar en una
ubicacindememoriacuyadireccinsealimitede16bytes(unprrafo).
Ladireccindeiniciodeunsegmento,enelregistrodesegmentocorrespondiente,define
sulocalizacin.
Paraaccederlasubicacionesdememoriadentrodeunsegmentoserequiereespecificarel
desplazamiento (offset) de la localizacin de memoria, el cual necesita de 16 bits para
definirtodaslasposicionesposibles.
Para accesar 1 MB de memoria (full address) se combinan la direccin del segmento
contenidaenelregistrodesegmentorespectivoconladeldesplazamiento.
Para lograr esto se hace un corrimiento de la direccin del segmento cuatro bits a la
izquierda, (multiplicar la direccin de segmento por diez en hexadecimal (16 en base
decimal ) ) introduciendo ceros por la derecha y luego se suma la direccin del
desplazamiento,obtenindoseunadireccinde20bits.
La notacin mas empleada para indicar la direccin de un par segmentodesplazamiento
consisteensepararcondospuntoslosvaloresenhexadecimaldeambos.
ModosdeDireccionamiento

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.

DE REGISTRO BASEINDEXADO REGISTRO NDICE INDIRECTO CON


UN REGISTRO BASE, UN REGISTRO NDICE Y UN REGISTRO
CONSTANTE
Este es el modo de direccionamiento ms complejo. Es idntico al modo de
direccionamientoanterior,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.Ladireccincompletaen20bitssecalculadela
expresin:16(10)*DS+7C09H
SielDScontiene3000H,ladireccincompletade20bitses:
3000H+7C09H=37C09H
Combinaregistrosbaseconindexados.
ConBXtomapordefectoelsegmentodedatos.
ConBPtomapordefectoelsegmentodestack.
http://ead2.ucla.edu.ve/mod/book/tool/print/index.php?id=29950

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

Вам также может понравиться