Sunteți pe pagina 1din 55

ESCUELA

 POLITECNICA  
DEL  EJERCITO  

DEPARTAMENTO  DE  ELECTRICA  


Y  ELECTRÓNICA  
 
MICROPROCESADORES  E  INTERFACES  CON  
PC  
Unidad    1:  
               80X86,  LENGUAJE  ENSAMBLADOR  

INTRODUCCIÓN
–  Arquitectura  de  3  Buses.  
–  Introducción  al  80x86.    
ARQUITECTURA  DE  TRES  BUSES  DE    
VON  NEWMANN  
ARQUITECTURA  DE  TRES  BUSES  DE    
VON  NEWMANN  
•  Unidad aritmética lógica (ALU): responsable de llevar a cabo las
operaciones lógicas y aritméticas.

•  La Unidad de Control (CU): responsable por la decodificación y la


ejecución de instrucciones, entregando las señales de temporización
adecuadas para las diversas partes del procesador y del propio
computador.

•  Registros: memoria interna para el almacenamiento de información


binaria (datos, direcciones e instrucciones).

•  Bus: es un conjunto de conductores por donde viajan las señales


utilizadas para la comunicación entre el procesador y un
determinado circuito, como una memoria.
FUNCIÓN DE LOS BUSES

LUISITO mira la televisión.


HUMANOS COMPUTADORAS DESCRIPCIÓN
Sujeto: Selecciona quién
Luisito Bus de direcciones realiza la acción

Verbo: Acción a realizar


mira Bus de Control

Predicado: Información
la televisión Bus de Datos complementaria
BUS  DE  DATOS  

•  Bidireccional.
•  Transporta información que   se   está   procesando   o   las   instrucciones   del  
programa  que  se  ejecuta.    
Hay   que   recordar   que   en   la   arquitectura   Von   Newmann   el   programa   está  
guardado  en  el  interior  del  sistema  informáDco  codificado  como  información
•  Tipos: Interno y Externo.
•  El   ancho   en   bits   del   bus   de   datos   define   el   tamaño   de   la   palabra   del  
sistema  informáDco. Mientras mayor sea el Bus de Datos mayor es
la capacidad de transferencia.
BUS  DE  DIRECCIONES  
•  El  bus  de  direcciones  se  uDliza  para  indicar  el  origen  y/o  el  desDno  de  los  
datos.  
•  Trabaja con el PC.
•  En  el  bus  de  direcciones  se  indica  la  posición  de  memoria  a  la    que  se  está  
accediendo   en   cada   momento.   Puede   tratarse   de   una   dirección   de   la  
memoria   principal   o   puede   tratarse   de   una   dirección   de   memoria   en   la  
que  está  mapeado  un  periférico.  
•  El  ancho  en  bits  del  bus  de  direcciones  determina  el  tamaño  del  espacio  
de  memoria  direccionable.
BUS  DE  CONTROL  
•  El   bus   de   control   proporciona   señales   para   coordinar   las  
diferentes  tareas  que  se  realizan  en  el  sistema  informáDco.  
•  Algunas  de  las  señales  que  podemos  encontrar:  
–  CLK:  Frecuencia  de  reloj    
–  CS  (Chip  select):  AcDva  el  chip  a  uDlizar  
–  READY:  Está  disponible  el  disposiDvo  ?  
–  R/W:  Se  trata  de  una  operación  de  lectura  o  escritura  ?  
MEMORIAS  PASIVAS  
•  Memorias  totalmente  pasivas  (ROM)  
Son   aquellas   que   sólo   pueden   ser   leídas   por   el   usuario.   La   grabación   o  
escritura   la   realiza   el   fabricante.   Esta   memoria   es   ideal   para   almacenar   las  
ruDnas  básicas  a  nivel  de  hardware,  por  ejemplo,  el  programa  de  inicialización  
de  arranque  de  un  sistema.  

•  Memorias  pasivas  programables  (PROM)  


