AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr El 8086 
Arquitectura del 8086
AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr El 8086
AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr El 8086 
Arquitectura en pipeline 
• Los procesadores previos al 8086, estaban limitados 
en su desempeño por la necesidad de realizar los dos 
pasos principales de ejecución del procesador: 
Fetch/Execute, en forma secuencial. Es decir, no se puede 
ejecutar una instrucción hasta que se traiga de memoria 
(Fetch); y no podían traerse instrucciones de memoria 
mientras ejecutaba una instrucción, pues el procesador 
estaba ocupado. 
• Resumiendo, un alto porcentaje del tiempo, el 
procesador estaba ocupado haciendo Fetch, cuando 
su función debiera ser ejecutar las instrucciones. La 
capacidad de ejecutar instrucciones sólo se ocupaba 
en un bajo porcentaje.
AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr El 8086 
Arquitectura en pipeline 
• Para solucionar ésto, Intel desarrolló la arquitectura 
en pipeline del Fetch/Execute, en la cual 
simplemente se divide la tarea en dos secciones: 
una encargada del Fetch (BIU) 
y otra del Execute (EU). 
– De esta manera, existen circuitos separados para 
cada función, los cuales trabajan en paralelo. 
– Si bien el proceso aún es secuencial, solamente al 
principio se requiere desperdiciar tiempo en el 
Fetch. 
– A partir de ahí, Fetch va adelante del Execute, y 
trae instrucciones al procesador mientras este 
ejecuta las anteriores.
El 8086 
Arquitectura del 8086/8088 
Estos microprocesadores 
tiene 2 sub-procesadores 
conectados internamente, 
estos procesadores son: 
EU 
Unidad de ejecución 
(Execution Unit). 
BIU 
Unidad de interfaz con 
el Bus (Bus Interface 
Unit). 
Arquitectura ddeell ccoommppuuttaaddoorr
AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr El 8086 
LLaa uunniiddaadd ddee eejjeeccuucciióónn ((EEUU)) 
• LLaa uunniiddaadd ddee eejjeeccuucciióónn ((EEUU)) ssee eennccaarrggaa ddee rreeaalliizzaarr llaass 
ooppeerraacciioonneess aarriittmmééttiiccaass yy llóóggiiccaass,, aaddeemmááss ddee pprrooppoorrcciioonnaarr llaass 
ddiirreecccciioonneess llóóggiiccaass aall BBIIUU ----uunnaa ddiirreecccciióónn llóóggiiccaa eessttáá ffoorrmmaaddaa ddee 
ddooss ddiirreecccciioonneess,, llaa pprriimmeerraa iinnddiiccaa eell sseeggmmeennttoo eenn eell ccuuaall ssee eessttáá 
ttrraabbaajjaannddoo yy llaa oottrraa iinnddiiccaa eell ooffffsseett,, oo ddeessppllaazzaammiieennttoo,, ddee eessttee 
sseeggmmeennttoo;; eessttoo eess sseeggmmeenntt ::ooffffsseett ----.. 
• LLaa EEUU ttiieennee uunnaa uunniiddaadd aarriittmmééttiiccaa llóóggiiccaa ((AALLUU)) ddee 1166 bbiittss,, uunn 
rreeggiissttrroo ddee bbaannddeerraass yy uunn ccoonnjjuunnttoo ddee rreeggiissttrrooss ddee pprrooppóóssiittoo 
ggeenneerraall.. EEll rreeggiissttrroo ddee bbaannddeerraass ccoonnttiieennee 66 bbaannddeerraass ddee eessttaaddoo 
((qquuee llaa EEUU mmaanniippuullaa ppaarraa iinnddiiccaarr eell eessttaaddoo ddeell rreessuullttaaddoo ddee uunnaa 
ooppeerraacciióónn llóóggiiccaa oo aarriittmmééttiiccaa)) yy 33 bbaannddeerraass ddee ccoonnttrrooll qquuee ssee 
ppuueeddeenn mmaanniippuullaarr ppoorr llooss pprrooggrraammaass ppaarraa aalltteerraarr llaass 
ooppeerraacciioonneess ddeell pprroocceessaaddoorr ..
AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr El 8086 
La Unidad de Interfase con el Bus (BIU) 
• Es la responsables de la comunicación externa del 
procesador. Esta unidad de proceso se encarga de 
traducir las direcciones lógicas a direcciones físicas de 
la memoria con ayuda de los registros de segmento 
DS, SS, ES, CS e IP. 
• Para convertir una dirección lógica en una dirección 
física el BIU corre el valor del registro de segmento 4 
posiciones a la izquierda (que es equivalente a 
multiplicar por 16h) y suma el valor del offset para 
obtener un valor de 20 bits necesarios, como se 
muestra en la figura.
AAAArrrrqqqquuuuiiiitttteeeeccccttttuuuurrrraaaa ddddeeee l c cccoooommmmppppuuuutttataaaddddoooorrrraass IIII El 8086 
MODELO DDEE PPRROOGGRRAAMMAACCIIÓÓNN 
DDEELL 88008866..
AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr El 8086
AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr El 8086 
El modelo de programación del 8086
AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr El 8086 
Registros de datos oo ddee pprrooppóóssiittoo 
ggeenneerraall 
AAXX,, BBXX,, CCXX,, DDXX:: ppuueeddeenn uuttiilliizzaarrssee bbiieenn ccoommoo rreeggiissttrrooss ddee 1166 bbiittss oo 
ccoommoo ddooss rreeggiissttrrooss sseeppaarraaddooss ddee 88 bbiittss ((bbyyttee ssuuppeerriioorr ee iinnffeerriioorr)) 
ccaammbbiiaannddoo llaa XX ppoorr HH oo LL sseeggúúnn qquueerraammooss rreeffeerriirrnnooss aa llaa ppaarrttee aallttaa oo 
bbaajjaa rreessppeeccttiivvaammeennttee.. PPoorr eejjeemmpplloo,, 
AAXX ssee ddeessccoommppoonnee eenn AAHH ((ppaarrttee aallttaa)) yy AALL ((ppaarrttee bbaajjaa)).. EEvviiddeenntteemmeennttee,, 
¡¡ccuuaallqquuiieerr ccaammbbiioo ssoobbrree AAHH oo AALL aalltteerraa AAXX 
AAXX == AAccuummuullaaddoorr.. 
EEss eell rreeggiissttrroo pprriinncciippaall,, eess uuttiilliizzaaddoo eenn llaass iinnssttrruucccciioonneess ddee 
mmuullttiipplliiccaacciióónn yy ddiivviissiióónn yy eenn aallgguunnaass iinnssttrruucccciioonneess aarriittmmééttiiccaass 
eessppeecciiaalliizzaaddaass,, aassíí ccoommoo eenn cciieerrttaass ooppeerraacciioonneess ddee ccaarráácctteerr eessppeeccííffiiccoo 
ccoommoo eennttrraaddaa,, ssaalliiddaa yy ttrraadduucccciióónn.. OObbsséérrvveessee qquuee eell 88008866 eess 
ssuuffiicciieenntteemmeennttee ppootteennttee ppaarraa rreeaalliizzaarr llaass ooppeerraacciioonneess llóóggiiccaass,, llaa ssuummaa 
yy llaa rreessttaa ssoobbrree ccuuaallqquuiieerr rreeggiissttrroo ddee ddaattooss,, nnoo nneecceessaarriiaammeennttee eell 
aaccuummuullaaddoorr..
El 8086 
AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr 
Registros de pprrooppóóssiittoo ggeenneerraall 
BBXX == BBaassee.. 
SSee uussaa ccoommoo rreeggiissttrroo bbaassee ppaarraa rreeffeerreenncciiaarr ddiirreecccciioonneess ddee 
mmeemmoorriiaa ccoonn ddiirreecccciioonnaammiieennttoo iinnddiirreeccttoo,, mmaanntteenniieennddoo llaa ddiirreecccciióónn ddee 
llaa bbaassee oo ccoommiieennzzoo ddee ttaabbllaass oo mmaattrriicceess.. DDee eessttaa mmaanneerraa,, nnoo eess pprreecciissoo 
iinnddiiccaarr uunnaa ppoossiicciióónn ddee mmeemmoorriiaa ffiijjaa,, ssiinnoo llaa nnúúmmeerroo BBXX ((aassíí,, hhaacciieennddoo 
aavvaannzzaarr ddee uunniiddaadd eenn uunniiddaadd aa BBXX,, ppoorr eejjeemmpplloo,, ssee ppuueeddee iirr aacccceeddiieennddoo 
aa uunn ggrraann bbllooqquuee ddee mmeemmoorriiaa eenn uunn bbuuccllee)).. 
CCXX == CCoonnttaaddoorr .. 
SSee uuttiilliizzaa ccoommúúnnmmeennttee ccoommoo ccoonnttaaddoorr eenn bbuucclleess yy ooppeerraacciioonneess 
rreeppeettiittiivvaass ddee mmaanneejjoo ddee ccaaddeennaass.. EEnn llaass iinnssttrruucccciioonneess ddee 
ddeessppllaazzaammiieennttoo yy rroottaacciióónn ssee uuttiilliizzaa ccoommoo ccoonnttaaddoorr ddee 88 bbiittss.. 
DDXX == DDaattooss.. 
UUssaaddoo eenn ccoonnjjuunncciióónn ccoonn AAXX eenn llaass ooppeerraacciioonneess ddee mmuullttiipplliiccaacciióónn 
yy ddiivviissiióónn qquuee iinnvvoolluuccrraann oo ggeenneerraann ddaattooss ddee 3322 bbiittss.. EEnn llaass ddee eennttrraaddaa 
yy ssaalliiddaa ssee eemmpplleeaa ppaarraa eessppeecciiffiiccaarr llaa ddiirreecccciióónn ddeell ppuueerrttoo EE//SS..
AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr El 8086 
Registros ddee sseeggmmeennttoo:: 
DDeeffiinneenn áárreeaass ddee 6644 KKbb ddeennttrroo ddeell eessppaacciioo ddee ddiirreecccciioonneess ddee 11 MMbb ddeell 88008866.. 
EEssttaass áárreeaass ppuueeddeenn ttrraassllaappaarrssee ttoottaall oo ppaarrcciiaallmmeennttee.. NNoo eess ppoossiibbllee aacccceeddeerr aa uunnaa 
ppoossiicciióónn ddee mmeemmoorriiaa nnoo ddeeffiinniiddaa ppoorr aallggúúnn sseeggmmeennttoo:: ssii eess pprreecciissoo,, hhaabbrráá ddee 
mmoovveerrssee aallgguunnoo.. 
CCSS == RReeggiissttrroo ddee sseeggmmeennttoo ddee ccóóddiiggoo ((ccooddee sseeggmmeenntt)).. 
CCoonnttiieennee llaa ddiirreecccciióónn ddeell sseeggmmeennttoo ccoonn llaass iinnssttrruucccciioonneess ddeell pprrooggrraammaa.. LLooss 
pprrooggrraammaass ddee mmááss ddee 6644 KKbb rreeqquuiieerreenn ccaammbbiiaarr CCSS ppeerriióóddiiccaammeennttee.. 
DDSS == RReeggiissttrroo ddee sseeggmmeennttoo ddee ddaattooss ((ddaattaa sseeggmmeenntt )).. 
SSeeggmmeennttoo ddeell áárreeaa ddee ddaattooss ddeell pprrooggrraammaa.. 
SSSS == RReeggiissttrroo ddee sseeggmmeennttoo ddee ppiillaa ((ssttaacckk sseeggmmeenntt)).. 
SSeeggmmeennttoo ddee ppiillaa.. 
EESS == RReeggiissttrroo ddee sseeggmmeennttoo eexxttrraa ((eexxttrraa sseeggmmeenntt)).. 
SSeeggmmeennttoo ddee aammpplliiaacciióónn ppaarraa zzoonnaa ddee ddaattooss.. EEss eexxttrraaoorrddiinnaarriiaammeennttee úúttiill 
aaccttuuaannddoo eenn ccoonnjjuunncciióónn ccoonn DDSS:: ccoonn aammbbooss ssee ppuueeddee ddeeffiinniirr ddooss zzoonnaass ddee 6644 
KKbb,, ttaann aalleejjaaddaass ccoommoo ssee ddeesseeee eenn eell eessppaacciioo ddee ddiirreecccciioonneess,, eennttrree llaass qquuee ssee 
ppuueeddeenn iinntteerrccaammbbiiaarr ddaattooss
AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr El 8086 
RReeggiissttrrooss ppuunntteerrooss ddee ppiillaa 
SP = Puntero de pila (stack pointer). 
Apunta al inicio de la pila. Utilizado en las 
instrucciones de manejo de la pila. 
BP = Puntero base (base pointer). 
Es un puntero de base, que apunta a una zona dentro 
de la pila dedicada al almacenamiento de datos (variables locales y 
parámetros de las funciones en los programas compilados).
AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr 
PPuunntteerroo ddee iinnssttrruucccciioonneess oo ccoonnttaaddoorr 
ddee pprrooggrraammaa 
El 8086 
IP = Puntero de instrucción (instruction 
pointer). 
Marca el desplazamiento de la instrucción en curso dentro del segmento de 
código. Es automáticamente modificado con la lectura de una instrucción. 
Este contiene un valor de 16 bits que es un desplazamiento sobre la dirección del 
registro CS (segmento de código) 
Los registros puntero de instrucciones ( IP ) y puntero de pila ( SP ) se encargan 
del control de flujo del programa.
AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr 
RReeggiissttrrooss íínnddiicceess:: 
El 8086 
SI = Índice fuente (source index). 
Utilizado como registro de índice en ciertos modos de 
direccionamiento indirecto, también se emplea para guardar un 
valor de desplazamiento en operaciones de cadenas. 
DI = Índice destino (destination index). 
Se usa en determinados modos de direccionamiento 
indirecto y para almacenar un desplazamiento en operaciones 
con cadenas. 
Los registros SI y DI actúan como índices asociados al registro DS ( segmento de 
datos ).
El 8086 
AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr 
RReeggiissttrroo ddee eessttaaddoo oo ddee iinnddiiccaaddoorreess ((ffllaaggss)) 
• EEss uunn rreeggiissttrroo ddee 1166 bbiittss ddee llooss ccuuaalleess 99 ssoonn uuttiilliizzaaddooss ppaarraa 
iinnddiiccaarr ddiivveerrssaass ssiittuuaacciioonneess dduurraannttee llaa eejjeeccuucciióónn ddee uunn 
pprrooggrraammaa.. 
• LLooss bbiittss 00,, 22,, 44,, 66,, 77 yy 1111 ssoonn iinnddiiccaaddoorreess ddee ccoonnddiicciióónn,, qquuee 
rreefflleejjaann llooss rreessuullttaaddooss ddee ooppeerraacciioonneess ddeell pprrooggrraammaa 
• llooss bbiittss ddeell 88 aall 1100 ssoonn iinnddiiccaaddoorreess ddee ccoonnttrrooll yy eell rreessttoo nnoo ssee 
uuttiilliizzaann.. 
• EEssttooss iinnddiiccaaddoorreess ppuueeddeenn sseerr ccoommpprroobbaaddooss ppoorr llaass 
iinnssttrruucccciioonneess ddee ssaallttoo ccoonnddiicciioonnaall,, lloo qquuee ppeerrmmiittee vvaarriiaarr eell fflluujjoo 
sseeccuueenncciiaall ddeell pprrooggrraammaa sseeggúúnn eell rreessuullttaaddoo ddee llaass ooppeerraacciioonneess..
AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr El 8086 
Bit 
Indicador de: Uso 
Indicador de arrastre del bit de mayor orden, 
que puede ocurrir en las operaciones 
CF Acarreo ("Carry Flag") aritméticas suma y resta. 
Si está activo Indica un número par de bits 
activos (bits cuyo contenido es 1). Esta 
información es útil cuando el procesador 
controla transmisiones de datos. 
PF Paridad ("Parity Flag") 
Indicador de ajuste en operaciones 
aritméticas con cantidades BCD AF Acarreo auxiliar 
Está activo si el resultado de operación es 
cero o resultado de comparación igual. ZF Cero ("Zero Flag") 
Si está activo indica que el resultado de 
operación o de comparación son negativos. SF Signo ("Sign Flag") 
Si está activo, el procesador genera 
automáticamente una interrupción después 
de la ejecución de cada instrucción, lo que 
permite controlar paso a paso la ejecución del 
programa. Este bit debe estar normalmente 
inactivo (a 0). 
Este bit controla el estado del sistema de 
interrupciones enmascarables . Cuando está 
activo (1) permite las interrupciones; el estado 
inactivo (0) las deshabilita. 
TF Detención ("Trap Flag") 
IF Interrupción ("Interrupt Flag") 
DF Dirección ("Direction Flag") Indica la dirección de las operaciones. 
Señala desbordamiento OF Desbordamiento (Overflow Flag") aritmético
AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr El 8086 
Bit Indicador de: Indicativo si bit 1 Indicativo si bit 0 
CF Acarreo CY ("Carry yes") NC ("No Carry") 
PF Paridad PE ("Parity Even") paridad par PO ("Parity Odd") paridad impar 
AF Acarreo auxiliar AC ("Auxiliar Carry") NA ("No Auxiliar") 
ZF Cero ZR ("Zero") NZ ("No Zero") 
SF Signo NG ("Negative") negativo PL ("Plus") positivo 
IF Interrupción EI ("Enabled Interrupt") activa DI ("Disabled Interrupt") desactivada 
DF Dirección DN ("Down") decremento UP incremento 
NV ("No overflow") OV ("Overflow") Desbordamiento OF
El 8086 
AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr 
Segmentación de la MMeemmoorriiaa eenn eell 88008866
AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr 
SSEEGGMMEENNTTAACCIIÓÓNN 
El 8086 
Dirección lógica 
Registro de segmento 
Dirección 
física 
Desplaz 
amiento 
Dirección de segmento 
CPU 
SEGMENTO 
FFFFF 
Memoria 
0
AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr El 8086 
Segmento de Memoria 
• Un segmento es un área 
continua de memoria que puede 
tener hasta 64K-bytes, que 
debe comenzar en una localidad 
de memoria cuya dirección sea 
límite de 16 bytes (cantidad 
denominada párrafo) y que 
puede traslaparse con otros 
segmentos. 
SEGMENTO 
FFFFF 
Memoria 
0
AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr El 8086 
Las ventajas de utilizar registros de segmento son: 
• Permite una capacidad de memoria de hasta 1 megabyte, aunque la 
dirección 
asociada a una instrucción sea sólo de 16 bits. 
• Permiten que las partes de un programa, instrucciones, datos y pilas, 
tengan 
un tamaño mayor de 64K, mediante la utilización de más de un segmento 
para 
código, datos o pila. 
• Facilitan la utilización de áreas separadas para un programa, sus datos y 
la 
pila. 
• Permiten colocar un programa y sus datos en diferentes áreas de memoria 
cada vez que se ejecute.
AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr 
 El sseeggmmeennttoo ddee ccóóddiiggoo ((ttiieennee ccoommoo bbaassee eell 
ccoonntteenniiddoo ddeell rreeggiissttrroo CCSS)).. 
 EEnn eessttee sseeggmmeennttoo ssee eennccuueennttrraann llaass iinnssttrruucccciioonneess 
qquuee ffoorrmmaann eell pprrooggrraammaa.. PPaarraa aacccceeddeerr aa llooss ddaattooss 
ccoonntteenniiddooss eenn ééll,, ssee uussaa eell rreeggiissttrroo IIPP ccoommoo 
ddeessppllaazzaammiieennttoo.. 
 EEll sseeggmmeennttoo ddee ddaattooss ((qquuee ttiieennee ccoommoo bbaassee eell 
rreeggiissttrroo DDSS)).. 
 CCoonnttiieennee llooss ddaattooss qquuee uuttiilliizzaa eell pprrooggrraammaa 
((vvaarriiaabblleess,, eettcc..)) PPaarraa aacccceeddeerr aa llooss ddaattooss 
ccoonntteenniiddooss eenn ééll,, ssee ssuueellee uuttiilliizzaarr llooss rreeggiissttrrooss SSII 
yy DDII ccoommoo ddeessppllaazzaammiieennttoo. 
El 8086 
Segmentos de Memoria
AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr El 8086 
Segmentos de Memoria 
- El segmento de pila (ccoonn SSSS ccoommoo bbaassee)).. 
- En él se desarrolla la pila del programa, utilizada para 
almacén temporal de datos, llamadas a funciones, etc. 
Debe estar presente en todos los programas EXE de 
forma obligada. Se utiliza el registro SP para acceder a 
los datos de este segmento. 
- EEll sseeggmmeennttoo eexxttrraa ((ccoonn EESS ccoommoo bbaassee)).. 
- Su uso es opcional, y en él se encuentra un segmento 
definido por el usuario y que, regularmente, contiene 
datos adicionales. Al igual que ocurre con el segmento 
de datos, para acceder a los datos contenidos en él, se 
suelen utilizar los registros SI y DI.
AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr 
SSEEGGMMEENNTTAACCIIÓÓNN 
El 8086 
CS 
DS 
ES 
SS 
SEGMENTO DE 
CÓDIGO 
SEGMENTO DE 
DATOS 
SEGMENTO EXTRA 
DE DATOS 
STACK 
TRASLAPE DE SEGMENTOS 
CS 
SEGMENTO DE 
CÓDIGO 
OTRO SEGMENTO 
PROGRAMA 
MEMORIA MEMORIA
SSEEGGMMEENNTTAACCIIÓÓNN 
El 8086 
Relocalización de un programa usando el registro CS 
02000 
SEGMENTO DE 
CÓDIGO EN CURSO 
SEGMENTO DE 
CÓDIGO 
RELOCALIZADO 
PROGRAMA 
PROGRAMA 
MEMORIA 
600 
1A300 
600 
nuevo (CS)=1A30 
AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr
El 8086 
AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr 
DDiirreecccciióónn FFííssiiccaa yy DDiirreecccciióónn LLóóggiiccaa 
Cada localidad de memoria tiene dos ttiippooss ddee ddiirreecccciioonneess :: 
DDiirreecccciióónn FFííssiiccaa yy DDiirreecccciióónn LLóóggiiccaa oo eeffeeccttiivvaa 
UUnnaa ddiirreecccciióónn FFííssiiccaa eess eell vvaalloorr úúnniiccoo ddee 2200 bbiittss qquuee iiddeennttiiffiiccaa llaa 
llooccaalliizzaacciióónn ddee ccaaddaa bbyyttee eenn eell eessppaacciioo ddee mmeemmoorriiaa ddee 11 MMbbyyttee.. 
LLooss pprrooggrraammaass ttrraattaann ccoonn ddiirreecccciióónn LLóóggiiccaass mmaass qquuee ccoonn llaa ddiirreecccciióónn 
FFííssiiccaa.. 
PPaarraa ccuuaallqquuiieerr llooccaalliiddaadd ddee mmeemmoorriiaa,, eell vvaalloorr bbaassee ddeell sseeggmmeennttoo 
uubbiiccaa eell pprriimmeerr bbyyttee ddeell ccoonntteenniiddoo ddeell sseeggmmeennttoo yy eell vvaalloorr ddeell ooffffsseett 
eess llaa ddiissttaanncciiaa,, eenn bbyytteess ,, ddee llaa llooccaalliizzaacciióónn ddeessttiinnoo ddeell pprriinncciippiioo ddeell 
sseeggmmeennttoo.. 
LLooss vvaalloorreess ddee llaa bbaassee ddeell SSeeggmmeennttoo yy ddeell ooffffsseett ssoonn ccaannttiiddaaddeess nnoo 
ssiiggnnaaddaass ddee 1166 bbiittss;; llaa ddiirreecccciióónn ddeell bbyyttee mmááss bbaajjoo ddeell sseeggmmeennttoo 
ttiieennee uunn ooffffsseett 00..
Formación ddee uunnaa DDiirreecccciióónn FFííssiiccaa 
El 8086 
SSiieemmpprree qquuee uunnaa mmeemmoorriiaa eess aacccceessaaddaa ,, ssee ggeenneerraa uunnaa 
ddiirreecccciióónn ffííssiiccaa aa ppaarrttiirr ddee llaa ddiirreecccciióónn llóóggiiccaa.. 
4 bits 
00000000 
Dirección de 
segmento 
Dirección 
efectiva, 
lógica u 
offset 
Dirección física 
EL REGISTRO DE 
SEGMENTO SE 
DESPLAZA 4 BITS 
HACIA LA 
IZQUIERDA 
(MULTIPLICACIÓN 
x16) 
20 BITS 
AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr
AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr El 8086 
Formación ddee uunnaa DDiirreecccciióónn FFííssiiccaa
AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr El 8086 
Formación ddee uunnaa DDiirreecccciióónn FFííssiiccaa 
PPoorr EEjjeemmpplloo: 
Si la dirección base del segmento es 
2915h, entonces las direcciones en 
este segmento inician en 2915:0000 
y van hasta 2915:FFFF

