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

Arquitectura de Computadores II

Clase Generalidades 8086


Facultad de Ingeniera
Universidad de la
Repblica
Instituto de Computacin
Arquitectura de Computadores II
Contenido

Generalidades 80!86

"odos de direccionamiento

#et de instrucciones

Assembler

Compilando algunos e$emplos


Arquitectura de Computadores II
"icroprocesadores Intel
8086%8088

&os procesadores Intel 8086 ' 8088 son la base del I(")*C '
compatibles
+8086 introducido en ,-.8/ primer I(")*C en ,-8,0

1odos los procesadores Intel/ A"2 ' otros est3n basados en el


original 8086%8/ ' son compatibles4

5n el arranque/ *entiums/ At6lons etc se ven como un 80867


Instruction *ointer apunta a FFFF08

8086 es un procesador de ,6)bit

,6)bit data registers

,6 or 8 bit e!ternal data bus

Algunas t9cnicas para optimi:ar la per;ormance/ por e$emplo


la Unidad de *re;etc6

#egmentos7 <;;set memor' model

Formato de datos &ittle)5ndian


Arquitectura de Computadores II
8086%8088

&os accesos a memoria enlentecen el ciclo de e$ecucin

5l 8086%8 usa una cola de instrucciones para me$orar la


per;ormance

"ientras el procesador decodi;ica ' e$ecuta una instruccin/ la


unidad de inter;a: con el bus puede leer nuevas instrucciones/
pues en ese momento el bus est3 en desuso

5l I(" *C original usa el microprocesador 8088

8088 es similar al 8086 pero tiene un bus e!terno de 8 bits '


una cola de instrucciones de solo = b'tes

5l bus de 8)bit reduce la per;ormance/ pero ba$a los costos

&a arquitectura del 8086 ' el 8088 se puede considerar en


con$unto

Algunos clones del *C usaban el 8086 para me$orar la


per;ormance
Arquitectura de Computadores II
Unidades ;uncionales del
8086%8088
Execution Unit
(EU)
Bus Interface
Unit(BIU)
Fetches Opcodes,
Reads Operands,
Writes Data
80868088 !"U

5!ecution unit +5U0 > e$ecuta las instrucciones

(us inter;ace unit +(IU0 > ;etc6 de instructiones ' operandos/


escritura de resultados

*re;etc6 queue7 8086%6 b'tes/ 8088%= b'tes


Arquitectura de Computadores II
<rgani:acin Interna del 8086%8088
#e$porar%
Re&isters
'(U
F)a&s
EU
*ontro)
'+ '(
B+ B(
*+ *(
D+ D(
,"
B"
DI
,I
*,
D,
,,
E,
IO
Interna)
*o$$unications
Re&isters
,U!!'#IO-
'ddress Bus .0 /its
Data Bus
Bus
*ontro)
0 . 1 2
Instruction 3ueue
8088
Bus
EU BIU
Arquitectura de Computadores II
5lementos de la (IU

Instruction ?ueue7 la pr!ima instruccin u operando


puede ser ledo desde memoria mientras el procesador
e$ecuta la instruccin corriente

2ado que la inter;a: de memoria es muc6o mas lenta que el


procesador/ la cola de instrucciones me$ora la per;ormance
global del sistema4

Registros de #egmento7

C#/ 2#/ ## ' 5#7 registers de ,6 bit

Usados como base para generar las direcciones de A0 bits

*ermiten al 8086%8088 direccionar ,"b'te de memoria

5l programa puede utili:arlos para apuntar a di;erentes


segmentos durante la e$ecucin

Instruction *ointer +I*0 contiene el o;;set de la direccin de


la pr!ima instruccin +distancia en b'tes desde la
direccin contenida en el registro C#0
Arquitectura de Computadores II
2irecciones de A0 bits en el
8086%8088
064/it ,e&$ent Base 'ddress 0000
064/it Offset 'ddress
.04/it "h%sica) 'ddress
Arquitectura de Computadores II
&ittle)5ndian ' (ig)5ndian

Indican de que ;orma una


secuencia de b'tes se
almacena en memoria4

Little endian indica que el b'te


menos signi;icativo de la
secuencia de b'tes ser3
almacenado en la direccin de
memoria menor4

5n la imagen se muestra como


una secuencia de b'tes/ b'te
n
B
b'te
0
/ se guarda en memoria
/%te
n
/%te
0
n
5
/%te
.
/%te
n4.
.
/%te
0
/%te
n40
0
/%te
0
/%te
n
0
(itt)e
Endian
Bi&
Endian Dir
Arquitectura de Computadores II
Constru'endo un sistema
basado en el 8086%8

(os $icroprocesadores 80868 necesitan circuitos extra


para construir un siste$a

(os /uses de datos % direcciones se $u)tip)exan en )os


$is$os pines de) procesador