Son   aquellas   cuyo   contenido   puede   ser   escrito   por   el   usuario   una   sola   vez.  
Dicho  proceso  se  realiza  con  una  máquina  especial  llamada  programador  de  
PROM  o  quemador  de  PROM.  
MEMORIAS  PASIVAS  
•  Memorias  borrables  con  rayos  ultravioleta  (EPROM)  
Estas  memorias  se  graban  mediante  impulsos  eléctricos  cuyo  nivel  de  tensión  
es,   en   general,   mayor   que   el   de   los   normales   de   operación   del   circuito.   Las  
modernas   grabadoras   de   EPROM   son   sistemas   basados   en   microprocesador  
que   permiten   la   grabación   de   múlDples   Dpos   de   chips.   El   borrado   se   realiza  
mediante   rayos   ultravioleta   antes   de   la   grabación;   para   ello   el   circuito  
integrado   posee   una   zona   transparente   que   permite   el   paso   a   los   citados  
rayos.  
MEMORIAS  PASIVAS  
•  Memorias   pasivas   reprogramables   borrables   eléctricamente  
(EEPROM)  
La   información   contenida   en   una   memoria   EPROM   no   puede   modificarse  
mientras   está   en   el   circuito.   En   las   aplicaciones   en   las   que   dicha   modificación  
quiera   realizarse,   deberá   uDlizarse   una   EEPROM.   Al   igual   que   la   EPROM,   la  
principal  aplicación  de  las  memorias  EEPROM  es  la  de  formar  parte,  junto  con  
las   memorias   acDvas   (RAM)   y   pasivas   (EPROM),   de   la   memoria   de   un  
microprocesador,  para  almacenar  tablas  modificables  por  el  propio  sistema.  
MEMORIAS  ACTIVAS  
•  Se  les  conoce  como  memorias  de  acceso  aleatorio  (RAM).  
•  Se   clasifican   en   estáDcas   (SRAM)   y   en   dinámicas   (DRAM)  
respecDvamente.   Por   otro   lado,   de   acuerdo   con   la   tecnología   de  
fabricación  que  se  emplee,  se  pueden  dividir  en  bipolares  y  MOS.  
•  La   selección   de   la   posición   cuya   información   se   desea   leer   o   escribir   se  
realiza  mediante  m  bits  en  paralelo,  denominados  bits  de  dirección.  El  
número   total   de   posiciones   que   se   pueden   seleccionar   es   2m.   Por  
ejemplo:  
•  Una   memoria   de   1   k   x   8,   Dene   10   bits   de   direccionamiento,   es   decir,  
210  =  1.024  =  1  k  y  8  terminales.  
EVOLUCIÓN DE LOS UP X86

Producto 8080 8085 8086 8088 80286 80386 80486

CLK(MHz) 2  a  3 3  a  8 5  a  10 5  a  8 6  a  16 16  a  33 25  a  50

Memoria  Física 64k 64k 1M 1M 16M 4G 4G

Bus  de  datos  


interno 8 8 16 16 16 32 32

Bus  de  datos  


externo 8 8 16 8 16 32 32

Bus  de  Direcciones 16 16 20 20 24 32 32

Tipo  de  datos  (bits) 8 8 8,  16 8,  16 8,  16 8,  16,  32 8,  16,  32
80X86  
•  Ofrece  un  mejor  costo  de  implementación.  
•  Mejor  desempeño  y  mayor  espacio  de  direccionamiento.  
•  En   1980   IBM   comienza   con   el   desarrollo   de   su   propia   computadora  
personal.    
–  Arquitectura   abierta   para   que   otras   empresas   pudiesen   hacer   sus  
modelos  compaDbles  con  los  de  IBM.  
–  Optaron   por   el   microprocesador   de   Intel   8088   de   16bits,   a   4.77MHz  
con   16K   de   RAM   ampliable   a   256K   gracias   a   sus   5   ranuras   de  
expansión  
•  Ser   la   única   elección   en   relación   a   las   implementaciones   de   la  
competencia,  (  la  IBM  quería  ser  la  líder  del  mercado).  
ARQUITECTURA DEL
8086/8088
ARQUITECTURA  EN  PIPELINE  

•  Los   procesadores   antecesores   al   8086,   estaban   limitados   en   su  


desempeño   debido   a   la   necesidad   de   realizar   dos   pasos   principales   de  
ejecución.    