Unidad iv microprocesador intel 8086

  • 1.
  • 2.
  • 3.
    AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorrEl 8086 Arquitectura en pipeline • Los procesadores previos al 8086, estaban limitados en su desempeño por la necesidad de realizar los dos pasos principales de ejecución del procesador: Fetch/Execute, en forma secuencial. Es decir, no se puede ejecutar una instrucción hasta que se traiga de memoria (Fetch); y no podían traerse instrucciones de memoria mientras ejecutaba una instrucción, pues el procesador estaba ocupado. • Resumiendo, un alto porcentaje del tiempo, el procesador estaba ocupado haciendo Fetch, cuando su función debiera ser ejecutar las instrucciones. La capacidad de ejecutar instrucciones sólo se ocupaba en un bajo porcentaje.
  • 4.
    AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorrEl 8086 Arquitectura en pipeline • Para solucionar ésto, Intel desarrolló la arquitectura en pipeline del Fetch/Execute, en la cual simplemente se divide la tarea en dos secciones: una encargada del Fetch (BIU) y otra del Execute (EU). – De esta manera, existen circuitos separados para cada función, los cuales trabajan en paralelo. – Si bien el proceso aún es secuencial, solamente al principio se requiere desperdiciar tiempo en el Fetch. – A partir de ahí, Fetch va adelante del Execute, y trae instrucciones al procesador mientras este ejecuta las anteriores.
  • 5.
    El 8086 Arquitecturadel 8086/8088 Estos microprocesadores tiene 2 sub-procesadores conectados internamente, estos procesadores son: EU Unidad de ejecución (Execution Unit). BIU Unidad de interfaz con el Bus (Bus Interface Unit). Arquitectura ddeell ccoommppuuttaaddoorr
  • 6.
    AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorrEl 8086 LLaa uunniiddaadd ddee eejjeeccuucciióónn ((EEUU)) • LLaa uunniiddaadd ddee eejjeeccuucciióónn ((EEUU)) ssee eennccaarrggaa ddee rreeaalliizzaarr llaass ooppeerraacciioonneess aarriittmmééttiiccaass yy llóóggiiccaass,, aaddeemmááss ddee pprrooppoorrcciioonnaarr llaass ddiirreecccciioonneess llóóggiiccaass aall BBIIUU ----uunnaa ddiirreecccciióónn llóóggiiccaa eessttáá ffoorrmmaaddaa ddee ddooss ddiirreecccciioonneess,, llaa pprriimmeerraa iinnddiiccaa eell sseeggmmeennttoo eenn eell ccuuaall ssee eessttáá ttrraabbaajjaannddoo yy llaa oottrraa iinnddiiccaa eell ooffffsseett,, oo ddeessppllaazzaammiieennttoo,, ddee eessttee sseeggmmeennttoo;; eessttoo eess sseeggmmeenntt ::ooffffsseett ----.. • LLaa EEUU ttiieennee uunnaa uunniiddaadd aarriittmmééttiiccaa llóóggiiccaa ((AALLUU)) ddee 1166 bbiittss,, uunn rreeggiissttrroo ddee bbaannddeerraass yy uunn ccoonnjjuunnttoo ddee rreeggiissttrrooss ddee pprrooppóóssiittoo ggeenneerraall.. EEll rreeggiissttrroo ddee bbaannddeerraass ccoonnttiieennee 66 bbaannddeerraass ddee eessttaaddoo ((qquuee llaa EEUU mmaanniippuullaa ppaarraa iinnddiiccaarr eell eessttaaddoo ddeell rreessuullttaaddoo ddee uunnaa ooppeerraacciióónn llóóggiiccaa oo aarriittmmééttiiccaa)) yy 33 bbaannddeerraass ddee ccoonnttrrooll qquuee ssee ppuueeddeenn mmaanniippuullaarr ppoorr llooss pprrooggrraammaass ppaarraa aalltteerraarr llaass ooppeerraacciioonneess ddeell pprroocceessaaddoorr ..
  • 7.
    AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorrEl 8086 La Unidad de Interfase con el Bus (BIU) • Es la responsables de la comunicación externa del procesador. Esta unidad de proceso se encarga de traducir las direcciones lógicas a direcciones físicas de la memoria con ayuda de los registros de segmento DS, SS, ES, CS e IP. • Para convertir una dirección lógica en una dirección física el BIU corre el valor del registro de segmento 4 posiciones a la izquierda (que es equivalente a multiplicar por 16h) y suma el valor del offset para obtener un valor de 20 bits necesarios, como se muestra en la figura.
  • 8.
    AAAArrrrqqqquuuuiiiitttteeeeccccttttuuuurrrraaaa ddddeeee lc cccoooommmmppppuuuutttataaaddddoooorrrraass IIII El 8086 MODELO DDEE PPRROOGGRRAAMMAACCIIÓÓNN DDEELL 88008866..
  • 9.
  • 10.
    AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorrEl 8086 El modelo de programación del 8086
  • 11.
    AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorrEl 8086 Registros de datos oo ddee pprrooppóóssiittoo ggeenneerraall AAXX,, BBXX,, CCXX,, DDXX:: ppuueeddeenn uuttiilliizzaarrssee bbiieenn ccoommoo rreeggiissttrrooss ddee 1166 bbiittss oo ccoommoo ddooss rreeggiissttrrooss sseeppaarraaddooss ddee 88 bbiittss ((bbyyttee ssuuppeerriioorr ee iinnffeerriioorr)) ccaammbbiiaannddoo llaa XX ppoorr HH oo LL sseeggúúnn qquueerraammooss rreeffeerriirrnnooss aa llaa ppaarrttee aallttaa oo bbaajjaa rreessppeeccttiivvaammeennttee.. PPoorr eejjeemmpplloo,, AAXX ssee ddeessccoommppoonnee eenn AAHH ((ppaarrttee aallttaa)) yy AALL ((ppaarrttee bbaajjaa)).. EEvviiddeenntteemmeennttee,, ¡¡ccuuaallqquuiieerr ccaammbbiioo ssoobbrree AAHH oo AALL aalltteerraa AAXX AAXX == AAccuummuullaaddoorr.. EEss eell rreeggiissttrroo pprriinncciippaall,, eess uuttiilliizzaaddoo eenn llaass iinnssttrruucccciioonneess ddee mmuullttiipplliiccaacciióónn yy ddiivviissiióónn yy eenn aallgguunnaass iinnssttrruucccciioonneess aarriittmmééttiiccaass eessppeecciiaalliizzaaddaass,, aassíí ccoommoo eenn cciieerrttaass ooppeerraacciioonneess ddee ccaarráácctteerr eessppeeccííffiiccoo ccoommoo eennttrraaddaa,, ssaalliiddaa yy ttrraadduucccciióónn.. OObbsséérrvveessee qquuee eell 88008866 eess ssuuffiicciieenntteemmeennttee ppootteennttee ppaarraa rreeaalliizzaarr llaass ooppeerraacciioonneess llóóggiiccaass,, llaa ssuummaa yy llaa rreessttaa ssoobbrree ccuuaallqquuiieerr rreeggiissttrroo ddee ddaattooss,, nnoo nneecceessaarriiaammeennttee eell aaccuummuullaaddoorr..
  • 12.
    El 8086 AArrqquuiitteeccttuurraaddeell ccoommppuuttaaddoorr Registros de pprrooppóóssiittoo ggeenneerraall BBXX == BBaassee.. SSee uussaa ccoommoo rreeggiissttrroo bbaassee ppaarraa rreeffeerreenncciiaarr ddiirreecccciioonneess ddee mmeemmoorriiaa ccoonn ddiirreecccciioonnaammiieennttoo iinnddiirreeccttoo,, mmaanntteenniieennddoo llaa ddiirreecccciióónn ddee llaa bbaassee oo ccoommiieennzzoo ddee ttaabbllaass oo mmaattrriicceess.. DDee eessttaa mmaanneerraa,, nnoo eess pprreecciissoo iinnddiiccaarr uunnaa ppoossiicciióónn ddee mmeemmoorriiaa ffiijjaa,, ssiinnoo llaa nnúúmmeerroo BBXX ((aassíí,, hhaacciieennddoo aavvaannzzaarr ddee uunniiddaadd eenn uunniiddaadd aa BBXX,, ppoorr eejjeemmpplloo,, ssee ppuueeddee iirr aacccceeddiieennddoo aa uunn ggrraann bbllooqquuee ddee mmeemmoorriiaa eenn uunn bbuuccllee)).. CCXX == CCoonnttaaddoorr .. SSee uuttiilliizzaa ccoommúúnnmmeennttee ccoommoo ccoonnttaaddoorr eenn bbuucclleess yy ooppeerraacciioonneess rreeppeettiittiivvaass ddee mmaanneejjoo ddee ccaaddeennaass.. EEnn llaass iinnssttrruucccciioonneess ddee ddeessppllaazzaammiieennttoo yy rroottaacciióónn ssee uuttiilliizzaa ccoommoo ccoonnttaaddoorr ddee 88 bbiittss.. DDXX == DDaattooss.. UUssaaddoo eenn ccoonnjjuunncciióónn ccoonn AAXX eenn llaass ooppeerraacciioonneess ddee mmuullttiipplliiccaacciióónn yy ddiivviissiióónn qquuee iinnvvoolluuccrraann oo ggeenneerraann ddaattooss ddee 3322 bbiittss.. EEnn llaass ddee eennttrraaddaa yy ssaalliiddaa ssee eemmpplleeaa ppaarraa eessppeecciiffiiccaarr llaa ddiirreecccciióónn ddeell ppuueerrttoo EE//SS..
  • 13.
    AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorrEl 8086 Registros ddee sseeggmmeennttoo:: DDeeffiinneenn áárreeaass ddee 6644 KKbb ddeennttrroo ddeell eessppaacciioo ddee ddiirreecccciioonneess ddee 11 MMbb ddeell 88008866.. EEssttaass áárreeaass ppuueeddeenn ttrraassllaappaarrssee ttoottaall oo ppaarrcciiaallmmeennttee.. NNoo eess ppoossiibbllee aacccceeddeerr aa uunnaa ppoossiicciióónn ddee mmeemmoorriiaa nnoo ddeeffiinniiddaa ppoorr aallggúúnn sseeggmmeennttoo:: ssii eess pprreecciissoo,, hhaabbrráá ddee mmoovveerrssee aallgguunnoo.. CCSS == RReeggiissttrroo ddee sseeggmmeennttoo ddee ccóóddiiggoo ((ccooddee sseeggmmeenntt)).. CCoonnttiieennee llaa ddiirreecccciióónn ddeell sseeggmmeennttoo ccoonn llaass iinnssttrruucccciioonneess ddeell pprrooggrraammaa.. LLooss pprrooggrraammaass ddee mmááss ddee 6644 KKbb rreeqquuiieerreenn ccaammbbiiaarr CCSS ppeerriióóddiiccaammeennttee.. DDSS == RReeggiissttrroo ddee sseeggmmeennttoo ddee ddaattooss ((ddaattaa sseeggmmeenntt )).. SSeeggmmeennttoo ddeell áárreeaa ddee ddaattooss ddeell pprrooggrraammaa.. SSSS == RReeggiissttrroo ddee sseeggmmeennttoo ddee ppiillaa ((ssttaacckk sseeggmmeenntt)).. SSeeggmmeennttoo ddee ppiillaa.. EESS == RReeggiissttrroo ddee sseeggmmeennttoo eexxttrraa ((eexxttrraa sseeggmmeenntt)).. SSeeggmmeennttoo ddee aammpplliiaacciióónn ppaarraa zzoonnaa ddee ddaattooss.. EEss eexxttrraaoorrddiinnaarriiaammeennttee úúttiill aaccttuuaannddoo eenn ccoonnjjuunncciióónn ccoonn DDSS:: ccoonn aammbbooss ssee ppuueeddee ddeeffiinniirr ddooss zzoonnaass ddee 6644 KKbb,, ttaann aalleejjaaddaass ccoommoo ssee ddeesseeee eenn eell eessppaacciioo ddee ddiirreecccciioonneess,, eennttrree llaass qquuee ssee ppuueeddeenn iinntteerrccaammbbiiaarr ddaattooss
  • 14.
    AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorrEl 8086 RReeggiissttrrooss ppuunntteerrooss ddee ppiillaa SP = Puntero de pila (stack pointer). Apunta al inicio de la pila. Utilizado en las instrucciones de manejo de la pila. BP = Puntero base (base pointer). Es un puntero de base, que apunta a una zona dentro de la pila dedicada al almacenamiento de datos (variables locales y parámetros de las funciones en los programas compilados).
  • 15.
    AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr PPuunntteerroo ddee iinnssttrruucccciioonneess oo ccoonnttaaddoorr ddee pprrooggrraammaa El 8086 IP = Puntero de instrucción (instruction pointer). Marca el desplazamiento de la instrucción en curso dentro del segmento de código. Es automáticamente modificado con la lectura de una instrucción. Este contiene un valor de 16 bits que es un desplazamiento sobre la dirección del registro CS (segmento de código) Los registros puntero de instrucciones ( IP ) y puntero de pila ( SP ) se encargan del control de flujo del programa.
  • 16.
    AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr RReeggiissttrrooss íínnddiicceess:: El 8086 SI = Índice fuente (source index). Utilizado como registro de índice en ciertos modos de direccionamiento indirecto, también se emplea para guardar un valor de desplazamiento en operaciones de cadenas. DI = Índice destino (destination index). Se usa en determinados modos de direccionamiento indirecto y para almacenar un desplazamiento en operaciones con cadenas. Los registros SI y DI actúan como índices asociados al registro DS ( segmento de datos ).
  • 17.
    El 8086 AArrqquuiitteeccttuurraaddeell ccoommppuuttaaddoorr RReeggiissttrroo ddee eessttaaddoo oo ddee iinnddiiccaaddoorreess ((ffllaaggss)) • EEss uunn rreeggiissttrroo ddee 1166 bbiittss ddee llooss ccuuaalleess 99 ssoonn uuttiilliizzaaddooss ppaarraa iinnddiiccaarr ddiivveerrssaass ssiittuuaacciioonneess dduurraannttee llaa eejjeeccuucciióónn ddee uunn pprrooggrraammaa.. • LLooss bbiittss 00,, 22,, 44,, 66,, 77 yy 1111 ssoonn iinnddiiccaaddoorreess ddee ccoonnddiicciióónn,, qquuee rreefflleejjaann llooss rreessuullttaaddooss ddee ooppeerraacciioonneess ddeell pprrooggrraammaa • llooss bbiittss ddeell 88 aall 1100 ssoonn iinnddiiccaaddoorreess ddee ccoonnttrrooll yy eell rreessttoo nnoo ssee uuttiilliizzaann.. • EEssttooss iinnddiiccaaddoorreess ppuueeddeenn sseerr ccoommpprroobbaaddooss ppoorr llaass iinnssttrruucccciioonneess ddee ssaallttoo ccoonnddiicciioonnaall,, lloo qquuee ppeerrmmiittee vvaarriiaarr eell fflluujjoo sseeccuueenncciiaall ddeell pprrooggrraammaa sseeggúúnn eell rreessuullttaaddoo ddee llaass ooppeerraacciioonneess..
  • 18.
    AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorrEl 8086 Bit Indicador de: Uso Indicador de arrastre del bit de mayor orden, que puede ocurrir en las operaciones CF Acarreo ("Carry Flag") aritméticas suma y resta. Si está activo Indica un número par de bits activos (bits cuyo contenido es 1). Esta información es útil cuando el procesador controla transmisiones de datos. PF Paridad ("Parity Flag") Indicador de ajuste en operaciones aritméticas con cantidades BCD AF Acarreo auxiliar Está activo si el resultado de operación es cero o resultado de comparación igual. ZF Cero ("Zero Flag") Si está activo indica que el resultado de operación o de comparación son negativos. SF Signo ("Sign Flag") Si está activo, el procesador genera automáticamente una interrupción después de la ejecución de cada instrucción, lo que permite controlar paso a paso la ejecución del programa. Este bit debe estar normalmente inactivo (a 0). Este bit controla el estado del sistema de interrupciones enmascarables . Cuando está activo (1) permite las interrupciones; el estado inactivo (0) las deshabilita. TF Detención ("Trap Flag") IF Interrupción ("Interrupt Flag") DF Dirección ("Direction Flag") Indica la dirección de las operaciones. Señala desbordamiento OF Desbordamiento (Overflow Flag") aritmético
  • 19.
    AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorrEl 8086 Bit Indicador de: Indicativo si bit 1 Indicativo si bit 0 CF Acarreo CY ("Carry yes") NC ("No Carry") PF Paridad PE ("Parity Even") paridad par PO ("Parity Odd") paridad impar AF Acarreo auxiliar AC ("Auxiliar Carry") NA ("No Auxiliar") ZF Cero ZR ("Zero") NZ ("No Zero") SF Signo NG ("Negative") negativo PL ("Plus") positivo IF Interrupción EI ("Enabled Interrupt") activa DI ("Disabled Interrupt") desactivada DF Dirección DN ("Down") decremento UP incremento NV ("No overflow") OV ("Overflow") Desbordamiento OF
  • 20.
    El 8086 AArrqquuiitteeccttuurraaddeell ccoommppuuttaaddoorr Segmentación de la MMeemmoorriiaa eenn eell 88008866
  • 21.
    AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr SSEEGGMMEENNTTAACCIIÓÓNN El 8086 Dirección lógica Registro de segmento Dirección física Desplaz amiento Dirección de segmento CPU SEGMENTO FFFFF Memoria 0
  • 22.
    AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorrEl 8086 Segmento de Memoria • Un segmento es un área continua de memoria que puede tener hasta 64K-bytes, que debe comenzar en una localidad de memoria cuya dirección sea límite de 16 bytes (cantidad denominada párrafo) y que puede traslaparse con otros segmentos. SEGMENTO FFFFF Memoria 0
  • 23.
    AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorrEl 8086 Las ventajas de utilizar registros de segmento son: • Permite una capacidad de memoria de hasta 1 megabyte, aunque la dirección asociada a una instrucción sea sólo de 16 bits. • Permiten que las partes de un programa, instrucciones, datos y pilas, tengan un tamaño mayor de 64K, mediante la utilización de más de un segmento para código, datos o pila. • Facilitan la utilización de áreas separadas para un programa, sus datos y la pila. • Permiten colocar un programa y sus datos en diferentes áreas de memoria cada vez que se ejecute.
  • 24.
    AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr  El sseeggmmeennttoo ddee ccóóddiiggoo ((ttiieennee ccoommoo bbaassee eell ccoonntteenniiddoo ddeell rreeggiissttrroo CCSS))..  EEnn eessttee sseeggmmeennttoo ssee eennccuueennttrraann llaass iinnssttrruucccciioonneess qquuee ffoorrmmaann eell pprrooggrraammaa.. PPaarraa aacccceeddeerr aa llooss ddaattooss ccoonntteenniiddooss eenn ééll,, ssee uussaa eell rreeggiissttrroo IIPP ccoommoo ddeessppllaazzaammiieennttoo..  EEll sseeggmmeennttoo ddee ddaattooss ((qquuee ttiieennee ccoommoo bbaassee eell rreeggiissttrroo DDSS))..  CCoonnttiieennee llooss ddaattooss qquuee uuttiilliizzaa eell pprrooggrraammaa ((vvaarriiaabblleess,, eettcc..)) PPaarraa aacccceeddeerr aa llooss ddaattooss ccoonntteenniiddooss eenn ééll,, ssee ssuueellee uuttiilliizzaarr llooss rreeggiissttrrooss SSII yy DDII ccoommoo ddeessppllaazzaammiieennttoo. El 8086 Segmentos de Memoria
  • 25.
    AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorrEl 8086 Segmentos de Memoria - El segmento de pila (ccoonn SSSS ccoommoo bbaassee)).. - En él se desarrolla la pila del programa, utilizada para almacén temporal de datos, llamadas a funciones, etc. Debe estar presente en todos los programas EXE de forma obligada. Se utiliza el registro SP para acceder a los datos de este segmento. - EEll sseeggmmeennttoo eexxttrraa ((ccoonn EESS ccoommoo bbaassee)).. - Su uso es opcional, y en él se encuentra un segmento definido por el usuario y que, regularmente, contiene datos adicionales. Al igual que ocurre con el segmento de datos, para acceder a los datos contenidos en él, se suelen utilizar los registros SI y DI.
  • 26.
    AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr SSEEGGMMEENNTTAACCIIÓÓNN El 8086 CS DS ES SS SEGMENTO DE CÓDIGO SEGMENTO DE DATOS SEGMENTO EXTRA DE DATOS STACK TRASLAPE DE SEGMENTOS CS SEGMENTO DE CÓDIGO OTRO SEGMENTO PROGRAMA MEMORIA MEMORIA
  • 27.
    SSEEGGMMEENNTTAACCIIÓÓNN El 8086 Relocalización de un programa usando el registro CS 02000 SEGMENTO DE CÓDIGO EN CURSO SEGMENTO DE CÓDIGO RELOCALIZADO PROGRAMA PROGRAMA MEMORIA 600 1A300 600 nuevo (CS)=1A30 AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr
  • 28.
    El 8086 AArrqquuiitteeccttuurraaddeell ccoommppuuttaaddoorr DDiirreecccciióónn FFííssiiccaa yy DDiirreecccciióónn LLóóggiiccaa Cada localidad de memoria tiene dos ttiippooss ddee ddiirreecccciioonneess :: DDiirreecccciióónn FFííssiiccaa yy DDiirreecccciióónn LLóóggiiccaa oo eeffeeccttiivvaa UUnnaa ddiirreecccciióónn FFííssiiccaa eess eell vvaalloorr úúnniiccoo ddee 2200 bbiittss qquuee iiddeennttiiffiiccaa llaa llooccaalliizzaacciióónn ddee ccaaddaa bbyyttee eenn eell eessppaacciioo ddee mmeemmoorriiaa ddee 11 MMbbyyttee.. LLooss pprrooggrraammaass ttrraattaann ccoonn ddiirreecccciióónn LLóóggiiccaass mmaass qquuee ccoonn llaa ddiirreecccciióónn FFííssiiccaa.. PPaarraa ccuuaallqquuiieerr llooccaalliiddaadd ddee mmeemmoorriiaa,, eell vvaalloorr bbaassee ddeell sseeggmmeennttoo uubbiiccaa eell pprriimmeerr bbyyttee ddeell ccoonntteenniiddoo ddeell sseeggmmeennttoo yy eell vvaalloorr ddeell ooffffsseett eess llaa ddiissttaanncciiaa,, eenn bbyytteess ,, ddee llaa llooccaalliizzaacciióónn ddeessttiinnoo ddeell pprriinncciippiioo ddeell sseeggmmeennttoo.. LLooss vvaalloorreess ddee llaa bbaassee ddeell SSeeggmmeennttoo yy ddeell ooffffsseett ssoonn ccaannttiiddaaddeess nnoo ssiiggnnaaddaass ddee 1166 bbiittss;; llaa ddiirreecccciióónn ddeell bbyyttee mmááss bbaajjoo ddeell sseeggmmeennttoo ttiieennee uunn ooffffsseett 00..
  • 29.
    Formación ddee uunnaaDDiirreecccciióónn FFííssiiccaa El 8086 SSiieemmpprree qquuee uunnaa mmeemmoorriiaa eess aacccceessaaddaa ,, ssee ggeenneerraa uunnaa ddiirreecccciióónn ffííssiiccaa aa ppaarrttiirr ddee llaa ddiirreecccciióónn llóóggiiccaa.. 4 bits 00000000 Dirección de segmento Dirección efectiva, lógica u offset Dirección física EL REGISTRO DE SEGMENTO SE DESPLAZA 4 BITS HACIA LA IZQUIERDA (MULTIPLICACIÓN x16) 20 BITS AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorr
  • 30.
    AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorrEl 8086 Formación ddee uunnaa DDiirreecccciióónn FFííssiiccaa
  • 31.
    AArrqquuiitteeccttuurraa ddeell ccoommppuuttaaddoorrEl 8086 Formación ddee uunnaa DDiirreecccciióónn FFííssiiccaa PPoorr EEjjeemmpplloo: Si la dirección base del segmento es 2915h, entonces las direcciones en este segmento inician en 2915:0000 y van hasta 2915:FFFF