,e necesita )6&ica extra para de$u)tip)exar direcciones % datos


% poder acceder a R'!s % RO!s

!odos de funciona$iento

!7xi$o

!8ni$o

E) !odo !7xi$o e) 80868 necesita al menos )os


si&uientes circuitos extra9 8.88 Bus *ontro))er, 8.82'
*)oc: ;enerator, <2+*1<1s % <2+*.2=s
Arquitectura de Computadores II
MAXIMUM
MODE
MINIMUM
MODE
1 40
20 21
8088
GND
A14
A13
A12
A11
A10
A9
A8
AD7
AD6
AD5
AD4
AD3
AD2
AD1
AD0
NMI
INTR
CLK
GND
Vcc
A15
A16,S3
A17,S4
A18,S5
A19,S6
MN,/MX
/RD
/RQ,/GT0
/LOCK
/S2
/S1
/S0
QS0
QS1
/TEST
READ
RESET
/RQ,/GT1
!OLD
/"R
IO/M
DT/R
/DEN
ALE
/INTA
!LDA
#$%# /SS0
MAXIMUM
MODE
MINIMUM
MODE
1 40
20 21
8086
GND
AD14
AD13
AD12
AD11
AD10
AD9
AD8
AD7
AD6
AD5
AD4
AD3
AD2
AD1
AD0
NMI
INTR
CLK
GND
Vcc
AD15
A16,S3
A17,S4
A18,S5
A19,S6
/&!E,S7
MN,/MX
/RD
/RQ,/GT0
/LOCK
/S2
/S1
/S0
QS0
QS1
/TEST
READ
RESET
/RQ,/GT1
!OLD
/"R
IO/M
DT/R
/DEN
ALE
/INTA
!LDA
"odos de ;uncionamiento
<2(,.2=
x.
8.82'
*)oc:
;enerator
RD>
?cc
8086
*"U
*(@
RE'D>
RE,E#
!-!AB
,0B
,0B
,.B
8.88
Bus
*ontro))er
!RD*B
!W#*B
'!W*B
IOR*B
IOW*B
'IOW*B
I-#'B
*(@
<2(,1<1
x1
'DDRD'#'
(E
OEB
'(E
DE-
D#RB
B+EB
'D0=9'D0
'0C9'06
<2(,.2=
x.
E-B
DIR
D0=9D0
'0C9'0,
B+EB
'DDRData
I-#R
$8086 C$(c)$* + M,-$.). M/01

5n modo m3!imo/ las seCales de status


+#0/ #,/ #A0 se usan para reconstruir las
seCales DnormalesE del bus de control

"R2CF/ "G1CF/ I<RCF/ I<GCF etc


Arquitectura de Computadores II
5volucin7 80,86%80,88

#et de Instrucciones aumentado

Componentes del sistema Don)c6ipE

ClocH generator

Controlador 2"A

Controlador interrupciones

1imer

etcB

Io utili:ado en *Cs

*opular en sistemas embebidos

Controladores

8ardJare dedicado
Arquitectura de Computadores II
#eCal R5#51F

R5#51F es activa en nivel ba$o4 *one al 8086%8 en


un estado de;inido

&impia los registros de ;lags/ segmento/ etc

*one la direccin de programa e;ectiva en 0FFFF06


+C#K0F0006/ I*K0FFF060

*rogramas en el 8086%8 siempre arrancan en FFFF08


despu9s de un Reset

5n esta direccin deben instalarse las rutinas de


iniciali:acin del sistema7 en el *C/ la R<" (I<#

5sta caracterstica se mantiene en las ltimas


generaciones de procesadores
Arquitectura de Computadores II
2ireccionamiento7
memoria ' 5%# por separado +i0

&os procesadores Intel tienen en espacio de


direccionamiento de 5%# separado de la memoria principal
+Cdigo ' 2atos0

2ecodi;icacin de direcciones de dispositivos de 5%# por


separado

Uso de las seCales I<RF and I<GF

#e corresponden con instrucciones separadas para


acceder la 5%# ' la memoria

"<L A&/ M(NO P acceso a memoria

II A&/ AC6 P acceso a 5%#

Algunos procesadores tienen un espacio de direcciones


uni;icado4 &os dispositivos de 5%# son decodi;icados en el
mapa de memoria principal

D5%# mapeada en memoriaE


Arquitectura de Computadores II
2ireccionamiento7
memoria ' 5%# por separado +ii0

Lenta$as de la 5%# mapeada en memoria

2ispositivos de 5%# accedidos por instrucciones


normales ) no se necesitan instrucciones separadas

#e reduce el tamaCo del set de instrucciones

Io se necesitan pines especiales +I<RF/ I<GF0

Lenta$as de espacios de direccionamiento


separados

1odo el mapa de direcciones disponible para memoria

&a 5%# puede usar instrucciones m3s pequeCas '


r3pidas

F3cil distinguir accesos de 5%# en lengua$e ensamblador

"enos 6ardJare para decodi;icar 5%#4


Arquitectura de Computadores II
Interrupciones

1ipos

8ardJare7 dispositivos de entrada salida

Internas7 divisin entre cero

#o;tJare7 llamadas al sistema

Io enmascarables4

Cada interrupcin lleva asociado un


nmero que identi;ica al servicio que se
debe invocar4
Arquitectura de Computadores II
Lector de Interrupciones

&as locali:aciones de memoria


000008 a 00QFF8 est3n reservadas
para las interrupciones

5!isten AR6 tipos posibles de


interrupciones

Cada 8andler o Rutina de #ervicio de


Interrupcin est3 direccionada por un
puntero de = b'tes7 ,6 bits de
segmento ' ,6 bits de o;;set

&as rutinas ' los punteros deben


instalarse antes de 6abilitar las
interrupciones

#ervicios de la (I<#

#ervicios del #istema <perativo


Arquitectura de Computadores II
Interrupciones enmascarables
' no enmascarables

&as interrupciones pueden enmascararse globalmente


usando la Interrupt 5nable Flag +I5 o I0

I5 es seteada por la instruccin #1I ' reseteada mediante


C&I

Interrupciones no enmascarables +Ion "asHable


Interrupts)I"I0 son prioritarias ' como su nombre indica
I< se pueden enmascarar