•  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  se  ejecutaba  una  instrucción,  pues  el  
procesador  estaba  ocupado.    
 
•  Resumiendo,  un  alto  porcentaje  del  Dempo,  el  procesador  estaba  ocupado  
haciendo   Fetch,   cuando   su   función   debería   ejecutar   las   instrucciones.   La  
capacidad   de   ejecutar   instrucciones   sólo   se   ocupaba   en   un   bajo  
porcentaje.    
ARQUITECTURA  EN  PIPELINE  
•  Para  solucionar  esto,  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  Dempo  en  el  Fetch.    
–  A  parDr  de  ahí,  Fetch  va  adelante  del  Execute,  y  trae  
instrucciones  al  procesador  mientras  este  ejecuta  las  anteriores.    
ARQUITECTURA  EN  PIPELINE  
Nonpipelined   Fetch  1   Exec  1   Fetch  2   Exec  2  
8085  

Pipelined   Fetch  1   Exec  1  


8086  
Fetch  2   Exec  2  

Fetch  3   Exec  3  
DIAGRAMA  DE  BLOQUES  INTERNO  DEL  8088/86  
AH   AL  
CS  
BH   BL  
ES  
CH   CL  
SS  
DH   DL  
BP   IP  
DI  
SI  
SP  
ADDRESS  GENERATION  
AND  BUS  CONTROL  

OPERANDS  

INSTRUCTION  
ALU   QUEUE  

FLAGS  

EXECUTION  UNIT  (EU)   BUS  INTERFACE  UNIT  (BIU)  


UNIDAD DE EJECUCIÓN (EU)

•  La   unidad   de   ejecución   (EU)   se   encarga   de   realizar   las   operaciones  


aritméDcas   y   lógicas,   además   de   proporcionar   las   direcciones   lógicas   al  
BIU,   una   dirección   lógica   está   formada   de   dos   direcciones,   la   primera  
indica  el  segmento  en  el  cual  se  está  trabajando  y  la  otra  indica  el  offset,  o  
desplazamiento,  de  este  segmento;  esto  es  segment:offset    

•  La  EU  Dene  una  unidad  aritméDca  lógica  (ALU)  de  16  bits,  un  registro  de  
banderas   y   un   conjunto   de   registros   de   propósito   general.   El   registro   de  
banderas   conDene   6   banderas   de   estado   (que   la   EU   manipula   para   indicar  
el  estado  del  resultado  de  una  operación  lógica  o  aritméDca)  y  3  banderas  
de   control   que   se   pueden   manipular   por   los   programas   para   alterar   las  
operaciones  del  procesador  .  
   
 
UNIDAD  DE  INTERFASE  CON  EL  BUS  (BIU)  

•  Es  la  responsable  de  la  comunicación  externa  del  procesador.  Esta  


unidad  de  proceso  se  encarga  de  traducir  las  direcciones  lógicas  a  
direcciones   lsicas   de   la   memoria   con   ayuda   de   los   registros   de  
segmento  DS,  SS,  ES,  CS  e  IP.    
•  Para   converDr   una   dirección   lógica   en   una   dirección   lsica   el   BIU  
corre  el  valor  del  registro  de  segmento  4  posiciones  a  la  izquierda  
(que  es  equivalente  a  mulDplicar  por  16h)  y  suma  el  valor  del  offset  
para  obtener  un  valor  de  20  bits  necesarios  
MODELO DE PROGRAMACIÓN
DEL 8086.
MODELO DE PROGRAMACIÓN 8086
REGISTROS DEL 8088/86 POR CATEGORÍA

Categoría Bits Nombre  de  los  Registros


16 AX,  BX,  CX,  DX
General
8 AH,  AL,  BH,  BL,  CH,  CL,  DH,  DL
Puntero 16 SP  (Stack  Pointer),  BP  (Base  pointer)

Index 16 SI  (source  index),  DI  (desDnaDon  index)

CS  (Code  segment),  DS  (data  segment)  


Segmento 16
SS  (Stack  segment),  ES  (extra  segment)

Instrucción 16 IP  (instrucDon  Pointer)


