You are on page 1of 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