Sei sulla pagina 1di 75

Apostila das instrues assembler do 8088

Departamento de Eletroeletrnica
Disciplina: Microprocessadores II, Arquitetura de
Sistemas Digitais
ro!essores: "l#udio $e%o, &rlando 'oc(a, S)rgio
"ampos
ndice
ndice...................................................................................................................................3
.............................................................................................................................................4
1 - Modos de endereamento do 8086.................................................................................5
1.1 - Modos de endereamento de programa.......................................................................5
1.2 - Modos de endereamento de dados.............................................................................6
2 - Tipos de Dados (8086)....................................................................................................8
3 - nstr!"es #ssem$%& ....................................................................................................11
3.1 - nstr!"es de mo'imenta(o de dados......................................................................11
3.1.1 - nstr!"es de mo'imenta(o de !so gera%..............................................................11
3.1.2 - nstr!"es para manip!%a(o de stac)....................................................................15
3.1.3 - nstr!"es de con'ers(o de tipo..............................................................................1*
3.2 - nstr!"es aritm+ticas $in,rias...................................................................................18
3.2.1 - nstr!"es de adi(o e s!$tra(o............................................................................1-
3.2.2 - nstr!"es de compara(o e m!dana de sina%.......................................................25
3.2.3 - nstr!"es de m!%tip%ica(o e di'is(o.....................................................................26
3.3 - nstr!"es de aritm+tica decima%...............................................................................30
3.3.1 - nstr!"es de a%tera(o para ./D compactado......................................................30
3.3.2 - nstr!"es de a%tera(o para ./D n(o compactado...............................................32
3.4 - nstr!"es 01gicas.....................................................................................................36
3.4.1 - nstr!"es para opera"es $oo%eanas......................................................................36
3.4.2 - nstr!(o de teste de $it..........................................................................................3-
3.4.3 - nstr!"es de rota(o e des%ocamento....................................................................40
3.5 - nstr!"es de trans2er3ncia de contro%e.....................................................................4*
3.5.1 - nstr!"es de trans2er3ncia de contro%e incondiciona%............................................48
3.5.2 - nstr!"es de trans2er3ncia de contro%e condiciona%...............................................56
3.5.3 - nstr!"es de 0445................................................................................................5*
3.6 - 4pera"es com string................................................................................................5-
3.6.1 - 5re2i6os de repeti(o..............................................................................................65
3.* - nstr!"es de contro%e de 2%ag....................................................................................6*
3.*.1 - nstr!"es de contro%e do 2%ag de dire(o7 2%ag carr& e de interr!p(o...................6*
3.*.2 - nstr!"es de trans2er3ncia de 2%ags........................................................................6-
3.8 - nstr!"es de acesso a portas de entrada e sa8da.......................................................*1
3.- - nstr!"es de !so gera%..............................................................................................*3

1 - Modos de endereamento do
8086
&s modos de endereamento do 808* podem ser di+ididos em dois
tipos distintos:
,- Modos de endereamento de programa
.- Modos de endereamento de dados
1.1 - Modos de endereamento de
programa
/uando dese0a1se que a "2 reali3e uma busca de instru%o, o
endereo da locali3a%o de mem4ria da qual a instru%o ) obtida )
calculado como a soma de um o!!set arma3enado no ponteiro de
instru%o I, com o conte5do do registrador "S- 6ormalmente, o
conte5do do I ) incrementado 7 medida que as instrues s%o
e8ecutadas- Entretanto, as instrues de des+io no !lu8o de e8ecu%o
de um programa podem modi!ic#1lo de uma das tr9s maneiras abai8o:
,- Endereamento relativo a programa: 2m deslocamento de 8 ou
,* bits !ornecido pela instru%o na !orma de uma dado ) somado ao
I como um n5mero bin#rio sinali3ado- Essa opera%o n%o altera o
conte5do de "S, sendo uma opera%o intra1segmento :dentro do
pr4prio segmento corrente;-
.- Endereamento direto: 2m endereo de ,* bits obtido da pr4pria
instru%o na !orma de um dado ) colocado no I, nesse caso trata1se
de uma opera%o intra1segmento- Se o endereo especi!icado !or de
<. bits, os primeiros dois b=tes carregar%o o I e os dois seguintes o
"S, nesse caso ocorre uma opera%o inter1segmento :!ora do
segmento de c4digo corrente;-
<- Endereamento indireto: 2m dos modos de endereamento de
dados :que ser%o descritos a seguir; podem ser utili3ados para ler
um dado da mem4ria- Entretanto, esse dado ) interpretado como
um endereo de mem4ria pelas instrues de des+io ou c(amada de
subrotina- Se o dado de ,* bits ) acessado, este ser# carregado no
registrador I :opera%o intra1segmento;- Se no entanto, dois dados
de ,* bits s%o acessados, o primeiro ser# carregado em I e o
segundo em "S, reali3ando assim uma opera%o inter1segmento-
1.2 - Modos de endereamento de dados
Seis opes est%o dispon>+eis para o endereamento de dados
? Modo Imediato
6este tipo de endereamento, um dos operandos est# presente
no b=te seguinte ao c4digo da instru%o :op1code;- Se b=tes de
endereamento seguem o op1code, ent%o o dado a ser trans!erido de
maneira imediata +ir# logo ap4s os b=tes de endereamento-
E8emplo: ADD A@,,000( : Soma ,000( ao conte5do do
registrador A@

? Modo Direto
& modo de endereamento direto ) !eito somando1se os dois
b=tes seguintes ao op1code, ao "S, para compor um no+o endereo
linear-
E8emplo: supon(a que o registrador DS conten(a A000(- A instru%o
M&B D@,C8000(D, carregar# em D@ o conte5do da posi%o de mem4ria
DS:8000, cu0o endereo linear ) A8000(-

?Modo Direto Indexado
6esse modo de endereamento utili3a1se os registradores SI e
DI como inde8adores, somando1se um deslocamento de 8 ou ,* bits a
um desses registradores de !orma a gerar um endereo e!eti+o
:o!!set;-
E8emplo: M&B A$,CSIE,0(D
M&B CDI1,000(D,D@

?Modo Implcito
& modo impl>cito ) uma +ers%o simpli!icada do modo de
endereamento direto inde8ado- A 5nica di!erena entre eles ) que,
nesse modo, n%o ) especi!icado um deslocamento-
E8emplo: M&B A$,CSID
M&B CDID,D@

?Modo !elativo a Dados "#tili$ando o registrador de segmento
D%&
6esse modo o conte5do do registrador A@ ) utili3ado para
!ormar a base para o endereo linear- Fodos os modos de
endereamento descritos at) aqui, com e8ce%o do modo imediato,
podem ser utili3ados tamb)m no modo relati+o-
E8emplo: Modo relati+o direto M&B A@,CA@E,000(D
Modo relati+o impl>cito M&B DG,CA@ESID
Modo relati+o direto inde8ado M&B CA@EDIE,000(D,D$

?Modo !elativo a %tac'
6esse modo o conte5do do registrador A ) utili3ado para
!ormar a base para o endereo linear de acesso a dados gra+ados na
pil(a-
E8emplo: M&B A,S
M&B A@,CAE0H(D
M&B CAEDIE,0(D,A@
2 - (ipos de Dados "8086&
&s principais tipos de dados s%o os b=tes e as Iords- 2m b=te
s%o 8 bits, sendo estes numerados de 0 a J, o bit 0 ) o menos
signi!icati+o :$SA 1 least signi!icant bit;- A Iord ) uma seqK9ncia de
dois b=tes que ocupam dois endereos consecuti+os quaisquer- 2ma
Iord tem, portanto, ,* bits os quais s%o numerados de 0 a ,L-
6o+amente, o bit 0 ) o menos signi!icati+o :$SA;- & b=te que cont)m
o bit 3ero da Iord ) c(amado de loI b=te :b=te bai8o; e o que cont)m
o bit ,L ) c(amado de (ig( b=te :b=te alto;- 6o 808* e nos demais
microprocessadores da !am>lia I6FE$, o loI b=te ) arma3enado no
endereo mais bai8o e seu endereo ) tamb)m o endereo da Iord- &
endereo do (ig( b=te ) utili3ado somente quando a metade superior
da Iord esti+er endereada separadamente da parte bai8a-
"omo o 808* possui um barramento de ,* bits, as
comunicaes entre o microprocessador e a mem4ria ocorrem como
trans!er9ncias de Iords alin(adas a endereos paresM o
microprocessador con+erte trans!er9ncias entre endereos n%o
alin(ados a Iords, em m5ltiplas trans!er9ncias alin(adas- As
operaes desalin(adas redu3em a +elocidade do processamento em
!un%o de ciclos e8tras de barramento-
Embora os b=tes e Iords se0am os principais tipos de dados
para o 808*, o mesmo tem a possibilidade de interpretar estes
operandos de maneiras di+ersas- Algumas instrues especiali3adas
recon(ecem os seguintes tipos de dados:
Inteiro: 65mero bin#rio sinali3ado arma3enado em uma Iord ou
b=te- Fodas as operaes assumem a representa%o em
complemento de dois- & bit de sinal ) o J se !or um b=te ou o ,L se
!or uma Iord- Se negati+o, este bit ser# igual a ,, caso positi+o ser#
0- Em um b=te pode1se ter os +alores compreendidos entre 1,.8 a
E,.JM na Iord pode1se representar de 1<.J*8 a E<.J*J-
&rdinal: 65mero bin#rio sem sinal arma3enado em um b=te ou uma
Iord- Se esti+er contido em um b=te, estar# na !ai8a de 0 a .LL, se
numa Iord, entre 0 a *LL<L-
String: SeqK9ncia cont>nua de b=tes ou Iords- 2ma string pode
conter de 0 a :.
.0
;1, b=tes-
A"D: 'epresenta%o de um d>gito decimal codi!icado em bin#rio
:Ainar= "oded Decimal; na !ai8a de 0 a N- 2m decimal n%o
compactado ) e8presso por um b=te sem bit de sinal- "ada d>gito )
arma3enado em um b=te- A magnitude do n5mero ) o +alor bin#rio
do nibble de ordem mais bai8a :H bits menos signi!icati+os do b=te;M
os d>gitos somente podem assumir +alores entre 0 e N- & nibble de
ordem mais alta :H bits mais signi!icati+os do b=te;, de+e estar
3erado para as operaes de multiplica%o e de di+is%o, e podem
conter qualquer +alor nas somas e subtraes-
A"D "ompactado :pacOed A"D;: 'epresenta%o de d>gitos decimais
codi!icados em bin#rio, cada um na !ai8a de 0 a N- 2m d>gito )
arma3enado nos H bits menos signi!icati+os do b=te e outro nos H
bits mais signi!icati+osM portanto cada b=te comporta dois d>gitos-
) - Instr#*es +ssem,l-
6este cap>tulo ser%o apresentadas as instrues assembl= do
808*, que se aplicam a qualquer microprocessador da !am>lia 80@@@
da Intel
).1 - Instr#*es de movimenta.o de
dados
6este grupo de instrues est%o aquelas que permitem
manipular dados do tipo b=te, Iord, doubleIord entre mem4ria e
registradores do microprocessador- S%o de tr9s tipos:
Instrues de mo+imenta%o de uso geral
Instrues para manipula%o de stacO
Instrues de con+ers%o de tipo
).1.1 - Instr#*es de movimenta.o de #so geral
a& M/0 - Move
1rop2sito: "opiar o conte5do do operando1!onte para o operando1
destino- & conte5do do !onte n%o ) a!etado
3ormato: M&B destino,!onte
3lags: 6en(um a!etado
E8emplos: G# J tipos de instrues M&B:
, 1 Do acumulador para a mem4ria
M&B CSID, A$
M&B CA@EDID,A@
M&B CH00D, A$
. 1 Da mem4ria para o acumulador
M&B A$,CA@E.D
M&B A@,CSID
M&B A$,CH00D
< 1 Da mem4ria ou registrador para registrador de segmento
M&B ES,A@
M&B DS,CSID
M&B SS,CA@D
&bs: & registrador "S n%o pode ser usado como destino-
H 1 Do registrador de segmento para a mem4ria ou registrador
M&B A@,"S
M&B "@,SS
M&B CL00D,DS
L 1 De registrador para registrador P da mem4ria ou registrador
para registrador P de registrador para a mem4ria
M&B "$,DG
M&B A$,AG
M&B SI,A@
M&B DI,D@
M&B "$,CSID
M&B D@,CSIE,000D
M&B CA@EDID,DG
M&B FAAE$ACA@E<D,"$
* 1 Dado imediato para registrador
M&B A@,NNG
M&B A$,NNG
M&B "@,0QQQQG
M&B DI,*,"G


J 1 Dado imediato para a mem4ria
M&B ARFE F'CSID,0QG
M&B S&'D F'CA@E,.<HD,,,LJG

,& 4D% - 5arrega registrador de segmento
1rop2sito: Frans!erir quatro b=tes consecuti+os de um operando !onte
para um par de registradores de ,* bits- & operando1!onte precisa
estar na mem4ria- 2m dos registradores ) aquele especi!icado na
instru%o, o outro ) o DS-
3ormato: $DS destino, !onte
3lags: 6en(um a!etado

E8emplo: "onsidere que o registrador SI conten(a o +alor L<<HG, A@
conten(a 0QQQQG e que as posies de mem4ria a partir da indicada
por SI, dentro do segmento de dados, conten(a os seguintes b=tes
.,(, ,.(, DQ( e ."(- Ap4s a instru%o $DS A@, dIord ptrCSID o
registrador DS conter# o +alor ,..,G e o registrador A@ conter# o
+alor ."DQG-

c& 4E% - 5arrega registrador de segmento extra
1rop2sito: Frans!erir quatro b=tes consecuti+os de um operando !onte
para um par de registradores de ,* bits- & operando1!onte precisa
estar na mem4ria- 2m dos registradores ) aquele especi!icado na
instru%o, o outro ) o ES-
3ormato: $ES destino, !onte
3lags: 6en(um a!etado

E8emplo: "onsidere que o registrador A@ conten(a o +alor L<<HG, DI
conten(a 0QEQ<G e que as posies de mem4ria a partir da indicada
por A@, dentro do segmento de dados, conten(a os seguintes b=tes
E<(, .D(, .H( e A"(- Ap4s a instru%o $ES DI, dIord ptrCA@D o
registrador ES conter# o +alor .DE<G e o registrador DI conter# o
+alor A".HG-
).1.2 - Instr#*es para manip#la.o de stac'
d& 16%7 - 8rava 9ord na pil:a
1rop2sito: "olocar, na #rea de mem4ria usada como pil(a, o
conte5do de um registrador ou posi%o de mem4ria-
Modo de opera%o:
, 1 Decrementa o S
. 1 Mo+e o b=te mais alto do registrador ou posi%o de mem4ria para a
loca%o indicada por SS:S
< 1 Decrementa o S
H 1 Mo+e o b=te mais bai8o do operando para a loca%o indicada por
SS:S
3ormato: 2SG !onte
3lags: 6en(um a!etado

E8emplo: 2SG SI M Tra+a na pil(a a Iord arma3enada em SI
2SG ES M Tra+a na pil(a a Iord arma3enada em ES
2SG CA@ESIDM Tra+a na pil(a a Iord arma3enada na
posi%o de mem4ria apontada por :A@ESI;

e& 1/1 - 5opia 9ord da pil:a para registrador o# mem2ria
1rop2sito: 'etirar uma pala+ra arma3enada no topo da pil(a,
colocando1a no registrador ou posi%o de mem4ria especi!icada-
Modo de opera%o:
, 1 'etira o b=te no endereo de mem4ria determinado por SS:S,
mo+endo1o para o b=te de mais bai8a ordem do operando destino-
. 1 Incrementa o S em ,
< 1 'etira o b=te da posi%o indicada por SS:S e o mo+e para o b=te
de alta ordem do operando destino-
H 1 Incrementa o S em ,
3ormato: & destino
3lags: 6en(um a!etado

E8emplo: & A@ M Tra+a em A$ a Iord no topo da pil(a
& DS M Tra+a em DS a Iord no topo da pil(a
& CDID M Tra+a na posi%o de mem4ria apontada por
DI a Iord no topo da pil(a
).1.) - Instr#*es de convers.o de tipo
;& 5<= - 5onverte ,-te para 9ord
1rop2sito: ropagar o bit de sinal do +alor presente no registrador A$
:bit mais signi!icati+o; para o registrador AG- Assim, se o +alor em A$
!or positi+o, a instru%o arma3ena 00G em AG e, em caso contr#rio,
0QQG-
3ormato: "AS
3lags: 6en(um

g& 5=D - 5onverte 9ord em do#,le9ord
1rop2sito: ropagar o bit de sinal do +alor presente no registrador A@
:bit mais signi!icati+o; para o registrador D@- Assim, se o +alor em A@
!or positi+o, a instru%o arma3ena 0000G em D@ e, em caso contr#rio,
0QQQQG- Essa instru%o ) utili3ada antes da e8ecu%o de uma di+is%o
sinali3ada do conte5do de A@ por outro operando de ,* bits, de modo
a preenc(er o D@ com o +alor do sinal em A@-
3ormato: "SD
3lags: 6en(um
).2 - Instr#*es aritm>ticas ,in?rias
As instrues aritm)ticas bin#rias dos processadores da !am>lia
808*P.8*P<8*PH8*PL8*--- operam com dados codi!icados em bin#rio-
As operaes incluem adi%o, subtra%o, multiplica%o, di+is%o,
incremento, decremento, compara%o e mudana de sinal- S%o
suportados tanto n5meros inteiros sinali3ados como os n%o
sinali3ados- &s operandos !ontes podem ser +alores imediatos,
registradores ou mem4ria- &perandos destino podem ser registradores
ou mem4ria :e8ceto quando o operando !onte esti+er na mem4ria;-
As instrues aritm)ticas alteram os !lags UQ, "Q, SQ e &Q para
reportar o tipo de resultado produ3ido pela e8ecu%o da mesma- & tipo
de instru%o a ser utili3ada para o teste do !lag depender# do dado
estar sendo interpretado como +alor sinali3ado ou n%o- & !lag "Q
cont)m in!ormaes importantes para inteiros sinali3ados- & !lag UQ )
rele+ante para ambos, e ser# setado sempre que um resultado !or 00G
As instrues aritm)ticas operam dados de 8, ,* ou <. bits- &s
!lags s%o utili3ados para re!letir o taman(o da opera%o- or e8emplo,
se o resultado de uma opera%o de ADD com dados de 8 bits !or maior
do que .LL :decimal;, o !lag "Q ser# igual a ,- Se o n5mero inteiro )
sem sinal, o !lag "Q pode ser testado ap4s uma instru%o aritm)tica
bin#ria para determinar se a opera%o requer carr= ou borroI que ser#
propagado para o pr48imo est#gio da opera%o-
As instrues de incremento e decremento n%o alteram o
indicador "Q, isto permite o uso destas instrues para a atuali3a%o
de contadores no controle de loops sem altera%o dos reportes
re!erentes aos resultados da aritm)tica-
&s !lags SQ e &Q reportam a aritm)tica sinali3ada- & !lag SQ
possui o mesmo +alor do bit de sinal de um resultado- & !lag &Q ser#
igual a , em qualquer destes casos:
2m carr= !oi gerado do MSA para o bit de sinal mais o bit de sinal
n%o gerou um carr= para o "Q, ou se0a, o resultado !oi maior do que
o maior n5mero positi+o que pode ser representado no !ormato
complemento de dois-
2m carr= !oi gerado do bit de sinal para o MSA mas nen(um carr=
!oi gerado para o bit de sinal, ou se0a, o resultado !oi menor do que
o menor +alor negati+o que pode ser representado no !ormato
complemento de dois-
Estes !lags de status podem ser testados por qualquer tipo de
instru%o condicional-
).2.1 - Instr#*es de adi.o e s#,tra.o
:& +DD - +di.o
1rop2sito: E8ecutar a adi%o normal entre dois operandos, um !onte
e outro destino, de+ol+endo o resultado no destino-
3ormato: ADD destino,!onte
3lags: A!etados AQ, "Q, &Q, Q, SQ, UQ-

E8emplos: ADD A$,0HG M Adiciona 0HG ao conte5do de
A$
ADD b=te ptrC<00D,0LG M Adiciona 0LG ao conte5do da
posi%o de mem4ria DS:0<00
ADD A@,SI M Adiciona o conte5do de SI ao
conte5do de A@
ADD D$,C<00D M Adiciona o b=te gra+ado em
DS:0<00 ao conte5do de D$
ADD CSIEA@E.D,A$ M Adiciona o conte5do de
A$ ao conte5do da posi%o de
mem4ria DS:SIEA@E0.
i& +D5 - +di.o com carr- @
1rop2sito: E8ecutar a adi%o normal entre dois operandos, um !onte
e outro destino, mais o +alor do !lag carr= e8istente antes da
opera%o, de+ol+endo o resultado no destino-
3ormato: AD" destino,!onte
3lags: A!etados AQ, "Q, &Q, Q, SQ, UQ-

E8emplos: AD" A$,0HG M Adiciona 0HG ao conte5do de
A$ e ent%o soma o conte5do do !lag
carr=
AD" b=te ptrC<00D, 0LG M Adiciona 0LG ao
conte5do da posi%o de mem4ria
DS:0<00 e ent%o soma o conte5do do
!lag carr=
AD" A@,SI M Adiciona o conte5do de SI ao
conte5do de A@ e ent%o soma o
conte5do do !lag carr=
AD" D$,C<00D M Adiciona o b=te gra+ado em
DS:0<00 ao conte5do de D$ e ent%o
soma o conte5do do !lag carr=
AD" CSIEA@E.D, A$ M Adiciona o conte5do de
A$ ao conte5do da posi%o de
mem4ria DS:SIEA@E0. e ent%o
soma o conte5do do !lag carr=

"@& & !lag carr= ser# setado, ap4s a e8ecu%o da instru%o AD", caso
uma das condies abai8o ocorra:
a; G# um V+ai umW na etapa da soma dos operandos destino e fonte,
ou
b; G# um V+ai umW na etapa da soma do !lag carr= :e8istente antes da
opera%o;, com o resultado de :destino + fonte;-









A& %6< - %#,tra.o
1rop2sito: E8ecutar uma subtra%o entre dois operandos, um !onte e
outro destino, de+ol+endo o resultado no destino-
3ormato: S2A destino,!onte
3lags: A!etados AQ, "Q, &Q, Q, SQ, UQ-

E8emplos: S2A A$,0HG M Subtrai 0HG do conte5do de A$
S2A b=te ptrCDID,0LG M Subtrai 0LG do conte5do da
posi%o de mem4ria DS:DI
S2A A@,"@ M Subtrai o conte5do de
"@ do conte5do de A@
S2A A@,CSID M Subtrai a Iord gra+ada
em DS:SI do conte5do de A@
S2A CA@E.D,D$ M Subtrai o conte5do de D$ do
conte5do da posi%o de
mem4ria DS:A@E0.
A& %<< - %#,tra.o com carr-
1rop2sito: E8ecutar a subtra%o entre dois operandos, um !onte e
outro destino, menos o +alor do !lag carr= e8istente antes da
opera%o, de+ol+endo o resultado no destino-
3ormato: SAA destino,!onte
3lags: A!etados AQ, "Q, &Q, Q, SQ, UQ-

E8emplos: SAA A$,0HG M Subtrai 0HG do conte5do de A$
e ent%o subtrai do resultado o
conte5do do !lag carr=
SAA b=te ptrCDID,0LG M Subtrai 0LG do conte5do da
posi%o de mem4ria DS:DI e ent%o
subtrai do resultado o conte5do do
!lag carr=
SAA A@,"@ M Subtrai o conte5do de
"@ do conte5do de A@ e ent%o
subtrai do resultado o conte5do do !lag
carr=
SAA A@,CSID M Subtrai a Iord gra+ada
em DS:SI do conte5do de A@ e
ent%o subtrai do resultado o conte5do
do !lag carr=
SAA CA@E.D,D$ M Subtrai o conte5do de D$ do
conte5do da posi%o de
mem4ria DS:A@E0. e ent%o subtrai
do resultado o conte5do do !lag carr=
'& IB5 - Incrementa destino em 1
1rop2sito: Soma , ao conte5do de um operando, que pode ser
registrador ou posi%o de mem4ria-
3ormato: I6" destino
3lags: A!etados AQ, &Q, Q, SQ, UQ-

E8emplos: I6" A$ M Soma , ao conte5do de A$
I6" b=te ptr CSID : Soma , ao b=te gra+ado na
posi%o de mem4ria apontada por
DS:SI
&bs: 'egistradores de segmento n%o podem ser usados como
operando-

l& DE5 - Decrementa destino em 1
1rop2sito: Subtrai , do conte5do de um operando, que pode ser
registrador ou posi%o de mem4ria-
3ormato: DE" destino
3lags: A!etados AQ, &Q, Q, SQ, UQ-
E8emplos: DE" A@ M Subtrai , do conte5do de A@
DE" Iord ptr C0,00D : Subtrai , da Iord gra+ada na
posi%o de mem4ria apontada por
DS:0,00
&bs: 'egistradores de segmento n%o podem ser usados como
operando-
).2.2 - Instr#*es de compara.o e m#dana de sinal
m& 5M1 - 5ompara dois operandos
1rop2sito: E!etuar uma subtra%o entre dois operandos, alterando os
!lags e descartando o resultado da opera%o-
3ormato: "M destino,!onte
3lags: A!etados AQ, "Q, &Q, Q, SQ, UQ-

E8emplos: "M A$,LJG M "ompara o conte5do de A$ com o
+alor LJG
"M DI,A@ M "ompara os conte5dos de DI e A@
"M CSID,A@ M "ompara uma Iord gra+ada na
posi%o DS:SI, com o conte5do de A@
"M "G,CSIEA@E<D M "ompara o conte5do de "G
com o b=te arma3enado na posi%o de
mem4ria DS:SIEA@E<

n& BE8 - 5alc#la o complemento de dois do destino
1rop2sito: E!etuar o complemento de dois de um operando, que pode
ser registrador ou posi%o de mem4ria--
3ormato: 6ET destino
3lags: A!etados AQ, "Q, &Q, Q, SQ, UQ-

E8emplo: "onsidere que o registrador "@ conten(a o +alor 000L :EL;-
Ap4s a e8ecu%o da instru%o 6ET "@, o registrador conter# o
+alor QQQA :1L;-
).2.) - Instr#*es de m#ltiplica.o e divis.o
o& M64 - M#ltiplica.o sem sinal
1rop2sito: E!etuar uma multiplica%o n%o sinali3ada entre o conte5do
do acumulador :A$ ou A@; pelo operando !onte, de+ol+endo o
resultado no acumulador A@ :caso a opera%o ten(a en+ol+ido A$ com
um operando de 8 bits;, ou em D@ e A@ :caso a opera%o ten(a
en+ol+ido A@ e um operando de ,* bits;-
3ormato: M2$ !onte
3lags: A!etados "Q, &Q, inde!inidos AQ, Q, SQ, UQ-

E8emplos: M&B A$, 8<G
M&B "$, HHG
M2$ "$ M reali3a o produto entre A$ e "$,
resultado em A@

M&B A@,,.<HG
M&B A@,*000G
M2$ A@ M reali3a o produto de ,* bits entre A@
e A@, resultado em D@:parte alta; e
A@:parte bai8a;

p& IM64 - M#ltiplica.o com sinal
1rop2sito: E!etuar uma multiplica%o sinali3ada entre o conte5do do
acumulador :A$ ou A@; pelo operando !onte, de+ol+endo o resultado
no acumulador A@ :caso a opera%o ten(a en+ol+ido A$ com um
operando de 8 bits;, ou em D@ e A@ :caso a opera%o ten(a en+ol+ido
A@ e um operando de ,* bits;-
"omo s%o sinali3ados , os operandos podem ter +alores na !ai8a
de 1,.8 a E,.J :opera%o de 8 bits; ou entre 1<.J*8 a E<.J*J
:opera%o de ,* bits;-
3ormato: IM2$ !onte
3lags: A!etados "Q, &Q, inde!inidos AQ, Q, SQ, UQ-

E8emplos: M&B A$, 8<G
M&B "$, HHG
IM2$ "$ M reali3a o produto entre A$ e "$,
resultado em A@

M&B A@,,.<HG
M&B A@,*000G
IM2$ A@ M reali3a o produto de ,* bits entre A@
e A@, resultado em D@:parte alta; e
A@:parte bai8a;

C& DI0 - Divis.o sem sinal
1rop2sito: E!etuar uma di+is%o n%o sinali3ada entre o conte5do do
acumulador :A$ ou A@; pelo operando !onte, de+ol+endo o resultado
no acumulador A@ :caso a opera%o ten(a en+ol+ido A@ com um
operando de 8 bits;, ou em D@ e A@ :caso a opera%o ten(a en+ol+ido
DS:A@ e um operando de ,* bits;- 6a opera%o de 8 bits, o quociente
da opera%o de di+is%o !ica em A$ e o resto da di+is%o em AG- 6a
opera%o de ,* bits, o quociente da opera%o !ica em A@ e o resto da
di+is%o em D@-
3ormato: DIB !onte
3lags: inde!inidos AQ, "Q, &Q, Q, SQ, UQ-

E8emplos: DIB A$ M Di+idendo em A@, di+isor em A$- &
quociente estar# em A$ e o resto em AG
DIB A@ M Di+idendo em D@:A@, di+isor em A@- &
quociente estar# em A@ e o resto em D@

6o primeiro e8emplo, considere que o conte5do do acumulador
A@ se0a 800G e que A$ conten(a <0G- Ap4s a e8ecu%o da instru%o,
A$ conter# .AG e AG o +alor .0G

r& IDI0 - Divis.o com sinal
1rop2sito: E!etuar uma di+is%o sinali3ada entre o conte5do do
acumulador :A$ ou A@; pelo operando !onte, de+ol+endo o resultado
no acumulador A@ :caso a opera%o ten(a en+ol+ido A@ com um
operando de 8 bits;, ou em D@ e A@ :caso a opera%o ten(a en+ol+ido
DS:A@ e um operando de ,* bits;- 6a opera%o de 8 bits, o quociente
da opera%o de di+is%o !ica em A$ e o resto da di+is%o em AG- 6a
opera%o de ,* bits, o quociente da opera%o !ica em A@ e o resto da
di+is%o em D@-
Se os operandos ti+erem sinais di!erentes, sendo um positi+o e o
outro negati+o, a di+is%o ser# !eita de !orma que o resto ten(a o
mesmo sinal do di+idendo-
3ormato: IDIB !onte
3lags: inde!inidos AQ, "Q, &Q, Q, SQ, UQ-

E8emplos: IDIB DG M Di+idendo em A@, di+isor em
DG- & quociente estar# em A$ e o
resto em AG
IDIB Iord ptrCA@E,00D M Di+idendo em D@:A@,
di+isor na posi%o de mem4ria
apontada por :A@E,00;- & quociente
estar# em A@ e o resto em D@
).) - Instr#*es de aritm>tica decimal
A aritm)tica decimal ) reali3ada combinando1se as instrues da
aritm)tica bin#ria com as da aritm)tica decimal- As instrues da
aritm)tica decimal s%o utili3adas em uma das seguintes !ormas:
ara a0ustar os resultados de uma instru%o da aritm)tica bin#ria,
reali3ada anteriormente, a !im de se produ3ir um +alor decimal
+#lido, compactado ou n%o-
ara a0ustar as entradas de um a opera%o bin#ria subsequente
para que a mesma produ3a um resultado decimal, compactado ou
n%o- estas instrues operam somente nos registradores A$ ou AG,
associados ao !lag AQ-
).).1 - Instr#*es de altera.o para <5D compactado
s& D++ - +A#ste decimal ap2s adi.o
1rop2sito: "orrigir o resultado presente no acumulador A$, ap4s uma
soma entre dois +alores A"D compactados :um d>gito em cada nibble;,
para obter um par de d>gitos A"D compactados-
& procedimento dessa instru%o ):
,- Se os quatro bits menos signi!icati+os de A$ est%o entre A e Q, ou se
o !lag AQ est# ligado, somar 0*G ao acumulador A$ e ligar o !lag AQ-
.- Se os quatro bits mais signi!icati+os de A$ est%o entre A e Q, ent%o
somar *0G ao acumulador A$ e ligar o !lag "Q-
3ormato: DAA
3lags: A!etados AQ, "Q, Q, SQ, UQ, inde!inido &Q-

E8emplo: Supon(a que A$ conten(a o +alor <NG e AG o +alor L<G-
Ap4s a seqK9ncia
ADD A$,AG
DAA
o acumulador A$ conter# o +alor N.G, e n%o 8"G-

t& D+% - +A#ste decimal ap2s s#,tra.o
1rop2sito: "orrigir o resultado presente no acumulador A$, ap4s uma
subtra%o entre dois +alores A"D compactados :um d>gito em cada
nibble;, para obter um par de d>gitos A"D compactados-
& procedimento dessa instru%o ):
,- Se os quatro bits menos signi!icati+os de A$ est%o entre A e Q, ou se
o !lag AQ est# ligado, subtrair 0*G do conte5do do acumulador A$ e
ligar o !lag AQ-
.- Se os quatro bits mais signi!icati+os de A$ est%o entre A e Q, ou se o
!lag "Q est# ligado, ent%o subtrair *0G do conte5do do acumulador
A$ e ligar o !lag "Q-
3ormato: DAS
3lags: A!etados AQ, "Q, Q, SQ, UQ-

E8emplo: Supon(a que A$ conten(a o +alor 8HG e D$ o +alor ,*G-
Ap4s a seqK9ncia
S2A A$,D$
DAS
o acumulador A$ conter# o +alor *8G, e n%o *EG-
).).2 - Instr#*es de altera.o para <5D n.o
compactado
#& +++ - +A#ste +%5II ap2s adi.o
1rop2sito: "orrigir o resultado presente no acumulador A$, ap4s uma
soma de dois d>gitos AS"II-
& procedimento dessa instru%o ):
,- Se os quatro bits menos signi!icati+os de A$ est%o entre A e Q e o
!lag AQX0, ent%o e8ecute o passo <-
.- Se os quatro bits menos signi!icati+os de A$ est%o entre A e Q, ou se
o !lag AQX,, ent%o somar 0*G ao acumulador A$, somar 0,G ao
conte5do de AG e ligar o !lag AQ-
<- Apaga os quatro bits mais signi!icati+os do registrador A$-
3ormato: AAA
3lags: A!etados AQ, "QM inde!inidos, Q, SQ, UQ, &Q-

E8emplo: Supon(a que o acumulador A@ conten(a o +alor 0H<JG e
que "$ conten(a o +alor <HG- Ap4s a seqK9ncia
ADD A$,"$
AAA
o acumulador A@ conter# o +alor 0L0,G-

v& ++% - +A#ste +%5II ap2s s#,tra.o
1rop2sito: "orrigir o resultado presente no acumulador A$, ap4s uma
subtra%o entre dois d>gitos AS"II-
& procedimento dessa instru%o ):
,- Se os quatro bits menos signi!icati+os de A$ est%o entre A e Q e o
!lag AQX0, ent%o e8ecute o passo <-
.- Se os quatro bits menos signi!icati+os de A$ est%o entre A e Q, ou se
o !lag AQX,, ent%o subtraia 0*G do conte5do do acumulador A$,
subtraia 0,G do conte5do de AG e ligue o !lag AQ-
<- Apaga os quatro bits mais signi!icati+os do registrador A$-
H- Sinali3a o !lag "Q com o mesmo +alor do AQ-
3ormato: AAS
3lags: A!etados AQ, "QM inde!inidos, Q, SQ, UQ, &Q-

E8emplo: "onsidera que o acumulador A@ conten(a o +alor 0N<LG-
Ap4s a seqK9ncia
S2A A$,<*G
AAS
o acumulador A@ conter# o +alor 080NG-

x& ++M - +A#ste +%5II ap2s m#ltiplica.o
1rop2sito: "orrigir o resultado da multiplica%o de dois n5meros
decimais n%o compactados- A instru%o de+e seguir1se a multiplica%o
de dois operandos decimais n%o compactados para produ3ir um
resultado decimal +#lido- A instru%o !ar# o seguinte: di+ide o +alor em
A$ por ,0, arma3enando o resultado em AG e o resto em A$-
3ormato: AAM
3lags: A!etados Q, SQ, UQM inde!inidos, AQ, "Q, &Q- :os !lags s%o
a!etados de acordo com o resultado em A$-;

E8emplo: Supon(a que o acumulador A$ conten(a o +alor 0N e que A$
conten(a o +alor 08- Ap4s a seqK9ncia
M2$ A$
AAM
o acumulador A@ conter# o +alor 0J0.G- &bser+e que se a esse +alor
somarmos <0<0G, teremos em A@ dois d>gitos num)ricos em AS"II-

9& ++D - +A#ste +%5II antes de #ma divis.o
1rop2sito: Modi!ica o numerador nos registradores AG ou A$ a !im de
prepar#1lo para a di+is%o de dois operandos decimais n%o
compactados, o que resultar# num n5mero decimal n%o compactado
+#lido- & registrador AG de+e conter o d>gito superior e o A$ o d>gito
in!erior o resultado desta instru%o ) arma3enado no registrador A$- &
registrador AG ) 3erado-
rocedimento e8ecutado pela instru%o:
,- Multiplica o +alor de AG por ,0-
.- Soma o conte5do de AG a A$-
<- Uera o registrador AG-
3ormato: AAD
3lags: A!etados Q, SQ, UQM inde!inidos, AQ, "Q, &Q- :os !lags s%o
a!etados de acordo com o resultado em A$-;

E8emplo: Supon(a que o acumulador A@ conten(a o +alor 0N0.- Ap4s
a instru%o
AAD
o acumulador A@ conter# o +alor 00L"G-
).D - Instr#*es 42gicas
As instrues l4gicas possuem dois operandos- &s operandos
!ontes podem ser +alores imediatos, registradores gerais, ou mem4ria-
&s operandos destino podem ser registradores gerais ou mem4ria
:e8ceto quando o operando !onte tamb)m !or mem4ria;- As instrues
l4gicas modi!icam o estado dos !lags- Est%o organi3adas em:
Instrues para operaes booleanas-
Instrues de teste de bit-
Instrues de deslocamentos e rotaes-
).D.1 - Instr#*es para opera*es ,ooleanas
As operaes l4gicas s%o reali3adas pelas instrues A6D, &',
@&' e 6&F
-& B/( - /pera.o l2gica B/(
1rop2sito: E!etuar o complemento de , do operando, que pode ser
registrador ou mem4ria- Fodos os bits do operando s%o
complementados-
3ormato: 6&F destino
3lags: 6en(um a!etado

E8emplo: 6&F Iord ptrCSID
6&F "$

supon(a que no 5ltimo caso o +alor inicial de "$ se0a ,QG- Ap4s a
instru%o, "$ assumiu o +alor E0G-

$& +BD - /pera.o l2gica +BD
1rop2sito: E8ecutar a !un%o l4gica A6D :VEW; entre cada bit de um
operando1!onte e seu correspondente em um operando1destino,
colocando o resultado no operando1destino-
3ormato: A6D destino,!onte
3lags: A!etados: "Q, &Q, Q, SQ, UQM inde!inido: AQ

E8emplo: A6D A$,08G M 'eali3a a opera%o l4gica entre o
conte5do de A$ e o +alor 08G, bit1a1bit-
A6D b=te ptrCA@D,0*G M 'eali3a a opera%o l4gica entre
o conte5do da posi%o de mem4ria
apontada por A@ e o +alor 0*G, bit1a1bit-
A6D A@,"@ M 'eali3a a opera%o l4gica entre o
conte5do de A@ e "@, bit1a1bit-

a1& /! - /pera.o l2gica /!
1rop2sito: E8ecutar a !un%o l4gica &' :V&2W; entre cada bit de um
operando1!onte e seu correspondente em um operando1destino,
colocando o resultado no operando1destino-
3ormato: &' destino,!onte
3lags: A!etados: "Q, &Q, Q, SQ, UQM inde!inido: AQ

E8emplo: &' A@,080,G M 'eali3a a opera%o l4gica entre
o conte5do de A@ e o +alor 080,G, bit1a1bit-
&' CA@D,D$ M 'eali3a a opera%o l4gica entre o
conte5do da posi%o de mem4ria
apontada por A@ e o conte5do do
registrador D$-
&' A$,A$ M 'eali3a a opera%o l4gica entre o
conte5do de A$ e A$, bit1a1bit-

,1& E/! - /pera.o l2gica E/!
1rop2sito: E8ecutar a !un%o l4gica @&' :V&2 E@"$2SIB&W; entre
cada bit de um operando1!onte e seu correspondente em um
operando1destino, colocando o resultado no operando1destino-
3ormato: @&' destino,!onte
3lags: A!etados: "Q, &Q, Q, SQ, UQM inde!inido: AQ

E8emplo: @&' A$,AG M 'eali3a a opera%o l4gica entre o
conte5do de A$ e o conte5do de AG-
@&' D$,CA@D M 'eali3a a opera%o l4gica
entre o conte5do de D$ e o conte5do da
posi%o de mem4ria apontada por A@-
@&' "@,,.<HG M 'eali3a a opera%o l4gica entre o
conte5do de "@ e o dado imediato
,.<HG-
).D.2 - Instr#.o de teste de ,it
c1& (E%( - 5ompara.o l2gica
1rop2sito: E!etuar o teste de determinados bits de um operando,
para determinar se os mesmos est%o ligados ou desligados, mas sem
a!eta1los-
3ormato: FESF destino,!onte
3lags: A!etados: "Q, &Q, Q, SQ, UQM inde!inido: AQ

E8emplo: FESF A$,AG M Beri!ica que bits no registrador A$
est%o ati+os, de acordo com a m#scara
gra+ada em AG-
FESF D$,CA@D M Beri!ica que bits no
registrador D$ est%o ati+os, de acordo
com a m#scara gra+ada na posi%o de mem4ria
apontada por A@-
FESF "@,,.<HG M Beri!ica que bits no registrador "@
est%o ati+os, de acordo com a m#scara
especi!icada na instru%o :,.<HG;-
).D.) - Instr#*es de rota.o e deslocamento
d1& !54 - !otacione para a esC#erda atrav>s do carr-
1rop2sito: 'otacionar o conte5do da loca%o de mem4ria ou
registrador especi!icado, para a esquerda, atra+)s do !lag carr=- &
n5mero de +e3es a rotacionar ) ,, ou aquele contido no registrador "$-
& conte5do de "$ n%o ) a!etado pela instru%o, quando usado como
contador-
3ormato: '"$ destino,, ou
'"$ destino, "$
3lags: A!etados: "Q, &Q

E8emplos: '"$ "$,, M 'otaciona o conte5do do registrador
"$, uma posi%o para a esquerda-
'"$ A@,"$ M 'otaciona o conte5do do registrador
A@, o n5mero de +e3es especi!icado
em "$,
'"$ b=te ptrCSID,"$ M 'otaciona o conte5do da
posi%o de mem4ria apontada por SI,
o n5mero de +e3es especi!icado em "$-

e1& !5! - !otacione para a direita atrav>s do carr-
1rop2sito: 'otacionar o conte5do da loca%o de mem4ria ou
registrador especi!icado, para a direita, atra+)s do !lag carr=- &
n5mero de +e3es a rotacionar ) ,, ou aquele contido no registrador "$-
& conte5do de "$ n%o ) a!etado pela instru%o, quando usado como
contador-
3ormato: '"' destino,, ou
'"' destino, "$
3lags: A!etados: "Q, &Q

E8emplos: '"' A$,, M 'otaciona o conte5do do registrador
A$, uma posi%o para a direita-
'"' AG,"$ M 'otaciona o conte5do do registrador
AG, o n5mero de +e3es especi!icado
em "$,
'"' b=te ptrC<00D,"$ M 'otaciona o conte5do da
posi%o de mem4ria DS:0<00, o
n5mero de +e3es especi!icado em "$-

;1& !/4 - !otacione para a esC#erda
1rop2sito: 'otacionar o conte5do da loca%o de mem4ria ou
registrador especi!icado, para a esquerda- & n5mero de +e3es a
rotacionar ) ,, ou aquele contido no registrador "$- & conte5do de "$
n%o ) a!etado pela instru%o, quando usado como contador-
3ormato: '&$ destino,, ou
'&$ destino, "$
3lags: A!etados: "Q, &Q

E8emplos: '&$ D@,, M 'otaciona o conte5do do registrador
D@, uma posi%o para a esquerda-
'&$ AG,"$ M 'otaciona o conte5do do registrador
AG, o n5mero de +e3es especi!icado
em "$,
'&$ b=te ptrCA@D,, M 'otaciona o conte5do da
posi%o de mem4ria DS:A@, uma posi%o
para a esquerda-

g1& !/! - !otacione para a direita
1rop2sito: 'otacionar o conte5do da loca%o de mem4ria ou
registrador especi!icado, para a direita- & n5mero de +e3es a
rotacionar ) ,, ou aquele contido no registrador "$- & conte5do de "$
n%o ) a!etado pela instru%o, quando usado como contador-
3ormato: '&' destino,, ou
'&' destino, "$
3lags: A!etados: "Q, &Q

E8emplos: '&' A$,"$ M 'otaciona o conte5do do registrador
A$, o n5mero de +e3es especi!icado em "$-
'&' AG,, M 'otaciona o conte5do do registrador
AG, uma posi%o para a direita-
'&' b=te ptrCDID,, M 'otaciona o conte5do da
posi%o de mem4ria apontada por DI,
no segmento de dados, uma posi%o para a
direita-



:1& %+4F%74 - Deslocamento aritm>tico l2gico F Deslocamento
l2gico
1rop2sito: Deslocar o conte5do da loca%o de mem4ria ou registrador
especi!icado 7 esquerda- "om o deslocamento o bit que esta+a na
posi%o mais signi!icati+a ) le+ado para o !lag "Q, cu0o +alor anterior )
perdido, e um bit 0 ) carregado na posi%o do bit menos signi!icati+o-
& n5mero de +e3es a deslocar ) ,, ou aquele contido no registrador
"$- & conte5do de "$ n%o ) a!etado pela instru%o, quando usado
como contador-
3ormato: SA$ destino,, ou
SA$ destino, "$
3lags: A!etados: "Q, &Q, Q, SQ, UQM inde!inido AQ-