Flag 16 FR  (flag  register)
REGISTROS DE DATOS O DE PROPÓSITO
GENERAL

 
AX,   BX,   CX,   DX:   pueden   uDlizarse   bien   como   registros   de   16   bits   o   como   dos   registros  
separados   de   8   bits   (byte   superior   e   inferior)   cambiando   la   X   por   H   o   L   según   queramos  
referirnos   a   la   parte   alta   o   baja   respecDvamente.   Por   ejemplo,   AX   se   descompone   en   AH  
(parte  alta)  y  AL  (parte  baja).  Evidentemente,  cualquier  cambio  sobre  AH  o  AL  altera  AX.y    
 
AX  =  Acumulador  Primario.  
•  Todas  las  operaciones  de  I/O  son  realizadas  con  el  apoyo  de  este  
 registrador.  
•  Operaciones   que   uDlizan   datos   inmediatos   necesitan   de   menos   memoria   cuando   son   hechas  
a  través  de  AX.  
•  Algunas  operaciones  con  strings  e  instrucciones  aritméDcas  piden  el  uso  de  este  registrador.  
•  Generalmente,  es  usado,  por  los  compiladores,  para  guardar  valores  
 retornados  de  subruDnas.  
REGISTROS DE DATOS O DE PROPÓSITO
GENERAL
BX  =  Base.    
•  Es  el  único  registro  de  propósito  general  que  puede  ser  uDlizado  en  el  
cálculo  de  direccionamiento  de  memoria.  
•  Todas  las  referencias  a  la  memoria  que  usa  este  registro  en  el  cálculo  de  
direccionamiento  toman  el  registro  de  segmento  DS  como  segmento  
padrón.  De  esta  manera,  no  es  preciso  indicar  una  posición  de  memoria  
fija,  sino  la  número  BX.  
 
CX  =  Contador.  
•  Es  decrementado  durante  las  operaciones  con  loops  y  strings.  
•  Es  usado  para  controlar  el  número  de  repeDciones  de  una  instrucción  
antecedida  por  el  prefijo  REP.  
•  Es  usado  para  controlar  rotaciones  y  desplazamientos  de  varios  bits.  
REGISTROS DE DATOS O DE PROPÓSITO
GENERAL

DX  =  Direccionador  de  I/O  y  registro  de  Datos.    


 
•  Es  el  único  registro  en  el  cual  se  guarda  la  dirección  de  los  puertos  de  I/O.  

•  UDlizado  en  operaciones  aritméDcas,  incluyendo  mulDplicación  y  división.  

•  Puede  ser  usado  por  compiladores,  juntamente  con  AX,  para  guardar  
 valores  retornados  de  subruDnas.  
 
REGISTROS DE DATOS O DE PROPÓSITO
GENERAL

   Las  operaciones  pueden  ser  realizadas  en  apenas  8  


bits  de  estos  registros  afectando  el  conjunto  de  16  
bits:  
 
 mov  ax,  2155h          AX  =  2155h  
 mov  ah,  43h        AX  =  4355h  
 
 mov  dx,  21FFh      DX  =  21FFh  
 mov  dl,  23h        DX  =  2123h  
 
REGISTROS DE DATOS O DE PROPÓSITO
GENERAL

Operaciones que operan con una parte de 8 bits, no afectarán la otra


parte del registro de 16 bits:
mov dx, 21FFh DX = 21FFh
inc dl DX = 2100h
mov dx, 13FEh DX = 13FEh
dec dl DX = 13FDh
El 8086

REGISTROS  DE  SEGMENTO  

•  Cuando   se   proyectó   el   8086,   la   Intel   se   preocupó   en   facilitar   el   acesso   y  


