Está en la página 1de 106

j@gm-1999. Pg.

:1

CURSO DE PROGRA M A CION LENGUAJE ENSA M BLA DOR


Introduccin.
Los traductores se dividen en dos grupos dependiendo de entre engua"e #uente $ a re aci!n

engua"e o%"eto& Cuando una instrucci!n de un

engua"e #uente nos genera una 'nica instrucci!n nu () rica (*+uina deci(os +ue ese engua"e #uente es Ensa(% ador& Cuando a instrucci!n si(%! ica de engua"e #uente ,co(o Basic- Co%o traductor +ue rea i0a a

.ortran- etc/ nos genera varias instrucciones (*+uina o varias instrucciones si(%! icas de otro engua"e- deci(os +ue e trans#or(aci!n es un co(pi ador& Las caracter1sticas #unda(enta es de un Ensa(% adores +ue cada una de sus sentencias es una codi#icaci!n si(%! ica de una instrucci!n nu ()rica (*+uina& Otra caracter1stica +ue presenta es +ue nos per(ite nive & Progra(ar en Ensa(% ador es co(o progra(ar en un si(%! ico& engua"e (*+uina egar a usar cua +uier recurso de siste(a- cosa +ue no nos per(iten os engua"e de a to

$a +ue 2a$ una identi# icaci!n entre engua"e (*+uina de 3 $ 4 $ un engua"e

j@gm-1999. Pg.:2

Longitud de los Datos.


Los tipos principa es de datos per(itidos por os (icro5 progra(a de Inte tiene una ongitud de pa a%ras de 4- 6- 7- 48 $ 9: %its $ se deno (inanrespectiva(ente- Bit-Ni%% e-B$te- Pa a%ra-Do% e Pa a%ra&
; 8 < 6 9 : 4 3

Ni%% e= Superior

In#erior

Los n' (eros deci(a es se pueden a (acenar de varias #or(as- co(o por e"e(p o= 5Dese (pa+uetado- donde cada %$te contiene un d1gito& E"e(p o= 4696
34 36 39 36 3333 3334 3333 3433 3333 3344 3333 3433

5E(pa+uetado- donde cada %$te contiene dos d1gito& E"e(p o= 4696


46 96 3334 3433 3344 3433

5Agrupaciones superiores a %$te= Pa a%ra : %$tes& Do% e Pa a%ra : pa a%ras Cu*drup e Pa a%ra 6 pa a%ras P*rra#o 48 %$tes& P*gina :<8 %$tes ,nor(a (ente/& Seg (ento 86> %$tes , nor(a (ente/&

j@gm-1999. Pg.:3

Origen y destino.
Los t)r(inos origen $ destino se usan para distinguir a situaci!n de operandos especi#icados por as instrucciones de progra(aci!n& E"= M O ?
a@ - %@ A BB es e operando origen $ AB es e operando destino&

os

E#ectiva(ente- a instrucci!n signi#ica&& &C(over e dato contenido en e operando origen ,BB/ a operando destino ,AB/C&

j@gm-1999. Pg.:4

Fa milias de Procesadores 8086.

Procesad or 7378 F 7377 73478 F 73477

Modos disponi % es

Me ( oria Direccio na% e

Da(aEo de Re 5 gistro

Rea

4 MegaB

48 %its

Rea Rea $ Protegi 5

4 MegaB

48 %its

73:78

do Rea $ Protegi 5

48 MegaB

48 %its

73978

do Rea $ Protegi 5

6 GigaB

48 o 9: %its

73678

do

6 GigaB

48 o 9: %its

En (odo Rea so o se puede e"ecutar a proceso pueden ser activados a a ve0&

a ve0 un proceso& E siste(a

operativo DOS so o #unciona en (odo rea &En e (odo Protegido- (*s de un

j@gm-1999. Pg.:5

Arquitectura de Seg m e ntos.


?a (os a de#inir registros co(o e e(entos con un n' (ero deter(inado de %its +ue usa e procesador para 2acer unas deter(inadas operaciones& ?a (os a de#inirseg(ento co(o una porci!n de (e ( oria se eccionada por e procesador para rea i0arcierto tipo de operaciones& Con a egada de procesadores en (odo protegido- a ar+uitectura de os seg(entos puedan separarse en % o+ues e an0a(iento de as os 48 %itsos

seg(ento consigui! +ue

di#erentes para proteger os de interacciones indesea% es&La ar+uitectura de seg(entos rea i0! otro ca(%io signi#icativo con procesadores de 9: %its- e(pe0ando con e i(itaciones de (e ( oria de siendo- ade (*spaginaci!n para (antener 73978- +ue (ini(i0an

a ar+uitectura de seg(entos de a protecci!n de

co(pati% es con )stos de 48 %its& A (%os o#recen os seg(entos& En DOS

seg(entos se asignan nor(a (ente ad$acentes uno a otro&

Asignaci!n Progra(a Modo Rea

Me ( oria

Seg(ento 3

4G direcci!n disponi% e

Seg(ento 4

Siguiente direcci!n a partirde seg( ento3

j@gm-1999. Pg.:6

Asignaci!n Progra(a Modo Protegido

Me ( oria

Seg(ento 3

4G direcci!n disponi% een a guna parte de (e ( oria

Siguiente direcci!n despu)s de seg(ento3- en a guna parte de Seg(ento 4 (e ( oria

En (odo Protegido os seg(ento estar1an en cua +uier parte de (e ( oria& E progra(ador no sa%e donde est*n u%icados $ no tiene ning'n contro so%re e os& Los seg(entos pueden inc uso (overse a una nueva posici!n de (e ( oria o ca(%iarse a disco (ientras +ue e progra(a se est* e"ecutando&

Direcciona miento de los seg m e ntos.


Es un (ecanis(o interior +ue co(%ina e va or de seg(ento $ un va or de desp a0a(iento para crear una direcci!n& Las : partes representan una direcci!n Hseg(ento=desp a0a(ientoH&

Me (oria

Me (oria

I55 5 4 %$te 5 5 5 J

I55 5 4 %$te 5 5 5 J

3333=3333

3334=3333

3333=3334

3334=3334

& Seg(ento 3

& Seg(ento 4

3333=....

3334=....

La porci!n de

seg(ento es sie(pre de 48 %its& La porci!n de

desp a0a(iento es de 48 $ 9: %its&En (odo rea e va or de seg(ento es una direcci!n #1sica+ue tiene una re aci!n arit ()tica con e desp a0a(iento& E seg(ento $ e desp a0a(iento crean "unto una direcci!n #1sica de :3 %its-con a +ue se puede acceder a un MegaB de (e ( oria ,: /-aun+ue- por
:3

e"e(p o- e siste(a operativo de IBM usa so%re 863> de (e ( oria por progra(a& ?a (os a considerar-por de#ecto-+ue trata(os con un desp a0a(iento de 48 %its& E seg(ento se eccionar* una regi!n de 86> $ usare(os e desp a0a(iento para se eccionar 4 %$te dentro de esa regi!n& La #or(a de 2acer o ser1a= 4GE procesador desp a0a a direcci!n de seg(ento 6 posi ciones %inarias a a i0+uierda $ a re ena con 3& Este #unciona(iento tiene e e#ecto de (u tip icar a direcci!n de seg(ento por 48&

:GE procesador aEade esta direcci!n de seg(ento de :3 %its resu tante a a direcci!n de desp a0a(iento de 48 %its& La direcci!n de a(ada desp a0a(iento no se ca(%ia& 9GE procesador usa a direcci!n de :3 %its resu tante- a (e nudo direccionado& E"e(p o=Hexadecimal --> direcci!n #1sica- a acceder a una posici!n en e MegaB de espacio

2 : 1

Bi a!i" ------> 0101 0011 1100 0010:0001 0000 0111 1010 1# 0101 0011 1100 0010 0000 2# 0001 0000 0111 1010 $

KKKKKKKKKKKKKKKKKKKKKKKKKKKKKK 0101 0100 1100 1001 1010 5 4 C 9 A %i!ecci& '()ica

E"e(p o=

Hexadecimal --> 1

'

7: 3

Bi a!i" ------> 0001 0011 1111 0111:0011 1000 1010 1100 1# 0001 0011 1111 0111 0000 2# 0011 1000 1010 1100 $

KKKKKKKKKKKKKKKKKKKKKKKKKKKKKK 0001 0111 1000 0001 1100 1 7 * 1 C %i!ecci& '()ica

Cuando tra%a"a(os en Ensa(% ador regiones de 86>& Estas ser1an= 5 Seg (ento de C!digo +ue contiene progra(a +ue se est* e"ecutando&

a (e ( oria

a dividi(os en 6

os c!digo de instrucci!n e

5 Seg (ento de Datos +ue guarda as varia% es de progra(a& 5 Seg (ento de Pi acon in#or(aci!n re#erente a a pi a& 5 Seg (ento E@tra o *rea de datos co(p e(entario- usada genera (ente con operaciones con cadenas& Las direcci!n %ase actua es de cada seg(ento se guardan en registros punteros especia es de 48 o 9: %its-deno (inados Registro de Seg (ento&

Ti os de !egistros.
Dodos os procesadores 7378 tiene a (is(o %ase de registros de 48 %its& Se puede acceder a a gunos registros co(o : registros separados de 7 %its& En e 73978F678 se puede acceder a registros de 9: %its&

L LoL ,Ba"a/ Registro de Datos M Mig2 ,A ta/

AM

AL

AB= Acu(u ador

BM

BL

BB= Base

CM

CL

CB= Contador

DM

DL

DB= E@tra

7 %its

7 Bits

Dota 48 %its

AB= .unciona co(o AC en a gunas ocasiones& Rea i0a operaciones co(o entradaFsa ida de datos- (u tip icaci!n- divisi!n- operaciones con deci(a es codi#icados en %inario-etc& BB= .unciona co(o registro Base- en a gunas ocasiones- para re#erenciar direcciones de (e ( oria En estos casos (antiene co(ien0o de ta% a o (atrices- en va ores de desp a0a(iento& a +ue a direcci!n de %asea direcci!n se deter(ina usando

CB= .unciona co(o registro Contador-en a gunas ocasiones- es decir-cuenta e n' (ero de %its o pa a%ras en una deter(inada cadena de datos durante os operaciones con cadenas& E"= Si se

va a (over de un *rea de ( e ( oria a otra n pa a%ras- CB (antiene inicia ( ente e evando a cuenta de a pa a%ra o %$te +ue va siendo

n' (ero tota de pa a%ras a desp a0ar tras adada&

En

as instrucciones de desp a0a(iento $ rotaci!n CL se usa co(o

contador& DB= Se usa en a (u tip icaci!n para (antener parte de producto de 9: %its o en usado& as divis& para (antener e va or de resto& N en operaciones de puerto de EFS EntradaFSa ida de datos para especi#icar a direcci!n de

Registro Punteros e Indices

SP

SP= Puntero de Pi a

BP

BP= Puntero de Base

SI

SI=Indice de Origen

DI

DI= Indice Destino

48 %its

Los registros Indices SI $ DI $ os registros Punteros SP $ BP guardan os va ores de desp a0a(iento e(p eados para e +ue se pueden usar operaciones arit ()ticas $ os previos& SP= Apunta a a posici!n de a ci(a de a pi a de seg(ento de pi a en (e ( oria& Es un registro usado para guardar un va or de desp a0a(iento +ue acceso a deter(inadas os 6 registros es os !gicas de (odo +ue posiciones de (e ( oria Una caracter1stica i(portante de

va ores de desp a0a(iento +ue a (acenan pueden ser e resu tado de c* cu5

direcciona

a posici!n de un operando origen durante operaciones de

trata(iento de cadenas& BP= Apunta a una 0ona dentro de a pi a dedicada a a (acena(iento de datos& SI= Es usado co(o registro 1ndice en ciertos (odos de direcciona(iento indirecto&Da(%i)n puede guardar un va or de desp a0a(iento indirecto&Se usa para a (acenar un desp a0a(iento +ue direcciona a posici!n de un operando origen durante operaciones de trata(iento de cadenas& DI= Da(%i)n se usa co(o registro 1ndice en deter(inados (odos de direcciona(iento indirecto& Ade (*s cadenas& a (acena un desp a0a(iento de direcci!n- a posici!n de un operando destino durante operaciones con

Registro de Seg(entos

CS

CS= Seg(ento de C!digo

DS

DS= Seg(ento de Dato

SS

SS= Seg(ento de Pi a

ES

ES= Seg(ento E@tra

48 %its

Las *reas de (e ( oria asignadas a c!digo de progra(a- datos $ pi a se direccionan por separado a pesar de poder so aparse& En un (o (ento dado 2a$ sie(pre 6 % o+ues disponi% es de (e ( oria direcciona% e deno (inadas seg(ento& Cada uno de os seg(ento sue e tener una ongitud de 86>& Los registros de seg(ento CS- DS- SS $ ES se usan para apun tar a %ases de os 6 seg(ento de (e ( oria direccion% es= " #l seg m e nto de cdigo. " #l seg m e nto de datos. " #l seg m e nto de ila. " #l seg m e nto e$tra. Para deter(inar una direcciones en e seg(ento de c!digo tendre(os +ue rea i0ar e desp a0a(iento de 6 %its 2acia a i0+uierda de registro CS poniendo a 3 os %its 3- 4- : $ 9& Lo +ue e+uiva e a ( u tip icar CS por 48& Su (ando a continuaci!n e va or de 48 %its a (acenado en IP& La direcci!n dentro de os otro 9 registros se ca cu a si(i ar(ente& Las co(%inaciones de registro de seg(ento $ desp a0a(iento depende de os tipos de operaciones +ue se est) e"ecutando& Por o(isi!n se asu(e +ue a direcci!n de un operando est* en e seg(ento de datos $ e registro de seg(ento a usar es por tanto DS con e desp a0a(iento BB- SI o DI& as

DS = BB SI DI seg(=desp a0 CS = IP SS = SP BP ES = DI SI

Si e desp a0a(iento est* a (acenado en un registro puntero co(o SP o BP se asu(e +ue e operando est* en e seg(ento de pi a $- por tanto- e

registro de seg(ento de pi a SS se usa co(o %ase& Si a direcci!n de operando es e DI o SI&


Puntero de Instrucci!n

destino de una instrucci!n de cadena- e

registro de

seg(ento E@tra ES constitu$e a %ase $ e desp a0a(iento se a (acena en

IP=Puntero de instrucci!n

48 %its

IP se usa para oca i0ar a posici!n de

a pr!@i(a instrucci!n a e"ecutar e registro CS contiene a

dentro de seg(ento de c!digo en curso&Co (o de seg(ento se desde CS&


4< & & & 44 43 O 7 ; 8 & 6 & : & 3

direcci!n %ase de seg(ento de c!digo- cua +uier direcci!n de :3 %its dentro oca i0ar* e(p eando cua +uier IP co(o desp a0a(iento

O.

D.

I.

D.

S.

P.

A.

P.

C.

.LAGS= Registro de Indicadores

Los %its 3- :- 6- 8- ; $ 44 son indicadores de condici!n +ue re# e"an os resu tados de operaciones de progra(a& Los %its de 7 a 43 son indicadores de contro &Los indicadores de condici!n pueden co(pro%arse tras e"ecutar deter(inadas operaciones usando e resu tado de to(a de decisiones de vi#ur caci!n condiciona & a co(pro%aci!n en a

Indicadores de Condicin: Bit 3& Indicador de


acarreo ,C./ Se pone a 4 si en una operaci!n de su(a o resta se

produce un acarreo por e@ceso o por de#ecto&Si una operaci!n no produce acarreo estar* a 3&

Bit :& Indicador de

paridad ,P./ Se pone a 4 si e resu tado de una operaci!n tiene un

n' (ero par de %its a 4& N se pone a 3 cuando e resu tado tiene un n' (ero i(par de %its a 4&

Bit 6& Indicador au@i iarde

acarreo ,A./ .unciona igua +ue e anterior-pero se usa para

seEa ar un acarreo por e@ceso o de#ecto de os 6 %its ( enos signi #icativos en os va ores de BCD ,deci(a codi#icado en %inario/&

Bit 8& Indicador de

cero ,P./ Se pone a 4 si e resu tado de una operaci!n es 3- esto

ocurre- por e"e(p o- despu)s de usar una instrucci!n de resta o decre( ento o a 2acer una co(paraci!n entre : n' (ero de igua va or&Para resu tados distintos de 3 e indicador estar* a 3&

Bit ;& Indicador de

signo ,S./ Indica si un n' (ero es positivo o negativo en os t)r(inos

de as arit()ticas de co(p e(ento a :& Se usa e %its (*s signi#icati vo de cua +uier n' (ero en co(p e(ento : para indicar si dic2o n' (ero es positivo cuando est* a 3 o negativo cuando est* a 4& N se copia en e %it; de registro de indicadores&

Bit 44& Indicador de

des%orda(iento ,O./ Cua +uier resu tado +ue e@ceda os 1(ites de

ta(aEo de un operando provoca un des%orda(iento ,over# oL/ $ activar* este indicador a 4&

Registro indicador de Control: Bit 7&


Indicador de intercepci!n ,D./ Se pone a 4 para indicar +ue e

(odo de

intercepci!n ,DRAP/ est* activado- 2aciendo +ue e (icro5 procesador e"ecute a instrucci!n paso a paso& E procesador genera instruc ci!n una detr*s de otra& Un DEBU G GING puede usar este rango para procesar un progra(a instrucci!n a instruc ci!n&

Bit O& Indicador de

interrupci!n ,I./ Se pone a 3 para desactivar a interrupci!n e@terna $ a instrucci!n CLI ,desactiva interrupci!n e@terna/ $ SDI

a 4 para activar a& I. se contro a con ,activa interrupci!n e@terna/&

Bit 43&

Indicador de direcci!n ,D./ SeEa a

a direcci!n 2acia

a +ue se procesa

instrucci!n de cadena en re aci!n con SI $ DI& Se pone a 3 para a cadena +ue se procesa 2acia arri%a- o sea- 2acia direcciones de (e ( oria (*s a tas $ se pone a 4 para as cadenas +ue se procesan 2acia a%a"o-o sea- 2acia direccio nes (*s %a"as&

Solo

ara 80%86 & '86 &

Los procesadores de este tipo usan registros de 7 $ 48 %its igua +ue e resto de e@cepto a #a(i ia de os 7378& Dodos os registros se e@tienden a 9: %its os registros de seg(ento de 48 %its& Los registros e@tendidos

co(ien0an con a etra E= e regis tro e@tendido de AB es EAB& Los procesadores 978 F 678 tienen : registros de seg(ento adiciona es= .S $ GS&

Registro de Datos E@tendidos M L

L LoL ,Ba"a/ M Mig2 ,A ta/

AM

AB

AL

EAB= Acu(u ador

BM

BB

BL

EBB= Base

CM

CB

CL

ECB= Contador

DM

DB 7 %&

DL 7 %&

EDB= E@tra

48 %its

48 %its

Dota 9: %its

Registro Puntero e Indice E@tendido

L LoL ,Ba"a/ M Mig2 ,A ta/

SP

ESP= Puntero de Pi a

BP

EBP= Puntero de Base

SI

ESI=Indice de Orden

DI

EDI=Indice de Destino

M 48 %its

L 48 %its Dota 9: %its

Puntero de Instrucci!n

IP

EIP=Reg

48 %its

48 %its

Dota 9: %its

Registro de Seg(entos E@tendidos

CS

CS= Seg(entode C!digo

DS

DS= Seg(entode Dato

SS

SS= Seg(entode Pi a

ES

ES= Seg(ento E@tra

.S

.S= Seg(ento E@tra

GS

GS= Seg(ento E@tra

48 %its

94

93

&& & & & & & & & & 4O

47

4;

48

4<

46

49

4:

44

43

& & & & & & & 43

IO P

O.

D.

C.

IOP indica e nive de protecci!n para operaciones de EntradaFSa ida& E %it46 ,N/ se usa en re aci!n con procesos anidados& Q R Q ? Q A
para reanudaci!n de procesos& est* re acionado con e (odo 7378 virtua & est* re acionado con e contro de a ineaci!n&

Sentencias.
Una sentencia ,o instrucci!n/ en ensa(% ador puede tener a estructura siguiente= R No (%re S R Operaci!n S R Operandos S R ACo(entario S E no m (re nor(a (ente es una eti+ueta& La o eracin indica a acci!n +ue se va a rea i0ar con os operandos- +ue son a ista de uno o (*s ite(s con os +ue a instruc ci!n o directiva opera& E"=principio=M O ?

a@- ;

A (ove ( os e va or ; a reg a@

Una ista !gica puede contener co(o (*@i(o <4: caracteres $ ocupa 4 o (*s 1neas #1sica&E@tender una 1nea !gica en : o (*s 1neas #1sicase rea i0a poniendo e car*cter HTHco(o e ' ti(o car*cter- +ue no es un espacio en % anco- antes de co(entario o #in de 1nea& Puede ponerse un co(entario despu)s de HTH & E"=

&i#,@J3/

TA@ de%e ser positivo TAa@ de%e ser negativo A c@ de%e ser cero

UU ,a@I3/ UU ,c@V3/ M O ? d@-:32 &endi#

E"=

co(entW

En este e"e(p o se asignar* este te@to $ este c!digo a co(entario 2asta +ue apare0ca e s1(%o o=

M O ?E a@-3

W M O ?E c@-4

) o *i mientos de datos.

En un (icro5 procesador 7378- e "uego de registros es (u$ reducido& Evidente(ente esto no es su#iciente para varia% es de pecu iaridades ,E"=
registro de %andera/

evar en registros todas

as

progra(a Ade (*s- a gunos de estos regis tros presentan


e

+ue

os 2acen inservi% es para se

a (acenar va ores& Por todo esto-

as varia % es de un progra(a

a (acenan en (e ( oria $ se traen a registro s! o cuando son necesarias para a g'n ca cu o&Despu)s- si es necesario actua i0ar su va or se vue ve a evar a (e ( oria e contenido de registro +ue proceda& A go $a (encionado es +ue ( uc2os de os registros dese(peEan pape es concretos en a gunas instrucciones

E"e(p o= para un %uc e- e contador se sue e

evar casi sie(pre en e registro CB& O para una

(u tip icaci!n es necesario cargar uno de os #actores en AB /&

Co (o $a vi(os- para todas

as operaciones de (ovi(ientos de datos

e@iste una instrucci!n de engua"e ensa(% ador deno (inada M O?- donde os operandos son :- escritos separados por co(as= e pri(ero es e destino $ e segundo e origen ,E"=M O ?
a@- %@ /&

Evidente(ente- os operandos de%en de tener

a (is(a

ongitud ,V

n' (ero de %its/&Pueden ser registros-posiciones de (e ( oria- etc&Mace (os a+u1 un pe+ueEo inciso para anotar +ue tradiciona (ente os ensa(% adores no distinguen entre (in'scu as $ (a$'scu as& Danto as instrucciones co(o os identi#icadores pode (os escri %ir os

co(o +uera(os&

M O ? a@-4 (ov BB-: M O ? CB-9

(ov d@-6

Estas instrucciones cargan AB con 4- BB con :- &&& E dato +ue se carga en e registro va inc uido en de trans#erencia $ a +ue re#erencia 2a$ +ue trans#erir& As1- os c!digo de as 6 instrucciones en 2e@adeci(a son= a propia instruc ci!n

siguiendo a c!digo de operaci!n +ue indica +ue se trata de una instrucci!n

C!digo Operaci!n M O? a@-4 M O? %@-: M O? c@-9 M O? d@-6 BB BB BO BA 3433 3:33 3933 3633 48 %its

La estructura de as 6 instrucciones es igua &De principio e pri(er %$te es e c!digo de operaci!n +ue identi#ica a instruc ci!n +ue se est* tratando& Na +ue con este c!digo de operaci!n es necesario un va or de este ta(aEo ,48 %its/para co(p etar a instrucci!n- co(o pode (os apreciar en os otros : %$tes& Estos %$tes constitu$en un va or de 48 %its a (acenados en e orden INDEL- es decir- e %it (enos signi#icativo e pri(ero $ e (*s signi#icativo despu)s& AM OO BM 33 AL O4 BL 3: BB AB

CM 33 DM 33

CL 39 DL 36 DB CB

Cuando +uere(os especi#icar a ensa(% ador +ue un nu (ero de%e ser interpretado co(o una direcci!n de (e ( oria a a +ue acceder escri%i(os e n' (ero entre corc2etes& As1 a si guiente instrucci!n carga en AB en DS=3333 $ en AM e contenido en DS=3334 a pa a%ra a (acenada en a direcci!n DS=3333& Es decir-carga en AL e %$te contenido

M O ? a@- R3S

DS=3333

:<

DS=3334

69

Me ( oria Da(aEo de Pa a%ra 4 %$te

E va or de AB ser1a=
AM AL

69

:<

En ca(%io a siguiente instrucci!n o +ue 2ace es a (acenar e va or 3 en e registro AB&

M O ? a@- 3

Es i(portante co(prender pri(era

a di#erencia entre

as : instruccio nes& La

eva corc2etes- se accede a

a (e ( oria $ e va or recogido se

a (acena en AB& En a segunda se a (acena en AB e va or 3 directa(ente sin acceder a (e ( oria& Por o tanto e va or de AB +uedar1a=
AM AL

Da(%i)n pode (os escri%iren una posici!n de (e ( oria e contenido de un registro&Con M OV [0],al a (acena (os en e contenido de AL en DS=335 33 Si AL es :<&&&

DS=3333

:<

DS=3334

Me (oria Da(aEo de Pa a%ra 4 %$te

Aun+ue as1 pode (os acceder a cua +uier posici!n de (e ( oria- en e seg(ento apuntado por DS- a (enudo- nos interesa acceder a a posici!n de (e ( oria indicada por e contenido de un registro&Por o(isi!n se asu(e +ue a direcci!n de un operando est* en e seg(ento de datos $ e registro de seg(ento a e(p ear es DS& Con e desp a0a(iento a (acenado en BB- SI o DI& Las instrucciones +ue 2e (os visto no nos sirven por+ue a direcci!n a a +ue accede va inc uida en #or(ato de os c!digo de instrucci!n& Para e o e@iste un a posici!n de a instruc ci!n M O? +ue nos per(ite acceder a

(e ( oria indicada por BB& As1 si BB contiene e va or <<AA2 se acceder* a esta posici!n de (e ( oria (ientras +ue si BB contiene e va or 43332 se acceder* a a posici!n 43332& Para esto escri%i(os entre corc2etes BB e ugar de dar directa(ente e n' (ero&

M O ? %@- :96<2 M O ? a@- R%@S

Con esto a (acena (os en AB e contenido de a direcci!n :96< $ :968 $a +ue AB es una pa a%ra&Si #uera AL o AM so o se a (acenar1a :96<& Por tantoen AM a (acena :96<2 $ en AL :9682& Por supuesto pode (os acceder a (e ( oria usando e registro BB para a escritura=

M O ? %@- :96<2 M O ? R%@S-a

En este caso- so o se (odi#ica e contenido de a direcci!n :96<2 $ no e de a :9682- $a +ue esta(os escri%iendo e contenido de un registros de 7 %its& Me (os usado en os e"e(p os os registros de datos BB- esto se de%e a os 7378 per(iten 'nica(ente acceder a a a contenida en e

+ue e "uego de instrucci!n de

direcci!n contenida en e registro de datos BB& No a

registros de datos AB- CB o DB& Na +ue so o disponer de un so o registro para acceder a (e ( oria resu ta inc!(odo 1ndices=SI $ DI& Estos dos registros per(iten todas as instrucciones vistas para BB- tanto para trans#erencia entre registros co(o para trans#erencia entre procesador $ (e ( oria& Pero no 2a$ ninguna #or(a de acceder por separado a os dos %$tes +ue o co(ponen& os 7378 incorporan otros : registros

Otro registro +ue se puede usar co(o BB- SI $ DI es e registro de puntero de %ase BP& A igua +ue en SI $ Di no se puede acceder por separado a os : %$tes de (a$or $ (enor peso& Pero a (a$or di#erencia es +ue por de#ecto se usa e registro de seg(ento SS para co( p etar a direcci!n de :3 %its&

DS

BB

SS

BP

SI

DI

.or(ato de Instrucci!n
MO? reg -reg

E"e(p o
M O? ae@- e%@

MO? (e ( -reg

M O? R%@S-a

MO? reg -(e (

M O? c2- R63##2S

MO? (e ( -in(ediato

M O? %$te ptr RdiS:<X73

MO? reg -in(ediato

M O? e%@- o####2

MO? seg(entoreg -reg 48

M O? ds- a@

MO? reg 48 -seg(entoreg

M O? a@- es

MO? (e ( -seg(entoreg

M O? RsiSes

MO? seg(entoreg -(e (

M O? ss-R4:962S

Ma$ varios puntos +ue de%e (os e@p icarde a ta% a= Reg= representa cua +uier registro de 7- 48 o 9: %its pero con restricci!n de +ue cuando de%en ser igua es& a

a operaci!n es M O? reg- reg a(%os

Me (= se re#iere a posiciones de (e ( oria& In(ediato= especi#ica +ue se de%e to(ar un va or inc uido en os c!digo de a propia instrucci!n co(o en e caso de
M O ? a@- <

en

donde < se deno (ina va or in(ediato& Seg (entoreg= puede ser cua +uier registro de seg(ento& Reg 48= indica cua +uier registro de 48 %its& La e@igencia en a gunos #or(atos de registros de 48 %its se de%e a +ue os registros de seg(ento nor(a es $ e@tendidos son de 48 %its todas as operaciones de (ovi(iento con estos registros se 2acen con registros de 48 %its& Co (o ve(os no es posi% e copiar directa(ente e contenido de un registro de seg(ento a otro& O cargar un registro de seg(ento con un va or in(ediato-sino +ue es necesario pasar por un registro inter(edio&

M O? es- ds

M O? a@- ds M O? es- a@

M O? es- <

M O? a@- < M O? ds- a@

Especi#icar e

registro CS co(o destino de

a instrucci!n M O?

est*

ro+i(ido - $a +ue 2ar1a +ue a e"ecuci!n sa tase a otro punto& Esto so o se per(ite a a instrucci!n de sa to&La (a$or1a de os 7378 paran a e"ecuci!n de progra(a a encontrar a& Uno de os #or(atos M O? interesantes es= M O? (e (- in(ediato& Per(ite introducir directa(ente en (e ( oria un va or sin a terar ning'n registro& Pero esto presenta un inconveniente- en os de(*s #or(atos sie(pre 2a$ un registro co(o destino u origen de #or(a +ue e ensa(% ador

deduce e ta(aEo de va or a (over& As1 en as instruccio nes&

M O ? a@- R6::32S M O ? a -R6::32S

La pri(era instrucci!n genera un acceso a (e ( oria de 48 %its +ue se descarga en un registro de ese ta(aEo& La segunda genera una ectura de 7 %its $a +ue A so o tiene esta ongitud&

M O ? R6::32S- 3

Nada indica a co(pi ador si e 3 es de 4 o de : %$tes& Ma$ dos posi% es instruccio nes (*+uina para esta 1nea de engua"e ensa( % ador= 4Y Una instrucci!n de escritura de 48 %its poniendo a 3 direcciones 6::32 $ 6::42& :Y Una instrucci!n de escritura de 7 %its poniendo a 3 so o os %its de a direcci!n 6::32& Por e o se 2ace necesario indicar a ensa(% ador de cua de trata& La sinta@is para esto se co(prende (e"or as1= E n' (ero 6::32 es as dos se os %its de as

an* ogo a un puntero $a +ue es un va or +ue se interpreta co(o direcciones de (e ( oria us*ndose en rea idad co(o e desp a0a(iento +ue co(p eta a direcci!n con DS& Este puntero puede ser de dos tipos= 5 Puntero a 4 %$te se de%e generar una instrucci!n de escri tura de 7 %its& 5 Puntero a 4 pa a%ra se de%e generar una instrucci!n de escritura de 48 %its& As1 para ac arar esto se usa=

M O? %$te ptr R6::32S-3 6::32 M O? Lord ptr R6::32S-3 6::32 $ 6::42

A pone a 3 so o e %$te de

a direcci!n

A pone a 3

os %$tes de

as direcciones

Me (os visto +ue pode (os acceder a

a (e ( oria co(poniendo

as

direcciones de di#erentes #or(as- especi#ic*ndo as directa(ente- en cu$o caso- e va or se inc u$e en a codi#icaci!n de a instrucci!n por (edio de os registros BB- SI- DI o BP& Pero en rea idad 2a$ ( uc2as #or(as de indicar co(o se de%en co(poner e desp a0a(iento& Estas (aneras de o%tener de#ecto& a direcci!n se deno (inan Modos de

Direcciona(iento $ cada uno tiene asignado un registro de seg(ento por

Deno (inaci!n

O%tenci!n Desp a0a5 (iento

Seg (e nto DS

E"e(p o

Direcciona(iento A%so uto Direcciona(iento Modos de Indirecto Direcciona(iento con Base ,BB/ Direcciona(iento Indirecto con Indice ,SI/ Direcciona(iento Indirecto con Indice ,DI/ Direcciona(iento Indirecto con %ase ,BP/

In(ediato

M O? a -3

BBZBB

DS

M O? c@R%@Z:S

SIZBB

DS

M O? d@RsiZ:S

DIZBB

DS

M O? RdiS-es

BPZBB

SS

M O? a@R%pZ6S

Direcciona(iento Indirecto con Base ,BB/ e Indice ,SI/ Direcciona(iento Indirecto con Base ,BB/ e Indice ,DI/ Direcciona(iento Indirecto con Base ,BP/ e Indice ,SI/ Direcciona(iento Indirecto con Base ,BP/ e Indice ,DI/ BPZDIZBB SS M O? a@R%pZdiS BPZSIZBB SS M O? dsR%pZsiS BBZ DIZBB DS M O? d@R%@ZdiS BBZSIZBB DS M O? R%@Zsi5 :S-c@

Puede apreciarse +ue todos os (odos ad (iten +ue despu)s de o%tener e va or de desp a0a(iento de un registro o de a su(a de dos- se aEada una constante a )ste- antes de generar a ectura-indicada por BB& Si se o(ite e va or BB se generan instruc ciones +ue no aEaden ning'n va or a desp a0a(iento o%tenido por os registros& Me (os visto +ue cada (odo usa un registro de seg(ento por de#ecto para co(poner nosotros& A nive de engua"e (*+uina o +ue se 2ace es aEadir a a instrucci!n un pre#i"ode 4 %$te +ue (odi#ica e co(porta(iento de a siguiente instrucci!n 2aciendo +ue use e registro de seg(ento correspondiente a pre#i"oen ugar de registro por de#ecto& Ma$ 6 pre#i"os distintos- uno para cada registro de seg(ento $ se deno (inan Pre#i"osde Seg (ento por convenio se aEade e pre#i"oin(ediato antes de a apertura de corc2etes o despu)s de PDR- si este aparece& As1 as siguientes instrucciones acceden a posici!n de (e ( oria dentro de a direcci!n co(p eta pero sie(pre es posi% e +ue e CPU use- no e registro de seg(ento por de#ecto- sino uno especi#icado por

seg(ento de c!digo de datos e@tra $ seg(ento de pi a-respectiva(ente&

M O ? a -cs=R%@Z6S M O ? Lord ptr ds=R%p5 3#2S-3 M O ? es=RdiSa M O ? Lord ptr ss=R%@S-3

Es interesante tener en cuenta +ue por e"e(p o=


)O, -($./ a$

)O,

ds0-($./ a$

son e+uiva entes& Na +ue si no se

indica nada e registro por de#ecto es DS& Da(%i)n es interesante resa tar +ue para acceder a una posici!n de un vector- +ue 2a$a sido previa(ente de#inido en e seg(ento de datos-usa(os os corc2etes& Seg mento de datos... ta% a Lord 433 dup ,3/ 4 pa a%ra con va or inicia 3& Seg mento de cdigo... M O? a@- ta% aRsiS M O? %@- 3 M O? a@- ta% aR<S M O? a@- ta% aZ< M O? a@- ta% aR%@SZ< M O? a@- ta% aR%@SRdiS e+uiva entes M O? a@- ta% aRdiSR%@S M O? a@- ta% aR%@ZdiS AB& M O? a@- Rta% aZ%@ZdiS M O? a@- R%@SRdiSZta% a A todas as sentencias (ueven a posici!n A indicada por BBZ DI dentro de a ta% a a A Dodas estas instrucciones ta(%i)n son A Donde SI act'a co(o 1ndice de vector& A todas as sentencias pasar1an a regis tro AB A e va or de a posici!n < de a ta% a pasa AB& A Esto ser1a e+uiva ente A ?ector de 433 posici!n-cada posi ci!n ser1a de

1onstantes.
Una constante entera es una serie de uno o (*s n' (eros seguidos de una %ase opciona especi#icada por una etra&
M O ? a@- :< M O ? a@- 3%92 &

Los n' (eros :< $ 3%9 son constantes enteras& La 2 indica 2e@adeci(a &Los distintos tipos de %ase&&& C%C o C$C CoC o C+C CdC o CtC C2C

a %ase

Binario=H%Hsi a %ase es (enor o igua +ue 43 Octa Deci(a =HdHsi a %ase es (enor o igua +ue 43 Me@adeci(a

Pueden indicarse en (a$'scu as o (in'scu as& Si no se indica- e ensa(% ador a interpreta directa(ente con a %ase actua &Por de#ecto es a deci(a -pero puede ca(%iarse con a sentencia RA DIB&&& radi@ 48
d% 44 d% 44t d% 34at

A %aseV48 ,2e@adeci(a /
A se interpreta co(o va or 442V4; A se interpreta co(o va or 44 ,en deci(a / V44 A genera un error-por +ue a no es un d1gito deci(a

radi@ :
d% 44

A %aseV: ,%inaria/
A se interpreta co(o e va or 44 ,%inario/V9

radi@ 43
d%44

A %aseV43 ,deci(a /
A se interpreta co(o e va or 44dV44

Los n' (eros 2e@adeci(a es sie(pre de%en co(en0ar con un d1gito de 3 a O& Si no es as1 $ co(ien0an por a guna etra 2a$ +ue aEa dir un 3 a principiopara distinguirentre s1(%o o 2e@adeci(a $ eti+ueta&

a%c2 ?&S& 3a%c2 2e@adeci(a

a%c2 es interpretado co(o una eti+ueta $ 3a%c2 co(o un n' (ero

Los d1gitos 2e@adeci(a es desde A a . pueden ser (a$'scu as $ (in'scu as&Se pueden de#inirconstantes enteras si(%! icas por a gunas de as siguientes asignaciones de datos o con E[U ,o con e signo CVC/& E[U&5 Diene co(o #unci!n a de asignar un no (%re si(%! ico a va or de una e@presi!n& E #or(ato es= no m bre EQ U expresin & La uti idad de esta directiva reside en 2acer (*s c ara $ egi% e as sentencias de un progra(a #uente rea i0ado en ensa(% ador& A contrario +ue en a directiva C2 C- e no(%re no puede rede#inirse-es decir per(anece invaria% e a e@presi!n asociada a o argo de todo e progra(a #uente ,a intentar rede#inircrea un error/& CE@presi!nC puede ser una constante nu ()rica- una re#erencia de direcciones- cua +uier co(%inaci!n de s1(%o os $ operaciones +ue pueda eva uarse co(o un va or nu ()rico u otro no(%re si(%! ico& Si un va or constante- o sea un no (%re- usado en nu (erosos ugares de c!digo #uente necesita ser ca(%iado se de%e (odi#icar a e@presi!n en un ugar so o- en ve0 de por todas as partes de c!digo #uente& E"e(p o=
co E[U 73 #i E[U :< A co u(na de una panta a,co V73/ A #i ade una panta a,#i V:</ A ta(aEo de una panta a,:333/

panta aE[U co X#i 1nea E[U #i ongitud dL 3

A varia% e tipo pa a%ra A %$teVpri(er %$te de ongitud

%$te E[U ptr ongitud cr E[U 49 c# E[U 43

A retorno de carro A principiode 1nea

Por de#ecto- e ta(aEo de pa a%ra para e@presiones de ) A S ) 9: %its&Se puede (odi#icarcon=

6.0 es de

OPDION EBPRE 9: OPDION EBPRE 48 OPDION M<43


ensa(% ador

A es err!neo ca(%iar e ta(aEo de pa a%ra una ve0 2a sido #i"ada

A a dos ' ti(as usan e ta(aEo #i"ode pa a%ra de 48 %its

opci!n

para

operaciones

(u$

espec1#icas de

O eradores.
Un operador es un (odi#icador +ue se usa en instrucciones de procesador& es una instrucci!n $ e operadores 2a$= 5 Operador Arit()tico-opera so%re va ores nu ()ricos& 5 Operador L!gico-opera so%re va ores %inarios %ita %it& 5 Operador Re aciona - co(para : va ores nu ()ricos o : direcciones de (e ( oria de (is(o seg(ento $ produce co(o resu ta do= 3 si re aci!n es #a sa-3####2 sies verdadera& 5 Operador de Atri%utos- per(ite rede#inir e atri%uto de una varia% e o eti+ueta&Los atri%utos para varia% es de (e ( oria pueden ser= %$te ,4 %$te/ s%$te ,%$te con signo/ Lord ,pa a%ra/ sLord ,pa a%ra con signo/ dLord ,do% e pa a%ra/ sdLord ,do% e pa a%ra con signo/ #Lord ,8 %$tes/ +Lord ,7 %$tes/ t%$te ,43 %$tes/ Los atri%utos para eti+uetas pueden ser= near cuando se puede re#erenciar desde dentro de seg(ento donde est* de#inida a eti+ueta& #ar cuando se puede re#erenciar desde #uera de seg(ento donde est* de#inida a eti+ueta& a ca(po de operandos de

una sentencia en ensa(% ador& Se puede usar varios operadores con


M O ? a@- R%@Z:S

La pa a%ra reservada CMO?C os tipos de

signo CZC es un operador& Entre

E ensa(% ador eva 'a e@presiones +ue contienen (*s de un operando seg'n as siguientes reg as= 4Y Sie(pre se e"ecutan antes as operaciones entre par)ntesis +ue ad$acentes& :Y Se e"ecutan pri(ero as operaciones %inarias de (*s priori dad& 9Y Las operaciones de igua prioridad se e"ecutan de i0+uierda a derec2a& 6Y Operaciones unarias de igua prioridad se e"ecutan de derec2a a i0+uierda& E orden de prioridad de todos os operadores est* en a ta% a= as

Prioridad 4 : 9 6 < 8 ; 7 O 43 44 4: 49 46

Operador ,/ RS SIPE \IDDM MAS]

LENGMD

,re#erencia un ca(po de un estructura/ = ,usado en pre#i"osde seg(ento/ CROO..SED MIGM Z O..SED LO \ SEG DMIS DNPE

MIG \ O R D

LO \ \ O R D

5 ,en operaciones unarias/ SML SMR

X F MOD Z E[ NOD AND OR BOR

5 ,en operaciones %ianrias/ EN LD LE GD GE

OPADDR

SMRD

DNPE

j@gm-1999. P g.: 37

I3ST! 4 1 1IO 3 # S
Instrucciones Aritm5ticas0 AD D, AD C, SUB, SBB, M U , IMU , DI!, IDI!, I"C, DEC

" AD D0 Rea i0a a su(a de dos operandos identi#ic*ndo os co(o origen $ destino- +uedando e resu tado de a su(a en e operando destino ,ADD destino-origen/&Los dos operandos de%en ser de (is(o tipo& E"e(p o=
ADD a@- %@ ADD si- di ADD R3S-a@ ADD a2- R%@S ADD %$te ptrRdi5 :S- : M O ? e%@- 69O74 ADD ea@- e%@

" AD 10 Se uti i0apara rea i0ar una su(a de 9: %its con registros de 48 %its& La su(a se rea i0ar1a igua - pero operando so%re 9: %its& En rea idad-pode (os desco(poner una su(a de 9: %its en dos su(as de 48 %its&Pri(ero- de%er1a(os su(ar os 48 %its de (enor peso de cada operando- a (acenando os 48 %its resu tantes co(o pa a%ras %a"a de resu tado& Despu)s- de%er1a(os su(ar os 48 %its de (a$or peso de cada operando- pero ade (*s de%er1a(os su(ar e acarreo de ' ti(o %it de a pa a%ras de (enor peso& As1- eva(os e#ectiva(ente e acarreo de %it 4< de os operandos a %it 48 ,esto se rea i0a uti i0ando e # ag de acarreo C./& As1- en e siguiente e"e(p o- se e su(ar1a a e va or de 9: %its contenido en DBAB- e va or de 9: %its contenido en CBBB&
c@ %@

j@gm-1999. P g.: 38

Z d@ d@ a@Va@ Z%@ si c#V4 ,si2a$ acarreo/-d@Vd@Zc@ Z4 sino d@Vd@ Zc@ a@ a@

E"e(p o=
ADD a@- %@ A Su (a os 48 %its ( *s %a"os-de"ando e acarreo,sise produce/ en C.

A ,. ag de Acarreo/ preparado para su(*rse o a os 48 %its (*s a tos& ADC d@- c@A Su (a os 48 %its ( *s a to- $ a ese resu tado se e su(a e acarreo ,si e@iste/

producido por a su(a de %@ Z a@& E resu tado de a su(a +ueda en a@ , a parte %a"a/ $ en d@ , a parte a ta/&

Nota=La uti i0aci!n de e . ag de acarreo ,C./ puede producir a veces a g'n pro% e(a& Si #uese as1-una so uci!n ser1a +ue- despu)s de e"ecutar a guna operaci!n +ue uti ice este # ag- e"ecutar ninguna otra %andera/& a instrucci!n CLC ,Borra a %andera de acarreo ,C./ sin a#ectar a

" S460 Rea i0a

a operaci!n de resta de un operando origen so%re un

operando destino& E resu tado +ueda a (acenado en e operando destino&&& .or(ato SUB destino-origenA ,destino V destino 5 origen/&

E"e(p o=
SUB c -d A En C se a (acena e va or resu tante de CL 5 DL& A En a posici!n de (e ( oria indicada- se a (acena e va or A resu tante de restar ea a direcci!n indicada DB&

SUB es=R%@S-d@

j@gm-1999. P g.: 39

SUB a -R%pZ6S

" S66 =Se uti i0apara rea i0aruna resta de 9: %its uti i0ando registros de 48 %its&E #or(ato es e (is(o +ue con ACDA de%e (os- desco(poner os operandos en #rag(entos de 48 %its $ co(en0ar a restar por a derec2a& En cada resta despu)s de a pri(era- de%e (os ca cu ar a resta $ de resu tado restar e contenido de # ag de acarreo ,en as restas e acarreo se representa (ediante acarreo negati vo/& As1-en e siguiente e"e(p o se e restar1a a un va or de 9: %its co(puesto por DBAB- un va or de 9: %itsco(puesto por CBBB&
d@ a@ 5 c@ d@ a@Va@5%@ si C.V54 ,si2a$ acarreo/ entonces DB V D B5CB54 sino DB V D B5CB %@ a@

E"e(p o=
SUB a@- %@ A Resta os 48 %its (*s %a"os-de"a e acarreo preparado para restar A os 48 %its ( *s a to& SBB d@- c@ A Resta os 48 %its (*s a tos $ ade (*s resta e acarreo de"ado por A a anteriorinstrucci!n& A Resu tado de 9: %its en DB,pa a%ras a ta/ $ AB ,pa a%ras %a"a/&

" ) 4 L0 .or(ato MUL #uente& Mu tip ica-sin considerar e signo- e acu(u ador ,A si e operando #uente es un %$te- AB si e operando #uente es un n' (ero de 48 %its o EAB si e operando #uente es un n' (ero de 9: %its/ por e operando #uente& Si e operando #uente es de tipo %$te- e

j@gm-1999. P g.: 40

resu tado se a (acena en AB& Si e operando #uente es de tipo pa a%ra- e resu tado se a (acena en AB ,pa a%ra in#erior/ $ DB ,pa a%ra superior/& Si e operando #uente es de tipo do% e pa a%ra- e resu tado se a (acena en EAB ,do% e pa a%ra in#erior/ $ EDB ,do% e pa a%ra superior/& Si a (itad superior de resu tado ,AM para e caso de operando tipo %$te- DB para e caso operando tipo pa a%ra o EDB para e caso de operando tipo do% e pa a%ra/ no es cero- se activan as %anderas C. $ O.- indicando +ue esta (itad superior contiene d1gitos signi#icativos de resu tado& ,#uente tipo %$te/ X AL V AMAL ,AB/ ,AM ,#uente tipo pa a%ra/ X AB V DBAB

parte ( *s a ta $ AL parte ( *s %a"a/

,DB parte ( *s a ta $ AB parte (*s %a"a/ ,EDB parte ( *s a ta $ EAB parte

,#uente tipo do% e pa a%ra/ X EAB V EDBEAB


(*s %a"a/

E"e(p o=
M O ? a -43 A Move ( os a AL 43& M O ? % -4: A Move ( os a BL 4:& MUL % A .uente de tipo %$teA e resu tado +ueda en AB ,ABVALXBL/& ALa parte ( *s a ta +ueda en AM $ a ( *s %a"a en AL M O ? a@- :3 M O ? %@- < MUL %@A .uente de tipo pa a%ra& A E resu tado +ueda en DBAB ,DBAB V ABXBB/& A La parte a ta +ueda en DB $ a ( *s %a"a en AB& M O ? ea@- < M O ? e%@- : MUL e%@ A .uente de tipo do% e pa a%raA e resu tado +ueda en A EDBEAB ,EDBEAB VEABXEBB/& La parte a ta +ueda en EDB A $ a (*s %a"a en EAB

j@gm-1999. P g.: 41

" I)4L = Rea i0a a (is(a operaci!n +ue MUL- so o +ue en este caso se conte(p a e signo&

" DI,0 .or(ato DI? #uente& Divide- sin considerar e signo- e acu(u ador ,AB ,divi dendo/ si e operando #uente ,divisor/ es un %$te- DBAB ,dividendo/ si e operando #uente ,divisor/ es un n' (ero de 48 %its o EDBEAB ,dividendo/ si e operando #uente ,divisor/ es un n' (ero de 9: %its/por e operando #uente& Si e operando #uente es de tipo %$te e cociente se a (a cena e AL $ e resto se a (acena en AM& AB F #uente V AL ,resto en AM/ Si e operando #uente es de tipo pa a%ra- e cociente se a (acena en AB $ e resto se a (acena en DB& DBAB F #uente V AB ,Resto en DB/ Si e operando #uente es de tipo do% e pa a%ra- e cociente se a (acena en EAB $ e resto en EDB& EDBEAB F #uente V EAB ,Resto en EDB/ E"e(p o=
M O ? a@- 4: A Move ( os a AB 4:& M O ? % -43 A Move ( os a BL 43& DI? % A #uente de tipo %$te& A e cociente +ueda en AL ,ALV4/- $ e resto +ueda en AM,AM V:/& M O ? a@- es=RsiS M O ? %@- es=RsiZ:SA Move ( os en DBAB un va or a (acenado en (e ( oriaA por e"e(p o- 4:9<8;&

j@gm-1999. P g.: 42

M O ? %@- 8<333 DI? BB A .uente de tipo pa a%raA e cociente +ueda en AB $ e resto A +ueda a (acenado en DB& M O ? ea@- es=RsiS M O ? e%@- es=RsiZ6S A Move ( os a EDBEAB un va or a (acenado en (e ( oria& M O ? e%@- <3333 DI? e%@ A .uente de tipo do% e pa a%raA e cociente +ueda en EAB $ A e resto +ueda a (acenado en EDB&

" IDI,=Rea i0a a (is(a operaci!n +ue DI?- s! o +ue en este caso se conte(p a e signo&

" I310 Se uti i0a para incre(entar e contenido de un registro o de una posici!n de (e ( oria& E"e(p o=
M O ? a@- < INC a@ A a AB se e pasa e va or <& A AB incre(enta en una unidad su va or ,ABV8 /&

INC %$te ptrR%pZsiS A EL %$te a +ue apunta a su(a de CBP Z SIC en a ( e ( oria A se ve incre(entado en una unidad& INC Lord ptrR%pZsiSA Lo (is(o pero para una pa a%ra&

" D#1 =Se uti i0a para decre(entar e contenido de un registro o de una posici!n de (e ( oria& E"e(p o=
M O ? a@- < DEC a@ A a AB se e pasa e va or < A AB decre(entado en una unidad su va or ,ABV6/

DEC %$te ptrR%pZsiSA E %$te a +ue apunta a su(a de CBPZSIC en a (e ( oria

j@gm-1999. P g.: 43

A se ve decre(entado en una unidad& DEC Lord ptrR%pZsiS A Lo (is(o pero para una pa a%ra&

Instrucciones Lgicas0 "E #, " $ %, A" D, $ R, &$ R

" 3# 7 =Esta instrucci!n o +ue 2ace es ca cu ar e co(p e(ento a dos de operandoinstrucci!n& E"e(p o=
M O ? a@- < NEG a@ A a AB se e pasa e va or <& A Se 2a$a e co(p e(ento a : de AB $ se guarda en AB ,ABV 5 </&

a (acenando

en

(is(o

ugar& Esto

esa

e#ectiva(ente- e+uiva ente a ca(%iar de signo e operando de

NEG %$te ptr es=R%@ZsiZ:SA Se 2a$a e co(p e(ento a : de a posici!n de (e ( oria A ,dentro de Seg (ento E@tra/ indicada por e de CBBZS IZ:C

" 3 O T =Se rea i0a e NOD

!gico de operando %it a %it&E NOD

!gico %it a %it

consiste en invertircada %it de operando ,pasar os 3 a 4 $ os 4 a 3A 43433 5 J 34344/ E"e(p o=


NOD si A E va or +ue tenga SI pasa os 3 a 4 $ os 4 a 3&

NOD Lord ptr es=R3S A Lo (is(o pero en una posici!n de (e ( oria&

" A3 D = Operaci!n C$

!gicoC a nive de %it entre

os dos operandos& E

resu tado se a (acena en e destino& .or(ato AND destino-#uente&

3 3 53 3 4 53 4 3 53 4 4 54

E"e(p o=
AND a@- %@ A AND !gico entre AB $ BB& E resu tado +ueda en AB&

AND es=R3S-d@ A Lo (is(o pero con posiciones de ( e ( oria& AND di-es=RsiS AND %$te ptrROS-9 A Lo (is(o pero con va ores in(ediatos&

" O ! =Operaci!n Co

!gico e@c usivoC a nive entre os dos operandos& E

resu tado se a (acena en e destino& .or(ato OR destino-#uente&


3 3 53 3 4 54 4 3 54 4 4 54

E"e(p o=
OR a -a2 OR RdiS-c2 OR c -R%pZ6S OR %$te ptr es=RsiS4 A Las (is(as operaciones +ue con AND pero uti i0ando e OR&

" 8 O ! =Operaci!n Co !gico e@c usivoC a nive de %it entre os dos operandos& E resu tado se a (acena en destino& .or(ato BOR destino-#uente&

3 3 53 3 4 54 4 3 54 4 4 53

E"e(p o=
BOR a@- a@ A E BOR entre dos %its con e (is(o va or es sie(pre 3-

A independiente(ente de va or previo de AB ,ABV3/& A Las venta"as de 2acer o as1 son dos= a e"ecuci!n de BOR reg- reg es ( *s A r*pida +ue a de M O ? reg- o +ue a de M O ? a@-3 - $ a codi#icaci!n de a A pri(era

ocupa (enos %$tes +ue

a segundaA Esta t)cnica no puede uti i0ar A se para poner a

cero os registros de seg(ento& BOR %$te ptrR<<aa2S-6 BOR a -33aa2

" 81 9 7 =Interca(%ia e contenido entre dos operandos& No pueden uti i0arse registros de seg(ento co(o operandos& E"e(p o=
BCM G si-di A Si SI tiene va or 6< $ DI tiene va or 87- a2ora- DI se +ueda con A va or 6< $ SI con 87& BCM G a -R%@Z6S BCM G ss=RsiS %@

" 1)P = .or(ato CMP destino- origen& ,destino 5 origen/ Esta ins trucci!n rea i0a una resta de un operando origen so%re un operando destinopero con a particu aridad de no a (acenar e resu tado $ no (odi#icar ninguno de os : operandos- pero si se (odi#ican os %its de indicadores ,. ags/&Los operandos de%en ser de (is(o tipo& Esta (odi#icaci!n de os %its de indicadores- nos per(itir* a inspecci!n de os (is(os- poder posterior(ente- (ediante

rea i0ar deter(inadas acciones& Nor(a (ente despu)s de una instrucci!n de co(paraci!n ,CMP/- 2a$ una instruc ci!n de sa to& E"e(p o=
CMP a@- %@ A Co (para (os AB con BB JL (enor A Si AB es ( enor +ue BB sa ta(os a a eti+ueta MEN O R & & MEN O R=

CMP % -c CMP %@- c@ CMP % -%$te ptr es=RsiS CMP Lord ptr esRsiS-%@ CMP %@- 93 CMP %$te ptr es=RsiS342 A Nor(a (ente- despu)s de cada instrucci!n de Aco(paraci!n- viene una instrucci!n de sa to&

Instrucciones de Salto&
?i(os +ue en e #unciona(iento de un (icroprocesador se reduce

%*sica(ente a os siguientes pasos= Recogida de a siguiente instrucci!n de a direcci!n CS=IP Incre(ento de IP en e instrucci!n& E"ecuci!n de a instrucci!n& Una introducci!n de sa to se reduce a ca(%iar e contenido de IP $eventua (ente e de CS& Principa (ente- e@isten dos tipos de instrucciones de sa to= a+ue as +ue especi#ican a direcci!n de sa to in(ediato despu)s de c!d& de operaci!n-es decir- especi#ican a eti+ueta a a +ue 2a$ +ue sa tar ,deno(inados sa tos a +ue directos/- $ a+ue as +ue especi#ican una direcci!n de (e ( oria de n' (ero de %$tes +ue co(ponen a

2a$ +ue recoger a direcci!n a a +ue sa tar,deno(inadas sa tos indirectos/& Los %$tes +ue co(ponen una instrucci!n de sa to directo inc u$en en e c!d& a operaci!n a gunos %$tes +ue especi#ican a direcci!n a a +ue se de%e producire sa to& Pero e@isten varios #or(atos posi% es para inc u$e a instrucci!n despu)s de a instrucciones de sa to

directo&E pri(ero se deno (ina short jump ,sa to corto/-$ e 'nico dato +ue c!d& de operaci!n es un %$te- +ue va or a aEadir a IP para seguir a o +ue pri(ero es necesario representa en co(p e(ento a : e

e"ecuci!n& Este %$te se su(a a IP- para

e@tender o en signo ,+ue e signo de pri(er %$te ocupe e segundo %$te/ a 48 %its&As1-e %$te representa un desp a0a(iento entre 5 4:7 $ Z4:; %$tes ,:<8 %$tes/- +ue es e rango +ue se puede especi#icar con un %$tes en co(p e(ento a :& Si o%serva(os e orden en e +ue e (icroprocesador eva a ca%o a e"ecuci!n de una instrucci!n- vere(os +ue e desp a0a(iento se su(a a IP

despu)s de 2a%er incre(entado )ste& Por tanto- e desp a0a(iento se to(a desde a direcci!n de co(ien0o de a siguiente instrucci!n a sa to- $ no desde a propia instrucci!n de sa to& E siguiente #or(ato de sa to directo es e near jump o sa to cercano& Este #or(ato- a instrucci!n inc u$e dos %$tes +ue #or(an a pa a%ra a su(ar a IPta(%i)n en co(p e(ento a :& As1- e rango de sa to est* entre 5 9:;87 $ Z9:;87 %$tes ,8<<9< %$tes/- +ue e#ectiva(ente per(iten un sa to a cua +uier punto de seg(ento donde reside a instrucci!n de sa to ,en este #or(ato CS ta(poco es a terado por e sa to/&E ensa(% ador co(prue%a si e sa to est* en e rango ,5 4:7- Z4:;/ para rea i0ar un sa to corto $ si no o est* genera un sa to cercano& E ' ti(o tipo de sa to se deno (ina far jump o sa to e"ano& Esta

deno (inaci!n se de%e a +ue )ste #or(ato de sa to- ca(%ia tanto CS co(o IP-pudiendo sa tar a cua +uier punto de (ega%$te direcciona% e ,: e evado a :3/& En )ste #or(ato de sa to- a instrucci!n desp a0a(iento $ e seg(ento de directa(ente en IP $ CS a direcci!n a eva dos pa a%ras con e a +ue 2a$ +ue sa tar ,se

uti i0a para rea i0ar un sa to a otro seg(ento/& Este tipo de sa to copia os va ores dados por a instrucci!n- sin tener en cuenta e contenido previo de a(%os& E@isten dos #or(atos de instrucciones de indirecto= e pri(ero-

deno (inado near "u(p o sa to cercano- ee una pa a%ra de

a direcci!n de

(e ( oria especi#icada $ carga e registro IP con )sta& As1-se puede sa tar a cua +uier punto de seg(ento donde resida a instrucci!n de sa to& E otro tipo se deno (ina #ar "u(p o sa to e"ano- $ to(a de a direcci!n especi#icada dos pa a%ras- a pri (era de a cua es se introduce en IP-$ a segunda en CS ,Na +ue e ordena(iento INDEL sie(pre se a (acenan pri(ero os e e(entos de (enor peso/& De )sta #or(a se puede sa tar a cua +uier punto de (e ( oria direcciona% e con un sa to indirecto& " :)P0 E #or(ato de a instrucci!n es JMP direcci!n& Provoca un sa to o +ue se uti i0a para seguir a e"ecuci!n de a

incondiciona - por

progra(a en otro punto- +ue puede ser especi#icando una eti+ueta ,sa to directo/ o especi#icando una direcci!n ,sa to indirecto/& Cuando inc ui(os instruccio nes de sa to en e progra(a- indica(os a direcci!n de destino- $ en caso de +ue e sa to necesite especi#icar un va or a su(ar a IP- e ensa(% ador se encarga de ca cu are desp a0a(iento desde e punto donde se e"ecuta e sa to& En una instrucci!n JMPA e propio ensa(% ador decide si de%e generar un sa to corto o e"ano= en e caso de +ue e destino est) en e rango de un %$te con signo- se genera un sa to corto- en caso contrario-se genera un sa to cercano& E"e(p o=
EDI[UEDA4= & JMP continuar EDI[UEDA:= & JMP continuar & CONDINUAR=

Nota=Para os siguiente sa tos- va(os a tener en cuenta signi #icados de pa a%ras ing esas +ue nos van a a$udar a de#i nir e tipo de sa to a rea i0ar= ;#qual2igual/ *e2su erior/ 3ot2no/ 7reater2 m a y or/ Less2 m e n or/ ?ero2cero/ A(o < O*er < 6e lo=2in>erior/ 1arry2acarreo/

>lo=2des(orda miento/ Sign2signo/ Parity2 aridad@ " :A0 ,Sa to si superior/&Es e+uiva ente a JNBE ,Sa to si no in#eriorni igua /& E #or(ato es= JA eti+ueta si tanto e # ag de acarreo C. co(o e # ag de cero P. est* a cero ,C.V 3- P.V3/& Si C.V4 o P.V4 no se trans#iere e contro &No se considera e signo& E"e(p o=

CMP a@- %@A Co (parar AB con BB& JA eti+uetaA Sa tar ,Bi#urcar/a EDI[UEDA si ABJBB & & EDI[UEDA= A ,sin considerar signo/&

" :A#0 ,Sa to si superior o igua /&Es e+uiva ente a JNB ,Sa to si no in#erior/& E #or(ato es= JAE eti+ueta& Sa ta a a eti+ueta si e # ag de acarreo es cero ,C.V3/& No se considera e signo& E"e(p o=
CMP a@- %@ JAE eti+ueta & & EDI[UEDA= A Co (para (os AB con BB& A Bi#urca a EDI[UEDA si ABJ o VBB A ,sin considerar e signo/&

" :60 ,Sa to si in#erior/& Es e+uiva ente a JNAE ,Sa to sino superior ni igua /$ a JC ,Sa to sin acarreo/&E #or(ato es= JB eti+ueta& Sa ta a a eti+ueta sie # ag de acarreo es uno ,C.V4/& No se considera e signo& E"e(p o=
CMP a@- %@ JB eti+ueta & & EDI[UEDA= A Bi#urca a EDI[UEDA si AB I BB A ,sin considerar e signo/&

" :6#0 ,Sa to si in#erioro igua /&Es e+uiva ente a JNA ,Sa to si no superior/& E #or(ato es= JBE eti+ueta& Sa ta a a eti+ueta si e # ag de acarreo es igua a 4 o e # ag de cero es igua a uno ,C.V4 $ P.V4/& Si C.V3 $ P.V3 no 2a$ sa to&No se considera e signo&

E"e(p o=
CMP a@- %@ JBE eti+ueta & & EDI[UEDA= A Bi#urca a EDI[UEDA si AB es V o I +ue BB A ,sin considerar e signo/&

" :#0 ,Sa to si igua /&Es e+uiva ente a JP ,Sa to si cero/& E #or(ato es= JE eti+ueta& Sa ta a a eti+ueta si e # ag de cero es igua a uno ,P.V4/& Se considera n' (ero con signo $ sin signo& E"e(p o=
CMP a@- %@ JE eti+ueta4 A Co (paro AB con BB& A Bi#urca a EDI[UEDA4 si AB V BB&

CMP a@- %@ JP eti+ueta:

A ABVAB5BB A Bi#urca a EDI[UEDA: si AB es cero&

" :70 ,Sa to si (a$or/& Es e+uiva ente a JNLE ,Sa to si no (enor ni igua /&E #or(ato es= JG eti+ueta& Sa ta a a eti+ueta si e # ag de cero es igua a cero $ e # ag de des%orda(iento contiene e (is(o va or +ue e # ag se signo ,P.V3 $ S.VO./& Si P.V4 o S.I J O.- no 2a$ sa to& Se considera e signo& E"e(p o=
CMP a@- %@ JG eti+ueta & & EDI[UEDA= A Bi#urca a EDI[UEDA si AB J BB A ,considerando e signo/&

" :7#0 ,Sa to si (a$or o igua /&Es e+uiva ente a JNL ,Sa to si no (enor/& E

#or(ato es= JGE eti+ueta& Sa ta a ,S.VO./& Se considera e signo& E"e(p o=


CMP a@- %@ JGE eti+ueta & EDI[UEDA=

a eti+ueta si e

# ag de de signo

des%orda(iento contiene e (is(o va or +ue e # ag

A Bi#urca a EDI[UEDA si AB es J o V BB A ,considerando e signo/&

" :L#0,Sa to si (enor o igua /&Es e+uiva ente a JNG ,Sa to si no (a$or/& E #or(ato es= JLE eti+ueta& Sa ta a a eti+ueta si e # ag de cero est* a uno o e # ag de des%orda(iento $ e de signo contiene va ores distintos ,P.V4 o S. distinto de O./& Si P.V3 $ S.VO. no se produce e sa to&Se considera e signo& E"e(p o=
CMP a@- %@ JLE eti+ueta & & EDI[UEDA= A Bi#urca a EDI[UEDA si AB es I o V BB A ,considerando e signo/&

X :3A/ :3A#/ :36/ :36#/ :3#/ :37/ :37#/ :3L/ :3L#0 Estas instrucciones co(prue%an e@acta(ente as condiciones opuestas a sus an* ogas sin a etra N& En rea idad no ser1a necesariapor+ue son sin!ni(as de JBE- JB- JAE- JNP- JLE- JL- JGE N JErespectiva(ente& Pero e engua"e ensa(% ador est*ndar as inc u$e para #aci i tare tra%a"o de progra(a dor&

" :O0 ,Sa to si des%orda(iento/&.or(ato es= JO eti+ueta& Sa ta a a eti+ueta sie # ag de des%orda(iento est* a uno ,O.V4 /&

E"e(p o=
ADD a@- %@ JO eti+ueta & EDI[UEDA= A ABVAB Z B B A Bi#urca a EDI[UEDA si 2a$ des%orda(iento A ,Over# oL/&

" :3O0 ,Sa to si no des%orda(iento/& E #or(ato es= JNO eti+ueta& Sa ta a a eti+ueta sie # ag de des%orda(iento est* a cero ,O.V3/& E"e(p o=
ADD a -% JNO eti+ueta & & EDI[UEDA= A ALVAL ZBL A Bi#urca a EDI[UEDA si no 2a$ des%orda(iento

A ,No over# oL/&

" :S0 ,Sa to si signo/&E #or(ato es= JS eti+ueta& Sa ta a a eti+ueta si e # ag de signo est* a uno ,S.V4/& E"e(p o=
SUB a@- %@ JS eti+ueta & & EDI[UEDA= A ABVAB5BB A Bi#urca a EDI[UEDA si signo- es decir-AB I 3 A ,en este caso- si AB es ( enor +ue BB/&

" :3S0 ,Sa to si no signo F si e signo en positivo/& E

#or(ato es= JNS

eti ueta& Sa ta a a eti+ueta sie # ag de signo est* a cero ,S.V3/&

E"e(p o=
SUB a@- %@ A ABVAB5BB JNS eti+ueta A Bi#urca a EDI[UEDA si no signo- es decir-AB J o V +ue BB & & EDI[UEDA= A ,en este caso- si AB es ( a$or o igua +ue BB/&

" :P0 ,Sa to si paridad/& Es e+uiva ente a JPE ,sa to sin paridad par/& E #or(ato es= JP eti+ueta&Sa ta a a eti+ueta si e # ag de paridad est* a uno ,P.V4/& E"e(p o=
AND a@- %@ JP eti+ueta & & EDI[UEDA= A ABVAB AND BB A Bi#urca a EDI[UEDA si paridad par- es decir

A si e n' (ero de Cunos ,4/C +ue 2a$ en AB es par&

" :3P0 ,Sa to si no paridad/& Es e+uiva ente a JPO ,sa to sin paridad i(par/& E #or(ato es= JNP eti+ueta& Sa ta a a eti+ueta si e # ag de paridad est* a cero P.V3/& E"e(p o=
AND a@- %@ JNP eti+ueta & & EDI[UEDA= A ABVAB AND BB A Bi#urca a EDI[UEDA si paridad i(par- es decir

A si e n' (ero de Cunos ,4/C +ue 2a$ en AB es i(par&

" LO O P0 Esta instrucci!n per(ite rea i0ar C%uc esC uti i0ando e registro CB co(o contador ,CB en un contador +ue va decre(ent*ndose/& Un %uc e es un con"unto de instrucciones +ue se e"ecutan una serie de veces& Esta instrucci!n e+uiva e a par= DEC CB FFJNP eti+ueta& E #or(ato es= LOOP eti+ueta& E"e(p o=
M O ? c@- 4< A CBV4<A 4< ser1a e n' (ero de veces +ue se va a e"ecutar e %uc e& EDI[UEDA= A A+u1 estar1an as instrucciones +ue est*n dentro de %uc e& LOOP eti+ueta A CBV CB54 $ %i#urca a EDI[UEDA si CB es distinto a cero&

" LO O P #0 Esta instrucci!n a

igua +ue LOOP- per(ite rea i0ar C%uc esC

uti i0ando e registro CB co(o contador ,CB en un contador +ue va decre(ent*ndose/ pero ade (*s e # ag de cero de%e estar a uno ,P.V4/& Es e+uiva ente a LOOPP ,Buc e si cero/& Esta instrucci!n e+uiva e a par= JNE .IN FFLOOP ODRO& E #or(ato es= LOOPE eti+ueta& E"e(p o=
M O ? c@- Lengt2 ta% a M O ? si-inicio DEC si A CBV ongitud de a DABLA&

A Move ( os a SI e iniciode a DABLA& A Esto se 2ace para poder rea i0are %uc e A +ue viene a2ora

ODRO= INC si

A Move ( os a SI su va or inicia &

CMP ta% aRSIS-3 A Co (para (os cada va or de a DABLA con cero LOOPE ODRO A si e va or de DABLA es igua a cero rea i0a un A LOOP nor(a - sino- no 2ace e LOOP&

" LO O P 3 # =Esta instrucci!n a igua +ue LOOP- per(ite rea i0ar C%uc esC uti i0ando e registro CB co(o contador ,CB en un contador +ue

va decre(ent*ndose/ pero ade (*s e # ag de cero de%e estar a cero ,P.V3/& Es e+uiva ente a LOOP NP ,Buc e si no cero/& Esta instrucci!n e+uiva e a par= JE .IN FFLOOP ODRO& E #or(ato es= LOOPNE eti+ueta& E"e(p o=
M O ? c@- Lengt2 ta% a M O ? si-inicio DEC si A CBV ongitud de a DABLA&

A Move ( os a SI e iniciode a DABLA& A Esto se 2ace para poder rea i0are %uc e A +ue viene a2ora&

ODRO= INC si

A Move ( os a SI su va or inicia &

CMP ta% aRSIS-3 A Co (para (os cada va or de a DABLA con cero LOOPNE ODRO A si e va or de DABLA es distinto a LOOP nor(a A sino-no 2ace e LOOP&

Instr'cciones de Rotacin ( %raslacin)


Este grupo de instrucciones nos per(itir*n tratar sus %its& a in#or(aci!n

a (acenada en registros o en (e ( oria (ediante e trata(iento unitario de

" !1L0 ,Rotar a a i0+uierda con acarreo/& E #or(ato es= RCL operando- contador& Rota a a i0 +uierda os %its de operando "unto con a %andera de acarreo- C.- e n' (ero de %its especi#icado en e segundo operando& Si e n' (ero a desp a0ar es 4- se puede especi#icar directa(ente ,Por e"e(p o= RCL AL- 4/& Si es (a$or +ue 4- su va or de%e cargarse en CL $ especi#icarCL co(o segundo operando& E"e(p o=
M O ? c -9 A Rotar 9 %its A AL V 3434 4443%- C.V3 ,. ag de acarreoV3/ RCL a -c A AL V 4444 3334%- C.V3

Procedi(iento= Cuenta ,CL/ Antes Despu)s AL V 4344 4433%4 AL V 3434 4443%- C.V3 C.V3 AL V 3444 4333%: AL V 4344 4433%- C.V3 C.V4 AL V 4444 3334%9 AL V 3444 4333%- C.V4 C.V3

" !1 ! =,Rotar a a derec2a con acarreo/& E #or(ato es= RCR operando- contador& Rota a a derec2a os %its de operando "unto con a %andera de acarreo- C.- e n' (ero de

%its especi#icado en e

segundo operando& Si e

n' (ero a

desp a0ar es 4- se puede especi#icar directa(ente ,Por e"e(p o= RCR AL- 4/& Si es (a$or +ue 4- su va or de%e cargarse en CL $ especi#icarCL co(o segundo operando& E"e(p o=
M O ? c -9 A Rotar 9 %its A AL V 3434 4443%- C.V3 ,. ag de acarreoV3/ RCR a -c A AL V 4333 4344%- C.V4

Procedi(iento= Cuenta ,CL/ 4 : 9 Antes AL V 3434 4443%- C.V3 AL V 3343 4444%- C.V3 AL V 3334 3444%- C.V4 Despu)s AL V 3343 4444%- C.V3 AL V 3334 3444%- C.V4 AL V 4333 4344%- C.V4

" ! O !0 ,Rotar a a derec2a/& E #or(ato es= ROR operando- contador& Rota a a derec2a os %its de operando de ta #or(a +ue e %its de e@tre(o derec2o de operando destino para a %it e@tre(o i0+uierdo de dic2o operando $ a (is(o tie(po para e %it de acarreo ,C./& Si e n' (ero a desp a0ar es 4- se puede especi#icardirecta(ente ,Por e"e(p o= ROR AL- 4/& Si es (a$or +ue 4- su va or de%e cargarse en CL $ especi#icarCL co(o segundo operando&

E"e(p o=

M O ? c -:

A Rotar : %its A AL V 3344 3344%- C.V3 ,. ag de acarreoV3/

RCR a -c

A AL V 4433 4433%- C.V4

Procedi(iento= Cuenta ,CL/ Antes Despu)s AL V 4334 4334%4 AL V 3344 3344%- C.V3 C.V4 AL V 4433 4433%: AL V 4334 4334%- C.V4 C.V4

" ! OL0 ,Rotar a a i0+uierda/& E #or(ato es= ROL operando- contador& Rota a a i0 +uierda os %its de operando de ta #or(a +ue e %its de e@tre(o i0+uierdo de operando destino para a %it e@tre(o derec2o de dic2o operando $ a (is(o tie(po para e %it de acarreo ,C./& Si e n' (ero a desp a0ar es 4- se puede especi#icar directa(ente ,Por e"e(p o= ROL AL- 4/& Si es (a$or +ue 4- su va or de%e cargarse en CL $ especi#icarCL co(o segundo operando& E"e(p o=
M O ? c -: A Rotar : %its A AL V 4433 4433%- C.V3 ,. ag de acarreoV3/ RCR a -c A AL V 3344 3344%- C.V4

Procedi(iento= Cuenta ,CL/ 4 : Antes AL V 4433 4433%- C.V3 AL V 4334 4334%- C.V4 Despu)s AL V 4334 4334%- C.V4 AL V 3344 3344%- C.V4

" SAL0 ,Desp a0a(iento arit()tico a

a i0+uierda/& Es e+uiva ente a SML

,Desp a0a(iento !gico a a i0+uierda/& E #or(ato es= SAL operando- contador&SML $ SAL rea i0an a (is(a

operaci!n $ son #1sica(ente a (is(a instruc ci!n& Copia en cada %it de operando e contenido previo de %it de su derec2a& E %it de (enor peso se pone a cero& E contenido previo de %it de (a$or peso se copia en e # ag de acarreo ,C./& Es e+uiva ente a (u tip icar e operando por dos- tanto para n' (eros sin signo co(o para n' (ero en co(p e(ento a :- sie(pre e resu tado no se sa ga de rango& Si e n' (ero de %its a desp a0ar es 4- se puede especi#icar directa(ente ,Por e"e(p o= SAL AL- 4/& Si es (a$or +ue 4- su va or de%e cargarse en CL $ especi#icarCL co(o segundo operando& E"e(p o=
M O ? c -: A Desp a0ar : %its A AL V 4433 4433%- C.V3 ,. ag de acarreoV3/ SAL a -c A AL V 3344 3333%- C.V4

Procedi(iento= Cuenta ,CL/ 4 : Antes AL V 4433 4433%- C.V3 AL V 4334 4333%- C.V4 Despu)s AL V 4334 4333%- C.V4 AL V 3344 3333%- C.V4

" SA!0 ,Desp a0a(iento arit()tico 2acia a derec2a con e@tensi!n de signo/& E #or(ato es= SAR operando- contador& Copia en cada %it de operando e contenido previo de %it de su i0+uierda& E %it de (a$or peso (antiene su va or anterior&E contenido previo de %it de (enor peso se copia en e # ag de acarreo ,C./&Es e+uiva ente a dividire operando por dos para n' (eros e en co(p e(ento a :& Si n' (ero de %its a desp a0ar es 4- se puede especi#icar di5

recta(ente ,Por e"e(p o= SAR AL- 4/& Si es (a$or +ue 4- su va or de%e cargarse en CL $ especi#icarCL co(o segundo operando& E"e(p o=

M O ? c -:

A Desp a0ar : %its A AL V 4433 4433%- C.V3 ,. ag de acarreoV3/

SAR a -c A AL V 4444 3344%- C.V3

Procedi(iento= Cuenta ,CL/ 4 : Antes AL V 4433 4433%- C.V3 AL V 4443 3443%- C.V3 Despu)s AL V 4443 3443%- C.V3 AL V 4444 3344%- C.V3

" S9 !0 ,Desp a0a(iento arit()tico 2acia a derec2a/& E #or(ato es= SAR operando- contador& Copia en cada %it de operando e contenido previo de %it de a i0+uier da& En e %it de (a$or peso se a (acena un 3& E contenido previo de %it de (enor peso se copia en e # ag de acarreo ,C./&Es e+uiva ente a dividire operando por dos para n' (eros sin signo& Si e n' (ero de %its a desp a0ar es 4- se puede especi#icardirecta(ente ,Por e"e( p o= SMR AL- 4/& Si es (a$or +ue 4- su va or de%e cargarse en CL $ especi#icarCL co(o segundo operando&

E"e(p o=
M O ? c -: A Desp a0ar : %its A AL V 3344 3344%- C.V3 ,. ag de acarreoV3/ SMR a -c A AL V 3333 4433%- C.V4

Procedi(iento= Cuenta ,CL/ Antes Despu)s AL V 3334 4334%4 AL V 3344 3344%- C.V3 C.V4 AL V 3333 4433%: AL V 3334 4334%- C.V4 C.V4

#Aercicios0
4&5 Dispone(os en (e ( oria de una varia% e +ue nos ocupa una pa a%raidenti# icada con e s1(%o o UNO $ +ue tiene e va or de 9< ,dentro de seg(ento de datos= UNO D \ 9</- $ dispone(os de un %$te identi#icado con e s1(%o o DOS $ +ue posee un va or de 43 ,dentro de seg(ento datos= DOS DB 43/& Ca cu ar a su(a de estos datos&

:&5 Acceder a un datos +ue est* a (acenado en a direcci!n 4:9A2=3337 en una pa a%ra de (e ( oria dentro de seg(ento e@tra-$ ca cu ar o siguiente= a/ Si os %its=44- O- < $ 9 est*n a uno& %/ E n' (ero de %its a uno +ue tiene ese dato& c/ Si este dato es de paridad i(par- de%e sa tar a una eti +uea +ue se a(a .IN&

9&5Suponga (os +ue tene(os cargados en varia% es de (e ( oria ,UNO- DOSDRES- CUADRO- CINCO- SEIS- SIEDE de tipo %$te/- siete in#or (aciones de #ic2eros +ue 2e (os eido de un disco& Cada in#or(aci!n puede tener-en sus cuatro %its (enos signi#activos- os siguientes atri%utos= Si %it9 a 4 5 Atri%uto de Lectura& Si %it: a 4 5 Atri%uto de Siste(a& Si %it4 a 4 5 .ic2ero Ocu to& Si %it3 a 4 5 .ic2ero Borrado& Se +uiere sa%er cuantos #ic2eros de estos siete son= de siste(a- ocu tos- %orrados- de DB 4444 3444 DOS DRES CUADRO CINCO SEIS DB 4444 4333 DB 4444 3434 DB 4444 4443 DB 4444 4444 DB 4444 3343 ectura $ siste(a- de siste(a $ ocu to $ de ectura $ siste(a $ ocu to& ectura- de UNO ectura $ ocu to- de

SIEDE DB 4444 4443

6&5 Rea i0a una rutina +ue nos per(ita (u tip icardos cantidades +ue est)n a (acenadas en dos pa a%ras de (e ( oria- +ue conoce(os con os si(%o os UNO $ DOS- considerando +ue dic2a ( u tip icaci!n de%e rea i0arse (ediante su(as sucesivas&

<&5Rea i0aruna rutina +ue nos per(ita rea i0ar a divisi!n de dos cantidades nu ()ricas a (acenadas en : direcci!n de (e ( oria +ue va(os a conocer con os no (%res UNO $ DOS- considerando +ue dic2a divisi!n se de%e rea i0ar(ediante resta sucesivas&

8&5 Dispone(os de una cantidad a (acenada en (e ( oria identi#icada por 4 pa a%ra (ediante e s1(%o o UNO& Ca cu a e #actoria de va or de a pa a%ra&

La Pila.
La estructura de una PILA es si(i ar a un (ont!n de i%ros api ados= os e e(entos se van ordenando cada uno detr*s de ' ti(o en a estructura se e(pie0a por e ' ti(o en a%a"o de todo/& A a operaci!n de introducir un e e(ento en una pi a se e sue e dar e o & a pi a de (icroprocesador son egar ,es deciros i%ros se van api ando cada uno enci(a de anterio/-pero a sacar os de egar-aca%ando por e pri(ero ,a retirar os i%ros se co(ien0a por e superior-$ se aca%a por e +ue +ueda

no (%re de e(pu"ar un e e(ento , us+ en ing )s/&La operaci!n de e@traer un e e(ento de una pi a se e deno (ina

Los e e(entos +ue puede a (acenar va ores de 48 %its- con

o cua e puntero de pi a se de%e incre(entar o

decre(entar : unidades a a 2ora de sacar o introducir va ores en a pi a ,a (eter un va or de 48 %its en a pi a e puntero de a pi a se decre(enta en dos unidades- $ a arri%a/& E (icroprocesador tiene dos registros +ue se uti i0an para gestionar a pi a= e SS ,Seg(ento de Pi a/ $ e SP ,Puntero de Pi a/&E par SS=SP da direcci!n donde se encuentra e ' ti(o va or e(pu"ado en a pi a& " P4S 90 Decre(enta en : unidades e decre(enta en : unidades e a (acena en E"e(p o= a ci(a de puntero de registro SP- $ a pi a- es decira continuaci!n a a 2ora de sacar un e e(ento de a pi a e puntero se ugar de 2acia incre(enta en dos unidadesA a pi a crece 2acia a%a"o en

a pi a a pa a%ra especi#i cada en e

operando origen asociado a a instrucci!n&.or(ato PUSM origen


PUSM a@ Aes e+uiva ente a= SP V SP5: FF M O ? ss=RspS-a@

E operando origen no puede ser un operando in(ediato ,ni e registro de seg(ento CS/&

" PO P0 Esta instrucci!n to(a una pa a%ra de a ci(a de a pi a $ a sit'en e operando destino asociado a .or(ato POP origen E"e(p o= a instrucci!n- incre(entando- a continuaci!n-en : unidades e puntero de a pi a&

POP a@ A es e+uiva ente a= AB V SS=RSPS FFSP V SP Z :

Cuando una instrucci!n PUSM o POP se e"ecuta en un c!digo de progra(a con e ta(aEo de registro de 9: %its ,USE9:/- e as operaciones rea i0a das con ESP se ensa(% ador uti i0aco(o va or de tras#erecencia 6 %its en ugar de : %$tes ,una pa a%ra/- $ e#ect'an so%re unidades de 6 e e(entos&

" P4S 9 F =Esta instrucci!n decre(enta en : unidades e puntero de a pi a $ a continuaci!n- a (acena en a ci(a de a pi a e registro de indicadores ,.LAGS/& No tiene ning'n operando&

" PO PF0 Esta instrucci!n a (acena en e registro de indicadores ,.LAGS/ a pa a%ra situada en a ci(a de a pi a au (en tando en : unidades- a continuaci!n-e puntero de a pi a&No tiene ning'n operando&

" P4S 9 A y PO P A = Estas instruciones a (acenan $ sacan de in#or(aci!n contenida en

a pi a a

os registros siguientes $ en e orden

siguiente= AB- CB- DB- BB- SP- BP- SI $ DI& E va or de SP es guardado en a pi a antes de +ue e pri(er registro sea guardado& En e caso de uti i0ar registros de 9: %its a instrucciones ser1an= PUSMAD $ POPAD& Dodo o +ue entra en a pi a-tiene +ue sa irde a pi a&E orden de situar $ sacar pa a%ras de a pi a es e siguiente=
PUSM a@ PUSM %@

PUSM c@ PUSM d@ Rutina de progra(a POP d@ POP c@ POP %@ POP a@

#Aercicios0
4&5 Se pide ca cu ar os n' (eros co(prendidos entre dos cantidades os

nu ()ricas a (acenados en pa a%ras $ +ue va(os a identi#icar con (ane"en a pi a&

s1(%o os UNO $ DOS& Se de%e uti i0arde #or(a o% igatoria instrucciones +ue

Interru ciones.
Una interrupci!n es una seEa +ue provoca a suspensi!n de progra(a +ue se esta%a e"ecutando $ provoca e A ese progra(a se interrupci!n& Este procesador nos presenta tres grupos de interrupciones= a@ Interru ciones 9ard = are o Interru ciones #$ternas - +ue son a+ue as provocadas por procesador especia os dispositivos peri#)ricos- contro adas por un de interrupciones ,7:<O/ o IPC ,Contro ador de co(ien0o de e"ecuci!n de un progra(a de trata(iento +ue de so uci!n a esa interrupci!n& e conoce co(o RUDINA DE DRADAMIENDO de esa

Interrupciones Progra(a% e/-$ a rutina de trata(iento est* Cca% eadaC& (@Interru ciones Internas - +ue son a+ue as provocadas dentro de propio procesador por una situaci!n anor(a de #unciona(iento de a guna de sus partes& 1@ Interru ciones de So>t=are - Son a+ue as +ue son progra(a % es $ +ue pode (os ca(%iar& Las interrupciones de so#tLare pode (os nos per(ita poner en #unciona(iento una deter(inada egar a (ane"ar as $ por e o e ensa(% ador nos proporciona una instrucci!n +ue rutina de interrupci!nAesta instrucci!n es IND&

X IND&.or(ato IND n' (^entero& Ese Cn'(^enteroC-asociado a a instrucci!nes un identi# icativo +ue nos dice (ediante a gorit(oa ap icaci!n de un a posici!n de Me ( oria Interna donde se encuentra

a (acenada a direcci!n de co(ien0o de a rutina de trata(iento de esa interrupci!n& E ensa(% ador per(ite- nor(a (ente- identi#icar :<8 interrupciones& Una parte de e as son proporciona e #a%ricante& as correspondientes a a RO M5BIOS $ as

Otra parte de e as #or(an de siste(a operativo DOS- $ otra parte de e as +ueda i%re para +ue e progra(ador genere sus propias rutinas de interrupci!n& Las interrupciones correspondientes a correspondientes a si(i ares& E@iste un # ag deno (inado I. ,Interrupci!n . ag- . a# de Interrupci!n/ +ue deter(ina a reacci!n de (icroprocesador ante una interrpci!n&Si e # ag est* a uno- e rpocesador responde a a interrupci!n producidaA pero si e # ag I. est* a cero- a petici!n de interrupci!n ser* ignorada co(p eta(ente por e (icroprocesador& En a gunas secciones de c!digo- resu ta necesario des2a%i itar as interrupciones ,poner e # ag I. a cero/ durante a gunos cic os- $ 2a%i itar asde nuevo despu)s& La #a(i ia7378 provee dos instrucciones +ue rea i0an estas tareas= SDI ,Activar # ag de interrupciones/=Pone e # ag I. a i-de #or(a +ue se pre(iten as interrupciones& CLI ,Borrar # ag de interrupciones/=Pone e # ag I. a 3- de (odo +ue e (icroprocesador no responde a (*s interrupciones 2asta +ue se e"ecuta un SDI o se a tera e contenido de os # ags ,entre e os e de I./recuper*ndo os de a pi a con POP. o IRED&
M O ? a@- 73332 CLI M O ? ss- a@ M O ? sp- :3332 SDI

a parte de

a BIOS $

as

a parte de

DOS

representas caracter1sticas

X IRED=Retorno de interrupci!n& .or(ato= IRED ,no tiene operandos/& Retorna de una rutina de servicio a a interrupci!n- e@tra$endo de a pi a os nuevos va ores de IP $ CS- en este orden- $ e contenido de registro de # ags& La e"ecuci!n contin'a en a instrupci!n a siguiente a interrupci!n& a +ue se esta%a e"ecutando cuando ocurri!

#Aem los de interru ciones del D O S.


?a (os a ver unos e"e(p os de interrupciones de DOS ,?a(os a ver unas interrupciones donde e CnG enteroC va a ser :42& Esta interrupci!n presenta una gran cantidad de #unciones diversasA por e o ade(*s de indicar e CnG enteroC- de%e (os indicar ta(%i)n e CnG #unci!nC +ue desea(os dentro de esa interrupci!n&Dic2o n' (ero se a (acena sie(pre e registro AM/= 5 !N" #$h. %uncin 0$h = Per(ite dar entrada a un car*cter e tec ado $ a (is(o tie(po dic2o car*cter aparece en panta a- en +ueda a (acenado en AL& Si no 2a$ a posici!n en a +ue se encuentre e cursor&E car*cter tec eado ning'n car*cter disponi% e-se espera 2asta +ue 2a$a a guno&

M O ? a2- 342 IND :42 A E car*cter tec eado +ueda en AL

5 !N" #$h. %uncin 0#h = Per(ite

evar un car*cter desde e

pocesador

2acia a panta a&Dic2o car*cter de%e estar a (acenado en e registro DL& Aparecer* en cursor& a posi ci!n donde se encuentre e

M O ? d -car*cter M O ? a2- 3:2 IND :42

& !N" #$h. %uncin 0'h = Per(ite dar una entrada de un car*cter desde e tec ado pero sin +ue apare0ca en panta a& E car*cter disponi% e se espera 2asta +ue o 2a$a& car*cter tec eado +ueda a (acenado en e registro A & Si no 2a$ un

M O ? a2- 372

IND :42

A E car*cter tec eado +ueda en AL

5 !N" #$h. %uncin 0(h = ?isua i0aci!n de una cadena de caracteres& Nos per(ite evar una cadena de caracteres 2acia a panta a& a posici!n en a +ue se Dic2a cadena aparecer* a partirde

encuentre e cursor& Esta #unci!n necesita +ue en e registro DB se encuentre a direcci!n de co(ien0o de presentar en panta a& a cadena a

M O ? d@- o##set cadena

A En DB +ueda e desp a0a(iento +ue 2a$ +ue 2acer dentro A de DS para egar a a posici!n donde se encuentra

A CcadenaC ,DS=DB/& M O ? a2- 372 IND :42

5 !N" #$h. %uncin )*h = Aca%ar e proceso con c!digo de retorno& Per(ite rea i0ar e retorno a Siste(a Operativo& Aca%a e proceso actua - enviando un c!digo de retor no a progra(a origina & Se trata de uno de os diversos ()todos con os +ue se puede provocar una sa ida de#initivade un progra(a&

M O ? a2- 6c2 IND :42

Otras instrucciones
" L#A = .or(ato= LEA destino- #uente& Drans#iere e desp a0a(iento de

operando #uente a operando destino& E operando #uente de%e ser un operando de (e ( oria& E operando destino es un registro-pero no un registro de seg(ento& LEA per(ite especi#icarregitros 1ndices en e operando #uente-a contrario+ue con a instrucci!n O..SED& E"e(p o=
LEA d@- R%@ZsiZ:3S A En DB +uedar1a e desp a0a(iento +ue 2a%r1a A+ue 2acer dentro de seg(ento de datos ,DS/-para A acceder a a in#or(aci!n A indicada por a su(a de BB Z SI Z :3& A DB 5 BB Z SI Z :3 A DS = DB V BB Z SI Z :3 ,Seg(ento de Datos/ DEBDO d% Ce"e(p o4_C ,Seg(ento de C!digo/ LEA d@- te@to A [ueda en DB e desp a0a(iento +ue 2a$ +ue 2acer dentro de A seg(ento de datos ,DS/- para acceder a a in#or(aci!n +ue tiene A a varia% e DEBDO DS=DBV direcci!n de te@to&

Si situa(os todos os datos +ue e(p ea nuestro progra(a en un s! o seg(ento- apuntando por DSa oca i0aci!n de (e ( oria de un dato se puede dar por un desp a0a(iento ,o##set/-suponiendo i(p 1cita(ente +ue reside en e seg(ento apuntando por DS&

Este tipo de punteros ,un puntero es un va or +ue indica a oca i0aci!n de otra varia% e/se deno (inan NEAR POINDERS ,Puntero cercanos/& Pero si +uere(os especi#icar a direcci!n donde reside un dato +ue puede

estar en

cua +uier

ugar de

(ega%$te se

direcciona% e- es necesario dato co(o e

especi#icar tanto seg(ento

donde

encuentra e

desp a0a(iento dentro de dic2o seg(entoA este tipo de pun teros se deno (inan .AR POINDERS ,Punteros e"anos/& Cuando a (acena (os un puntero cercano en (e ( oria- se a (acena 'nica(ente una pa a%ra& Pero cuando a a(acena (os un puntero e"a no- se a (acena e desp a0a(iento $ e seg(ente en pa a%ras consecutivas en (e ( oria& A cargar un puntero cercano- por e"e(p o- SI- se carga directa(ente de (e ( oria con instrucciones co(o M O? SI- (e (- de (anera +ue e par DS=SI contiene e puntero deseado& Pero a cargar un puntero e"ano- es necesario cargar tanto un registro con e desp a0a(iento ,o##est/co(o un registro de seg(ento de puntero ,2a%i tua (ente se carga en ES- (anteniendo DS sie(pre constante apuntando a os datos de uso 2a%itua de progra(a/& E@isten : instrucciones +ue cargan de una so a ve0 tanto e desp a0a(iento co(o e seg(ento= LDS $ LES& LDS reg- (e ( LES reg- (e ( LDS si-cs=RdiZ:S LES a@- R%pZsiS

A (%as instrucciones cargan en e registro especi#icado con reg a pa a%ra contenida en indicada Z:& a direcci!n dada por (e (- $ en e regis tro de seg(ento a direcci!n indicado ,DS para LDS $ ES para LES/ a pa a%ra contenida en

" OFFS#T0 .or(ato O..SED varia% e o O..SED eti+ueta& Pode (os uti i0ar a instrucci!n O..SED para o%tener e desp a0a(iento dentro de un seg(ento de una eti+ueta cua +uiera& E"e(p o=
,Seg(ento de Datos/ DABLA d% He"e(p o 4_H

,Seg(ento de C!digo/ M O ? a@- o##eset ta% a A En AB +ueda e desp a0a(iento +ue 2a$ +ue 2acer A dentro de seg(ento por de#ecto en curso para A acceder a contenido de DABLA& A AB V desp a0a(iento de DABLA&

#structuras de

rogra m acin. Directi*as.

X I.= Las instrucciones +ue e(pie0an por CI.C son directivas condiciona es& Sirven para +ue e ensa(% ador inc u$a o no condici!n& E #or(ato es= &I.condiciona sentencias R &ELSEL. condici!n: sentencias S R &ELSE sentencias S &ENDI. as sentencias +ue vienen a continuaci!n- seg'n se cu(p a o no una deter(inada

E"e(p o=
&I.c@ V V :3 M O ?E d@- :3 &ELSE M O ?E d@- 93 &ENDI.

A gunos operadores uti i0ados para a co(paraciones son= V V Igua `V J JV I IV ` Distinto ,no igua / Ma$or Ma$or Igua Menor Menor Igua NOD L!gico

UU AND L!gico ,C$C/ aa OR L!gico ,CoC/

" FO !0 Las instrucciones +ue e(pie0an por C.ORC son directivas de Ccic osC& E #or(ato es= .OR par*(etro- ILista de argu(entosJ END M E"e(p o=
M O ? a@- 3 .OR arg- I4-:-9-6-<-8-;-7-O-43J ADD a@- arg END M A Esto o +ue 2ace es su(ar cada ve0 a AB e va or +ue A aparece en a de argu(entos& A , AB V AB Z 4- AB V AB Z :- AB V AB Z 9-&&&/

" B 9IL#0 Las instrucciones +ue e(pie0an por C\MILEC son directi vas de Ccic osC& E #or(ato es= &\MILE condici!n sentencias &END \

E"e(p o=
,Seg(ento de Datos/ %u#4 %u#: BNDE BNDE DUP ,b/ CEsto es una cadenaC- H_H

,Seg(ento de C!digo/

BOR %@- %@ &\MILE ,%ut4R%@S`V H_H/ M O ? a -%u#4R%@S M O ? %u#:R%@S-a INC %@ &END \

" !#P# AT0 Las instrucciones +ue e(pie0an por CREPEADC son directivas de Ccic osC& E #or(ato es= &REPEAD sentencias &UNDIL condici!n E"e(p o=
,Seg(ento de Datos/ %u##er BNDE 433 DUP ,3/

,Seg(ento de C!digo/ BOR %@- %@ &REPEAD M O ? a2- 342 IND :42 M O ? %u##erR%@S-a INC %@ &UNDIL ,a VV49/ A En este caso a interrupci!n :42 con a #unci!n 342 de"a en AL a tec a +ue se 2a pu sado $ a ( ete en C%u##erC&Si esta es ENDER ,49/ se sa e de %uc e-sino sigue en ) &

#structura de un

rogra m a en #nsa m (lador0


istado en engua"e +ue

Para entrar directa(ente en (ateria- vea(os un

ensa(% ador de un progra(a corriente= se trata de un progra(a Operativo&

(uestra a cadena CPri(er Progra(aC en e (onitor $ retorna a Siste(a

PILA SEG ME ND SDAC] HSDAC]H D \ 4332 DUP ,b/

A A%re e seg(ento de PILA& A pa a%ras para a PILA& Reserva 433

PILA ENDS DADOS SEG ME ND HDADAH

A Cierra e seg(ento de PILA& A A%re e seg(ento de DADOS&

(ensa"e DB CPri(er Progra(aC- H_H A Mensa"e a escri%ir& DADOS ENDS CO DIGO SEG ME ND HCODEH A Cierra e seg(ento de DADOS& A A%re e seg(ento de CO DIGO&

ASSU ME CS=CODIGO- DS=DADOS- SS=PILA ENDRADA= M O ? a@- DADOS M O ? ds- a@ M O ? d@- O..SED (ensa"e M O ? a2- 3O IND :42 A ?a or de seg(ento para DADOS& A Para acceder a C(ensa"eC& A Para a interrupci!n :42- #unci!n 3O&

A Especi#ica e servicioo #unci!n 3O& A Invoca e servicio3O= I(pri(ir Cadena& A Servicio,.unci!n/ 6C2- con va or de retorno 3&

M O ? a@- 6C332 IND :42 CO DIGO ENDS END ENDRADA

A Invoca servicio6C2= Retorno a DOS& A Cierra e seg(ento de CO DIGO& A .ina de (odu o #uente $ pri(era instrucci!n A desde donde de%e e(pe0arse a e"ecutar e progra(a&

?ea (os pri(ero e #or(ato de SEG MEND=

no m+re S,- M,N" [alineamiento] [.,/0ON12] [com+inacin] [3clase3] ... . . . . . . . . . no m+re ,N0S Sirve para indicar e a ensa(% ador +ue ,ENDS/- corresponde a (is(o seg(ento& 5 no (%re= Indica e no (%re de seg(ento +ue va(os a uti i0ar&E Cno(%reC indicado en SEG ME ND $ e Cno(%reC indicado en ENDS de%en ser e (is(o& 5 a inea(iento= En Ca inea(ientoC va(os a situar una in#or(aci!n +ue e a in#or(aci!n +ue venga a

continuaci!n- $ 2asta +ue no encuentre una directiva de #in de seg(ento

dir* a ensa(% ador as caracter1sticas +ue de%e tener a direcci!n de (e ( oria +ue e i"apara rea i0ar a carga de ese seg(ento& Los va ores +ue e pode (os dar son= BNDE= Puede co ocar e seg(ento en cua +uier direcci!n& \ O R D= De%e co ocar e seg(ento en una direcci!n ( ' tip ode :& D \ O R D= De%e co ocar e seg(ento en una direcci!n (' tip o de 6& PARA= De%e co ocar e seg(ento en una direcci!n (' tip o de 48& Es e a inea(iento por de#ecto& 5 READO NLN= In#or(a a ensa(% ador de un error producido cuando

a guna instrucci!n de seg(ento +ue contiene a sentencia READO NLN es (odi#icada& 5 co(%inaci!n= La co(%inaci!n nos dir* una serie de in#or(aciones para e (ontador ,LIN]ER/& Le pode (os situar as posi%i idades= PRI?ADE= No co(%ina e seg(ento con seg(entos de otros (!du osa'n cuando tengan e (is(o no(%re& PUBLIC= Le dice a (ontador ,LIN]ER/ +ue este seg(ento $ todos os +ue tengan e (is(o no (%re en Hc aseH se concatenar*n en un (is(o seg(ento&

SDAC]= Indica +ue esta(os tratando con un seg(ento de pi a& Esta identi# icaci!n es o% igatoria en e contenga caso de +ue e seg(ento a pi a& A (enos da%e 2a%er un seg(ento de pi a para

crear un (!du o e"ecuta% e con e (on tador ,LIN]ER/& AD e@presi!n= Sirve para indicar e a (ontador en +ue direcci!n de (e ( oria de%er* situar par*(etro Ce@presi!nC& CO M M O N= Indica +ue este seg(ento $ todos os de (is(o no(%re ,Cc aseC/ +ue procese e (ontador e(pe0ar*n en a (is(a direcci!n- so ap*ndose entre s1& La procesados& ME M O RN= EL seg(ento se u%icar* en una direcci!n de (e ( oria superior a a de otros +ue aparecer*n durante e (onta"e ,LIN]/ de progra(a& Se puede ap icar-por e"e(p o- para uti i0ar a (e ( oria (*s a * de os 1(ites de progra(a& S! o puede 2a%er un seg(ento de este tipo& Si e@istieran varios- so o se procesar* e pri(ero co(o ta -$ e resto se procesar* co(o CO M M O N& 5 use ,s! o 73978F678/= Deter(ina e ta(aEo de seg(ento& USE48 indica +ue e desp a0a(iento es de 48 %its de anc2o- $ USE9: indica +ue e desp a0a(iento es de 9: %its de anc2o& 5 Hc aseH=La Hc aseH es un no (%re +ue sirve para +ue e (ontador pueda uni#icartodos os seg(entos +ue tengan asociados dic2o no(%re- sies +ue e da (os a posi%i idad de e o& ?o va(os a progra(a& 4!1/ S,- M,N" S"/*5 3S"/*53. Esta 1nea eva a directiva SEG MEND- +ue 2ace +ue e ensa(% ador ongitud asignada por e a in#or(aci!n correspondiente a )ste seg(ento& La direcci!n de (e ( oria viene especi#icada en e

(ontador es a ongitud (*@i(a de todos os seg(entos CO M M O N

inc u$a una entrada en e #ic2ero o%"eto para este seg(ento&

PILA es e no(%re con e +ue nos re#eri(os a )ste seg(ento den tro de istado #uente- (ientras +ue HSDAC]H inc uida entre co(i as si(p es es uti i0ada por e en a0ador ,LIN]ER/& La pa a%ra SDAC] sin co(i as indica tanto a ensa(% ador co(o a en a0ador ,LIN]ER/ +ue este seg(ento se uti i0ar* co(o espacio de pi a en e"ecuci!n& Cada 1nea SEG ME ND de%e tener su una correspondiente ENDS ,.in de seg(ento/&

0 6 $00h 074 89:

; esta l<nea lle=a la directi=a 0 6 8definirpala+ra:.

Esta directiva per(ite #i"ar directa(ente

os va ores inc uidos en e

(!du o a ta(aEo- en este caso- de una pa a%ra- e uso de DUP nos per(ite #i"ar un n' (ero deter(inado de pa a%ras ,4332 V :<8 en este caso/ a un (is(o va or& E va or se indica entre par)ntesisAen esta 1nea es un interrogante- con o +ue indica(os a ensa(% ador +ue no son i(portantes os contenidos inicia esde esta :<8 pa a%ras&E en a0ador puede intentar reducire ta(aEo de e"ecuta% e gracias a +ue no nos interesan on contenidos inicia esde esta posiciones de (e ( o ria& La instrucci!n DUP se uti i0apara de#inirarra$s ,vectores/& E #or(ato ser1a= contador DUP ,va or^inicia Rva or^inicia S & & & / E va or de CcontadorC nos dice e n' (ero de veces +ue se repite o +ue 2a$ en Cva or^inicia C &E Cva or^inicia C de%e de#inirse sie(pre entre par)tesis& E Cva or^inicia C sue e se o un CbC +ue nos indica +ue no nos interesa e contenido inicia de vector o un n' (ero- +ue nos indicar* e contenido de cada posici!n de vector&

E"e(p os=
%ara$ BNDE < DUP ,4/ A En este cado tene(os un vector de < posiciones- $ cada posici!n

ocupa un BNDE $ tiene un va or inicia de 4 ,cada posici!n/&

arra$ D \ O R D 43 DUP ,4/ A En este caso tene(os un vector de 43 posiciones-$ cada posici!n ocupa una Do% e Pa a%ra ,D \ O R D/ $ tiene un va or inicia de 4&

%u##er BNDE :<8 DUP ,b/ A ?ector de :<8 posiciones- $ cada posici!n ocupa un BNDE $ tiene un va or inicia +ue no nos interesa&

Da(%i)n se puede de#inirun Carra$C de a siguiente #or(a= Larra$ \ O R D :- 6- 8- 7- 43

La #or(a de acceder a a guno de estos e e(entos dentro de c!digo de seg(ento ser1a=

DADOS SEG ME ND HDADAH %ta% a BNDE 4: DUP ,b/ Larra$ \ O R D :- 6- 8- 7- 43 DADOS ENDS CO DIGO SEG ME ND HCODEH ASSU ME CS=CODIGO- DS=DADOS UN O= M O ? a@- DADOS M O ? ds- a@ BOR a -a M O ? si-3 A Pone (os o +ue va (os a ( eter en C%ta% aC a 3 A co oca(os e puntero de C%ta% aC ,SI/ a 3 ,e pri(er

e e(ento de a (atri0 o e arra$ e (pie0a en a posici!n cero/ M O ? c@- 4: DOS= A contador a 4:&

M O ? %ta% aRsiSa A Move ( os un va or de un BNDE ,AL/- ,$a +ue 2e (os de#inido C%ta% aC de tipo BNDE/ a C%ta% aC&Da (%i)n pode (os poner esta instrucci!n co(o= M O ? %ta% a Z SI-AL INC si de%e incre(entar en una unidad& LOOP DOS BOR a@- a@ M O ? siA3 M O ? @c- < DRES= M O ? a@- Larra$RsiS A Move ( os e va or +ue indica e puntero ,SI/dentro A Pone (os e 1ndice de arra$ a cero A A tratarse de e e(entos de un BNDE e puntero s! o se

de CLarra$c a AB ,Na +ue 2e (os de#inido CLarra$C de tipo PALABRA/& A Da(%i)n pode (os poner esta instrucci!n A co(o= M O ? AB- Larra$ Z SI ADD si-: esta de#inido con PALABRAS& LOOP DRES CO DIGO ENDS END UNO A Incre(enta(os SI en : unidades de%ido a +ue CLarra$C

E a gorit(o para acceder a un e e(ento dentro de un arra$- a partirde a direcci!n de co(ien0o ,vector/-puede ser ,ser1a e va or +ue 2a%r1a +ue (over e a puntero dentro de arra$ para acceder a e e(ento a %uscar/= ,ELEMENDO 5 4/ X DIPO Donde= ELEMENDO es e e e(ento a %uscar $ DIPO es e ta(aEo con e +ue 2e (os de#inido e arra$ ,4 5 BNDE- : 5 \ O R D ,: %$tes/-6 5 D \ O R D ,6 %$tes/etc/& En e caso de (atrices-)sta nos presenta un a (ace(aniento +ue ocupa posiciones consecutivas $ +ue o de%e (os tratar co(o un vector&Para tratar dic2o vector se necesita conocer e n' (ero de #i as $ e n' (ero de co u(nas& E a gorit(o para acceder a un e e(ento- a partirde a direcci!n

de co(ien0o- ser1a= ,.ILA 5 4/ X NG COL X DIPO Z ,COL 5 4/ X DIPO Donde= .ILA es a posici!n de a #i a a %uscar- NG COL es e n' (e ro de

co u(nas +ue tiene cada #i a&DIPO es o (is(o +ue en os vectores& COL es a posici!n de a co u(na a %uscar& Por e"e(p o= En

una ( atri0 de 6 #i as por 9 co u(nas tipo BNDE- +uere(os ver e contenido de a posici!n ,9- :/& ,9 5 4/ X 9 X 4 Z ,: 5 4/ X 4

4!1/ ,N0S Cierra e seg(ento de pi a& Esta directiva ,ENDS/ cierra e seg(ento a%ierto pos a directiva PILA SEG ME ND& E identi#icador +ue antecede a ENDS de%e ser e (is(o +ue e +ue antecede a a directiva SEG ME ND as (a$'scu as o correspondiente- recordando +ue no son i(portantes (in'scu as& 0/"OS S,- M, N" 30/"/3 A%re e seg(ento de datos& Esta directiva a%re otro seg(ento& Este seg(ento o uti i0are(os para os datos de progra(a&

Mensaje 0> ?4rimer 4rograma?, 3@3 Mensa"e a escri%ir& ,Da(%i)n o pode (os ver de#inido co(o= HPri (er

Progra(a_-Ho co(o= CPri(er Progra(aC-C_C-etc&/& Esta directiva sirve para reservar (e ( oria para a varia% e (ensa"e& DB +uiere decir Cde#inir %$teC& En )ste caso- se reservan 48 %$tes ,4< de (ensa"e $ uno de _/& E car*cter _ se uti i0a co(o de i(itador de te@to a escri%ir& Es decir- cuando va$a(os a escri%ir (ensa"e por panta a se escri%ir*n todos os caracteres 2asta encontrar e car*cter _&

Da(%i)n pode (os encontrar-por e"e(p o- e (ensa"e=


CPi(er Progra(aC- 49- 43- C_C

+ue nos indicar1a +ue- despu)s de escri%ire te@to- e"ecutar1a e car*cter 49 ,retorno de carro/ $ uego e car*cter 43 ,sa to de 1nea/& En cuanto a ta(aEo de os datos- )ste puede ser= DAMAd O
BNDE- DB SBNDE \ O R D- D \ S\OR D D \ O R D- DD SD \ O R D %$tes/ .\ O R D- D. Da (aEo de 8 B$tes& Uti i0ando s! o co(o varia% e de pun5 tero para os procesadores 978F678& [ \ O R D- D[ DBNDE- DD Da (aEo de 7 B$tes& Da (aEo de 43 B$tes& ?a or de 3 a ::< ,4 B$te/& ?a or entre=5 4:7 $ Z4:; ,4 B$te/& ?a or de 3 a 8<&<9< ,: B$tes/& ?a or entre=5 9:&;87 t Z9:&;8; ,: B$te/& ?a or de 3 a 6 Mega%$tes ,6&:O6&O8;&:<O/ ,6 %$tes/& ?a or entre= 5 :&46;&697&867 $ Z:&46;&697&86; ,6

RANG O

En cuanto a n' (ero rea es en Cco(a # otanteC= DIPO DE DADO


REAL6 REAL7 REAL43 86 73

BIDS
9:

DIGIDOS SIGNI.& RANG O APROBIMAD O


8 5; 4< 5 48 4O De= e4&47@43 597 a e9&63@43 97 De= e:&:9@43 5937 a e4&;O@43 937 De= e9&9;@43 56O9: a e4&47@43 6O9:

Para e@presar un n' (ero rea se uti i0aeste #or(ato= RZF5 S entero&R#racci!nS RES RRZF5 S e@ponenteS

E"e(p os=

corto

REAL6 :<&:9

A :<-:9 A :&<:9@43 4 V :<-:9 AV 5 :<:9@43 5: V 5 :<-:9

do% e REAL7 :&<:9E4 die0%$tes REAL43 5 :<:9&3E5:

Segui(os con e progra(a& 0/"OS ,N0S Cierra e seg(ento de datos& *O0!-O S,- M,N" 3*O0,3 A%re e seg(ento de c!digo& A%re e seg(ento de c!digo- donde inc u1(os e c!digo de progra(a& Ni e no (%re CODIGO- ni a c ase HCODEH son tratados de #or(a especia por e ensa(% ador o e en a0ador& Es en a ' ti(a 1nea de progra(a #uente donde se indica e punto de entrada a progra(a- #i"ando tanto e va or de seg(ento inicia para CS co(o e desp a0a(iento inicia dentro de seg(en to& /SS7 M, *SA*O0!-O, 0SA0/"OS, SSA4!1/ Esta 1nea in#or(a a ensa(% ador de os seg(entos a os +ue apuntar*n durante a e"ecuci!n os di#erentes registros de seg(en to& De este (odo- si intenta(os acceder a a eti+ueta H(ensa"eH de#inida en e seg(ento CDADOSC- e ensa(% ador sa%r* +ue puede acceder a e a por (edio de registro DS& E registro CS se asocia con e seg(ento de CODIGO $ e registro SS con e seg(entos de PILA& M OV /B, 0/"OS ?a or de seg(ento para CDADOSC ,ABVdirecci!n de DADOS/& A (acena
Seg m e nto de

seg(ento de

a co(ponente seg(ento de seg(ento DADOS so%re e


antes de /'e el procesador de co m a n d os

registro AB& Co (o e registro DS apunta a co(ien0o de PSP *+re,i-o de


+rogra m a. *C$ M A " D)C $ M 0 del D $ S pase el control al progra m a, cons tr'(e 'n blo/'e de 123 4 56 67 b(tes a partir de la primera posicin de m e m o ria disponible) El +S+ contine ca m p os co m o la direccin de retorno al D $ S c'ando acabe

de e-ec'tarse el progra m a, la direccin del cdigo si se p'lsa Ctrl8 Brea9, la direccin de la r'tina del tratamiento de errores cr:ticos, la cantidad de m e m o ria disponible para el progra m a ( los par; m etros, etc)0 - es necesario

ca(%iar o para +ue se pueda acceder a os datos ,en e seg(ento de datos/ (ediante e registro DS& La instrucci!n M O? no per(ite (over directa(en te a DS- por o +ue se uti i0ae registro AB co(o registro inter (edio& M OV 0S, /B Para acceder a H(ensa"eH&Esta 1neas inicia i0an e registro DS para +ue apunte a seg(ento donde reside e (ensa"e C(ensa"eC& Co (o se ve- se puede uti i0are no(%re de un seg(ento ,DADOS en este caso/ co(o va or in(ediato- en cu$o caso e ensa(% ador- e en a0ador $ e cargador de MS5 DOS 2ar*n +ue e dato #ina cargado sea e va or de seg(ento adecuado ,2e(os direccionado e seg(ento DADOS (ediante DS/& A seg(ento de c!digo no 2ace #a ta direccionar o con CS- pues o 2ace e siste(a operativo MS5DOS& Da(poco 2ace #a ta direccionar e registro SS para acceder a a pi a-pues e DOS o inicia i0ata(%i)n& En )ste progra(a no e@iste seg(ento e@tra&

M OV 0B, offsetCmensajeD Esta instrucci!n carga en e registro DB e desp a0a(iento de a eti+ueta C(ensa"eC-dentro de seg(ento donde 2a sido de#inida& Pode (os uti i0ar a e@presi!n O..SED eti+ueta para o%tener e desp a0a(iento dentro de un seg(ento de una eti+ueta cua +uiera ,DS=DB V direcci!n de te@to/&

M OV /E, 0( Especi#ica a .unci!n 3O& !N" #$h Invoca e servicio,interrupci!n/ :42& i(pri(ir cadena&

Esta dos instrucciones invocan

a #unci!n 3O de

a interrupci!n :42& a sa ida est*ndar de

correspondiente a MS5DOS& Este servicio env1a a DS=DB&

progra(a ,2a%itua (ente a panta a/ a cadena de caracteres apuntada por E MS5DOS reconoce co(o car*cter de #in de cadena e c!digo ASCII de car*cter _ ,d! ar/-+ue se puede encontrar despu)s de a cadena (ensa"e& Si se o vida inc uir e car*cter _ encuentre 2asta encontrar un _& M OV /B, )*00h Servicio6C2A va or de retorno 3& !N" #$h Invoca e servicio 6C2 de cero& *O0!-O ,N0S Cierra e seg(ento CCODIGOC& ,N0 ,N"./0/ .in de progra(aA indica punto de entrada a progra(a& a interrupci!n :42- +ue retorna a siste(a operativo con e ERRORLE?EL- indicando en e registro AL- en )ste cado e MS5DOS seguir* i(pri(iendo o +ue

La directiva END (arca e ensa(% ador e #ina de c!digo #uente& E s1(%o o a continuaci!n de END indica a ensa(% ador en +u) punto de%e co(en0ar a e"ecuci!n de progra(a& E ensa(% ador parar* a in#or(aci!n a en a0ador-+ue inc uir*esta in#or(aci!n en a ca%ecera de EBE&

Directi*as Sim li>icadas de Seg m e nto0


Si se +uieren uti i0ar esta directivas- es necesario pri(ero inc uir una 1nea con a directiva &MODEL& E #or(ato de esta directiva es e siguiente= &MODEL (ode o de (e ( oria R-opcionesS Los (ode os de (e ( oria pueden ser= DINN= Dipo de puntero de Seg (ento de C!digo= NEAR- tipo de puntero de Seg (ento de datos= NEARA per(ite co(%unar e Seg (ento de C!digo $ e Seg (ento de Datos& SMALL= Dipo de puntero de MEDIUM= Dipo de puntero de Seg (ento de C!digo= NEAR- tipo de Seg (ento de C!digo= .AR- tipo de puntero de Seg (ento de datos= NEAR& puntero de Seg (ento de datos= NEAR& CO MPACD= Dipo de puntero de Seg (ento de C!digo= NEAR- tipo de puntero de Seg (ento de datos= .AR& LARGE= Dipo de puntero de Seg (ento de C!digo= .AR- tipo de puntero de Seg (ento de datos= .AR& MUGE= Dipo de puntero de Seg (ento de C!digo= .AR- tipo de puntero de Seg (ento de datos= .AR& .LAD= Dipo de puntero de Seg (ento de C!digo= NEAR- tipo de puntero de Seg (ento de datos= NEARA per(ite co(%inar e Seg (ento de C!digo $ e seg(ento de Datos- pero se uti i0a-e@c usiva(ente- con e siste(a operativo OSF: :&@& Las opciones pueden ser= 5 Lengua"e= La opci!n C engua"eC #aci i ta a co(pati%i i dad de ensa(% ador con engua"es de a to ni ve , inter#a0 de engua"e ensa(% ador con engua"e de a to nive /os por deter(inar a codi#icaci!n interna para no(%re si(%! icos p'% icos $ e@ternos& Puede to(ar siguientes va ores= *, >/S!*, %O."./N,

4/S*/1, F"4/S*/19,

S2S*/11 G S"0*/11 &

5 Siste(a Operativos=Pueden to(ar os va ores=OSHOS# 5 Da(aEo de

o OSH0OS &

a Pi a= Pueden to(ar os va ores= N,/.S"/*5 ,Cuando e

Seg (ento de Pi a $ e Seg (ento de Datos co(parten e (is(o seg(ento #1sico ,SSVDS// $ .ARSDAC] ,Cuando e Seg (ento de Pi a $ e Seg (ento de datos no co(parten e (is(o seg(ento #1sico,SSDS//& Por a2ora uti i0are(os e (ode o SMALL para a generaci!n de

progra(as EBE +ue uti icen un s! o seg(ento para c!digo $ otro para datos$ e (ode o DINN para progra(a de tipo CO M& Cuando e ensa(% ador procesa a directiva &MODEL- prepara a de#inici!n de a gunos seg(entos por de#ecto par e c!digo- os datos $ #i"ados apropiada(ente por e (ode o especi#icado- por a pi a& Los o +ue no no (%res- a inea(iento- co(%inaci!n $ c ase de estos seg(entos vienen necesita(os preocuparnos de e os& E (ode o SMALL soporta un Seg (ento de C!digo $ un Seg (ento de Datos& E (ode o MEDIUM soporta varios Seg (entos de C!digo $ un Seg (en to de Datos& E (ode o CO MPACD soporta un Seg (ento de C!digo $ varios Seg (en to de Datos& Los (ode os LARGE $ MUGE son e+uiva entes-soportan varios Seg(entos de C!digos $ ?arios Seg (entos de Datos& Para activar e tipo de procesador con e +ue va(os a tra%a"ar $ instrucciones disponi% es para ese tipo de procesador- se uti i0an sentencias= &478- &:78&-&978 $ &678 correspondientes a tipo de procesador de ordenador con e +ue este(os tra%a"ando& Despu)s de esto- e ensa(% ador reconoce a gunas directivas especia es as as

para a%rirseg(entos= &CODE para a%rire Seg (ento de C!digo& &DADA para a%rire Seg (ento de Datos& &SDAC] para #i"are ta(aEo de Seg (ento de Pi a& Estas directivas-ade (*s de a%rire seg(ento asociado- cierran e ' ti(o seg(ento a%ierto-por o +ue no es necesaria a directi va ENDS& La directiva &CODE- ade (*s de a%rir e Seg (ento de C!digo- gene ra e ASSU ME adecuado para e (ode o especi#icado& La directiva &SDAC] eva un par*(etro opciona +ue #i"ae ta(aEo de a pi a en %$tes& En su de#ecto- e ensa(% ador asu(e un ta(aEo de 43:6 %$tes& E ensa(% ador $ e en a0ador tratan sie(pre de #or(a especia e seg(ento de pi a- de (anera +ue os datos de seg(ento de pi a no aparecen en e #ic2ero e"ecuta% e-reduciendo por tanto e ta(aEo de )ste $ 2aciendo e ta(aEo de EBE independiente de ta(aEo de a pi a& La directiva END- ade (*s de seg(ento de (is(o (odo +ue en no (%re de os seg(entos generados& Para so ucionar este pro% e(a- e $ Datos- respectiva(ente& As1 +uedar1a- por tanto- e progra(a +ue codi#ica(os anterior (ente en versi!n EBE usando as directivas si(p i#icadas de seg(entos= ensa(% ador e per(ite usar os as #uncione vistas- cierra e ' ti (o seg(ento a%ierto& Es pro%a% e +ue se necesite inicia i0ar registros de a #or(a de codi#icaci!n nor(a - co(o M O? a@- datos pero a directiva si(p i#icada de sege (to no per(ite ver e

s1(%o os = f C O D E $ f D ADA en ugar de no(%re de os seg(ento de C!digo

&MODEL SMALL Datos& &SDAC] :332

A Mode o de (e ( oria SMALL= Usa (os un Seg (ento de C!digo $ un de

A Da (aEo de a pi a :332V<4: %$tes& En e otro progra(a eran= D \ 4332- es

decir-:<8 pa a%ras-es decir-<4: %$tes& &DADA A A%re e Seg (ento de Datos

(ensa"e DB CPri(er Progra(aC-C_C A Mensa"e a i(pri(ir &CODE A Cierra e Seg (ento de Datos- a%re e de C!digo $ genera e A ASSU ME ENDRADA= M O ? a@- f D ADA M O ? ds- a@ A ?a or de seg(ento para C&DADAC&

A Para acceder a C(ensa"eC& A Dodo o de a%a"o es igua &

M O ? d@- O..SED (ensa"e M O ? a2- 3O IND :42 M O ? a@- 6C332 IND :42 END ENDRADA entrada a progra(a&

A .in de progra(a& Cierra e seg(ento de C!digo e indica e punto de

) A 1 ! O S.
Una (acro consiste en una serie de ineas a a +ue se asocia un no(%re $ +ue se puede repetir en cua +uier punto de no (%re& Doda (acro de%e tener dos partes= 4/ La ca%e0era de a (acro= A+u1 se especi#ica e no (%re de istado sin (*s +ue dar su

identi# icaci!n de

a (is(a- es decir- a grupo de instrucio nes +ue

eng o%a esa (acro = No ( %re5Macro MACR O par*(etro R-par*(etro- &&&S :/ De@to o cuerpo de ,sentencias/& 9/ .in de (acro ,ENDM/& E #or(ato a uti i0arser1a= No ( %re^Macro MACR O par*(etro R-par*(etro-&&&S sentencias END M La ca%ecera $ e #in de doinstrucciones o directivas-& E cuerpo de a MACR O- viene dado por instrucciones nor(a es de o a MACR O- sie(pre vienen dados por pseu5 a (acro= A+u1 se situan as instrucciones

ensa(% ador& Cuando e ensa(% ador se encuentra con una ca%ecera de MACR O+ue 2ace es a (acenar a con su cuerpo correspondiente en una ta% a& Posterior(ente- cuando en e progra(a se uti ice a ca%ecera o e no(%re de esa MACR O- e ensa(% ador acceder* a a ta% a (encionada $ sustituir*-en e progra(a- ese no (%re de MACR O por e cuerpo de a (is(a&

a operaci!n de %'s+ueda en a MACR OC- $ a

a ta% a de (acros se

e conoce co(o a MACR O por e

CL a(ada a Seg'n

a sustituci!n de no(%re de

cuerpo de a (is(a se deno (ina CE@pansi!n de a MA CROC& o co(entado- si nos #i"a(os en un progra(a codi#icado en ensa(% ador- tene(os dos versiones de progra(a& Una de e as escrita directa(ente $ otra (ediante (acros- con o +ue nos pod1a(os encontrar +ue despu)s de a e@pansi!n de as (acros as dos versiones de progra(a son igua es& E e(p eo de (acros no de%e (os con#undir o con e e(p eo de procedi(ientos-$a +ue una a(ada a una (acro sustitu$e su no(%re por e a(ada a procedi(ientos o 'nico +ue os #ic2eros situare(os as

cuerpo de a (is(a- en ca(%io- una

rea i0a es un en ace con otro progra(a& Las (acros se sue en inc uirtodas dentro de #ic2eros espec1#icos& En cada uno de (acros +ue tengan a guna re aci!n entre s1& Nos pode (os encontrar con (acros +ue en puedan uti i0ardatos distintos& Para no tener +ue de#inir una (acro para cada dato distinto +ue tenga(os +ue uti i0ar- se de%e per(itir a uti i0aci!n de CPar*(e tro .or(a esC- entendi)ndose +ue ve0& Estos par*(etros van situados en (acro& En de a a(ada a a (acro ser1a donde situar1a(os os CPar*(etros os par*(etros Rea esC- con os +ue va a tra%a"ar a (acro& Cuando se 2ace una e@pansi!n a (acro os par*(etros #or(a es se sustitu$en por rea es& I31L4 D #. Esta directiva nos proporciona en otro #ic2ero& Estas instrucciones se sustitu$en "usta(ente en a posici!n en a +ue se encuentra a directiva& Dic2a directiva se usa dentro de cua +uiera de os a posi%i idad de introducira ca%ecera de a de#inici!n de a estos datos ser1an os no(%res +ue uti i0are(os en e cuerpo de a MACR O cuando a de#ini)se(os por pri(era a rea i0aci!n de una tarea

dentro de nuestro progra(a un con"unto de instrucciones +ue est*n situadas

seg(entos- pero su uti i0aci!n corriente es dentro de Seg (ento de C!digo& Se sue e uti i0arpara poder inc uirdentro de un progra(a MACR OS& Su #or(ato es= INCLUDE No (%re^.ic2ero os #ic2eros de

Si e .ic2ero a inc uiren e progra(a ,No(%re^.ic2ero/-no se encuentra en e (is(o directorio de progra(a o en a (is(a unidad- 2a%r* +ue indicar een a instrucci!n-e ca(ino de acceso para encontrar ese .ic2ero& E"e(p o=En

un disco tene(os un #ic2ero con una serie de MACR OS MACR OS&ASM=

$ +ue se

a(a=

Listado de MACR OS&ASM retorno MACR O M O ? a2- 6c2 IND :42 END M disp a$ MAC R O cadena M O ? d@- O..SED cadena M O ? a2- 3O2 IND :42 END M eer^tec ado MAC R O M O ? a2- 372 IND :42 END M

En nuestro ordenador esta(os rea i0ando nuestro progra(a=

PILA SEG ME ND SDAC] HSDAC]H dL 4332 dup ,b/ PILA ENDS DADOS SEG ME ND HDADAH

paso d% CMIOOOC contro d% < dup ,b/ (en4 d% CC ave de acceso=C&49-43-C_C (en: d% CBienvenidoC-C_C DADOS ENDS CO DIGO SEG ME ND HCODEH ASSU ME CS= CODIGO- DS= DADOS- SS= PILA EMPEPAR= M O ? a@- DADOS M O ? ds- a@ INCLUDE A=TMACR OS-ASM porgra(a A A+u1 e deci(os a progra(a +ue inc u$a as (a cros de a

+ue se encuentra en e #ic2ero MACR OS=ASM +ue se encuentra en un disco en

unidad A de nuestro ordenador& DOS= M O ? si-3 disp a$ (en4 M O ? c@- < UN O= eer tec ado A Otra MACR O& Esta (acro no tiene par*(etros& A Cdisp a$C es una MACR O +ue tiene par*(etro&

M O ? contro RSISa INC si LOOP UNO M O ? si-3 M O ? c@- < DRES= M O ? a -contro RSIS CMP a -pasoRSIS JNE DOS INC SI LOOP DRES disp a$ (en: retorno CO DIGO ENDS ENDS EMPEPAR A Otra MACR O A Otra MACR O sin par*(etros

Con as directivas si(p i#icadas as (acros #uncionan igua &

LO1 AL0 Directiva +ue

e indica a ensa(% ador +ue dentro de

a (acro de ser

van a e@istir una serie de eti+uetas +ue de%en

identi# icadas de una #or(a especia a rea i0ar a e@pansi!n de a (acro $ sie(pre considerando a re aci!n +ue e@iste con a ta% a de s1(%o os& Con e o se evita as de#iniciones ( ' tip es de estas eti+uetas& E #or(ato es e siguiente= LOCAL eti+uetas ,separadas por co(as/ Esta directiva de%e situarse- en e caso de +ue e@ista despu)s de ca%ecera de a (acro& E"e(p o=
esperar MACR O nu (ero LOCAL SEGUIR M O ? c@- nu (ero seguir= LOOP seguir END M

Otra cosa aconse"a% e +ue se puede 2acer en re#erencia a as (acros es guardar previa(ente en a pi a e va or de os registros +ue va$a(os a usar dentro de a (acro $ despu)s- cuando aca%en as instruciones de a (acrovo ver a retorn*rse os& E"e(p o=
disp a$ MACR O cadena

PUSM d@ PUSM a@ M O ? d@- o##set cadena M O ? a@- 3O2 IND :42 POP a@ POP d@ END M

#Aercicios0
4&5 Dispone(os de una (atri0 a (acenada en una serie de %$tes en (e ( oria& Dic2a (atri0 est* estructurada (ediante 6 #i as $ 9 co u(nas& Rea i0ar a su(a de os e e(entos de esta (atri0 recorri)ndo a #i aa #i a&

:&5 Dispone(os de una (atri0 de 6 #i as $ 9 co u(nas ocupando cada e e(ento de a (atri0 un %$te& Ca cu ar a su(a de os e e(entos de esta (atri0 co u(na a co u(na-

9&5 Dispone(os de una (atri0 a (acenada en pa a%ras de (e ( oria cu$a estructura de 6 #i as $ 6 co u(nas& Se pide rea i0ar a su(a de sus dos diagona es&

6&5 Dispone(os de una (atri0 a (acenada en pa a%ras de (e ( oria +ue posee una estructura de 6 #i as $ 9 co u(nas& Su (ar pares- $ i(paresC& a su(a de e e(entos i(pares es (a$or +ue os e e(entos +ue a de os paresocupen posiciones i(pares- a continuaci!n-su(ar os +ue ocupen posiciones e#ectuar a resta Ci(pares 5 paresC- $ si no es as1-e#ectuar a resta Cpares 5

<&5 Se trata de tec ear un (*@i(o de 63 caracteres +ue ir*n apareciendo en panta a& Si durante e tec eo no desea(os seguir con e (is(o- pode (os ro(per a secuencia pu sando e ENDER& Una ve0 tec eados itera +ue os 63 caracteres- aparecer* en panta a un nos indicar* +ue a secuencia inicia

introdu0ca(os una pa a%ra a

oca i0ar dentro de

tec eada& Una ve0 oca i0ada a pa a%ra se nos de%er* indicar cuantas veces aparece esta pa a%ra dentro de te@to inicia tec eado&

P! O 1 # DI )I#3T O S.
E uso de os procedi(ientos va a estar (arcado por e e(entos

principa es= 1ALL0 ,L a(ada a un procedi(iento/&Esta instrucci!n trans#iere e contro a otro punto de a (e ( oria- cargado IP ,cuando e procedi(iento a(ado est* dentro de (is(o seg(ento ,NEAR//$ eventua (ente CS ,cuando e procedi(iento a (ado est* en otro

seg(ento ,.AR//-con nuevos va ores& La direcci!n actua ,CS=IP o so a(ente IP- en #unci!n de si a instrucci!n a tera CS o no/ se introduce en a pi a para per(itirun posterior retorno& E destino de sa to puede estar indicado tras e c!digo de operaci!n de posici!n de (e ( oria especi#icada en tipos de tratar as .or(ato= CALL Rtipo^sa toSdestino Ctipo^sa toC indica si a a(ada es a un procedi(iento cercano a(ar& a(adas a eti+uetas& a instrucci!n o puede o%tenerse indirecta(ente de un regis tro o a instrucci!n& Ma$ varios a(adas ,a eti+uetas-a varia% es-etc/-nosotros va(os a

,entoces su va or es NEAR/ o e"ano ,su va or es .AR/- $ CdestinoC es e no(%re de procedi(iento a +ue va(os a

P! O 10 Indica e co(ien0o de un procedi(iento ,un procedi(iento es un % o+ue de instrucciones +ue sirven para rea i0ar una tarea deter(inada $ +ue pueden invocarse desde varios puntos de progra(a& Puede considerarse co(o una su%ruti na/& .or(ato= No ( %re^Procedi(iento PROC atri%uto sentencias RED No ( %re^Procedi(iento ENDP

E Catri%utoC puede ser NEAR o .AR dependiendo de si e sa to es dentro de (is(o seg(ento ,NEAR/ o no ,.AR/& Los va ores de IP ,NEAR/ o CS=IP ,.AR/ se guardan en produce una a pi a cuando se

a(ada a un procedi(iento& Para +ue estos va ores puedan ser

restaurados despu)s de a e"ecuci!n de procedi(iento $ e E progra(a sigua con su e"ecuci!n nor(a se e"ecuta a instricci!n RED ,retornar va ores/& E"e(p o=
PILA SEG ME ND SDAC] HSDAC]H dL 4332 dup ,b/ PILA ENDS DADOS SEG ME ND HDADAH (ensa"e d% CPri(er Progra(a=C-C_C DADOS ENDS CO DIGO SEG ME ND HCODEH ASSU ME CS= CODIGO- DS= DADOS- SS= PILA INCLUDE MACR OS&ASM ENDRADA= M O ? a@- DADOS M O ? ds- a@ disp a$ (ensa"e retorno A A XXXX Procedi(ientos XXXX A retorno PROC PUSM a@ M O ? a@- 6C332 IND :42 POP a@ RED retorno ENDP

CO DIGO ENDS END ENDRADA

,.ic2ero MACR OS&ASM/

disp a$ MACR O (e ( PUSM d@ PUSM a@ M O ? d@- o##set ( e ( M O ? a2- 3O2 IND :42 POP a@ POP d@ END M

1O ) PILA1IO 3 .
Para conseguir un progra(a e"ecuta% e- e progra(a #uente escri to en engua"e ensa(% ador- entre otras tareas- 2a%r* +ue ensa( % ar o $ in>ar o ,LIN]ER/& Para e o e MAS M 8&3 nos su(inistra una instrucci!n +ue nos rea i0a estas dos #unciones= ML& ML es e ensa(% ador +ue nos su(inistra MAS M ,nor(a (ente/ en e su%directorio= TMASMTBIN& E 8&3 $ se encuentra ensa(% a"e de un

progra(a #uente escritoen ensa(% ador se rea i0a de a siguiente #or(a= ML RTopci!nS No ( %re^Progra(a&ASM Si e #ic2ero no se encuentra en e (is(o directorio +ue e ensa(% ador2a$ +ue poner e PADM donde se encuentra e #ic2ero #uente& Para visua i0ar as opciones con as +ue cuenta e ensa( % ador %asta con e"ecutar= ML Fb A gunas de estas opciones son= 5 FAD= Ma%i itae (ode o DINN ,para #ic2eros &COM/& 5 Fc=Ensa(% a sin Lin>ar ,LIN]/& 5 FPi=AEade in#or(aci!n si(%! ica para e BEBUG& 5 FP(= Ma%i ita a co(pati%i idad con MAS M <&43& Si se +uiere e"ecutar e MAS M 8&3 desde un entorno gr*#ico- se puede e"ecutar un progra(a +ue 2a$ en e directorio TMASMTBIN $ +ue se directorioTMASMTBINB& a(a P\B& Si #uera necesario a e"ecuci!n de LIN] este se encuentra en e

También podría gustarte