E8emplos: SA$ D@,, M Desloca o conte5do do registrador D@,
uma posi%o para a esquerda-
SA$ AG,"$ M Desloca o conte5do do registrador
AG, o n5mero de +e3es especi!icado em
"$,
SA$ b=te ptrCA@D,, M Desloca o conte5do da posi%o
de mem4ria DS:A@, uma posi%o para a
esquerda-

:1& %+! - Deslocamento aritm>tico G direita
1rop2sito: Deslocar o conte5do da loca%o de mem4ria ou registrador
especi!icado 7 direita- "om o deslocamento o bit que esta+a na posi%o
mais signi!icati+a ) mantido, e o bit 0 ) carregado no !lag "Q- &
n5mero de +e3es a deslocar ) ,, ou aquele contido no registrador "$-
& conte5do de "$ n%o ) a!etado pela instru%o, quando usado como
contador-
3ormato: SA' destino,, ou
SA' destino, "$
3lags: A!etados: "Q, &Q, Q, SQ, UQM inde!inido AQ-

E8emplos: SA' A$,"$ M Desloca o conte5do do registrador A$,
o n5mero de +e3es especi!icado em "$-
SA' AG,, M Desloca o conte5do do registrador
AG, uma posi%o para a direita-
SA' b=te ptrCDID,, M Desloca o conte5do da posi%o de
mem4ria apontada por DI, no segmento de
dados, uma posi%o para a direita-