el   gerenciamento   de   memoria   de   la   CPU   que   podría   llegar   a   1   MByte.  
Por   eso,   decidió   dividir   esa   memoria   en   segmentos   de   64   K   (16   bits).  
Todo   acesso   a   la   memoria   del   8086   es   realizado   direccionando  
segmentos  de  64  K.  
•  Los   registros   de   Segmento   funcionan   como   seleccionadores   de   estos  
segmentos   de   direccionamiento.   Cada   registro   especifica   el   inicio   de   un  
segmento  de  64  K  direccionados  consecuDvamente.  
•  El  acceso  a  direcciones  dentro  de  un  segmento  es  hecho  a  través  de  um  
desplazamiento   (offset)   a   parDr   de   la   dirección-­‐base.   Son   4   Dpos   de  
segmentos  considerados:  CÓDIGO,  DATOS,  PILA  y  EXTRA  
REGISTROS  DE  SEGMENTO  

 
SS  =  Registro  de  segmento  de  pila  (stack  segment).    
 
Todos   los   accesos   a   datos   que   uDlizan   los   registros   SP   o   BP   toman   como  
referencia  este  registro.  
 
 ES  =  Registro  de  segmento  extra  (extra  segment).  
 
Operaciones   con   strings   que   usan   DI   para   calcular   el   direccionamiento   son  
hechas  usando  el  registro  ES  para  definir  el  segmento.  
Es   extraordinariamente   úDl   actuando   en   conjunción   con   DS:   con   ambos   se  
puede  definir  dos  zonas  de  64  Kb,  tan  alejadas  como  se  desee  en  el  espacio  de  
direcciones,  entre  las  que  se  pueden  intercambiar  datos.    
REGISTROS  DE  SEGMENTO  
 
CS  =  Registro  de  segmento  de  código  (code  segment).  

•  ConDene   la   dirección   del   segmento   con   las   instrucciones   del   programa.   Los   programas   de  
más  de  64  Kb  requieren  cambiar  CS  periódicamente.  
 
•  Todos   los   acessos   al   código   de   programa   toman   este   registro   como   selector.   El   “offset”   es   el  
registro  IP.  
 
 DS  –  Segmento  de  Datos  (“Data  Segment”)  
 
•  Todo  acesso  a  datos  usa  este  registro  como  referencia,  pero  hay  3  excepciones:  
•  Direcciones  para  acceso  a  una  pila  que  usan  el  registro  SS.  
•  Direcciones  para  acceso  a  datos  que  usan  el  BP  y  son  calculados  a  
 parDr  de  SS.  
•  Operaciones  con  strings,  que  usan  DI  en  el  cálculo  de  la  dirección,  son  
 hechas  usando  ES.  
 
 
REGISTROS  PUNTEROS  DE  PILA  
•  Una   pila   es   parDcularmente   importante   en   lo   que   se   refiere   al   uso   de  
subruDnas.   Cuando   una   instrucción   llama   a   una   subruDna,   es   preciso  
marcar   cual   instrucción   del   programa   debe   ser   ejecutada   luego   de  
terminar  la  subruDna.  

•  Otra  aplicación  para  una  pila  es  la  posibilidad  de  la  ubicación  dinámica  de  
variables.  Las  variables  ubicadas  en  la  pila  son  accesadas  con  el  auxilio  de  
BP.  
 
 
REGISTROS  PUNTEROS  DE  PILA  
 SP  =  Puntero  de  pila  (stack  pointer).    
 
•  Apunta  al  inicio  de  la  pila.  UDlizado  en  las  instrucciones  de  manejo  de  la  pila.  
 
•  Almacena   el   offset   del   direccionamiento   del   tope   de   la   pila,   controlando   la   localización  
dinámica  de  variables  y  el  apilamiento  de  direcciones  de  retorno  de  subruDnas.  
•  Todas  las  referencias  al  SP,  por  definición,  usan  el  registro  SS.  
 
 BP  =  Puntero  base  (base  pointer).  
 
•  Es   un   puntero   de   base,   que   permite   accesar   datos   localizados   en   la   pila,   dedicada   al  
almacenamiento  de  datos  (variables  locales  y  parámetros  de  las  funciones  en  los  programas  
compilados).  
•  Permite   accesar   a   parámetros   que   fueron   pasados   por   la   pila   para   una   determinada  
subruDna.  
PUNTERO  DE  INSTRUCCIONES  O  CONTADOR  DE  
PROGRAMA  
•  IP=  Puntero  de  instrucción  (instrucJon  pointer)  (IP):  
 