Uso de la I"I

*arit' 5rror

*oJer ;ail

5tcB
Arquitectura de Computadores II
5$emplo de I"I
"oDer Fai)
!onitor
"arit% Error
Detector
*"U
-!I
I-#R
IO
DeEice
Arquitectura de Computadores II
Generalidades 8086%8080

&os b'tes ' palabras pueden residir en cualquier lugar de la


memoria +no es necesario que est9n alineados0

*uede operar con nmeros

(inarios +con o sin signo de 8 ,6 bits0

(C2

2ispone de -A instrucciones4

5!isten . modos de direccionamiento4

Frecuencia tpica

=/.. "8: +80800

8 "8: +80860

&as instrucciones m3s r3pidas se e$ecutan en dos ciclos de


relo$ ' las lentas en A06 ciclos4

#e pueden direccionar 6asta 6=S puertos de 5%#4


Arquitectura de Computadores II
Registros +i0

2atos o almacenamiento temporal

AN/ acumulador4

(N/ base4

CN/ contador4

2N/ dato4
(it 6e! .6R=QA,0 F52C(A-8
2& 28
2N
C& C8 CN
(& (8 (N
A& A8 AN
('te In;erior ('te #uperior Registro
Arquitectura de Computadores II
Registros +ii0

#egmento

C#/ cdigo

2#/ dato4

##/ pila4

5#/ e!tra4

*unteros a pila

#*/ tope de la pila4

(*/ base a la pila4


Arquitectura de Computadores II
Registros +iii0

Registros de ndice

#I/ ndice origen4

2I/ ndice destino4

*untero a instruccin

(anderas
Arquitectura de Computadores II
"odos de direccionamiento +i0

#e entiende por modos de direccionamiento a las ;ormas


di;erentes que pueden tomar los par3metros de las
instrucciones del procesador4

2istinguiremos ;undamentalmente cuatro modos di;erentes7

R5GI#1R<
T Un par3metro que direcciona a un registro est3 utili:ando el
modo de direccionamiento R5GI#1R<4
T 5$7 "<L A!/(!
T 5n este e$emplo los dos par3metros direccionan un registro4

LA&<R o II"52IA1<
T Utili:ado cuando se 6ace re;erencia a un valor constante que
se codi;ica $unto con la instruccin4 5s decir dic6o par3metro
representa a su valor ' no a una direccin de memoria o un
registro que lo contiene4
T 5$7 "<L A!/R00
Arquitectura de Computadores II
"odos de direccionamiento +ii0

DIRE*#O
F ,e uti)iGa e) $odo directo cuando se referencia a una direcci6n de
$e$oria % )a $is$a est7 codificada Hunto con )a instrucci6nI
F EH9 !O? '(,J0.<K
F En este eHe$p)o e) offset de )a direcci6n de $e$oria se codifica Hunto
con )a instrucci6n % e) se&$ento se asu$e a D,I ,i !E!ORI' es un
arra% de /%tes Lue representa a )a $e$oria9
F '( 9M !E!ORI'J D,90.< K

I-DIRE*#O
F ,e uti)iGa e) $odo directo cuando se referencia a una direcci6n de
$e$oria a traENs de uno o Earios re&istros
F EH9 !O? '(,JBxK
F 'Lu8 e) offset de )a direcci6n de $e$oria esta contenido en e)
re&istro Bx % a) i&ua) Lue e) caso anterior co$o no se especifica e)
se&$ento se asu$e D,I EHe$p)o9
F '( 9M !E!ORI' JD,9BxK
Arquitectura de Computadores II
Formato de instruccin +i0
+---+---+---+---+---+---+---+---+
| Cdigo de Operacin | D | W |
+---+---+---+---+---+---+---+---+
+---+---+---+---+---+---+---+---+
| MOD | REG | REG/MEM |
+---+---+---+---+---+---+---+---+
+---------------------+ +---------------------+
| byte/palabra despl. | | byte/palabra inmed. |
+---------------------+ +---------------------+
Arquitectura de Computadores II
Formato de instruccin +ii0