i1& %7! - Deslocamento l2gico G direita
1rop2sito: Deslocar o conte5do da loca%o de mem4ria ou registrador
especi!icado 7 direita, inserindo um bit 0 na posi%o do bit mais
signi!icati+o do operando e le+ando o bit 0 :menos signi!icati+o;para o
!lag "Q, cu0o +alor inicial ) perdido- & n5mero de +e3es a deslocar ) ,,
ou aquele contido no registrador "$- & conte5do de "$ n%o ) a!etado
pela instru%o, quando usado como contador-
3ormato: SG' destino,, ou
SG' destino, "$
3lags: A!etados: "Q, &Q, Q, SQ, UQM inde!inido AQ-

E8emplos: SG' A$,"$ M Desloca o conte5do do registrador A$,
o n5mero de +e3es especi!icado em "$-
SG' AG,, M Desloca o conte5do do registrador
AG, uma posi%o para a direita-
SG' b=te ptrCDID,, M Desloca o conte5do da
posi%o de mem4ria apontada por DI, no
segmento de dados, uma posi%o para a
direita-
).H - Instr#*es de trans;erIncia de
controle
&s microprocessadores 80@@@ permitem que o controle do !lu8o
de e8ecu%o se0a trans!erido de !orma condicional ou incondicional- &
modo condicional de trans!er9ncia ) !eito a partir do estado ou de
combina%o de estados dos !lags- As trans!er9ncias incondicionais s%o
sempre e8ecutadas-
).H.1 - Instr#*es de trans;erIncia de controle
incondicional
As instrues que reali3am a trans!er9ncia incondicional para um
endereo destino em um segmento de c4digo s%o: YM, "A$$, 'EF, I6F
e I'EF- & endereo destino pode estar no mesmo segmento de c4digos
:trans!er9ncia near 1 pr48ima; ou em um segmento de c4digos
di!erente :trans!er9ncia !ar 1 distante;-