•  Marca  el  desplazamiento  de  la  instrucción  en  curso  dentro  del  segmento  
de  código.  Es  automáDcamente  modificado  con  la  lectura  de  una  
instrucción.  
 
•   El  puntero  de  instrucción  (IP)  y  el  registro  CS,  juntos,  son  responsables  
por  marcar  la  dirección  de  la  próxima  instrucción  a  ser  ejecutada.  
REGISTROS  ÍNDICES  
•  Son usados para accesar datos en la memoria de datos.
•  Son usados en las operaciones con strings.
•  Pueden ser usados como operandos en las operaciones lógicas y aritméticas
de 16 bits.

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.
 REGISTRO  DE  ESTADO  O  DE  INDICADORES  (FLAGS)  

•  Es   un   registro   de   16   bits   de   los   cuales   9   son   uDlizados   para   indicar   diversas  


situaciones  durante  la  ejecución  de  un  programa.  
•  Los  bits  0,  2,  4,  6,  7  y  11  son  indicadores  de  condición,  que  reflejan  los  resultados  
de  operaciones  del  programa  
•  Los  bits  del  8  al  10  son  indicadores  de  control  y  el  resto  no  se  uDlizan.    
•  Estos   indicadores   pueden   ser   comprobados   por   las   instrucciones   de   salto  
condicional,   lo   que   permite   variar   el   flujo   secuencial   del   programa   según   el  
resultado  de  las  operaciones.  
REGISTRO  DE  BANDERAS  
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R R R R OF DF IF TF SF ZF U AF U PF U CF

•  R,  reservado  
•  U,  indefinido  
•  OF  (overflow  flag),  se  setea  cuando  existe  un  desbordamiento  del  bit  de  signo.  
•  DF   (direcDon   flag),   se   usa   para   controlar   la   dirección   de   operaciones   con  
caracteres.  
•  IF  (interrupt  flag),  se  setea  cuando  se  solicita  una  interrupción.  
•  TF  (trap  flag),  es  igual  a  uno  si  se  ejecuta  una  instrucción  a  la  vez.  
•  SF  (sign  flag),  almacena  el  bit  más  significaDvo  del  acumulador.    
•  ZF  (zero  flag),  si  una  operación  aritméDca  o  lógica  es  cero,  ZF=1  
•  AF  (auxiliary  carry  flag),  si  existe  acarreo  de  b3  al  b4  en  una  operación,  AF=1.  
Es  usado  en  operaciones  BCD  
•  PF  (parity  flag),  verifica  paridad  par  en  una  operación.  
•  CF  (carry  flag),  bit  de  acarreo  del  b7  en  una  operación  de  8  bits,  y  de  b15  en  
una  operación  de  16  bits.  
Bit   Indicador  de:   Uso  

    Indicador  de  arrastre  del  bit  de  mayor  orden,  que  


CF   Acarreo  ("Carry  Flag")   puede  ocurrir  en  las  operaciones  aritméDcas  
suma  y  resta.  

    Si  está  acDvo  indica  un  número  par  de  bits  


PF   Paridad  ("Parity  Flag")   acDvos  (bits  cuyo  contenido  es  1).    Esta  
información  es  úDl  cuando  el  procesador  
controla  transmisiones  de  datos.  
AF   Acarreo  auxiliar   Indicador  de  ajuste  en  operaciones  aritméDcas  
con  canDdades  BCD    
ZF   Cero  ("Zero  Flag")   Está  acDvo  si  el  resultado  de  operación  es  cero  o  
resultado  de  comparación  igual.  
SF   Signo  ("Sign  Flag")   Si  está  acDvo  indica  que  el  resultado  de  
operación  o  de  comparación  son  negaDvos.  
    Si  está  acDvo,  el  procesador  genera  
TF   Detención  ("Trap  Flag")   automáDcamente  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  inacDvo  (a  0).  

   
 
IF   Este  bit  controla  el  estado  del  sistema  de  
Interrupción  ("Interrupt  Flag")  
interrupciones  enmascarables  .    Cuando  está  
acDvo  (1)  permite  las  interrupciones;  el  estado  
inacDvo  (0)  las  deshabilita.  