5l cdigo de operacin ocupa 6 bits4

D indica que el operando destino est3 en el campo


registro4

W indica que los operandos son de tipo palabra4

MOD indica el modo de direccionamiento

00 sin despla:amiento4

0, despla:amiento de 8 bits

,0 despla:amiento de ,6 bits

,, registro

REG indica el registro involucrado en la instruccin

R/M/ en el caso de modo registro +"<2K,,0 se codi;ica


igual que el campo R5GP en caso contrario se indica la
;orma en que se direcciona la memoria
Arquitectura de Computadores II
#et de Instrucciones

'rit$Nticas

&gicas

2espla:amiento

"ane$o de Flags

(i;urcacin Incondicional

(i;urcacin Condicional

Interrupciones

"ane$o de #tacH

Ler cartilla del curso


Arquitectura de Computadores II
Constantes

Lalores binarios/ tiras de ceros ' unos4

1erminan con b o (4

5$7 ,000,, b4

Lalores octales4

1erminan con o/ </ q o ?4

5$7 66= o4

Lalores 6e!adecimales

5mpie:an con 044-4

1erminan con 6 o 84

5$emplo7 0FFF6

Lalores decimales4

#trings/ secuencias de caracteres A#CII4

Lan entre comillas simples4

U8ola mundoV4
Arquitectura de Computadores II
<peradores

<perador W/ )/ X/ %/ mod/ s6l/ s6r/ and/ or ' !or4

Formato7 valor, oper valorA

5$emplos
T .RWAR
T 80XAR
T ,00A%,AQ
T ,,0000, #8R A

<perador not

Formato7 oper valor

5$emplo7 not ,,0000,b

<perador o;;set ' seg

Formato7 oper YetiquetaZvariable[


Arquitectura de Computadores II
Acceso a memoria(0.)

1odos las direcciones se especi;ica como direcciones


segmentadas +segmento7despla:amiento04

5l despla:amiento se de;ine segn la e!presin7


{Bx|Bp}[+{Si|Di}][+desplazamiento]|
{Si|Di}[+desplazamiento]|
desplazamiento

5$emplos de despla:amientos7
T (N
T (NW2I
T (NW#IWA

5$emplos de direcciones segmentadas7


T 5#7M(*W#IO
T M(*W=O

&as direcciones segmentadas son traducidas


autom3ticamente por el 6ardJare multiplicando el segmento
por ,6 ' luego sumando el despla:amiento4
Arquitectura de Computadores II
Acceso a memoria(..)

2esde la perspectiva del programador

&as direcciones son siempre segmentadas4

Iunca puede especi;icar una direccin real de A0 bits4

5l microprocesador 8086 permite que a lo sumo uno de los


operandos de la ma'ora de las instrucciones est9
almacenado en memoria4

5$emplos7

inc MbpO

mov Mb!O/a!

!or Mb!O/al

mov Mb!O/Mb!WAO *ro6ibido


Arquitectura de Computadores II
Instrucciones pro6ibidas

Io permitido

mul =

mov 5#/=

mov AN/M(NX=O

mov AN/(NX=

mov AN/(NW,

pu6s (&

pus6 =

mov (&/AN
Arquitectura de Computadores II
2irectivas(0=)

&a directiva 5?U

&a ;orma de esta directiva es7


identi;icador 5?U e!presin

5$emplo7
IU&& 5?U 0
1A"\5&5" 5?U =X8
inter5lem 5?U CN
"A#S 5?U ,000,0 b
"A#S\A 5?U "A#S #8R A
Arquitectura de Computadores II
2irectivas(.=)

&as directivas 2(/ 2G/ 22G ' 2U*

&a ;orma de estas directivas es7


etiqueta YDB|DW|DDW[ e!presin,/ e!presinA/444
cantidad dup +valor0

5$emplo7
iter5lem 2G 0
vectorC6ico 2( ,/A/Q/=/R/6
vectorGrande 2( ,0A= dup+00
444
mov a!/Miter5lemO
mov bl/MvectorC6icoWAO
Arquitectura de Computadores II
2irectivas(1=)

&a directiva "ACR<

&a ;orma de esta directiva es7


nombre"acro "ACR< MparametroM/parametro444OO
instrucciones
5I2"

5$emplo7
sqr "ACR< registro
mov AN/registro
mul registro
mov registro/AN
5I2"
Arquitectura de Computadores II
2irectivas(2=)

&as directivas b'te ptr ' Jord ptr

&a ;orma de esta directiva es7


Yb'teZJord[ ptr elemento

5$emplo7
mov b'te ptr M5#7(NO/ 0
mul Jord ptr M2IO
Arquitectura de Computadores II
2irectivas(==)

&a directiva *R<C

&a ;orma de esta directiva es7


nombre*roc *R<C MI5ARZFARO

&a directiva 5I2*

&a ;orma de esta directiva es7


nombre*roc 5I2*

2e;inicin de un procedimiento7
nombre*roc *R<C atributo
B
nombre*roc 5I2*
Arquitectura de Computadores II
Instrucciones (0.)

5s una secuencia de , a 6 b'tes4

Formato
MetiquetaO nombreInstruccion MoperandosO McomentariosO

5tiqueta +i0
T Iombre simblico que re;erencia la primera posicin
de la instruccin4
T *uede estar ;ormada por
T &etra A a ]4
T Imeros 0 a -4
T Caracteres especiales ^ ) 4 _4
Arquitectura de Computadores II
Instrucciones (..)

5tiqueta +ii0

&os comentarios comien:an con un UPV


Arquitectura de Computadores II
'cceso a estructuras de datos en
$e$oria (01)

&as variables que se de;inen contiguas en el


programa aparecen contiguas en memoria4 Cada
una de ellas ocupa tantos b'tes como sean
necesario por su tipo4

5$emplo7
iteradorinteger!
p"ertobyte!
#
Direcci6n de
$e$oria
n
nO0
nO.
nO1
iterador
(/aHa)
iterador
(a)ta)
puerto
5
Arquitectura de Computadores II
'cceso a estructuras de datos en
$e$oria (.1)
Direcci6n de
$e$oria
n
nO0
nO.
nO1
dato (/aHa)
dato (a)ta)
hiHoDer
hiHoIGL

&os campos de una variable de tipo estructurado se


almacenan en posiciones contiguas de memoria en el
orden en que aparecen declaradas ' ocupando tantos
b'tes como sean necesarios para alo$ar al tipo del campo4

5$emplo7
t'pe nodoK
record
dato7integerP
6i$o2er7b'teP
6i$oI:q7b'teP
end
Arquitectura de Computadores II
'cceso a estructuras de datos en
$e$oria (11)

&os elementos de una variable de tipo arra' se almacenan


en posiciones contiguas de memoria en el orden en que
aparecen declaradas4

5$emplo7
type arbol$array%&..'M()*+ODO,--./ o0 nodo!
direcci6n Pndice
n
0
nO0
nO.
nO1
nO2
0
nO=
nO6
nO<
dato (/aHa)
dato (a)ta)
hiHoDer
hiHoIGL
dato (/aHa)
dato (a)ta)
hiHoDer
hiHoIGL
...
direcci6n Pndice
nOiQ2
i
nOiQ2O0
nOiQ2O.
nOiQ2 1
dato (/aHa)
dato (a)ta)
hiHoDer
hiHoIGL
Arquitectura de Computadores II
*o$pi)ado de estructuras de contro) (0.)

i;)t6en)else
i0 'i12&. t3en
4blo5"e del i06
else
4blo5"e del else6
cmp i7&
8e else
! a5"9 :a el blo5"e 5"e
! corresponde al t3en
8mp 0in;0
else
! a5"9 :a el blo5"e 5"e
! corresponde al else
0in;0
Alto nivel Asembler
Arquitectura de Computadores II
*o$pi)ado de estructuras de contro) (..)

J6ile
<3ile 'i1n. do
4blo5"e del <3ile6
<3ile
cmp i7n
8ae 0inW3ile
! a5"9 :a el blo5"e 5"e
! corresponde al c"erpo
! del <3ile
8mp <3ile
0inW3ile
Alto nivel Asembler
Arquitectura de Computadores II
Compilado una ;uncin+,%Q0

&a ;uncin len retorna el largo de un string4

Alto nivel7
,tring$array%&..'=(RGO*M();MO./ o0 byte!

0"nction len'str ,tring.integer!
iter,tr integer!
begin
iter,tr$&!
<3ile 'str%iter,tr/12+>==. do
iter,tr$iter,tr+-!
len$iter,tr!
end
Arquitectura de Computadores II
Compilado una ;uncin+A%Q0

Asembler
+>== E?> &
! el despla@amiento de str :iene en bA
! el res"ltado se de:"el:e en di
len proc
Aor di7di
<3ile
cmp byte prt %bA+di/7+>==
8e 0in
inc di
8mp <3ile
0in
ret
len endp
Arquitectura de Computadores II
Compilado una ;uncin+Q%Q0

Invocando a la ;uncin
mi,tring db B3ola m"ndoC
db +>==
#
mo: bA7 o00set mi,tring
call len
cmp di7 #
!el string esta en la
!direccion segmentada -&&-&&&
mo: bA7-&&&
mo: aA7-&&
mo: ds7aA
call len
!el string esta en
la !direccion absol"ta &ADEFGH
mo: bA7H
mo: aA7DEFG
mo: ds7aA
call len
Arquitectura de Computadores II
Re;erencias

8088)8086%808. *rogramacin
5nsamblador en entorno "# 2<#/ "iguel
Angel Rodrigue:)Rosell/ Ana'a/ ,-884

Art o; Assembl' &anguage/


6ttp7%%Jebster4cs4ucr4edu%AoA%2<#%AoA2o
sInde!46tml
Arquitectura de Computadores II
*reguntas

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