A1& JM1 - Desviar
1rop2sito: ro+ocar um des+io incondicional no !lu8o de
processamento, trans!erindo a e8ecu%o para o operando al+o-
& des+io pode ser !eito dentro ou !ora do atual segmento de
c4digo- 6o caso de des+ios dentro do pr4prio segmento, denominados
des+ios intra1segmento, apenas o registrador I ) a!etado pela
instru%o, sendo alterado para o +alor endereo1al+o- /uando a
distZncia entre o +alor atual e o endereo1al+o, para onde se d# o
des+io incondicional est# entre 1,.8 a E,.J b=tes, pode1se especi!icar
um des+io1curto :YM SG&'F;, tamb)m c(amado des+io incondicional
relati+o curto, com a +antagem de o deslocamento para o des+io ser
e8presso por um 5nico b=te, contendo um +alor sinali3ado que, ao ser
somado ao +alor de I gerar# o endereo1al+o- Se a distZncia relati+a
para onde se dar# o des+io !or maior que E,.J ou 1,.8, ent%o o
endereo relati+o gerado ser# um +alor sinali3ado de ,* bits, o que
possibilita des+ios por todo o segmento corrente-
E8emplo: label,: 11111111111
11111111111
atual: YM label,

A outra !orma de des+io incondicional ) o des+io inter1segmento-
6este caso os +alores do "S e I precisam ser alterados para que
ocorra a migra%o de um segmento para outro- & c4digo que identi!ica
um des+io incondicional para outro segmento de+e ser seguido por H
b=tes: os dois primeiros contendo o no+o +alor do I e os dois
seguintes o no+o +alor do "S-
E8emplo: 11111111111
atual: YM no+o[longe 1111\ Segmento de c4digo
atual
11111111111

11111111111
no+o[longe: M&B A@,,0G 1111\ Segmento de
c4digo no+o
11111111111
As !ormas de especi!icar um des+io incondicional, +istas at)
aqui, s%o ditas diretas, pois o endereo da posi%o1al+o que dese0a1se
atingir ) e8plicitamente especi!icado na instru%o, quer com um +alor
num)rico, quer por um VlabelW- A outra !orma de e8ecutar1se um
des+io incondicional ) a indireta, onde o +alor do endereo1al+o est#
arma3enado em registrador:es; ou em posi%o:es; de mem4ria, o
qual ser# mo+ido para o registrador I, no caso de des+io intra1
segmento ou para os registradores I e "S, no caso de des+io inter1
segmento-
3ormato: YM al+o
3lags: 6en(um a!etado

E8emplos: YM des+io[curto M Direto, intra1segmento,
relati+o-
YM des+io[intra M Direto, intra1segmento-
YM des+io[inter M Direto, inter1segmento-
YM "@ M Indireto, intra1segmento, o
endereo1al+o est# arma3enado em
"@-
YM dIord ptrCA@D M Indireto, inter1segmento, o
endereo1al+o est# arma3enado nas
H posies de mem4ria a partir de
DS:A@-

'1& 5+44 - 5:ama #ma proced#re
1rop2sito: "(amar uma subrotina, alterando o !lu8o normal de
e8ecu%o, processar uma sub1rotina e ao !im da mesma, permitir que
a e8ecu%o retorne ao ponto do programa imediatamente posterior 7
instru%o de c(amada da sub1rotina-
A sub1rotina c(amada pode residir no mesmo segmento de
c4digo corrente ou n%o- Fem1se assim as c(amadas de subrotinas
intra1segmento e inter1segmento, respecti+amente-
A sub1rotina pode ser c(amada por +ia direta ou indireta-
"(amadas diretas podem ser reali3adas a VlabelsW:nomes associados a
endereos de mem4ria; dentro de segmentos de c4digo, enquanto
que, por +ia indireta, usa1se registradores que cont9m em si, ou nas
posies de mem4rias apontadas por eles, o +alor do endereo onde
se inicia a sub1rotina-
ara guardar o endereo da instru%o a ser e8ecutada ao
retornar da sub1rotina, o processador sal+a na pil(a o conte5do do I,
no caso de c(amadas a subrotinas no mesmo segmento de c4digo-
6as c(amadas de sub1rotinas inter1segmento, al)m do +alor de I,
tamb)m ) necess#rio sal+ar o conte5do do "S, pois ele ser# alterado
para pro+ocar o des+io para outro segmento- & processador primeiro
sal+a o I e s4 ent%o o "S-
3ormato: "A$$ al+o
3lags: 6en(um a!etado

E8emplos: "A$$ sub[pro8ima M Direta, intra1segmento
"A$$ sub[distante M Direta, inter1segmento
"A$$ A@ M Indireta, intra1segmento
"A$$ dIord ptr CSID M Indireta, inter1segmento

l1& !E( - !etorno de #ma proced#re
1rop2sito: Encerrar uma sub1rotina, trans!erindo o !lu8o do
processamento para a instru%o seguinte 7 c(amada da subrotina- &
endereo desta instru%o, para onde de+e ser dado o retorno, !oi
colocado na pil(a pela instru%o "A$$- ortanto, para encerrar uma
sub1rotina VnearW, que reside no mesmo segmento, a instru%o 'EF
de+er# apenas retirar uma pala+ra do topo da pil(a e mo+91la para o
registrador I- ara enderear uma procedurre V!arW, que reside em um
outro segmento de c4digo, a instru%o 'EF de+er# retirar as duas
pala+ras que !oram arma3enadas na pil(a pela instru%o "A$$ inter1
segmento, restaurando os antigos +alores de "S e I-
&pera%o da instru%o
'etirar uma pala+ra do topo da pil(a e mo+e1la para o I-
Incrementar o S em .-
Se a rotina ) do tipo inter1segmento, ent%o:
'etirar outra pala+ra do topo da pil(a e mo+e1la para o "S-
Incrementar o S em .-
3ormato: 'EF
3lags: 6en(um a!etado

m1& IB( - Interr#p.o
1rop2sito: Alterar o !lu8o normal de e8ecu%o do programa,
des+iando1se para uma rotina de interrup%o, cu0o +etor :endereo
!ormado por "S:I; est# presente numa tabela nos primeiros ,0.H
b=tes da mem4ria-
A tabela de +etores de interrup%o tem .L* entradas, cada qual
com H b=tes :os dois primeiros contendo o +alor do I e os dois
seguintes o +alor do "S;, que indicam o endereo de uma rotina na
mem4ria-
rocedimento da instru%o:
Decrementa o S em . e sal+a o registrador de !lags na pil(a
Apaga os bits IQ e FQ, desabilitando !uturas interrupes de
(ardIare
Decrementa o S em ., sal+a o "S na pil(a e coloca a pala+ra de
mais alta ordem do +etor selecionado em "S
Decrementa o S em ., sal+a o I na pil(a e carrega1o com a
pala+ra de bai8a ordem dentro do +etor selecionado- A pr48ima
instru%o a ser e8ecutada ser# ent%o a primeira dentro da rotina de
interrup%o-
3ormato: I6F tipo
3lags: A!etados: IQ e FQ

n1& I!E( - !etorno de #ma interr#p.o
1rop2sito: 'etornar de uma rotina de tratamento de interrup%o- Esta
instru%o simplesmente recupera da pil(a o conte5do dos
registradores que !oram automaticamente sal+os, na ocorr9ncia da
interrup%o-
&pera%o da instru%o
'etirar uma pala+ra do topo da pil(a e mo+e1la para o I-
Incrementar o S em .-
'etirar outra segunda pala+ra do topo da pil(a e mo+e1la para o "S-
Incrementar o S em .-
'etirar outra terceira pala+ra do topo da pil(a e mo+e1la para o
registrador de !lags-
Incrementar o S em .-
3ormato: I'EF
3lags: Fodos s%o a!etados






















).H.2 - Instr#*es de trans;erIncia de controle
condicional
As instrues de controle condicional s%o des+ios :0umps; que
trans!erem a e8ecu%o do programa caso o estado de um !lag se0a o
mesmo que o especi!icado pela instru%o-

o1& J"condi.o& - Desvio c#rto se condi.o > satis;eita
1rop2sito: Des+iar o !lu8o do processamento para o operando1al+o,
se uma condi%o testada !or encontrada- A distZncia do endereo1al+o,
para onde se quer direcionar o des+io, de+e estar na !ai8a de 1,.8 a
E,.J b=tes da pr48ima instru%o-
&bser+a%o: Above e below re!erem1se a rela%o entre dois +alores
n%o sinali3ados e greater e less, 7 rela%o entre dois +alores
sinali3ados

Desvios condicionais n.o sinali$ados
Mnemnico Estado dos !lags Descri%o
YAPY6AE :"Q ou UQ;X0 AcimaP6%o abai8o ou
igual
YAEPY6A "QX0 Acima ou igualP6%o
abai8o
YAPY6AE "QX, Abai8oP6%o acima ou
igual
YAEPY6A :"Q ou UQ;X, Abai8o ou igualP6%o
acima
Y" "QX, "arr=
YEPYU UQX, IgualPUero
Y6" "QX0 6%o carr=
Y6EPY6U UQX0 6%o igualP6%o 3ero
Y6PY& QX0 Sem
paridadeParidade
>mpar
Desvios condicionais sinali$ados
YTPY6$E ::SQ &Q; ou UQ;X0 MaiorP6%o menor ou
igual
YTEPY6$ :SQ &Q;X0 Maior ou igualP6%o
menor
Y$PY6TE :SQ &Q;X, MenorP6%o maior ou
igual
Y$EPY6T ::SQ &Q; ou UQ;X, Menor ou igualP6%o
maior
Y6& &QX0 Sem estouro
:o+er!loI;
Y6S SQX0 Sem sinal :n%o
negati+o;

3ormato: Y:condi%o; al+o[curto
3lags: 6en(um a!etado
).H.) - Instr#*es de 4//1
As instrues de loop s%o des+ios condicionais que se utili3am
do registrador "@ como contador do n5mero de +e3es que um bloco de
instrues de+e ser e8ecutado- Fodas as instrues de loop sempre
decrementam o conte5do do registrador "@ quando e8ecutadas e
terminam se esta opera%o 3erar o mesmo- Em quatro das cinco
!ormas poss>+eis, o !lag UQ pode ser utili3ado para !inali3ar o loop
mesmo que o conte5do do registrador "@ n%o se0a 3ero-

m1& 4//1 - !etornar at> a contagem ser completada
1rop2sito: Decrementar o conte5do do registrador contador "@ e
pro+ocar um des+io no !lu8o do processamento para o endereo1al+o,
se o +alor em "@ ainda n%o !or 3ero- A distZncia para o des+io de+e
estar na !ai8a de ,.8 b=tes para tr#s ou ,.J para a !rente, em rela%o
ao endereo da instru%o que segue o loop-
3ormato: $&& al+o
3lags: 6en(um a!etado




n1& 4//1EF4//1K !etornar se ig#al F $ero
1rop2sito: Decrementar o conte5do do registrador contador "@ e
pro+ocar um des+io no !lu8o do processamento para o endereo1al+o,
se o +alor em "@ ainda n%o !or 3ero e se o !lag UQX,- A distZncia para
o des+io de+e estar na !ai8a de ,.8 b=tes para tr#s ou ,.J para a
!rente, em rela%o ao endereo da instru%o que segue o loop-
3ormato: $&&E al+o ou
$&&U al+o
3lags: 6en(um a!etado

o1& 4//1BEF4//1BK !etornar se di;erente F n.o $ero
1rop2sito: Decrementar o conte5do do registrador contador "@ e
pro+ocar um des+io no !lu8o do processamento para o endereo1al+o,
se o +alor em "@ ainda n%o !or 3ero e se o !lag UQX0- A distZncia para
o des+io de+e estar na !ai8a de ,.8 b=tes para tr#s ou ,.J para a
!rente, em rela%o ao endereo da instru%o que segue o loop-
3ormato: $&&6E al+o ou
$&&6U al+o
3lags: 6en(um a!etado
).6 - /pera*es com string
As operaes com string manipulam grande quantidade de
dados em mem4ria, como por e8emplo, uma cadeia de caracteres- As
instrues s%o:
M&BS 1 Mo+e string
"MS 1 "ompara string
S"AS 1 Scan :busca; string
$&DS 1 $oad :carrega; string
SF&S 1 Store :arma3ena; string
& processador possui dois registradores especiais para manipula%o de
strings- S%o eles:
SI 1 'egistrador de >ndice de !onte
DI 1 'egistrador de >ndice de destino
Ap4s a e8ecu%o de uma opera%o string, estes registradores
s%o automaticamente incrementados ou decrementados em acordo
com o +alor do !lag de dire%o- & incremento ou decremento, ser# de
acordo com o taman(o do elemento da string, o qual pode ser um b=te
ou uma Iord-

p1& M/0%FM/0%<FM/0%= - Move string de ,-tes o# 9ords
1rop2sito: Mo+er o b=te ou Iord endereada pelo conte5do de SI,
dentro do segmento de dados, para a posi%o de mem4ria indicada
pelo conte5do de DI, dentro do segmento e8tra- Ap4s a opera%o,
ambos os registradores de >ndice :SI e DI; s%o automaticamente
incrementados ou decrementados, caso o !lag de dire%o este0a
resetado ou setado, respecti+amente- & +alor do
incrementoPdecremento ) de , ou ., dependendo se a opera%o
en+ol+e dados do tipo b=te ou Iord, respecti+amente-
Diante desta instru%o, pode1se utili3ar o pre!i8o 'E, que
pro+ocar# uma repeti%o cont>nua, de acordo com o n5mero de +e3es
especi!icado em "@, permitindo assim a mo+imenta%o de blocos de
mem4ria-
3ormato: M&BSA ou M&BSS
3lags: 6en(um a!etado

E8emplo: M&B SI,,000G M Enderea a #rea de origem
M&B DI,,L00G M Enderea a #rea de destino
M&B "@,.00G M "ontador em "@
"$D M 'eseta o !lag de dire%o
'E M&BSS M Mo+e .00G Iords

C1& 5M1%F5M1%<F5M1%= - 5ompara d#as string do tipo ,-te
o# 9ord
1rop2sito: "omparar, e!etuando uma subtra%o entre o b=te ou Iord
endereada por DI dentro do segmento e8tra e o b=te ou Iord
endereada por SI dentro do segmento de dados- Ap4s a subtra%o os
!lags s%o alterados de acordo com o resultado mas o mesmo )
despre3ado- A instru%o incrementaPdecrementa automaticamente os
registradores de >ndice SI e DI desde que o !lag de dire%o este0a
resetado ou setado, respecti+amente- & incrementoPdecremento ser#
de , ou ., caso os dados comparados se0am do tipo b=te ou Iord,
respecti+amente-
3ormato: "MSA ou "MSS
3lags: A!etados AQ, "Q, &Q, Q, SQ, UQ-
E8emplos: "onsidere que o registrador SI conten(a o +alor ,.LLG, DI
conten(a o +alor 0J*,G, DQX0, a posi%o apontada por SI dentro do
segmento de dados conten(a a pala+ra NN88G e a posi%o apontada
por DI dentro do segmento e8tra conten(a a pala+ra NN88G- Ap4s a
e8ecu%o de "MSS, o registrador SI conter# o +alor ,.LJG, DI ter#
0J*<G e os !lags "Q e UQ, os mais rele+antes de serem a+aliados ap4s
a instru%o, estar%o sinali3ando:
UQ X ,: os conte5dos dos operandos s%o iguais
"Q X 0: & elemento indicado por DI ) menor ou igual ao
elemento indicado por SI
r1& %5+%F%5+%<F%5+%= - <#sca ,-te o# 9ord
1rop2sito: "omparar o elemento indicado por DI, dentro do segmento
e8tra, com o conte5do do acumulador- A instru%o e!etua a subtra%o
do b=te ou pala+ra indicada por DI do conte5do do acumulador A$ ou
A@, a!etando por)m somente os !lags, e n%o os operandos- Ap4s a
compara%o, o registrador DI ) automaticamente incrementado ou
decrementado, dependendo do estado do !lag de dire%o- & +alor do
incremento ou decremento ) , ou ., dependendo se a compara%o !oi
reali3ada entre operandos do tipo b=te ou Iord, respecti+amente-
Diante desta instru%o, pode1se utili3ar o pre!i8o 'E, que
pro+ocar# uma repeti%o cont>nua, de acordo com o n5mero de +e3es
especi!icado em "@, permitindo assim repetir a compara%o em uma
seqK9ncia de elementos, at) encontrar um que se0a igual ou di!erente
ao conte5do do acumulador-
3ormato: S"ASA ou S"ASS
3lags: A!etados: AQ, "Q, &Q, Q, SQ, UQ-
E8emplo: M&B "@,,00 M Tra+a em "@ 0,00G
M&B DI,H00 M Tra+a em DI 0H00G, endereo
inicial de pesquisa
M&B A$,QQ M Tra+a em A$ QQG, o dado a ser
comparado
"$D M 'eseta o !lag de dire%o, DI ser#
incrementado
'E6U S"ASA M "ompara e repete enquanto "@ 0 e
UQX0

s1& %(/%F%(/%<F%(/%= - 8rava na mem2ria #m ,-te o# 9ord
arma$enado no ac#m#lador
1rop2sito: Mo+er o conte5do do acumulador para a posi%o de
mem4ria indicada pelo registrador DI, dentro do segmento e8tra de
dados- SF&SA mo+e o conte5do de A$ para a posi%o indicada por
ES:DI e SF&SS mo+e o conte5do de A@ para a posi%o de mem4ria
indicada por ES:DI- Ap4s a mo+imenta%o dos dados, o registrador DI
) automaticamente incrementado ou decrementado, dependendo do
estado do !lag de dire%o- & +alor do incremento ou decremento ) ,
ou ., dependendo se !oi mo+ido um b=te ou uma Iord,
respecti+amente-
Diante desta instru%o, pode1se utili3ar o pre!i8o 'E, que
pro+ocar# uma repeti%o cont>nua, de acordo com o n5mero de +e3es
especi!icado em "@, permitindo assim que um bloco de mem4ria se0a
preenc(ido com um dado +alor-
3ormato: SF&SA ou SF&SS
3lags: 6en(um a!etado
E8emplo: "$D M 'eseta o !lag de dire%o
M&B DI,,000G M Endereo inicial da #rea destino
M&B "@, <00G M "ontador em "@
M&B A@, QQQQG M Balor a preenc(er as posies a
partir de ES:DI 'E SF&SS M reenc(e <00G Iords
com QQQQG

t1& 4/D%F4/D%<F4/D%= - 8rava no ac#m#lador #m ,-te o#
9ord copiado da mem2ria
1rop2sito: Mo+er um b=te ou Iord da posi%o de mem4ria indicada
pelo registrador SI, dentro do segmento de dados para o acumulador-
$&DSA mo+e para A$ um b=te na posi%o indicada por DS:SI e $&DSS
mo+e para A@ uma Iord na posi%o de mem4ria indicada por DS:SI-
Ap4s a mo+imenta%o dos dados, o registrador SI ) automaticamente
incrementado ou decrementado, dependendo do estado do !lag de
dire%o- & +alor do incremento ou decremento ) , ou ., dependendo
se !oi mo+ido um b=te ou uma Iord, respecti+amente-
3ormato: $&DSA ou $&DSS
3lags: 6en(um a!etado

E8emplo: "onsidere que o registrador SI conten(a o +alor ,.<HG,
DQX0 e que a posi%o de mem4ria indicada por SI, dentro do
segmento de dados, conten(a a pala+ra ,,00G- Ap4s a instru%o
$&DSS , o registrador A@ conter# o +alor ,,00G e o registrador
SI conter# o +alor ,.<*G, indicando a pr48ima pala+ra a ser acessada-
).6.1 - 1re;ixos de repeti.o
&s pre!i8os de repeti%o, especi!icam mais de uma e8ecu%o de
uma mesma instru%o de string- /uando acompan(a uma instru%o de
string, a opera%o ) repetida at) que uma das condies de t)rmino,
especi!icada no pre!i8o, se0a satis!eita
ara cada repeti%o, a opera%o pode ser suspensa por uma
interrup%o ou e8ce%o- Ap4s ter sido atendida a e8ce%o ou a
interrup%o, a opera%o reiniciali3a do ponto onde !oi suspensa- Desta
!orma, a resposta do sistema a uma interrup%o n%o !ica
comprometida pela e8ecu%o de uma instru%o com string-

#1& !E1F!E1K o# !E1EF!E1BK o# !E1BE - !epita opera.o de
string
1rop2sito: re!i8os usados para repetir a instru%o string seguinte
pelo n5mero de +e3es especi!icado em "@-
Diante das instrues M&BS, $&DS e SF&S, pode1se usar o
pre!i8o 'E, que decrementa o registrador "@ :sem a!etar os !lags; e
repete a instru%o string enquanto "@ 0-
Diante das instrues "MS e S"AS, pode1se usar os pre!i8os
'EU ou 'E6U- 'EU decrementa o registrador "@ :sem a!etar os
!lags; e repete a instru%o string enquanto "@ 0 e UQ X,- & pre!i8o
'E6U decrementa o contador "@ :sem a!etar os !lags; e pro+oca a
repeti%o da instru%o string enquanto "@ 0 e UQX0-
3ormato: 'E instru%o[string
'EU instru%o[string
'E6U instru%o[string
3lags: Ser%o aqueles a!etados pela instru%o[string

E8emplo: "onsidere que se queira preenc(er um bloco de mem4ria,
com L,. b=tes de e8tens%o, com o +alor inicial .0G-
"$D M 'eseta o !lag de dire%o
M&B "@,.00 M "ontador em "@
M&B DI,,000 M Enderea a #rea de mem4ria
M&B A@,.0.0 M Dados em AG e A$
'E SF&SS M reenc(e .00 pala+ras a partir de ES:,000
:ES:DI;
).L - Instr#*es de controle de ;lag
).L.1 - Instr#*es de controle do ;lag de dire.oM ;lag
carr- e de interr#p.o
As instrues de controle de carr= s%o 5teis em con0unto com as
instrues de rotaes com carr= com o '"$ e '"'- ode1se a partir
delas, iniciali3ar o conte5do do !lag carr= que ser# carregado em um
operando-

v1& 545 - !eseta o ;lag carr-
1rop2sito: 'esetar o bit "Q no registrador de !lags
3ormato: "$"
3lags: A!etado: "Q

x1& 5M5 - 5omplementa o ;lag carr-
1rop2sito: "omplementar o estado do bit "Q no registrador de !lags-
Se o +alor de "Q era ,, ele passar# a 0, e +ice1+ersa-
3ormato: "M"
3lags: A!etado: "Q

91& %(5 - %eta o ;lag carr-
1rop2sito: Setar o bit "Q no registrador de !lags
3ormato: SF"
3lags: A!etado: "Q

-1& 54D - !eseta o ;lag de dire.o
1rop2sito: 'esetar o bit DQ no registrador de !lags, !orando assim, o
incremento dos registradores de >ndice ap4s a e8ecu%o de uma das
instrues string-
3ormato: "$D
3lags: A!etado: DQ

$1& %(D - %eta o ;lag de dire.o
1rop2sito: Setar o bit DQ no registrador de !lags, !orando assim, o
decremento dos registradores de >ndice ap4s a e8ecu%o de uma das
instrues string-
3ormato: SFD
3lags: A!etado: DQ

a2& 54I - !eseta o ;lag de interr#p.o
1rop2sito: 'esetar o bit IQ no registrador de !lags, desabilitando as
interrupes mascar#+eis e8ternas, que aparecem na lin(a I6F' do
processador-
3ormato: "$I
3lags: A!etado: IQ

,2& %(I - %eta o ;lag de interr#p.o
1rop2sito: Setar o bit IQ no registrador de !lags, (abilitando as
interrupes mascar#+eis e8ternas, que aparecem na lin(a I6F' do
processador-
3ormato: SFI
3lags: A!etado: IQ
).L.2 - Instr#*es de trans;erIncia de ;lags
Apenas os !lags "Q, DQ e IQ, possuem instrues especi!icas que
permitem a altera%o de seus estados diretamente- ara acessar os
demais indicadores as instrues de trans!er9ncia de !lags de+em ser
utili3adas para mo+imentar o conte5do do registrador de !lags :Q; para
o registrador AG ou a pil(a, onde ent%o, poder%o ser alterados e em
seguida retornados para o registrador de !lags :Q;-

c2& 4+73 - 5arregar o conteNdo do registrador de ;lags em +7
1rop2sito: Mo+er os bits dos registradores de !lags SQ, UQ, AQ, Q e "Q
para o registrador AG, mantendo a mesma posi%o relati+a que
ocupam na parte bai8a no registrador de !lags- &s demais bits n%o s%o
mo+idos--
3ormato: $AGQ
3lags: 6en(um a!etado

d2& %+73 - +rma$ena conteNdo de +7 no registrador de ;lags
1rop2sito: Frans!erir bits espec>!icos do registrador AG, mantendo a
mesma posi%o relati+a, para a parte bai8a do registrador de !lags- &s
demais bits n%o s%o mo+idos-
:SQ;Xbit J de AG
:UQ;Xbit * de AG
:AQ;Xbit H de AG
:Q;Xbit . de AG
:"Q;Xbit 0 de AG
3ormato: SAGQ
3lags: A!etados: AQ, "Q, Q, SQ, UQ-

e2& 16%73 - 8rava o conteNdo do registrador de ;lags na pil:a
1rop2sito: "olocar, na #rea de mem4ria usada como pil(a, o
conte5do do registrador de !lags-
Modo de opera%o: Id9ntico ao da instru%o 2SG
3ormato: 2SGQ
3lags: 6en(um a!etado

;2& 1/13 - 5opia 9ord da pil:a para o registrador de ;lags.
1rop2sito: 'etirar a pala+ra no topo da pil(a e mo+91la para o
registrador de !lags- Sua opera%o ) id9ntica a da instru%o &-
3ormato: &Q
3lags: Fodos s%o a!etados
).8 - Instr#*es de acesso a portas de
entrada e sada
g2& IB - 4I ,-te o# 9ord de #ma porta de EF%
1rop2sito: Frans!erir dados :b=te ou Iord; de uma porta de entrada
para o acumulador A$ ou A@-
A porta ) identi!icada com um +alor de 8 bits que permite a
acesso a portas cu0os endereos +ariam de 0 a .LL, ou com o uso de
D@ que, sendo de ,* bits, permite a especi!ica%o de endereos de
portas que +ariam de 0 a *LL<L-
3ormato: I6 acumulador, porta ou
I6 acumulador, D@
3lags: 6en(um a!etado

E8emplo: I6 A$, <8G M Frans!ere para A$, o b=te na porta de
entrada <8G-
I6 A@,D@ M Frans!ere para A@, a Iord na porta de
entrada especi!icada pelo registrador D@-

:2& /6( - Escreve ,-te o# 9ord em #ma porta de EF%
1rop2sito: Frans!erir um b=te ou uma Iord, presente no acumulador
A$ ou A@, respecti+amente, para uma porta de sa>da-
A porta ) identi!icada com um +alor de 8 bits que permite a
acesso a portas cu0os endereos +ariam de 0 a .LL, ou com o uso de
D@ que, sendo de ,* bits, permite a especi!ica%o de endereos de
portas que +ariam de 0 a *LL<L-
3ormato: &2F porta, acumulador ou
&2F D@, acumulador
3lags: 6en(um a!etado

E8emplo: &2F *,G,A$ M Frans!ere para a porta de sa>da *,G, o b=te
em A$-
&2F D@,A$ M Frans!ere para a porta de sa>da
especi!icada em D@, o b=te gra+ado em A$-
).O - Instr#*es de #so geral
Algumas instrues n%o se encai8am em nen(uma das
categorias apresentadas at) agora- 6o entanto, como s%o importantes,
s%o reunidas nesse bloco de instrues de uso geral-
i2& 4E+ - 5arrega endereo e;etivo em #m
registrador
1rop2sito: "arregar o offset de um endereo ou deslocamento de um
operando na mem4ria, para um registrador de ,* bits, especi!icado na
pr4pria instru%o-
3ormato: $EA destino, !onte
3lags: 6en(um a!etado

E8emplos: mensagem DA ]"urso Assembler ^_
1
$EA D@, mensagem
$EA SI,CA@EDIELD

6o primeiro caso, o registrador D@ conter# o +alor do endereo
associado ao VlabelW mensagemM no segundo, o registrador SI conter#
o +alor do endereo de mem4ria do operando indicado pela somat4ria
de A@ e DI com L-

A2& E578 - (rocar
1rop2sito: ermutar o conte5do de dois operandos, que podem ser
dois registradores ou um registrador e uma posi%o de mem4ria--
3ormato: @"GT destino,!onte
3lags: 6en(um a!etado

E8emplos: @"GT A$,"G M ermuta o conte5do de A$ e "G
@"GT SI,DI M ermuta o conte5do de SI e
DI
@"GT A$,CA@E.D M ermute o conte5do de A$ com o da
posi%o de mem4ria apontada por
:A@E.;
@"GT CSID,A@ M ermuta o conte5do da posi%o
apontada por SI com o conte5do de A$

'2& E4+( - 5onverter
1rop2sito: "on+erter um +alor presente em A$ acessando uma tabela
pre+iamente endereada por A@, com no m#8imo .L* +alores, usando
o +alor em A$ como >ndice desta tabela- & A=te assim endereado )
ent%o colocado no pr4prio registrador A$-
3ormato: @$AF
3lags: 6en(um a!etado

E8emplo: "onsidere que no endereo DS:0<00 de mem4ria, (a0a uma
tabela com os seguintes +alores:
,. ,H ,* ,8 .0 .. .H .* .8 <0 <. <H---
Ap4s a seqK9ncia de instrues
M&B A@,0<00G
M&B A$,0HG
@$AF
o registrador A$ conter# o +alor .0- Isto ), o +alor inicial 0H !oi
con+ertido para .0 :elemento de >ndice 0H;- & primeiro elemento da
tabela tem >ndice 00-

Potrebbero piacerti anche