DF   Dirección  ("DirecDon  Flag")   Determina  si  las  operaciones  con  strings  van  a  
DF   Dirección  ("DirecDon  Flag")   incrementar  o  decrementar  los  registros  de  
indexación  SI  y  DI  
OF   Desbordamiento  (Overflow  Flag")   Señala  desbordamiento  aritméDco  
Bit   Indicador  de:   Indica^vo  si  bit  1   Indica^vo  si  bit  0  

CF        Acarreo    CY      ("Carry")    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    ("NegaDve")  negaDvo    PL      ("Plus")  posiDvo  

IF        Interrupción    EI        ("Enabled  Interrupt")  acDva    DI    ("Disabled  Interrupt")  desacDvada  

DF        Dirección    DN    ("Down")    decremento    UP    incremento  

OF        Desbordamiento    OV    ("Overflow")    NV    ("No  overflow")  

TF      Detección      (“Controla  paso    a  paso")        ("No  Controla")  


REGISTRO  DE  BANDERAS  EN  OPERACIONES  ARITMÉTICAS  

•  Si tiene las siguientes instrucciones, identificar el estado de los bits del


registro de banderas:
•  MOV AX,34F5H
•  ADD AX,95EBH
•  Solución:
34F5 0011 0100 1111 0101
+ 95EB 1001 0101 1110 1011
CAE0 1100 1010 1110 0000
CF=0, no existe acarreo del b15
PF=0, el número de unos del resultado es impar
AF=1, existe acarreo de b3
ZF=0, el resultado obtenido es distinto de cero
SF=1, el b15 es 1
SEGMENTACIÓN DE LA
MEMORIA EN EL 8086
SEGMENTACIÓN  

FFFFF

Dirección lógica

Dirección física
SEGMENTO Registro de segmento
Desplaz
amiento

Dirección de segmento

CPU

Memoria
FORMACIÓN  DE  UNA  DIRECCIÓN  FÍSICA  

Siempre  que  una  memoria  es  accesada,  se  genera  una  dirección  lsica  a  
parDr  de    la  dirección  lógica.    
Dirección
  efectiva,
lógica u
offset EL REGISTRO DE
4 bits SEGMENTO SE
Dirección de DESPLAZA 4 BITS
segmento HACIA LA
IZQUIERDA
(MULTIPLICACIÓN
x16)

Dirección física 0000  

20 BITS
FORMACIÓN DE UNA DIRECCIÓN
FÍSICA
FORMACIÓN  DE  UNA  DIRECCIÓN  FÍSICA  

Por  Ejemplo:    
 
Si  la  dirección  base  del  segmento  es  
2915h,  entonces  las  direcciones    en  este  
segmento  inician  en  2915:0000  y  van  
hasta    2915:FFFF  
 
SEGMENTO  DE  MEMORIA  
FFFFF

•  Un segmento es un área continua


de memoria que puede tener
hasta 64K-bytes, que debe
comenzar en una localidad de
SEGMENTO memoria cuya dirección sea
límite de 16 bytes (cantidad
denominada párrafo) y que puede
traslaparse con otros segmentos.

Memoria
SEGMENTOS  DE  MEMORIA  
•  El   segmento   de   código   (Dene   como   base   el   contenido   del   registro  
CS).  
•    En   este   segmento   se   encuentran   las   instrucciones   que   forman   el  
programa.   Para   acceder   a   los   datos   contenidos   en   él,   se   usa   el  
registro  IP  como  desplazamiento.  

•  El  segmento  de  datos  (que  Dene  como  base  el  registro  DS).    
•  ConDene   los   datos   que   uDliza   el   programa   (variables,   etc.)   Para  
acceder  a  los  datos  contenidos  en  él,  se  suele  uDlizar  los  registros  SI  
y  DI  como  desplazamiento.  
SEGMENTOS  DE  MEMORIA  
El  segmento  de  pila    (con  SS  como  base).    
-­‐  En   él   se   desarrolla   la   pila   del   programa,   uDlizada   para   almacenar  
temporalmente   datos,   llamadas   a   funciones,   etc.   Debe   estar  
presente  en  todos  los  programas  EXE  de  forma  obligada.  Se  uDliza  
el  registro  SP  para  acceder  a  los  datos  de  este  segmento.  

El  segmento  extra  (con  ES  como  base).    


-­‐  Su  uso  es  opcional,  y  en  él  se  encuentra  un  segmento  definido  por  
el  usuario  y  que,  regularmente,  conDene  datos  adicionales.  Al  igual  
que   ocurre   con   el   segmento   de   datos,   para   acceder   a   los   datos  
contenidos  en  él,  se  suelen  uDlizar  los  registros  SI  y  DI.  
 
SEGMENTACIÓN  
TRASLAPE DE SEGMENTOS

CS CS
SEGMENTO DE PROGRAMA  
CÓDIGO SEGMENTO DE
CÓDIGO
DS
SEGMENTO DE
DATOS
OTRO SEGMENTO
ES
SEGMENTO EXTRA
DE DATOS
SS
STACK

MEMORIA
MEMORIA
SEGMENTACIÓN  
Relocalización de un programa usando el registro CS

02000
600

PROGRAMA   SEGMENTO DE
CÓDIGO EN CURSO

1A300 nuevo (CS)=1A30


600

PROGRAMA   SEGMENTO DE
CÓDIGO
RELOCALIZADO

MEMORIA
DIRECCIÓN  FÍSICA  Y  DIRECCIÓN  LÓGICA  

•  Cada  localidad  de  memoria  Dene  dos  Dpos  de  direcciones:  Dirección  
Física    y    Dirección  Lógica  o  efecEva  
•  Una   dirección   Física   es   el   valor   único   de   20   bits   que   idenDfica     la  
localización  de  cada  byte  en  el  espacio  de  memoria  de  1  Mbyte.  
•  Los   programas   tratan   con   dirección   Lógicas   mas   que   con   la  
dirección  Física.  
•  Para   cualquier   localidad   de   memoria,   el   valor   base   del   segmento  
ubica   el   primer   byte   del   contenido   del   segmento   y   el   valor   del  
offset   es   la   distancia,   en   bytes   ,   de   la   localización   desDno   del  
principio  del  segmento.  
SEGMENTO  DE  DATOS  
•  Para   facilitar   el   manejo   de   datos   el   8086   Dene   asignada   un   área   de  
memoria  específica  que  se  llama  DS.  
•  Dirección  Lógica:  el  segmento  de  datos  Dene  como  offset  los  registros  BX,  
SI  y  DI.  
•  Ejemplo:   si   DI=0200   y   se   desea   almacenar   los   datos   25H,   12H   y   25FFH;   los  
datos  se  almacenan  en  las  siguientes  localidades  de  memoria:  
     DS:0200=25H  
     DS:0201=12H  
     DS:0202=FFH  
     DS:0203=25H  
SEGMENTO  DE  PILA  

•  Es una sección para leer y/ l  Ejemplo:  si  SP=1236,  AX=24B6,  BX=85C2,  
o escribir en la RAM. DX=5F93.  Muestre  el  contenido  de  la  pila  
con  las  siguientes  instrucciones.  
•  La pila es de tipo LIFO,  PUSH  AX  
último en entrar, primero
 PUSH  BX  
en salir.
 PUSH  DX    
•  Los dos registros utilizados
para manejar el SS son: SP SS:1230 93
y BP. SS:1231 5F

•  La instrucción para SS:1232 C2 C2

almacenar en la pila es SS:1233 85 85

PUSH y para vaciar la pila SS:1234 B6 B6 B6

es POP. SS:1235 24 24 24

SS:1236

START PUSH AX PUSH BX PUSH DX


SOBRELAPAMIENTO  DE  SEGMENTOS:  

•  Dos segmentos están sobrepuestos


cuando tienen la misma dirección DS:SI  
física. 64K    
•  El sistema operativo sobrepone los
segmentos cuando considera CS:IP   64K  
necesario. (para no desperdiciar
memoria)
•  Ejemplo:
Dir. Lógica Dir. Física
1000:5020 15020 DS:SI=1234:4321  
CS:IP=1665:0011  
1500:0020 15020 Dir.  F1=Dir.  F2=16661H  
1302:2000 15020  

S-ar putea să vă placă și