Está en la página 1de 10

Buses y Perifricos. ITIS.

99/00
Ensamblador 8086

Algunas nociones sobre ensamblador del 8086
El 8086 es un procesador de 16 bis. Eso si!nifica "ue raba#a con re!isros inernos de ese ama$o y "ue
la ampliud del bus de daos de ambin de 16 bis. Sin embar!o odas las insrucciones "ue usaremos a"u%
ser&n oda'%a funcionales cuando "ueramos adaparnos a !eneraciones poseriores de procesadores( como
el 80)86( *86( Penium( con ama$os de palabra mayores.
Conceptos de espacio de almacenamiento de datos:
Palabra 16 bis( +oble palabra( cu&druple palabra.
,lmacenamieno- primero el bye menos si!nificai'o y lue!o el m&s si!nificai'o .en senido creciene
de las direcciones de memoria/
P&!ina 016 byes
Se!meno 6*2 byes
3o es necesario "ue las direcciones se a#usen a palabra .a#use de fronera/ por"ue el procesador !enera
auom&icamene las lecuras de memoria "ue necesie. Sin embar!o s% es recomendable.
Espacio de memoria:
+ecimos "ue un procesador raba#a con un ama$o de palabra 3( por"ue sus re!isros ienen ama$o 3 y
!eneralmene las ransacciones de daos se 4acen en blo"ues de 3 bis. Pese a eso el bus "ue comunica al
procesador con el enorno no iene "ue corresponder a esas resricciones. 5eneralmene el bus de daos
'a a se!uir siendo de ama$o 3( aun"ue puede ocurrir "ue su ama$o sea menor y una ransacci6n 4aya
"ue reali7arla en dos fases .8088/. En cuano al bus de direcciones no es& resrin!ido a 3 l%neas( de 4ec4o
ineresa "ue sea lo mayor posible para "ue abar"ue el mayor espacio de direcciones posible.
8a memoria en el 8086 es& di'idida en segmentos. 9omo el ama$o de los re!isros es de 16 bis( el
mayor ran!o de direcciones "ue podemos se$alar con ellos es de 6*2 byes. Sin embar!o el bus de
direcciones iene 'eine bis abarcando un espacio de direcciones de 1: byes. El modo de se$alar una
direcci6n enonces consise en fi#ar una posici6n de memoria llamada base e indicar un despla7amieno a
parir de esa direcci6n. Ese despla7amieno puede ser como m&;imo de 6*2 byes.
,s% oda direcci6n endr& dos pares( una "ue indica la direcci6n base y ora "ue indica el despla7amieno
.siempre posii'o/ respeco a esa direcci6n. 8os e#emplos "ue si!uen corresponden odos a la direcci6n
10104-
101-0<100-10<10-=10<1-10*0<0-1010
, la i7"uierda del >-> fi!ura el se!meno y a la derec4a el despla7amieno. El se!meno .un 'alor de 16
bis/ no es e;acamene la direcci6n base ."ue 4a de ener 00 bis/( para ello 4ay "ue despla7arlo oda'%a *
bis a la i7"uierda..recurdese que estamos trabajando en notacin hexadecimal/
1010 ? 0<1000?10<100?=10<10?10*0<0?1010
9uando un pro!rama se 'a a e#ecuar( primero iene "ue fi#ar sus se!menos. @n pro!rama raba#a con
cuaro se!menos simul&neamene- el se!meno de c6di!o( dos se!menos de daos y un se!meno de
pila. Esos se!menos de memoria( pueden ser dis#unos( o ener parcial o aAn compleo solapamieno. 8as
direcciones base de se!menos son siempre mAliplos de 16. ,s%( por e#emplo( el se!meno 0 y el
se!meno 1 se solapan parcialmene( pero cada uno de ellos iene diecisis byes pariculares.
1
Buses y Perifricos. ITIS.99/00
Ensamblador 8086

Recursos del procesador:
Registros.
Para poder pro!ramar en un procesador paricular debemos conocer primero el con#uno de recursos "ue
el procesador pone a disposici6n del pro!ramador- re!isros( inerrupciones( espacio de memoria y
enrada salida. B lue!o el con#uno de insrucciones "ue nos permien manipularlos para lo!rar nuesros
fines.
En primer lu!ar se nos ofrecen cuaro re!isros de 16 bis de prop6sio !eneral( aun"ue cada uno iene
asi!nadas labores m&s especiali7adas-
,C- ,cumulador
BC- Base
9C- 9onador
+C- +ao
Si se raba#a con daos de oc4o bis( esos re!isros pueden ser 'isos por las insrucciones como oc4o
re!isros de un bye cada uno
AH, AL
BH, BL
CH, CL
DH, DL
SP(BP
SI(+I
Se pueden uili7ar como prop6sio !eneral( aun"ue ienen una funcionalidad m&s definida. Son llamados
re!isros de %ndice y sir'en para mediai7ar en accesos a memoria. SP y BP se uili7an en accesos al
se!meno de pila y SI y +I( en los accesos a se!menos de daos.
Para manener la referencia a los se!menos con los "ue raba#a un proceso durane su e#ecuci6n e;isen
cuaro re!isros-
9S- maniene el se!meno de c6di!o
+S- se!meno de daos
ES- se!meno de daos e;ra
SS- se!meno de sacD
Esos cuaro re!isros conienen la referencia al se!meno correspondiene .despla7&ndolos cuaro bis a la
i7"uierda la direcci6n base del se!meno/ 9ual"uier referencia a memoria uili7a esos re!isros de forma
auom&ica( aun"ue el usuario( puede especificar concreamene "u re!isros desea usar en ransacciones
deerminadas.
CS:IP
DS:BX,SI,DI
SS:SP,BP
ES:BX,SI,DI
=la!s( IP
El re!isro IP coniene la si!uiene insrucci6n a e#ecuar y el usuario no iene nin!An acceso a ese
re!isro( sin embar!o con insrucciones de bifurcaci6n es& modific&ndolo impl%ciamene.
En cuano al re!isro de fla!s( coniene una serie de se$ales "ue nos indican el esado del procesador en
cual"uier momeno. Esas se$ales o banderas nos sir'en para diri!ir el conrol del proceso a parir de
sucesos pre'ios. 8as banderas "ue se nos ofrecen son las si!uienes-
de esado.
9=- de acarreo.
E=- de o'erfloF
G=- de resulado cero
0
Buses y Perifricos. ITIS.99/00
Ensamblador 8086

S=- de resulado ne!ai'o
P=- paridad del resulado
,=- au;iliar .correcci6n en l6!ica decimal B9+/
de conrol-
+=- de direcci6n .en insrucciones mAliples/
I=- de inerrupciones
T=- paso a paso.
Interrupciones:
El sisema de inerrupciones para un pro!ramador consise en un con#uno de posiciones de memoria
comen7ando en la direcci6n absolua de memoria 0( "ue conienen( cada dos palabras( una direcci6n de
salo a una ruina de aenci6n a la inerrupci6n. .la direcci6n 0 corresponde a la inerrupci6n 0( la
direcci6n 0 a la inerrupci6n 1( ec/. 9uando se in'oca una inerrupci6n( sea f%sica( por al!An disposii'o(
o l6!ica( al!An error de e#ecuci6n o in'ocaci6n de pro!rama( el mecanismo de aenci6n oma de la
direcci6n correspondiene "ue le indica el nAmero de inerrupci6n( la direcci6n desino del salo y obiene
de all% la si!uiene insrucci6n a e#ecuar. Para crear una ruina de aenci6n a deerminada inerrupci6n( el
pro!ramador iene "ue locali7ar el pro!rama en memoria y lue!o almacenar en la posici6n de la
inerrupci6n correspondiene la direcci6n de comien7o del mismo. 3auralmene escribir una ruina de
inerrupci6n obli!a a respear cieros proocolos.
Entrada/Salida
Se dispone de insrucciones espec%ficas de enrada salida. El procesador proporciona un espacio de
direcciones de enrada salida separado del de memoria. 3o e;ise re!isro de se!meno de enrada salida
por lo "ue se supone "ue odos las direcciones es&n en el primer y Anico se!meno.
Instrucciones:
Hay 90 ipos de insrucciones. Por ipo enendemos insrucci6n !enrica( por e#emplo mover. @na
insrucci6n !enrica puede ener muc4os casos se!An donde residan los daos y el modo de
direccionamieno "ue seleccionemos para se$alar un dao en memoria.
Todas las insrucciones pueden raba#ar con ambos ama$os 8 o 16 bis. 3auralmene ambos operandos
deben ser seme#anes para poder reali7ar una operaci6n enre ellos. En los accesos a memoria(
dependiendo de los re!isros uili7ados se codifica la insrucci6n m&"uina con ama$o bye o ama$o
palabra. Si no se uili7an re!isros( el ama$o debe 'enir definidos en la propia insrucci6n mediane una
direci'a.
Hay I modos de direccionamieno.
.En odos los casos se usa ,C como podr%a 4aberse uili7ado cual"uier oro re!isro/
1. :EJ ,C(BC +e re!isro a re!isro
0. :EJ ,C( 100 Inmediao.
). :EJ ,C( T,B8, @so de 'ariable
T,B8, es un s%mbolo "ue para el compilador endr& el mismo senido "ue una direcci6n de
memoria especificada direcamene.
*. :EJ ,C( KBCL Indireco mediane re!isro.
:EJ ,C( KBPL
:EJ ,C( K+IL
:EJ ,C( KSIL
8os re!isros encerrados enre corc4ees conienen un despla7amieno denro del se!meno con el "ue
se raba#e. El uso de deerminados re!isros asume impl%ciamene un re!isro de se!meno. En ese
caso BC( +I y SI asume el re!isro +S y al usar BP se asume el re!isro de se!meno SS
1. :EJ ,C( KBCL?* Melai'o a base
:EJ ,C( KBPL?*
,l conenido de BC o BP se le suma el 'alor especificado para obener el despla7amieno.
)
Buses y Perifricos. ITIS.99/00
Ensamblador 8086

6. :EJ ,8(T,B8,K+IL +ireco inde;ado
:EJ ,8(T,B8,KSIL
I. :EJ ,C(T,B8,KBCLKSIL Inde;ado a base.
:EJ ,C(T,B8,KBCLK+IL
:EJ ,C(T,B8,KBPLKSIL
:EJ ,C(T,B8,KBPLK+IL
8a duraci6n de las insrucciones 'a de 0 a 006 ciclos de procesador.
El con#uno de insrucciones se puede clasificar en uno de los si!uienes !rupos-
Transferencia de daos
,rimicas
,rimica de bis
Transferencia de conrol
Eperaciones de cadenas .de byes/
Inerrupciones
9onrol del microprocesador
Programacin en ensamblador:
@n pro!rama en ensamblador es una especificaci6n de insrucciones en el orden en "ue deseamos "ue se
e#ecuen( adem&s de una especificaci6n de los daos de parida. Para faciliar esa especificaci6n e;isen
las insrucciones ensamblador y adem&s oras 4erramienas "ue nos proporciona el ni'el de absracci6n
ales como pseudo insrucciones y direci'as.
8as direci'a son una serie de comandos "ue nos permien conrolar las acciones del compilador( ano las
relacionadas con la propia codificaci6n de insrucciones como con la !eneraci6n de informaci6n residual
del proceso.
8as pseudo insrucciones son insrucciones en ensamblador "ue podr%an no corresponderse direcamene
con una insrucci6n en c6di!o m&"uina. Es una absracci6n "ue se crea en el ni'el de absracci6n para
faciliar la area al pro!ramador.
En un pro!rama 4ay "ue especificar los se!menosN como m%nimo el se!meno de c6di!o "ue es el "ue
almacena el pro!rama. 5eneralmene un se!meno de daos y opcionalmene un se!meno de pila y un
se!meno e;ra.
El c6di!o( nauralmene( 'a encerrado denro del se!meno de c6di!o. 5eneralmene los daos iniciales se
encierran el se!meno de daos "uedando el e;ra para apoyo de la codificaci6n. Sin embar!o cada
siuaci6n re"uiere sus propias decisiones. @n pro!rama puede carecer de se!menos de daos
predefinidos( aun"ue no de se!meno de c6di!o.
*
Buses y Perifricos. ITIS.99/00
Ensamblador 8086

INSTRUCCIONES 8086
Transferencia de datos
I3 O enrada de byes o palabra
8,H= O 9ar!ar ,H con las banderas
8+S O 9ar!ar punero usando +S
8E, O 9ar!ar direcci6n efeci'a
8ES O 9ar!ar punero usando ES
:EJ O :o'er
E@T O Salida de bye o palabra
PEP O Mecuperar palabra de la pila
PEP= O Mecuperar banderas de la pila
P@S4 O +eposiar palabra en la pila
P@SH= O +eposiar banderas en la pila
S,H= O ,lmacenar ,4 en banderas
C9H5 O Inercambiar dos operandos
C8,T O Traducir
Insrucciones arimicas
,,, O ,#use ,S9II en suma
,,+ O ,#use ,S9II en di'isi6n
,,: O ,#use ,S9II en muliplicaci6n
,,S O ,#use ,S9II en resa
,+9 O Sumar con acarreo
,++ O Sumar .sin acarreo/
9BP O 9on'erir bye en palabra
9:P O 9omparar operandos
9P+ O 9on'erir palabra a doble palabra
+,, O ,#use decimal en suma
+,S O ,#use decimal en resa
+E9 O +ecremenar en uno
+IJ O +i'idir sin si!no
I+IJ O +i'idir con si!no
I:@8 O :uliplicar con si!no
I39 O Incremenar en uno
:@8 O :uliplicar sin si!no
3E5 O 3e!ar/formar complemeno a 0
SBB O Mesar con acarreo
S@B O Mesar .sin acarreo/
Insrucciones de mane#o de bis
,3+ O B l6!ico
3ET O 3e!aci6n l6!ica
EM O E l6!ico
M98 O Moaci6n a i7"uierda a ra's del bi de acarreo
M9M O Moaci6n a derec4a a ra's del bi de acarreo
ME8 O Moaci6n a i7"uierda
MEM O Moaci6n a derec4a
S,8 O +espla7amieno arimico a i7"uierda
S,M O +espla7amieno arimico a derec4a
.conser'ando el si!no/
SH8 O +espla7amieno l6!ico a i7"uierda
SHM O +espla7amieno l6!ico a derec4a
TEST O 9omparaci6n l6!ica de dos operandos
CEM O E l6!ico e;clusi'o
Insrucciones de ransferencia del conrol
9,88 O 8lamada a procedimieno
Q, O Salar si superior
Q,E O Salar si superior o i!ual
QB O Salar si inferior
QBE O Salar si inferior o i!ual
Q9 O Salar si 4ay acarreo
Q9CG O Salar si 9C es cero
QE O Salar si i!ual
Q5 O Salar si mayor
Q5E O Salar si mayor o i!ual
Q8 O Salar si menor
Q8E O Salar si menor o i!ual
Q3, O Salar si no es mayor
Q3,E O Salar sino es mayor o i!ual
Q3B O Salar si no es menor
Q3BE O Salar si no es menor o i!ual
Q39 O Salar si no 4ay acarreo
Q3E O Salar si no es i!ual
Q35 O Salar si no es mayor
Q35E O Salar si no es mayor o i!ual
Q38 O Salar si no es menor
Q38E O Salar si no es menor o i!ual
Q3E O Salar si no se produce desbordamieno
Q3P O Salar si no 4ay paridad
Q3S O Salar si no es ne!ai'o
Q3G O Salar si no es cero
Q:P O Salo incondicional
QE O Salar si se produce desbordamieno
QP O Salar si 4ay paridad
QPE O Salar si 4ay paridad par
QPE O Salar si 4ay paridad impar
QS O Salar si el si!no es ne!ai'o
QG O Salar si el resulado es cero
8EEP O Bucle 4asa "ue acabe conador
8EEPE O Bucle mienras i!ual
8EEP3E O Bucle mienras no i!ual
8EEP3G O Bucle mienras resulado no cero
8EEPG O Bucle mienras resulado cero
MET O Meornar de un procedimieno
Insrucciones de mane#o de cadenas.
9:PS O 9omparar cadenas de byes o palabras
9:PSB O 9omparar cadenas de byes
9:PSP O 9omparar cadenas de palabras
8E+S O 9ar!ar cadena .byes o palabras/
8E+SB O 9ar!ar cadena de byes
8E+SP O 9ar!ar cadena de palabras
:EJS O :o'er cadena .byes o palabras/
:EJSB O :o'er cadenas de byes
:EJSP O :o'er cadenas de palabras
MEP O Mepeir operaci6n de cadena
MEPE O Mepeir mienras i!ual
MEP3E O Mepeir mienras no i!ual
MEP3G O Mepeir mienras resulado no cero
MEPG O Mepeir mienras resulado cero
S9,S O E;plorar cadena .b o p/
S9,SB O E;plorar cadena de byes
S9,SP O E;plorar cadena de palabras
STES O ,lmacenar cadena .b o F/
STESB O ,lmacenar cadena de byes
STESP O 9omprarse una ienda en el polo nore.
Insrucciones de inerrupci6n.
I3T O In'ocar a la inerrupci6n
I3TE O Inerrupci6n si desbordamieno
IMET O Meorno de inerrupci6n
Insrucciones de conrol de microprocesador.
989 O Borrar bandera de acarreo
98+ O Borrar bandera de direcci6n
98I O Borrar bandera de inerrupci6n
9:9 O 9omplemenar bandera de acarreo
ES9 O Escape .ransmiir informaci6n a un
coprocesador/
H8T O Parar el procesador
8E92 O Blo"uear el bus
3EP O 3o operaci6n
ST9 O ,ci'ar bandera de acarreo
ST+ O ,ci'ar bandera de direcci6n
STI O ,ci'ar bandera de inerrupci6n
P,IT O Esperar a "ue ermine un coprocesador.
1
Buses y Perifricos. ITIS.99/00
Ensamblador 8086

DIRECTIVAS DEL
CO!ILADOR
Directivas de datos
Definicin de smbolos
ER@ O ,si!na s%mbolo a e;presi6n fi#a
< O ,si!na s%mbolo a e;presi6n 'ariable
Definicin de datos
+B O +efinir bye
+P O +efinir palabra
++ O +efinir doble palabra
+R O +efinir cu&druple palabra
+T O +efinir die7 byes
Referencias externas
P@B8I9 O +efinir s%mbolo pAblico
ECTM3 O +efinir s%mbolo e;erno
I398@+E O Incluir fic4ero fuene
Control del ensamblador
E3+ O =in del m6dulo fuene
EMI5I3 O Eri!en de c6di!o o daos
EJE3 O Poner conador de posiciones a par
.M,+IC O +efinir base de numeraci6n por defeco.
Definicin de segmentos y procedimientos
SE5:E3T O 9omien7o de se!meno
E3+S O =inal de se!meno
,SS@:E O Suponer re!isros de se!menos
PME9 O 9omien7o de procedimieno
E3+P O =in de procedimieno
Definicin de bloues
5ME@P O ,!rupar se!menos
3,:E O 3ombrar un m6dulo
8,BE8 O ,si!nar un aribuo a un nombre
ME9EM+ O +efinir re!isro
STM@9 O +efinir esrucura
Directivas condicionales
I= O E'aluar condici6n y decidir
E8SE O Si condici6n es falsa
E3+I= O =in de esrucura condicional
Directivas de listado
!ormato del listado
P,5@E O =ormao de la p&!ina del lisado
TIT8E O T%ulo del lisado
S@BTT8 O Sub%ulo del lisado
"istado de macros
.8,88 O 8isar macros y e;pansiones
.S,88 O Suprimir lisado macros y e;pansiones
.C,88 O 8isar s6lo macros "ue !eneran c6di!o ob#eo
Control del listado
.C9ME= O Suprimir referencias cru7adas
.9ME= O Mesaurar lisado de referencias cru7adas
.C8IST O Suprimir lisado ensamblador
.8IST O Mesaurar lisado ensamblador
Comentarios
9E::E3T O 9omenario
#ensa$es
SE@T O Emiir un mensa#e durane el ensambla#e
Control del listado de los bloues asociados a una
condicin falsa
.8=9E3+ O 8isar blo"ues asociados a una condici6n falsa
.S=9E3+ O Suprimir ese lisado mencionado arriba
.T=9E3+ O In'erir el modo de lisado de los blo"ues...
Directivas de macro
+efinici6n de macros
:,9ME O 9omien7a macro
E3+: O =in macro
8E9,8 O +efine ei"ueas denro de macro
ECIT: O Terminar e;pansi6n de la macro
P@M5E O Borrar macros de la memoria
MEPT O Mepeir blo"ue de senencias un nAmero de
'eces
IMP O Mepeir blo"ue de senencias con un 'alor cada
'e7
IMP9 O Mepeir blo"ue de senencias con un car&cer
cada 'e7
Eperadores de macro
T O Eperador para concaenar s%mbolos o e;o
NN O Eperador para comenarios "ue no aparecer&n
en la e;pansi6n
U O Eperador para inerprear caraceres en senido
lieral
S O Eperador para con'erir una e;presi6n en un
nAmero
6
Buses y Perifricos. ITIS.99/00
Ensamblador 8086

Pro!ramaci6n en ensamblador.
El desarrollo de un pro!rama ensamblador se lle'a a cabo sobre un simple edior de e;o. Ha de
raba#arse en e;o plano( sin conroles( para lo "ue se recomienda el BlocD de 3oas( de FindoFs o el
Edi de :S+ES.
, coninuaci6n mosramos un pro!rama ensamblador ;86.
com_pantalla EQU 0B800h
tam_pantalla EQU 4000
DATOS SEGMENT
TEXTO DB "BUSES Y PERIFERICOS. EUI."!"!0"TITU#ACIO$ DE I$%E$IERO TEC$ICO DE
SISTE&AS"!"!0'('
TEXTE DB "A&I%OS Y A&I%AS BIE$ )E$IDOS A #AS PRACTICAS DE BUSES
PERIFERICOS"!"!0'('
DATOS ENDS
PI#A SE%&E$T
DB 127 DUP('p')
ap*nta+o, DB 'P'
PI#A E$DS
CODI%O SE%&E$T
ASSU&E CS-CODI%O DS-DATOS SS-PI#A
.o,,a_pantalla PROC
PUS/ ES
PUS/ AX
PUS/ CX
PUS/ DI
PUS/F
&O) AX com_pantalla
&O) ESAX
&O) CX 0tam_pantalla1234!
&O) DI tam_pantalla
&O) A# '5'
&O) A/ 06h
STD
REP STOS7
POPF
POP DI
POP CX
POP AX
POP ES
RET
E$DP
To+o_89_8mp8:a,-

&O) AX DATOS
&O) DS AX
&O) AX PI#A
&O) SS AX
&O) SP OFFSET ap*nta+o,
&O) A/0;h
&O) DX OFFSET TEXTO
I$T 2!h
Call .o,,a_pantalla

$O- &O) A/0;h
&O) DX OFFSET TEXTE
I$T 2!h
<- &O) A/ 4Ch
I$T 2!h
CODI%O E$DS
E$D To+o_89_8mp8:a,
I
Buses y Perifricos. ITIS.99/00
Ensamblador 8086

9omenarios-
En primer lu!ar enemos una direci'a de ensamblador ER@ por medio de la cual idenificamos un
s%mbolo con un 'alor. +urane el ensamblado( en cual"uier lu!ar del pro!rama en "ue 4ayamos uili7ado
el s%mbolo( ser& susiuido por su 'alor.
, coninuaci6n definimos un se!meno( indicado por la direci'a SE5:E3T. 8e llamamos +,TES(
por"ue es el "ue 'amos a uili7ar como se!meno de daos. +enro de l podemos obser'ar el uso una
direci'a de reser'a de memoria- +B. Esa direci'a reser'a byes y e;isen mAliples maneras de indicar
el nAmero. 8o "ue fi!ura a la i7"uierda de la direci'a es la Ei"uea( "ue 'amos a uili7ar denro del
pro!rama para acceder a la primera posici6n de memoria "ue 'amos a reser'ar. Esudiamos la l%nea "ue
comien7a con la ei"uea TECTE-
Primero se reser'an anos byes como caraceres 4ay en la cadena. Se e;cluyen las comillas( "ue son los
delimiadores de la cadena. 8a coma es un separador( no implica reser'a de byes. , coninuaci6n 'iene
un nAmero( con ello soliciamos "ue reser'e un bye con el 'alor 1)4. 8os si!uienes elemenos son
seme#anes a los descrios e;cepo el Alimo- VWX( con ese indicamos "ue "ueremos reser'ar un bye con el
car&cer ascii encerrado enre comillas simples. 8as comillas simples son un delimiador de car&cer.
El fin de un se!meno 'iene especificado por la direci'a E3+S
+eba#o definimos oro se!meno "ue 'a a ser el de pila. 3o es realmene necesario si no 4acemos un uso
abusi'o de la pila por"ue el propio ensamblador se encar!a de !enerar un pe"ue$o se!meno de pila e
iniciali7ar los re!isros perinenes. 3o obsane lo 4emos definido( en cuyo caso nosoros debemos
iniciali7ar los re!isros en el pro!rama.
,"u% usamos la direci'a +B( pero para reser'ar espacio uili7amos 10I +@P.VpX/( con eso esamos
diciendo "ue reser'e 10I byes y "ue los inicialice al car&cer VpX. .eso iene nin!una rele'ancia en lo "ue respeca
al mane#o de la pila( es una cuesi6n esica/
apuntador es la ei"uea "ue 'amos a uili7ar para iniciali7ar el Punero de Pila.
Jiene a coninuaci6n la definici6n de oro se!meno. , ese le llamamos c6di!o por"ue 'a a conener el
pro!rama ensamblador.
8a direci'a ,SS@:E es un indicador para el ensamblador donde le e;plicamos para "u 'amos a
uili7ar cada uno de los se!menos definidos. ,"u% le esamos indicando "ue el se!meno +,TES 'a a ser
el se!meno de daos del pro!rama y "ue uilice por defeco el re!isro de se!meno +S cada 'e7 "ue
aludamos a una ei"uea de las definidas denro de ese se!meno. 8o mismo 4acemos para el se!meno
de c6di!o y el se!meno de pila. E#o- esa direci'a no iniciali7a los re!isros( sal'o el 9S( as% "ue 4abr&
"ue 4acerlo en el pro!rama.
El pro!rama.
En el pro!rama podemos 'er primero una definici6n de ruina. Ysa 'iene encerrada enre dos difeci'as
PME9 y E3+P. 3auralmene #uno a PME9 es& la ei"uea "ue nos ser'ir& para in'ocar a la ruina.
8a ei"uea TodoZesZempe7ar marca el comien7o del pro!rama. Es en ese puno donde empie7a a
e#ecuarse el pro!rama. Para indic&rselo al ensamblador 4ay "ue poner al final del arc4i'o una direci'a
E3+ con el nombre de la ei"uea. Esa acci6n es esricamene necesaria para "ue el procesador empiece
a e#ecuar el c6di!o en ese puno precisamene y no desde el comien7o de se!meno como lo 4ar%a de
forma naural.
8as primera insrucciones "ue se e#ecuan son las "ue iniciali7an los re!isros de se!meno. Primero
iniciali7amos el re!isro +S( despus el SS y despus el SP. Ebser'ar "ue lo 4acemos mediane el re!isro
,C( eso es por"ue no es posible mo'er daos inmediaos direcamene a un re!isro de se!meno.
Si esudiamos el c6di!o podemos 'er al!unos e#emplos de uso de la inerrupci6n 014 con la funci6n
,4<94
Ebser'ar "ue lo Alimo "ue se e#ecua es una inerrupci6n 014 con la funci6n ,H<*94. Esa llamada es la
"ue permie a procesador 'ol'er al sisema operai'o. Es esricamene necesario incluir como insrucci6n
final un reorno al sisema operai'o( esa es una de las forma( pero 4ay oras.
8
Buses y Perifricos. ITIS.99/00
Ensamblador 8086

Ensamblado.
@na 'e7 "ue enemos ediado el pro!rama debemos ensamblarlo. Para ello uili7amos el comando asm
tasm [/zi]ejemplo.asm
el par&mero /zi es opcional para el ensamblado( pero necesario si "ueremos raba#ar con el urbo
debu!!er. Ese comando de'ol'er& un arc4i'o ejemplo.obj( al "ue someeremos al linDado-
tlink [/v] ejemplo.obj
el par&mero /v es opcional para el linDado( pero necesario si "ueremos raba#ar con el urbo debu!!er.
El resulado de ese comando es el arc4i'o e#ecuable ejemplo.exe.
Para e#ecuar el arc4i'o in'ocamos su nombre como un comando.
Turbo debu!!er.
El urbo debu!!er es una 4erramiena "ue nos permie anali7ar la e#ecuci6n del c6di!o( su efeco en los
re!isros y la memoria
Para uili7arlo( enemos "ue in'ocarlo con el nombre del e#ecuable "ue "ueremos anali7ar como
par&mero- td ejemplo.exe.
8o primero "ue debe aparecer es una 'enana con el c6di!o ensamblador del pro!rama. Si no es as% es "ue
en al!uno de los pasos de ensamblado 4emos in'ocado al comando sin el adecuado par&mero.
:enA- M@3
,"u% podemos enconrar las opciones de e#ecuci6n- paso a paso( paso a paso sal&ndose las llamadas a
ruina .las e#ecua como un odo/( e#ecuar 4asa donde es& el cursor( ec. 8o m&s rele'ane de odo eso
es "ue 4ay "ue reali7ar un [pro!ram rese\ para iniciar una nue'a e#ecuci6n.
Si el pro!rama muesra daos por panalla( para 'er la panalla de e#ecuci6n 4ay "ue pulsar alO=1( y para
reornar al debu!!er( cual"uier ecla.
:enA- JIEP
8o ineresane de e#ecuar un pro!rama en el debu!!er es obser'ar los cambios en los re!isros y la
memoria. 8a opci6n m&s ineresane de ese menA es 9P@. 9uando pulsas esa opci6n se abre una 'enana
compusa- arriba a la i7"uierda aparece el c6di!o( a la derec4a los re!isros y deba#o del c6di!o( la
memoria. 9uando e#ecuamos paso a paso podemos 'er el cursor mo'indose a cada nue'a insrucci6n y
las modificaciones en los re!isros. 9ada sub'enana iene su propio menA local- los re!isros pueden
'erse como )0 bis o 16bis y pueden modificarse a 'olunad( la 'enana de la memoria puede locali7arse
en cual"uier direcci6n y modificarse a 'olunad( ec.
Eros submenA de JIEP de iners son- Jariables( donde podemos 'er los conenidos de las 'ariables de
nuesro pro!rama .una 'ariable es una ei"uea definida en un se!meno de daos/( +ump( "ue nos
muesra ora 'enana de memoria( Me!isers( ora 'enana de re!isros( :6dule( "ue muesra el c6di!o
fuene( ec.
Eras enradas nos permien inroducir breaDpoins( modificar conenidos de memoria a ra's de las
'ariables( ec( ec(ec.
5u%a de pro!ramaci6n en len!ua#e ensamblador. OO 8as Palmas de 5ran 9anaria - @ni'ersidad de 8as
Palmas de 5ran 9anaria( Escuela @ni'ersiaria de Inform&ica( 199*
)6 p. N )0 cm
ISB3 8*8098018*
I3= 681.)1.0 P,+ !ui
9
Buses y Perifricos. ITIS.99/00
Ensamblador 8086

Scanlon( 8eo Q.
80086 assembly lan!ua!e on :SO+ES compuer / 8eo Q. Scanlon. OO 3eF BorD - Brady( 1986
)16 p. N 0* cm.
ISB3 089)0)6188
I3= 800.90 S9, oc4
T4orne( :ic4ael
Pro!rammin! 4e 8086/8888 for 4e IB: P9 and compaibles / :ic4ael T4orne. OO :enlo ParD
.9alifornia/ - Ben#amin 9ummin!s( 1986
CI( )98 p. N 0) cm.
ISB3 0801)100*I
I3= 681.)1.0 THE pro
:SO+ES con ayuda del ensamblador / :arine Trio( QeanO:ic4el Trio. OO :adrid - Paraninfo( 1989
)80 p. N 0* cm ? 1 dis"uee 1 1/*
ISB3 8*08)16880
I3= 800.90 TMI msd BI5 SO0
Ensamblador ;86-
4p-//FFF.ee.bilDen.edu.r/]ee010/
4p-//FFF.iro.umonreal.ca/]feeley/cours/if00*0/doc/assembly/
Inerrupciones +ES-
4p-//spiDe.scu.edu.au/]barry/inerrups.4ml^a40a
,cceso a disco-
4p-//4ome.elepor.com/]brainy/disDaccess.4m
10

También podría gustarte