Você está na página 1de 140

University of Guadalajara

Information Sistems General Coordination.


Culture and Entertainment Web

June 12th 199
Co!yri"ht#C$199%199&
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Este tutorial foi tradu(ido !ara o )ortu"u*s !or Jeferson +maral. '
' e%mail, amaral-inf.ufsm.br '
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Este tutorial tem o intuito de a!enas introdu(ir o leitor ao mundo
da !ro"rama.ao em /in"ua"em +ssembly0 nao tem0 !ortanto e de forma al"uma0
!lano de es"otar o assunto.
Co!yri"ht #C$ 199%199&0 1u"o )ere( )ere(.
+nyone may re!rodu.e this do.ument0 in 2hole or in !art0
!rovided that,
#1$ any .o!y or re!ubli.ation of the entire do.ument must sho2 University of
Guadalajara as the sour.e0 and must in.lude this noti.e3 and
#2$ any other use of this material must referen.e this manual and University
of Guadalajara0 and the fa.t that the material is .o!yri"ht by 1u"o )ere(
and is used by !ermission.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
4 U 4 5 6 I + / 7 E / I 8 G U + G E 9 + S S E 9 : / ;
%%%%%%%%%%%%%%% %%% %%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%
Conte<do,
1.Introdu=>o
2.Con.eitos :?si.os
@.)ro"rama=>o +ssembly
A.Instru=Bes +ssembly
.Interru!=Bes e "er*n.ia de arCuivos
&.9a.ros e !ro.edimentos
D.EEem!los de !ro"ramas
F.:iblio"rafia


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
C+)G4U/5 1, I84657UHI5
Conte<do,
1.1.5 Cue h? de novo neste material
1.2.+!resenta=>o
1.@.)or Cue a!render +ssemblyJ
1.A.8Ks !re.isamos da sua o!ini>o
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%
1.1.5 Cue h? de novo neste material,
+!Ks um ano da reali(a=>o da !rimeira vers>o do tutorial0 e atravMs das
o!iniBes re.ebidas !or e%mail0 resolvemos ter !or dis!osi=>o todos estes
.oment?rios e su"estBes. Es!eramos Cue atravMs deste novo material +ssembly0
as !essoas Cue se mostrarem interessadas !ossam a!render mais sobre o seu
I:9 )C. Esta nova edi=>o do tutorial in.lui,
Uma se=>o .om!leta sobre .omo usar o !ro"rama debu".
9ais eEem!los de !ro"ramas.
Um motor de !esCuisa0 !ara CualCuer tK!i.o ou item rela.ionado N esta
nova vers>o.
Consider?vel reor"ani(a=>o e revis>o do material +ssembly.
Em .ada se=>o0 h? um linO !ara o 7i.ion?rio 5n%line de Com!uta=>o de
7ennis 1o2e.
1.2.+!resenta=>o,
Este tutorial destina%se NCuelas !essoas Cue nun.a tiveram .ontato .om a
/in"ua"em +ssembly.
5 tutorial est? .om!letamente fo.ado em .om!utadores .om !ro.essadores FPEF&
da famQlia Intel0 e .onsiderando Cue a base da lin"ua"em M o fun.ionamento
dos re.ursos internos do !ro.essador0 os eEem!los des.ritos n>o s>o
.om!atQveis .om CualCuer outra arCuitetura.
+s informa=Bes est>o dis!ostas em unidades ordenadas !ara !ermitir f?.il
a.esso a .ada tK!i.o0 bem .omo uma melhor nave"a=>o !elo tutorial.
8a se=>o introdutKria s>o men.ionados al"uns .on.eitos elementares sobre
.om!utadores e a /in"ua"em +ssembly em si.
1.@.)or Cue a!render +ssemblyJ
+ !rimeira ra(>o !ara se trabalhar .om o assembler M a o!ortunidade de
.onhe.er melhor o fun.ionamento do seu )C0 o Cue !ermite o desenvolvimento
de !ro"ramas de forma mais .onsistente.
+ se"unda ra(>o M Cue vo.* !ode ter um .ontrole total sobre o )C ao fa(er
uso do assembler.
Uma outra ra(>o M Cue !ro"ramas assembly s>o mais r?!idos0 menores e mais
!oderosos do Cue os .riados .om outras lin"ua"ens.
Ultimamente0 o assembler #montador$ !ermite uma otimi(a=>o ideal nos
!ro"ramas0 seja no seu tamanho ou eEe.u=>o.

1.A.8Ks !re.isamos da sua o!ini>o,
8osso intuito M ofere.er um modo sim!les !ara Cue vo.* .onsi"a a!render
+ssembly !or si mesmo. )or tanto0 CualCuer .oment?rio ou su"est>o ser?
bem%vinda.

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
C+)G4U/5 2, C58CEI45S :RSIC5S
Conte<do,
2.1.7es.ri=>o b?si.a de um sistema .om!uta.ional.
2.2.Con.eitos b?si.os da /in"ua"em +ssembly
2.@.Usando o !ro"rama debu"
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

Esta se=>o tem o !ro!Ksito de fa(er um breve .oment?rio a res!eito dos
!rin.i!ais .om!onentes de um sistema .om!uta.ional0 o Cue ir? !ermitir ao
usu?rio uma melhor .om!reens>o dos .on.eitos !ro!ostos no de.orrer do
tutorial.

2.1.7ESC6IHI5 7E U9 SIS4E9+ C59)U4+CI58+/

Conte<do,
2.1.1.)ro.essador Central
2.1.2.9emKria )rin.i!al
2.1.@.Unidades de Entrada e SaQda
2.1.A.Unidades de 9emKria +uEiliar

Sistema Com!uta.ional.
Chamamos de Sistema Com!uta.ional a .om!leta .onfi"ura=>o de um .om!utador0
in.luindo os !erifMri.os e o sistema o!era.ional.

2.1.1.)ro.essador Central.
S tambMm .onhe.ido !or C)U ou Unidade Central de )ro.essamento0 Cue !or sua
ve( M .om!osta !ela unidade de .ontrole e unidade de lK"i.a e aritmMti.a.
Sua fun=>o .onsiste na leitura e es.rita do .onte<do das .Mlulas de memKria0
re"ular o tr?fe"o de dados entre as .Mlulas de memKria e re"istradores
es!e.iais0 e de.odifi.ar e eEe.utar as instru=Bes de um !ro"rama.
5 !ro.essador tem uma sMrie de .Mlulas de memKria usadas .om freCT*n.ia e0
dessa forma0 s>o !artes da C)U. Estas .Mlulas s>o .onhe.idas .om o nome de
re"istradores. Um !ro.essador de um )C !ossui .er.a de 1A re"istradores.
Como os )Cs tem sofrido evolu=>o veremos Cue !odemos mani!ular re"istradores
de 1& ou @2 bits.
+ unidade de lK"i.a e aritmMti.a da C)U reali(a as o!era=Bes rela.ionadas ao
.?l.ulo simbKli.o e numMri.o. 4i!i.amente estas unidades a!enas s>o .a!a(es
de reali(ar o!era=Bes elementares0 tais .omo, adi=>o e subtra=>o de dois
n<meros inteiros0 multi!li.a=>o e divis>o de n<mero inteiro0 manuseio de
bits de re"istradores e .om!ara=>o do .onte<do de dois re"istradores.
Com!utadores !essoais !odem ser .lassifi.ados !elo Cue M .onhe.ido .omo
tamanho da !alavra0 isto M0 a Cuantidade de bits Cue o !ro.essador M .a!a(
de manusear de uma sK ve(.

2.1.2.9emKria )rin.i!al.
S um "ru!o de .Mlulas0 a"ora sendo fabri.ada .om semi%.ondutores0 usada !ara
!ro.essamentos "erais0 tais .omo a eEe.u=>o de !ro"ramas e o arma(enamento
de informa=Bes !ara o!era=Bes.
Cada uma das .Mlulas !ode .onter um valor numMri.o e M .a!a( de ser
endere=ada0 isto M0 !ode ser identifi.ada de forma sin"ular em rela=>o Ns
outras .Mlulas !elo uso de um n<mero ou endere=o.
5 nome "enMri.o destas memKrias M 6andom +..ess 9emory ou 6+9. + !rin.i!al
desvanta"em deste ti!o de memKria M o fato de Cue seus .ir.uitos inte"rados
!erdem a informa=>o Cue arma(enavam Cuando a ener"ia elMtri.a for
interrom!ida0 ou seja0 ela M vol?til. Este foi o motivo Cue levou N .ria=>o
de um outro ti!o de memKria .uja informa=>o n>o M !erdida Cuando o sistema M
desli"ado. Estas memKrias re.eberam o nome de 6ead 5nly 9emory ou 659.
2.1.@.Unidades de Entrada e SaQda.
)ara Cue o .om!utador !ossa ser <til !ara nKs se fa( ne.ess?rio Cue o
!ro.essador se .omuniCue .om o eEterior atravMs de interfa.es Cue !ermitem a
entrada e a saQda de informa=>o entre ele e a memKria. +travMs do uso destas
.omuni.a=Bes M !ossQvel introdu(ir informa=>o a ser !ro.essada e mais tarde
visuali(ar os dados !ro.essados.
+l"umas das mais .omuns unidades de entrada s>o o te.lado e o mouse. +s mais
.omuns unidades de saQda s>o a tela do monitor e a im!ressora.

2.1.A.Unidades de 9emKria +uEiliar.
Considerando o alto .usto da memKria !rin.i!al e tambMm o tamanho das
a!li.a=Bes atualmente0 vemos Cue ela M muito limitada. /o"o0 sur"iu a
ne.essidade da .ria=>o de dis!ositivos de arma(enamento !r?ti.os e
e.onUmi.os.
Estes e outros in.onvenientes deram lu"ar Ns unidades de memKria auEiliar0
!erifMri.os. +s mais .omuns s>o as fitas e os dis.os ma"nMti.os.
+ informa=>o ali arma(enada ser? dividida em arCuivos. Um arCuivo M feito de
um n<mero vari?vel de re"istros0 "eralmente de tamanho fiEo0 !odendo .onter
informa=>o ou !ro"ramas.
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

2.2.C58CEI45S :RSIC5S
Conte<do,
2.2.1.Informa=Bes nos .om!utadores
2.2.2.9Mtodos de re!resenta=>o de dados

2.2.1.Informa=>o no .om!utador,
2.2.1.1.Unidades de informa=>o
2.2.1.2.Sistemas numMri.os
2.2.1.@.Convertendo n<meros bin?rios !ara de.imais
2.2.1.A.Convertendo n<meros de.imais !ara bin?rios
2.2.1..Sistema heEade.imal

2.2.1.1.Unidades de informa=>o
)ara o )C !ro.essar a informa=>o0 M ne.ess?rio Cue ela esteja em .Mlulas
es!e.iais0 .hamadas re"istradores.
5s re"istradores s>o "ru!os de F ou 1& fli!%flo!s.
Um fli!%flo! M um dis!ositivo .a!a( de arma(enar 2 nQveis de volta"em0 um
baiEo0 "eralmente P. volts0 e outro .omumente de volts. 5 nQvel baiEo de
ener"ia no fli!%flo! M inter!retado .omo desli"ado ou P0 e o nQvel alto0
.omo li"ado ou 1. Estes estados s>o "eralmente .onhe.idos .omo bits0 Cue s>o
a menor unidade de informa=>o num .om!utador.
Um "ru!o de 1& bits M .onhe.ido .omo !alavra3 uma !alavra !ode ser dividida
em "ru!os de F bits .hamados bytes0 e "ru!os de A bits .hamados nibbles.
2.2.1.2.Sistemas numMri.os
5 sistema numMri.o Cue nKs usamos diariamente M o de.imal0 mas este sistema
n>o M .onveniente !ara m?Cuinas0 !ois ali as informa=Bes t*m Cue ser
.odifi.adas de modo a inter!retar os estados da .orrente #li"ado%desli"ado$3
este modo de .Kdi"o fa( .om Cue tenhamos Cue .onhe.er o .?l.ulo !osi.ional
Cue nos !ermitir? eE!ressar um n<mero em CualCuer base onde !re.isarmos
dele.
S !ossQvel re!resentar um determinado n<mero em CualCuer base atravMs da
se"uinte fKrmula,

5nde n M a !osi=>o do dQ"ito0 ini.iando da direita !ara a esCuerda e
numerando de P. 7 M o dQ"ito sobre o Cual nKs o!eramos e : M a base numMri.a
usada.

2.2.1.@.Convertendo n<meros bin?rios !ara de.imais
Vuando trabalhamos .om a /in"ua"em +ssembly en.ontramos !or a.aso a
ne.essidade de .onverter n<meros de um sistema bin?rio0 Cue M usado em
.om!utadores0 !ara o sistema de.imal usado !elas !essoas.
5 sistema bin?rio M baseado em a!enas duas .ondi=Bes ou estados0 estar
li"ado#1$0 ou desli"ado#P$0 !ortanto sua base M dois.
)ara a .onvers>o0 !odemos usar a fKrmula de valor !osi.ional,
)or eEem!lo0 se tivermos o n<mero bin?rio 1PP110 tomamos .ada dQ"ito da
direita !ara a esCuerda e o multi!li.amos !ela base0 elevando N !ot*n.ia
.orres!ondente N sua !osi=>o relativa,
:inary, 1 1 P P 1
7e.imal, 1'2WP X 1'2W1 X P'2W2 X P'2W@ X 1'2WA
Y 1 X 2 X P X P X 1& Y 19 de.imal.
5 .ara.ter W M usado em .om!uta=>o .omo sQmbolo !ara !ot*n.ia e ' !ara a
multi!li.a=>o.
2.2.1.A.Convertendo n<meros de.imais !ara bin?rio
1? v?rios mMtodos !ara se .onverter n<meros de.imais !ara bin?rio3 a!enas um
ser? anali(ado aCui. 8aturalmente a .onvers>o .om uma .al.uladora .ientQfi.a
M muito mais f?.il0 mas nem sem!re !odemos .ontar .om isso0 lo"o o mais
.onveniente M0 ao menos0 sabermos uma fKrmula !ara fa(*%la.
5 mMtodo resume%se na a!li.a=>o de divisBes su.essivas !or 20 mantendo o
resto .omo o dQ"ito bin?rio e o resultado .omo o !rKEimo n<mero a ser
dividido.
4omemos .omo eEem!lo o n<mero de.imal A@.
A@L2Y21 e o resto M 13 21L2Y1P e o resto M 13 1PL2Y e o resto M P3
L2Y2 e o resto M 13 2L2Y1 e o resto M P3 1L2YP e o resto M 1.
)ara .onstruir o eCuivalente bin?rio de A@0 vamos !e"ar os restos obtidos de
baiEo !ara .ima0 assim temos 1P1P11.
2.2.1..Sistema heEade.imal
8a base heEade.imal temos 1& dQ"itos0 Cue v>o de P a 9 e da letra + atM a Z0
estas letras re!resentam os n<meros de 1P a 1. )ortanto .ontamos,
P01020@0A00&0D0F090+0:0C070E0 e Z.
+ .onvers>o entre n<meros bin?rios e heEade.imais M f?.il. + !rimeira .oisa
a fa(er M dividir o n<mero bin?rio em "ru!os de A bits0 .ome=ando da direita
!ara a esCuerda. Se no "ru!o mais N direita sobrarem dQ"itos0 .om!letamos
.om (eros.
4omando .omo eEem!lo o n<mero bin?rio 1P1P110 vamos dividi%lo em "ru!os de A
bits,
1P31P11
)reen.hendo o <ltimo "ru!o .om (eros #o um mais N esCuerda$,
PP1P31P11
+ se"uir0 tomamos .ada "ru!o .omo um n<mero inde!endente e .onsideramos o
seu valor de.imal,
PP1PY231P11Y11
Entretanto0 observa%se Cue n>o !odemos re!resentar este n<mero .omo 2110
isto seria um erro0 uma ve( Cue os n<meros em heEa maiores Cue 9 e menores
Cue 1& s>o re!resentados !elas letras +0:0...0Z. /o"o0 obtemos .omo
resultado,
2:h0 onde o [h[ re!resenta a base heEade.imal.
)ara a .onvers>o de um n<mero heEade.imal em bin?rio M a!enas ne.ess?rio
inverter os !assos, tomamos o !rimeiro dQ"ito heEade.imal e o .onvertemos
!ara bin?rio0 a se"uir o se"undo0 e assim !or diante.

%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%
2.2.2.9Mtodos de re!resenta=>o de dados num .om!utador.
2.2.2.1.CKdi"o +SCII
2.2.2.2.9Mtodo :C7
2.2.2.@.6e!resenta=>o de !onto flutuante

2.2.2.1.CKdi"o +SCII
+SCII si"nifi.a +meri.an Standard Code for Information Inter.han"e. Este
.Kdi"o .ontMm as letras do alfabeto0 dQ"itos de.imais de P a 9 e al"uns
sQmbolos adi.ionais .omo um n<mero bin?rio de D bits0 tendo o oitavo bit em
P0 ou seja0 desli"ado.
7este modo0 .ada letra0 dQ"ito ou .ara.ter es!e.ial o.u!a 1 byte na memKria
do .om!utador.
)odemos observar Cue este mMtodo de re!resenta=>o de dados M muito
inefi.iente no as!e.to numMri.o0 uma ve( Cue no formato bin?rio 1 byte n>o M
sufi.iente !ara re!resentar n<meros de P a 20 .om o +SCII !odemos
re!resentar a!enas um dQ"ito.
7evido a esta inefi.i*n.ia0 o .Kdi"o +SCII M usado0 !rin.i!almente0 !ara a
re!resenta=>o de teEtos.

2.2.2.2.9Mtodo :C7
:C7 si"nifi.a :inary Coded 7e.imal.
8este mMtodo "ru!os de A bits s>o usados !ara re!resentar .ada dQ"ito
de.imal de P a 9. Com este mMtodo !odemos re!resentar 2 dQ"itos !or byte de
informa=>o.
\emos Cue este mMtodo vem a ser muito mais !r?ti.o !ara re!resenta=>o
numMri.a do Cue o .Kdi"o +SCII. Embora ainda menos !r?ti.o do Cue o bin?rio0
.om o mMtodo :C7 !odemos re!resentar dQ"itos de P a 99. Com o bin?rio0 vemos
Cue o al.an.e M maior0 de P a 2.
Este formato #:C7$ M !rin.i!almente usado na re!resenta=>o de n<meros
"randes0 a!li.a=Bes .omer.iais0 devido Ns suas fa.ilidades de o!era=>o.

2.2.2.@.6e!resenta=>o de !onto flutuante
Esta re!resenta=>o M baseada em nota=>o .ientQfi.a0 isto M0 re!resentar um
n<mero em 2 !artes, sua base e seu eE!oente.
)or eEem!lo o n<mero de.imal 12@APPP0 M re!resentado .omo 1.2@A'1PW&0
observamos Cue o eE!oente ir? indi.ar o n<mero de .asas Cue o !onto de.imal
deve ser movido !ara a direita0 a fim de obtermos o n<mero ori"inal.
5 eE!oente ne"ativo0 !or outro lado0 indi.a o n<mero de .asas Cue o !onto
de.imal deve se lo.omover !ara a esCuerda.

%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%
2.@.)65G6+9+ 7E:UG

Conte<do,
2.@.1.)ro.esso de .ria=>o de !ro"ramas
2.@.2.6e"istradores da C)U
2.@.@.)ro"rama debu"
2.@.A.Estrutura +ssembly
2.@..Criando um !ro"rama assembly sim!les
2.@.&.+rma(enando e .arre"ando os !ro"ramas

2.@.1.)ro.esso de .ria=>o de !ro"ramas.
)ara a .ria=>o de !ro"ramas s>o ne.ess?rios os se"uintes !assos,
' 7esenvolvimento do al"oritmo0 est?"io em Cue o !roblema a ser
solu.ionado M estabele.ido e a melhor solu=>o M !ro!osta0 .ria=>o de
dia"ramas esCuem?ti.os relativos N melhor solu=>o !ro!osta.
' Codifi.a=>o do al"oritmo0 o Cue .onsiste em es.rever o !ro"rama
em al"uma lin"ua"em de !ro"rama=>o3 lin"ua"em assembly neste .aso
es!e.Qfi.o0 tomando .omo base a solu=>o !ro!osta no !asso anterior.
' + transforma=>o !ara a lin"ua"em de m?Cuina0 ou seja0 a .ria=>o
do !ro"rama objeto0 es.rito .omo uma seCT*n.ia de (eros e uns Cue !odem
ser inter!retados !elo !ro.essador.
' 5 <ltimo est?"io M a elimina=>o de erros dete.tados no !ro"rama
na fase de teste. + .orre=>o normalmente reCuer a re!eti=>o de todos os
!assos0 .om observa=>o atenta.

2.@.2.6e"istradores da C)U.
)ara o !ro!Ksito did?ti.o0 vamos fo.ar re"istradores de 1& bits. + C)U
!ossui A re"istradores internos0 .ada um de 1& bits. S>o eles +]0 :]0 C] e
7]. S>o re"istradores de uso "eral e tambMm !odem ser usados .omo
re"istradores de F bits. )ara tanto devemos referen.i?%los .omo0 !or
eEem!lo0 +1 e +/0 Cue s>o0 res!e.tivamente0 o byte hi"h e o lo2 do
re"istrador +]. Esta nomen.latura tambMm se a!li.a !ara os re"istradores :]0
C] e 7].
5s re"istradores0 se"undo seus res!e.tivos nomes,
+] 6e"istrador +.umulador
:] 6e"istrador :ase
C] 6e"istrador Contador
7] 6e"istrador de 7ados
7S 6e"istrador de Se"mento de 7ados
ES 6e"istrador de Se"mento EEtra
SS 6e"istrador de Se"mento de )ilha
CS 6e"istrador de Se"mento de CKdi"o
:) 6e"istrador +!ontador da :ase
SI 6e"istrador de Gndi.e Zonte
7I 6e"istrador de Gndi.e 7estino
S) 6e"istrador +!ontador de )ilha
I) 6e"istrador +!ontador da )rKEima Instru=>o
Z 6e"istrador de Zla"

2.@.@.)ro"rama 7ebu".
)ara a .ria=>o de um !ro"rama em assembler eEistem 2 o!=Bes, usar o 4+S9 %
4urbo +ssembler da :orland0 ou o 7E:UGGE6. 8esta !rimeira se=>o vamos usar o
debu"0 uma ve( Cue !odemos en.ontr?%lo em CualCuer )C .om o 9S%75S.
7ebu" !ode a!enas .riar arCuivos .om a eEtens>o .C590 e !or .ausa das
.ara.terQsti.as deste ti!o de !ro"rama0 eles n>o !odem eE.eder os &A ^b0 e
tambMm devem ini.iar no endere=o de memKria P1PP1 dentro do se"mento
es!e.Qfi.o. S im!ortante observar isso0 !ois deste modo os !ro"ramas .C59
n>o s>o relo.?veis.
5s !rin.i!ais .omandos do !ro"rama debu" s>o,
+ 9ontar instru=Bes simbKli.as em .Kdi"o de m?Cuina
7 9ostrar o .onte<do de uma ?rea da memKria
E Entrar dados na memKria0 ini.iando num endere=o es!e.Qfi.o
G 6odar um !ro"rama eEe.ut?vel na memKria
8 7ar nome a um !ro"rama
) )ro.eder0 ou eEe.utar um .onjunto de instru=Bes rela.ionadas
V Sair do !ro"rama debu"
6 9ostrar o .onte<do de um ou mais re"istradores
4 EEe.utar !asso a !asso as instru=Bes
U 7esmontar o .Kdi"o de m?Cuina em instru=Bes simbKli.as
W Gravar um !ro"rama em dis.o
S !ossQvel visuali(ar os valores dos re"istradores internos da C)U usando o
!ro"rama 7ebu". 7ebu" M um !ro"rama Cue fa( !arte do !a.ote do 75S0 e !ode
ser en.ontrado normalmente no diretKrio C,_75S. )ara ini.i?%lo0 basta
di"itar 7ebu" na linha de .omando,
C,L`7ebu" aEnterb
%
\o.* notar? ent>o a !resen=a de um hQfen no .anto inferior esCuerdo da tela.
8>o se es!ante0 este M o !rom!t do !ro"rama. )ara visuali(ar o .onte<do dos
re"istradores0 eE!erimente,
%raEnterb
+]YPPPP :]YPPPP C]YPPPP 7]YPPPP S)YZZEE :)YPPPP SIYPPPP 7IYPPPP
7SYP7&2 ESYP7&2 SSYP7&2 CSYP7&2 I)YP1PP 8\ U) EI )/ 8c 8+ )5 8C
P7&2,P1PP 2E CS,
P7&2,P1P1 FP@E7@7ZPP C9) :;4E )46 a7Z7@b0PP CS,7Z7@YP@
S mostrado o .onte<do de todos os re"istradores internos da C)U3 um modo
alternativo !ara visuali(ar um <ni.o re"istrador M usar o .amando [r[
se"uido do !ardmetro Cue fa( refer*n.ia ao nome do re"istrador,
%rbE
:] PPPP
,
Esta instru=>o mostrar? o .onte<do do re"istrador :] e mudar? o indi.ador do
7ebu" de [%[ !ara [,[
Vuando o !rom!t assim se tornar0 si"nifi.a Cue M !ossQvel0 embora n>o
obri"atKria0 a mudan=a do valor .ontido no re"istrador0 bastando di"itar o
novo valor e !ressionar aEnterb. Se vo.* sim!lesmente !ressionar aEnterb o
valor anti"o se mantMm.
2.@.A.Estrutura +ssembly.
8as linhas do .Kdi"o em /in"ua"em +ssembly h? duas !artes, a !rimeira M o
nome da instru=>o a ser eEe.utada3 a se"unda0 os !ardmetros do .omando. )or
eEem!lo,
add ah bh
+Cui [add[ M o .omando a ser eEe.utado0 neste .aso uma adi=>o0 e [ah[ bem
.omo [bh[ s>o os !ardmetros.
)or eEem!lo,
mov al0 2
8o eEem!lo a.ima0 estamos usando a instru=>o mov0 Cue si"nifi.a mover o
valor 2 !ara o re"istrador al.
5 nome das instru=Bes nesta lin"ua"em M .onstituQdo de 20 @ ou A letras.
Estas instru=Bes s>o .hamadas mnemUni.os ou .Kdi"os de o!era=>o0
re!resentando a fun=>o Cue o !ro.essador eEe.utar?.
es ve(es instru=Bes a!are.em assim,
add al0a1DPb
5s .ol.hetes no se"undo !ardmetro indi.a%nos Cue vamos trabalhar .om o
.onte<do da .Mlula de memKria de n<mero 1DP0 ou seja0 .om o valor .ontido no
endere=o 1DP da memKria e n>o .om o valor 1DP0 isto M .onhe.ido .omo
[endere=amento direto[.

2.@..Criando um !ro"rama sim!les em assembly.
8>o nos res!onsabili(aremos !ela m? eEe.u=>o ou !ossQveis danos .ausados !or
CuaisCuer eEem!los Cue de a"ora em diante a!are.er>o0 uma ve( Cue os mesmos0
a!esar de testados0 s>o de .ar?ter did?ti.o. \amos0 ent>o0 .riar um !ro"rama
!ara ilustrar o Cue vimos atM a"ora. +di.ionaremos dois valores,
5 !rimeiro !asso M ini.iar o 7ebu"0 o Cue j? vimos .omo fa(er anteriormente.
)ara montar um !ro"rama no 7ebu"0 M usado o .omando [a[ #assemble$3 Cuando
usamos este .omando0 !odemos es!e.ifi.ar um endere=o ini.ial !ara o nosso
!ro"rama .omo o !ardmetro0 mas M o!.ional. 8o .aso de omiss>o0 o endere=o
ini.ial M o es!e.ifi.ado !elos re"istradores CS,I)0 "eralmente P1PPh0 o
lo.al em Cue !ro"ramas .om eEtens>o .C59 devem ini.iar. E ser? este o lo.al
Cue usaremos0 uma ve( Cue o 7ebu" sK !ode .riar este ti!o de !ro"rama.
Embora neste momento n>o seja ne.ess?rio darmos um !ardmetro ao .omando [a[0
isso M re.omend?vel !ara evitar !roblemas0 lo"o,
a 1PPaenterb
mov aE0PPP2aenterb
mov bE0PPPAaenterb
add aE0bEaenterb
no!aenterbaenterb
5 Cue o !ro"rama fa(J 9ove o valor PPP2 !ara o re"istrador aE0 move o valor
PPPA !ara o re"istrador bE0 adi.iona o .onte<do dos re"istradores aE e bE0
"uardando o resultado em aE e finalmente a instru=>o no! #nenhuma o!era=>o$
finali(a o !ro"rama.
8o !ro"rama debu"0 a tela se !are.er? .om,
C,_`debu"
%a 1PP
P7&2,P1PP mov aE0PPP2
P7&2,P1P@ mov bE0PPPA
P7&2,P1P& add aE0bE
P7&2,P1PF no!
P7&2,P1P9
Entramos .om o .omando [t[ !ara eEe.utar !asso a !asso as instru=Bes,
%t
+]YPPP2 :]YPPPP C]YPPPP 7]YPPPP S)YZZEE :)YPPPP SIYPPPP 7IYPPPP
7SYP7&2 ESYP7&2 SSYP7&2 CSYP7&2 I)YP1P@ 8\ U) EI )/ 8c 8+ )5 8C
P7&2,P1P@ ::PAPP 95\ :]0PPPA
\emos o valor PPP2 no re"istrador +]. 4e.lamos [t[ !ara eEe.utar a se"unda
instru=>o,
%t
+]YPPP2 :]YPPPA C]YPPPP 7]YPPPP S)YZZEE :)YPPPP SIYPPPP 7IYPPPP
7SYP7&2 ESYP7&2 SSYP7&2 CSYP7&2 I)YP1P& 8\ U) EI )/ 8c 8+ )5 8C
P7&2,P1P& P17F +77 +]0:]
4e.lando [t[ novamente !ara ver o resultado da instru=>o add,
%t
+]YPPP& :]YPPPA C]YPPPP 7]YPPPP S)YZZEE :)YPPPP SIYPPPP 7IYPPPP
7SYP7&2 ESYP7&2 SSYP7&2 CSYP7&2 I)YP1PF 8\ U) EI )/ 8c 8+ )E 8C
P7&2,P1PF 9P 85)
+ !ossibilidade dos re"istradores .onterem valores diferentes eEiste0 mas +]
e :] devem .onter os mesmos valores a.ima des.ritos.
)ara sair do 7ebu" usamos o .omando [C[ #Cuit$.

2.@.&.+rma(enando e .arre"ando os !ro"ramas.
8>o seria !r?ti.o ter Cue di"itar o !ro"rama .ada ve( Cue ini.i?ssemos o
7ebu". +o invMs disso0 !odemos arma(en?%lo no dis.o. SK Cue o mais
interessante nisso M Cue um sim!les .omando de salvar .ria um arCuivo .om a
eEtens>o .C590 ou seja0 eEe.ut?vel % sem !re.isarmos efetuar os !ro.essos de
monta"em e li"a=>o0 .omo veremos !osteriormente .om o 4+S9.
Eis os !assos !ara salvar um !ro"rama Cue j? esteja na memKria,
' 5bter o tamnho do !ro"rama subtraindo o endere=o final do
endere=o ini.ial0 naturalmente Cue no sistema heEade.imal.
' 7ar um nome ao !ro"rama.
' Colo.ar o tamanho do !ro"rama no re"istrador C].
' 9andar o debu" "ravar o !ro"rama em dis.o.
Usando .omo eEem!lo o se"uinte !ro"rama0 vamos .larear a idMia de .omo
reali(ar os !assos a.ima des.ritos,
PC1:,P1PP mov aE0PPP2
PC1:,P1P@ mov bE0PPPA
PC1:,P1P& add aE0bE
PC1:,P1PF int 2P
PC1:,P1P+
)ara obter o tamanho de um !ro"rama0 o .omando [h[ M usado0 j? Cue ele nos
mostra a adi=>o e subtra=>o de dois n<meros em heEade.imal. )ara obter o
tamanho do !ro"rama em Cuest>o0 damos .omo !ardmetro o valor do endere=o
final do nosso !ro"rama #1P+$0 e o endere=o ini.ial #1PP$. 5 !rimeiro
resultado mostra%nos a soma dos endere=os0 o se"undo0 a subtra=>o.
%h 1Pa 1PP
P2Pa PPPa
5 .omando [n[ !ermite%nos nomear o !ro"rama.
%n test..om
5 .omando [r.E[ !ermite%nos mudar o .onte<do do re"istrador C] !ara o valor
obtido .omo tamanho do arCuivo .om o .omando [h[0 neste .aso PPPa.
%r.E
C] PPPP
,PPPa
Zinalmente0 o .omando [2[ "rava nosso !ro"rama no dis.o0 indi.ando Cuantos
bytes "ravou.
%2
Writin" PPP+ bytes
)ara j? salvar um arCuivo Cuando .arre"?%lo0 2 !assos s>o ne.ess?rios,
7ar o nome do arCuivo a ser .arre"ado.
Carre"?%lo usando o .omando [l[ #load$.
)ara obter o resultado .orreto destes !assos0 M ne.ess?rio Cue o !ro"rama
a.ima j? esteja .riado.
7entro do 7ebu"0 es.revemos o se"uinte,
%n test..om
%l
%u 1PP 1P9
PC@7,P1PP :FP2PP 95\ +]0PPP2
PC@7,P1P@ ::PAPP 95\ :]0PPPA
PC@7,P1P& P17F +77 +]0:]
PC@7,P1PF C72P I84 2P
5 <ltimo .omando [u[ M usado !ara verifi.ar Cue o !ro"rama foi .arre"ado na
memKria. 5 Cue ele fa( M desmontar o .Kdi"o e mostr?%lo em assembly. 5s
!ardmetros indi.am ao 7ebu" os endere=os ini.ial e final a serem
desmontados.
5 7ebu" sem!re .arre"a os !ro"ramas na memKria no endere=o 1PPh0 .onforme j?
.omentamos.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
C+)G4U/5 @, )65G6+9+HI5 +SSE9:/;

Conte<do,
@.1.Construindo !ro"ramas em +ssembly
@.2.)ro.esso +ssembly
@.@.)eCuenos !ro"ramas em +ssembly
@.A.4i!os de instru=Bes
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

@.1.Construindo !ro"ramas em +ssembly.
@.1.1.Soft2are ne.ess?rio
@.1.2.)ro"rama=>o +ssembly

@.1.1.S5Z4W+6E 8ECESSR6I5
)ara Cue !ossamos .riar um !ro"rama0 !re.isamos de al"umas ferramentas,
)rimeiro de um editor !ara .riar o !ro"rama fonte. Se"undo de um montador0
um !ro"rama Cue ir? transformar nosso fonte num !ro"rama objeto. E0
ter.eiro0 de um linOer #li"ador$ Cue ir? "erar o !ro"rama eEe.ut?vel a
!artir do !ro"rama objeto.
5 editor !ode ser CualCuer um Cue dis!usermos. 5 montador ser? o 4+S9 ma.ro
assembler da :orland0 e o linOer ser? o 4/I8^0 tambMm da :orland.
8Ks devemos .riar os !ro"ramas fonte .om a eEtens>o .+S9 !ara Cue o 4+S9
re.onhe=a e o transforme no !ro"rama objeto0 um [formato intermedi?rio[ do
!ro"rama0 assim .hamado !orCue ainda n>o M um !ro"rama eEe.ut?vel e t>o
!ou.o um !ro"rama fonte. 5 linOer "era a !artir de um !ro"rama .5:J0 ou da
.ombina=>o de v?rios deles0 um !ro"rama eEe.ut?vel0 .uja eEtens>o M
normalmente .E]E0 embora !ossa ser .C59 de!endendo da forma .omo for montado
e li"ado.

@.1.2.)65G6+9+HI5 +SSE9:/;
)ara .onstruirmos os !ro"ramas .om o 4+S90 devemos estruturar o fonte de
forma diferen.iada ao Cue fa(Qamos .om o !ro"rama debu".
S im!ortante in.luir as se"uintes diretivas assembly,
.957E/ S9+//
7efine o melo de memKria a usar em nosso !ro"rama
.C57E
7efine as instru=Bes do !ro"rama0 rela.ionado ao se"mento de .Kdi"o
.S4+C^
6eserva es!a=o de memKria !ara as instru=Bes de !ro"rama na !ilha
E87
Zinali(a um !ro"rama assembly
\amos !ro"ramar
)rimeiro !asso
Use CualCuer editor !ara .riar o !ro"rama fonte. Entre .om as se"uintes
linhas,
)rimeiro eEem!lo
3 use 3 !ara fa(er .oment?rios em !ro"ramas assembly
.957E/ S9+// 3modelo de memKria
.S4+C^ 3es!a=o de memKria !ara instru=Bes do !ro"rama na !ilha
.C57E 3as linhas se"uintes s>o instru=Bes do !ro"rama
mov ah0P1h 3move o valor P1h !ara o re"istrador ah
mov .E0PDh 3move o valor PDh !ara o re"istrador .E
int 1Ph 3interru!=>o 1Ph
mov ah0A.h 3move o valor A.h !ara o re"istrador ah
int 21h 3interru!=>o 21h
E87 3finali(a o .Kdi"o do !ro"rama
Este !ro"rama assembly muda o tamanho do .ursor.
Se"undo !asso
Salvar o arCuivo .om o se"uinte nome, eEam1.asm
8>o esCue.er de salv?%lo no formato +SCII.
4er.eiro !asso
Usar o !ro"rama 4+S9 !ara .onstruir o !ro"rama objeto.
EEem!lo,
C,_`tasm eEam1.asm
4urbo +ssembler \ersion 2.P Co!yri"ht #.$ 19FF0 199P :orland International
+ssemblin" file, eEam1.asm
Error messa"es, 8one
Warnin" messa"es, 8one
)asses, 1
6emainin" memory, AD1O
5 4+S9 sK !ode .riar !ro"ramas no formato .5:J0 Cue ainda n>o !ode ser
eEe.utado...
Vuarto !asso
Usar o !ro"rama 4/I8^ !ara .riar o !ro"rama eEe.ut?vel.
EEem!lo,
C,_`tlinO eEam1.obj
4urbo /inO \ersion @.P Co!yri"ht #.$ 19FD0 199P :orland International
C,_`
5nde eEam1.obj M o nome do !ro"rama intermedi?rio0 .5:J. 5 .omando a.ima
"era diretamente o arCuivo .om o nome do !ro"rama intermedi?rio e a eEtens>o
.E]E. S o!.ional a .olo.a=>o da eEtens>o .obj no .omando.
Vuinto !asso
EEe.utar o !ro"rama eEe.ut?vel .riado.
C,_`eEam1aenterb
/embre%se0 este !ro"rama assembly muda o tamanho do .ursor no 75S.
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

@.2.)ro.esso +ssembly.
@.2.1.Se"mentos
@.2.2.4abela de eCuival*n.ia

@.2.1.SEG9E845S
+ arCuitetura dos !ro.essadores EF& for=a%nos a usar se"mentos de memKria
!ara "eren.iar a informa=>o0 o tamanho destes se"mentos M de &A^b.
+ ra(>o de ser destes se"mentos M Cue0 .onsiderando Cue o tamanho m?Eimo de
um n<mero Cue o !ro.essador !ode "eren.iar M dado !or uma !alavra de 1& bits
ou re"istrador0 assim n>o seria !ossQvel a.essar mais do Cue &@& lo.ais da
memKria usando a!enas um destes re"istradores. 9as a"ora0 se a memKria do )C
M dividida em "ru!os de se"mentos0 .ada um .om &@& lo.ais0 e !odemos usar
um endere=o ou re"istrador eE.lusivo !ara en.ontrar .ada se"mento0 e ainda
fa(emos .ada endere=o de um es!e.Qfi.o slot .om dois re"istradores0 nos M
!ossQvel a.essar a Cuantidade de A29A9&D29& bytes de memKria0 Cue M0
atualmente0 a maior memKria Cue !odemos instalar num )C.
7esta forma0 !ara Cue o montador seja .a!a( de "eren.iar os dados0 se fa(
ne.ess?rio Cue .ada informa=>o ou instru=>o se en.ontre na ?rea
.orres!ondente ao seu se"mento. 5 endere=o do se"mento M forne.ido ao
montador !elos re"istradores 7S0 ES0 SS e CS. /embrando um !ro"rama no
7ebu"0 observe,
1C:P,P1P2 95\ +]0:]
5 !rimeiro n<mero 1C:P0 .orres!onde ao se"mento de memKria Cue est? sendo
usado0 o se"undo M uma refer*n.ia ao endere=o dentro do se"mento0 M um
deslo.amento dentro do se"mento offset.
5 modo usado !ara indi.ar ao montador .om Cuais se"mentos vamos trabalhar M
fa(endo uso das diretivas .C57E0 .7+4+ e .S4+C^.
5 montador ajusta o tamanho dos se"mentos tomando .omo base o n<mero de
bytes Cue .ada instru=>o assembly !re.isa0 j? Cue seria um des!erdQ.io de
memKria usar se"mentos inteiros. )or eEem!lo0 se um !ro"rama !re.isa de
a!enas 1P^b !ara arma(enar dados0 o se"mento de dados seria a!enas de 1P^b e
n>o de &A^b0 .omo !oderia a.onte.er se feito manualmente.

@.2.2.4+:E/+S 7E EVUI\+/f8CI+
Cada uma das !artes numa linha de .Kdi"o assembly M .onhe.ida .omo toOen0
!or eEem!lo,
95\ +]0\ar
+Cui temos tr*s toOens0 a instru=>o 95\0 o o!erador +] e o o!erador \+6. 5
Cue o montador fa( !ara "erar o .Kdi"o 5:J M ler .ada um dos toOens e
!ro.urar a eCuival*n.ia em .Kdi"o de m?Cuina em tabelas .orres!ondentes0
seja de !alavras reservadas0 tabela de .Kdi"os de o!era=>o0 tabela de
sQmbolos0 tabela de literais0 onde o si"nifi.ado dos mnemUni.os e os
endere=os dos sQmbolos Cue usamos ser>o en.ontrados.
+ maioria dos montadores s>o de duas !assa"ens. Em sQntese na !rimeira
!assa"em temos a defini=>o dos sQmbolos0 ou seja0 s>o asso.iados endere=os a
todas as instru=Bes do !ro"rama. Se"uindo este !ro.esso0 o assembler l* 95\
e !ro.ura%o na tabela de .Kdi"os de o!era=>o !ara en.ontrar seu eCuivalente
na lin"ua"em de m?Cuina. 7a mesma forma ele l* +] e en.ontra%o na tabela
.orres!ondente .omo sendo um re"istrador. 5 !ro.esso !ara \ar M um !ou.o
diferen.iado0 o montador verifi.a Cue ela n>o M uma !alavra reservada0 ent>o
!ro.ura na tabela de sQmbolos0 l? en.ontrando%a ele desi"na o endere=o
.orres!ondente0 mas se n>o en.ontrou ele a insere na tabela !ara Cue ela
!ossa re.eber um endere=o na se"unda !assa"em. +inda na !rimeira !assa"em M
eEe.utado !arte do !ro.essamento das diretivas0 M im!ortante notar Cue as
diretivas n>o .riam .Kdi"o objeto. 8a !assa"em dois s>o montadas as
instru=Bes0 tradu(indo os .Kdi"os de o!era=>o e !ro.urando os endere=os0 e M
"erado o .Kdi"o objeto.
1? sQmbolos Cue o montador n>o .onse"ue en.ontrar0 uma ve( Cue !odem ser
de.lara=Bes eEternas. 8este .aso o linOer entra em a=>o !ara .riar a
estrutura ne.ess?ria a fim de li"ar as diversas !ossQveis !artes de .Kdi"o0
di(endo ao loader Cue o se"mento e o toOen em Cuest>o s>o definidos Cuando o
!ro"rama M .arre"ado e antes de ser eEe.utado.
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

@.@.9ais !ro"ramas.
5utro eEem!lo
)rimeiro !asso
Use CualCuer editor e .rie o se"uinte,
3eEem!lo2
.model small
.sta.O
..ode
mov ah02h 3move o valor 2h !ara o re"istrador ah
mov dl02ah 3move o valor 2ah !ara o re"istrador dl
3#M o valor +SCII do .ara.tere '$
int 21h 3interru!=>o 21h
mov ah0A.h 3fun=>o A.h0 sai !ara o sistema o!era.ional
int 21h 3interru!=>o 21h
end 3finali(a o !ro"rama
Se"undo !asso
Salvar o arCuivo .om o nome, eEam2.asm
8>o esCue.er de salvar em formato +SCII.
4er.eiro !asso
Usar o !ro"rama 4+S9 !ara .onstruir o !ro"rama objeto.
C,_`tasm eEam2.asm
4urbo +ssembler \ersion 2.P Co!yri"ht #.$ 19FF0 199P :orland International
+ssemblin" file, eEam2.asm
Error messa"es, 8one
Warnin" messa"es, 8one
)asses, 1
6emainin" memory, AD1O
Vuarto !asso
Usar o !ro"rama 4/I8^ !ara .riar o !ro"rama eEe.ut?vel.
C,_`tlinO eEam2.obj
4urbo /inO \ersion @.P Co!yri"ht #.$ 19FD0 199P :orland International
C,_`
Vuinto !asso
EEe.utar o !ro"rama,
C,_`eEam2aenterb
'
C,_`
Este !ro"rama im!rime o .ara.ter ' na tela.
CliCue aCui !ara obter mais !ro"ramas
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

@.A.4i!os de instru=Bes.
@.A.1.9ovimento de dados
@.A.2.5!era=Bes lK"i.as e aritmMti.as
@.A.@.Saltos0 la=os e !ro.edimentos

@.A.1.95\I9E845 7E 7+75S
Em CualCuer !ro"rama h? ne.essidade de se mover dados na memKria e em
re"istradores da C)U3 h? v?rios modos de se fa(*%lo, !ode%se .o!iar os dados
da memKria !ara al"um re"istrador0 de re"istrador !ara re"istrador0 de um
re"istrador !ara a !ilha0 da !ilha !ara um re"istrador0 transmitir dados
!ara um dis!ositivo eEterno e vi.e%versa.
Este movimento de dados M sujeito a re"ras e restri=Bes0 entre elas,
'8>o M !ossQvel mover dados de um lo.al da memKria !ara outro diretamente3 M
ne.ess?rio !rimeiro mover o dado do lo.al de ori"em !ara um re"istrador e
ent>o do re"istrador !ara o lo.al de destino.
'8>o M !ossQvel mover uma .onstante diretamente !ara um re"istrador de
se"mento3 !rimeiro deve%se mover !ara um re"istrador.
S !ossQvel mover blo.os de dados atravMs de instru=Bes movs0 Cue .o!ia uma
.adeia de bytes ou !alavras3 movsb .o!ia n bytes de um lo.al !ara outro3 e
movs2 .o!ia n !alavras. + <ltima das duas instru=Bes toma os valores dos
endere=os definidos !or 7S,SI .omo o "ru!o de dados a mover e ES,7I .omo a
nova lo.ali(a=>o dos dados.
)ara mover dados h? tambMm estruturas .hamadas !ilhas0 onde o dado M
introdu(ido .om a instru=>o !ush e M eEtraQdo .om a instru=>o !o!
8uma !ilha o !rimeiro dado a entrar M o <ltimo a sair0 !or eEem!lo,
)US1 +]
)US1 :]
)US1 C]
)ara retornar os valores da !ilha referentes N .ada re"istrador M ne.ess?rio
se"uir%se a ordem,
)5) C]
)5) :]
)5) +]
)ara a .omuni.a=>o .om dis!ositivos eEternos o .omando de saQda M usado !ara
o envio de informa=Bes a uma !orta e o .omando de entrada M usado !ara
re.eber informa=>o de uma !orta.
+ sintaEe do .omando de saQda,
5U4 7]0+]
5nde 7] .ontMm o valor da !orta Cue ser? usada !ara a .omuni.a=>o e +]
.ontMm a informa=>o Cue ser? enviada.
+ sintaEe do .omando de entrada,
I8 +]07]
5nde +] M o re"istrador onde a informa=>o ser? arma(enada e 7] .ontMm o
endere=o da !orta de onde .he"ar? a informa=>o.

@.A.2.5)E6+HgES /hGIC+S E +6I49S4IC+S
+s instru=Bes de o!era=Bes lK"i.as s>o, and0 not0 or e Eor. Elas trabalham a
nQvel de bits em seus o!eradores.
)ara verifi.ar o resultado das o!era=Bes usamos as instru=Bes .m! e test.
+s instru=Bes usadas !ara o!era=Bes al"Mbri.as s>o, !ara adi=>o add0 !ara
subtra=>o sub0 !ara multi!li.a=>o mul e !ara divis>o div.
Vuase todas as instru=Bes de .om!ara=>o s>o baseadas na informa=>o .ontida
no re"istrador de fla". 8ormalmente os fla"s do re"istrador Cue !odem ser
manuseados diretamente !elo !ro"ramador s>o os da dire=>o de dados 7Z0 usado
!ara definir as o!era=Bes sobre .adeias. Uma outro Cue !ode tambMm ser
manuseado M o fla" IZ atravMs das instru=Bes sti e .li0 !ara ativar e
desativar as interru!=Bes.

@.A.@.S+/45S0 /55)S E )65CE7I9E845S
Saltos in.ondi.ionais na es.rita de !ro"ramas em lin"ua"em assembly s>o
dados !ela instru=>o jm!3 um salto M usado !ara modifi.ar a seCT*n.ia da
eEe.u=>o das instru=Bes de um !ro"rama0 enviando o .ontrole ao endere=o
indi.ado0 ou seja0 o re"istrador .ontador de !ro"rama re.ebe este novo
endere=o.
Um loo!0 tambMm .onhe.ido .omo intera=>o0 M a re!eti=>o de um !ro.esso um
.erto n<mero de ve(es atM atin"ir a .ondi=>o de !arada.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
C+)G4U/5 A, I8S46UHgES +SSE9:/;
Conte<do,
A.1.Instru=Bes de o!era=>o de dados
A.2.Instru=Bes lK"i.as e aritmMti.as
A.@.Instru=Bes de .ontrole de !ro.essos
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

A.1. Instru=Bes de o!era=>o de dados
Conte<do,
A.1.1.Instru=Bes de transfer*n.ia
A.1.2.Instru=Bes de .ar"a
A.1.@.Instru=Bes de !ilha

A.1.1.Instru=Bes de transfer*n.ia.
S>o usadas !ara mover o .onte<do dos o!eradores. Cada instru=>o !ode ser
usada .om diferentes modos de endere=amento.
95\
95\S #95\S:$ #95\SW$

I8S46UHI5 95\
)ro!Ksito, 4ransfer*n.ia de dados entre .Mlulas de memKria0 re"istradores e
o a.umulador.
SintaEe,
95\ 7estino0Zonte
7estino M o lu"ar !ara onde o dado ser? movido e Zonte M o lu"ar onde o dado
est?.
5s diferentes movimentos de dados !ermitidos !ara esta instru=>o s>o,
'7estino, memKria. Zonte, a.umulador
'7estino, a.umulador. Zonte, memKria
'7estino, re"istrador de se"mento. Zonte, memKriaLre"istrador
'7estino, memKriaLre"itrador. Zonte, re"istrador de se"mento
'7estino, re"istrador. Zonte, re"istrador
'7estino, re"istrador. Zonte, memKria
'7estino, memKria. Zonte, re"istrador
'7estino, re"istrador. Zonte, dado imediato
'7estino, memKria. Zonte, dado imediato
EEem!lo,
95\ +]0PPP&h
95\ :]0+]
95\ +]0ACPPh
I84 21h
Este !eCueno !ro"rama move o valor PPP&h !ara o re"istrador +]0 ent>o ele
move o .onte<do de +] #PPP&h$ !ara o re"istrador :]0 e finalmente move o
valor ACPPh !ara o re"istrador +] !ara terminar a eEe.u=>o .om a o!=>o AC da
interru!=>o 21h.

I8S46UHgES 95\S #95\S:$ #95\SW$
)ro!Ksito, 9over byte ou .adeias de !alavra da fonte0 endere=ada !or SI0
!ara o destino endere=ado !or 7I.
SintaEe,
95\S
Este .omando n>o ne.essita de !ardmetros uma ve( Cue toma .omo endere=o
fonte o .onte<do do re"istrador SI e .omo destino o .onte<do de 7I. +
se"uinte seCT*n.ia de instru=Bes ilustra isso,
95\ SI0 5ZZSE4 \+61
95\ 7I0 5ZZSE4 \+62
95\S
)rimeiro ini.iali(amos os valores de SI e 7I .om os endere=os das vari?veis
\+61 e \+62 res!e.tivamente0 ent>o a!Ks a eEe.u=>o de 95\S o .onte<do de
\+61 M .o!iado !ara \+62.
+s instru=Bes 95\S: e 95\SW s>o usadas do mesmo modo Cue 95\S0 a !rimeira
move um byte e a se"unda move uma !alavra.

Instru=Bes de .ar"a.
S>o instru=Bes es!e.Qfi.as !ara re"istradores0 usadas !ara .arre"ar bytes ou
.adeias de bytes num re"istrador.
/57S #/57S:$ #/57SW$
/+1Z
/7S
/E+
/ES

I8S46UHgES /57S #/57S:$ #/57SW$
)ro!Ksito, Carre"ar .adeias de um byte ou uma !alavra !ara o a.umulador.
SintaEe,
/57S
Esta instru=>o toma a .adeia en.ontrada no endere=o es!e.ifi.ado !or SI0 a
.arre"a !ara o re"istrador +/ #ou +]$ e adi.iona ou subtrai0 de!endendo do
estado de 7Z0 !ara SI se M uma transfer*n.ia de bytes ou de !alavras.
95\ SI0 5ZZSE4 \+61
/57S
8a !rimeira linha vemos a .ar"a do endere=o de \+61 em SI e na se"unda M
tomado o .onte<do daCuele lo.al !ara o re"iustrador +/.
5s .omandos /57S: e /57SW s>o usados do mesmo modo0 o !rimeiro .arre"a um
byte e o se"undo uma !alavra #usa todo o re"istrador +]$.

I8S46UHI5 /+1Z
)ro!Ksito, 4ransferir o .onte<do dos fla"s !ara o re"istrador +1.
SintaEe,
/+1Z
Esta instru=>o M <til !ara verifi.ar o estado dos fla"s durante a eEe.u=>o
do nosso !ro"rama.
5s fla"s s>o deiEados na se"uinte ordem dentro do re"istrador,
SZ cZ JJ +Z JJ )Z JJ CZ
5 [JJ[ si"nifi.a Cue haver? um valor indefinido naCueles bits.

I8S46UHI5 /7S
)ro!Ksito, Carre"ar o re"istrador de se"mento de dados.
SintaEe,
/7S destino0fonte
5 o!erador fonte deve ser uma double 2ord na memKria. + !alavra asso.iada
.om o maior endere=o M transferida !ara 7S0 em outras !alavras isto M tomado
.omo o endere=o de se"mento. + !alavra asso.iada .om o menor endere=o M o
endere=o de deslo.amento e M de!ositada no re"istrador indi.ado .omo
destino.

I8S46UHI5 /E+
)ro!Ksito, Carre"ar o endere=o do o!erador fonte.
SintaEe,
/E+ destino0fonte
5 o!erador fonte deve estar lo.ali(ado na memKria0 e seu deslo.amento M
.olo.ado no re"istrador de Qndi.e ou !onteiro es!e.ifi.ado no destino.
)ara ilustrar uma das fa.ilidades Cue temos .om este .omando0 vejamos,
95\ SI05ZZSE4 \+61
S eCuivalente a,
/E+ SI0\+61
S muito !rov?vel Cue !ara o !ro"ramador M muito mais f?.il .riar !ro"ramas
"randes usando este <ltimo formato.

I8S46UHI5 /ES
)ro!Ksito, Carre"ar o re"istrador de se"mento eEtra
SintaEe,
/ES destino0fonte
5 o!erador fonte deve ser uma !alavra du!la na memKria. 5 .onte<do da
!alavra .om endere=o maior M inter!retado .omo o endere=o do se"mento e M
.olo.ado em ES. + !alavra .om endere=o menor M o endere=o do deslo.amento e
M .olo.ada no re"istrador es!e.ifi.ado no !ardmetro de destino.

Instru=Bes de mani!ula=>o da !ilha.
Estas instru=Bes !ermitem usar a !ilha !ara arma(enar ou re.u!erar dados.
)5)
)5)Z
)US1
)US1Z

I8S46UHI5 )5)
)ro!Ksito, 6e.u!erar uma !arte de informa=>o da !ilha.
SintaEe,
)5) destino
Esta instru=>o transfere o <ltimo valor arma(enado na !ilha !ara o o!erador
de destino0 e in.rementa de 2 o re"istrador S).
Este in.remento M du!lo !elo fato de Cue a !ilha do mais alto endere=o de
memKria !ara o mais baiEo0 e a !ilha trabalha a!enas .om !alavras0 2 bytes0
lo"o deve ser 2 o in.remento de S)0 na realidade 2 est? sendo subtraQdo do
tamanho real da !ilha.

I8S46UHI5 )5)Z
)ro!Ksito, EEtrair os fla"s arma(enados na !ilha.
SintaEe,
)5)Z
Este .omando transfere os bits da !alavra arma(enada na !arte mais alta da
!ilha !ara re"istrador de fla".
5 modo da transfer*n.ia M .omo se se"ue,
:I4 Z/+G
P CZ
2 )Z
A +Z
& cZ
D SZ
F 4Z
9 IZ
1P 7Z
11 5Z
5s lo.ais dos bits s>o os mesmos !ara o uso da instru=>o )US1Z.
Uma ve( feita a transfer*n.ia o re"istrador S) M in.rementado de 20 .onforme
vimos anteriormente.

I8S46UHI5 )US1
)ro!Ksito, Colo.a uma !alavra na !ilha.
SintaEe,
)US1 fonte
+ instru=>o )US1 de.rementa de dois o valor de S) e ent>o transfere o
.onte<do do o!erador fonte !ara o novo endere=o desultante no re"istrador
re.Mm modifi.ado.
5 de.remento no endere=o M du!lo !elo fato de Cue Cuando os valores s>o
adi.ionados N !ilha0 Cue .res.e do maior !ara o menor endere=o0 lo"o Cuando
subraQmos de 2 o re"istrador S) o Cue fa(emos M in.rementar o tamanho da
!ilha em dois bytes0 Cue M a <ni.a Cuantidade de informa=>o Cue a !ilha !ode
manusear em .ada entrada e saQda.

I8S46UHI5 )US1Z
)ro!Ksito, Colo.ar os valores dos fla"s na !ilha.
SintaEe,
)US1Z
Este .omando de.rementa de 2 o valor do re"istrador S) e ent>o o .onte<do do
re"istrador de fla" M transferido !ara a !ilha0 no endere=o indi.ado !or S).
5s fla"s s>o arma(enados na memKria da mesma forma Cue o .omando )5)Z.
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

A.2. Instru=Bes lK"i.as e aritmMti.as
Conte<do,
A.2.1.Instru=Bes lK"i.as
A.2.2.Instru=Bes aritmMti.as

A.2.1.Instru=Bes lK"i.as
S>o usadas !ara reali(ar o!era=Bes lK"i.as nos o!eradores.
+87
8EG
854
56
4ES4
]56

I8S46UHI5 +87
)ro!Ksito, 6eali(a a .onjun=>o de o!eradores bit a bit.
SintaEe,
+87 destino0fonte
Com esta instru=>o a o!era=>o lK"i.a [y[ !ara ambos os o!eradores M usada
.omo na tabela,
Zonte 7estino i 7estino
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1 1 i 1
1 P i P
P 1 i P
P P i P
5 resultado desta o!era=>o M arma(enado no o!erador de destino.

I8S46UHI5 8EG
)ro!Ksito, Gera o .om!lemento de 2.
SintaEe,
8EG destino
Esta instru=>o "era o .om!lemento de 2 do o!erador destino e o arma(ena no
mesmo o!erador. )or eEem!lo0 if +] arma(ena o valor 12@A10 ent>o,
8EG +]
Isto far? .om o Cue o valor E7CC1 fCue arma(enado no re"istrador +].

I8S46UHI5 854
)ro!Ksito, Za( a ne"a=>o do o!erador de destino bit a bit.
SintaEe,
854 destino
5 resultado M arma(enado no mesmo o!erador de destino.

I8S46UHI5 56
)ro!Ksito, 6eali(a um 5U lK"i.o.
SintaEe,
56 destino0fonte
+ instru=>o 560 fa( uma disjun=>o lK"i.a bit a bit dos dois o!eradores,
Zonte 7estino i 7estino
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1 1 i 1
1 P i 1
P 1 i 1
P P i P

I8S46UHI5 4ES4
)ro!Ksito, Com!ara lo"i.amente os o!eradores.
SintaEe,
4ES4 destino0fonte
6eali(a uma .onjun=>o0 bit a bit0 dos o!eradores0 mas difere da instru=>o
+870 uma ve( Cue n>o .olo.a o resultado no o!erador de destino. 4em efeito
sobre o re"istrador de fla".

I8S46UHI5 ]56
)ro!Ksito, 6eali(a um 5U eE.lusivo.
SintaEe,
]56 destino0fonte
Esta instru=>o reali(Ea uma disjun=>o eE.lusiva de dois o!eradores bit a
bit.
Zonte 7estino i 7estino
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1 1 i P
P P i 1
P 1 i 1
P P i P

A.2.2.Instru=Bes aritmMti.as.
S>o usadas !ara reali(ar o!era=Bes aritmMti.as nos o!eradores.
+7C
+77
7I\
I7I\
9U/
I9U/
S::
SU:

I8S46UHI5 +7C
)ro!Ksito, Efetuar a soma entre dois o!erandos .om .arry.
SintaEe,
+7C destino0fonte
Esta instru=>o efetua a soma entre dois o!erandos0 mais o valor do fla" CZ0
eEistente antes da o!era=>o. +!enas o o!erando destino e os fla"s s>o
afetados.
5 resultado M arma(enado no o!erador de destino.

I8S46UHI5 +77
)ro!Ksito, +di=>o de dois o!eradores.
SintaEe,
+77 destino0fonte
Esta instru=>o adi.iona dois o!eradores e arma(ena o resultado no o!erador
destino.

I8S46UHI5 7I\
)ro!Ksito, 7ivis>o sem sinal.
SintaEe,
7I\ fonte
5 divisor !ode ser um byte ou uma !alavra e M o o!erador Cue M dado na
instru=>o.
Se o divisor M de F bits0 o re"istrador +] de 1& bits M tomado .omo
dividendo e se o divisor M de 1& bits0 o !ar de re"istradores 7],+] ser?
tomado .omo dividendo0 tomando a !alavra alta de 7] e a baiEa de +].
Se o divisor for um byte0 ent>o o Cuo.iente ser? arma(enado no re"istrador
+/ e o resto em +1. Se for uma !alavra0 ent>o o Cuo.iente M arma(enado em +]
e o resto em 7].

I8S46UHI5 I7I\
)ro!Ksito, 7ivis>o .om sinal.
SintaEe,
I7I\ fonte
Consiste basi.amente .omo a instru=>o 7I\0 diferen.ia%se a!enas !or reali(ar
a o!era=>o .om sinal.
)ara os resultados s>o usados os mesmos re"istradores da instru=>o 7I\.

I8S46UHI5 9U/
)ro!Ksito, 9ulti!li.a=>o .om sinal.
SintaEe,
9U/ fonte
Esta instru=>o reali(a uma multi!li.a=>o n>o sinali(ada entre o .onte<do do
a.umulador +/ ou +] !elo o!erando%fonte0 devolvendo o resultado no
a.umulador +] .aso a o!era=>o tenha envolvido +/ .om um o!erando de F bits0
ou em 7] e +] .aso a o!era=>o tenha envolvido +] e um o!erando de 1& bits.

I8S46UHI5 I9U/
)ro!Ksito, 9ulti!li.=>o de dois n<meros inteiros .om sinal.
SintaEe,
I9U/ fonte
Esta instru=>o fa( o mesmo Cue a anterior0 difere a!enas !ela in.lus>o do
sinal.
5s resultados s>o mantidos nos mesmos re"istradores usados !ela instru=>o
9U/.

I8S46UHI5 S::
)ro!Ksito, Subtra=>o .om .arry.
SintaEe,
S:: destino0fonte
Esta instru=>o subtrai os o!eradores e subtrai um do resultado se CZ est?
ativado. 5 o!erador fonte M sem!re subtraQdo do destino.
Este ti!o de subtra=>o M usado Cuando se trabalha .om Cuantidades de @2
bits.

I8S46UHI5 SU:
)ro!Ksito, Subtra=>o.
SintaEe,
SU: destino0fonte
Esta instru=>o subtrai o o!erador fonte do destino.

%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%
A.@.Instru=Bes de .ontrole de !ro.essos

Conte<do,
A.@.1.Instru=Bes de salto
A.@.2.Instru=Bes de la=os, loo!
A.@.@.Instru=Bes de .onta"em
A.@.A.Instru=Bes de .om!ara=>o
A.@..Instru=Bes de fla"

A.@.1.Instru=Bes de salto.
Usadas !ara transferir o !ro.esso de eEe.u=>o do !ro"rama !ara o o!erador
indi.ado.
J9)
J+ #J8:E$
J+E #J8:E$
J: #J8+E$
J:E #J8+$
JE #Jc$
J8E #J8c$
JG #J8/E$
JGE #J8/$
J/ #J8GE$
J/E #J8G$
JC
J8C
J85
J8) #J)5$
J8S
J5
J) #J)E$
JS

I8S46UHI5 J9)
)ro!Ksito, Salto in.ondi.ional.
SintaEe,
J9) destino
Esta instru=>o M usada !ar adesviar o .urso do !ro"rama sem tomar em .onta
as .ondi=Bes atuais dos fla"s ou dos dados.

I8S46UHI5 J+ #J8:E$
)ro!Ksito, Salto .ondi.ional.
SintaEe,
J+ sQmbolo
+!Ks uma .om!ara=>o este .omando salta se n>o M i"ual.
Isto Cuer di(er Cue o salto sK M feito se o fla" CZ ou o fla" cZ est>o
desativados0 ou seja0 se um dos dois for (ero.

I8S46UHI5 J+E #J8:$
)ro!Ksito, Salto .ondi.ional.
SintaEe,
J+E sQmbolo
+ instru=>o salta se est? u!0 se est? eCual ou se est? not do2n.
5 salto M feito se CZ est? desativado.

I8S46UHI5 J: #J8+E$
)ro!Ksito, Salto .ondi.ional.
SintaEe,
J: sQmbolo
+ instru=>o salta se est? do2n0 se est? not u! ou se est? eCual.
5 salto M feito se CZ est? ativado.

I8S46UHI5 J:E #J8+$
)ro!Ksito, Salto .ondi.ional.
SintaEe,
J:E sQmbolo
+ instru=>o salta se est? do2n0 se est? eCual ou se est? not u!.
5 salto M feito se CZ ou cZ est>o ativados0 ou seja0 se um deles for 1.

I8S46UHI5 JE #Jc$
)ro!Ksito, Salto .ondi.ional.
SintaEe,
JE sQmbolo
+ instru=>o salta se est? eCual ou se est? (ero.
5 salto M feito se cZ est? ativado.

I8S46UHI5 J8E #J8c$
)ro!Ksito, Salto .ondi.ional.
SintaEe,
J8E sQmbolo
+ instru=>o salta se est? not eCual ou se est? (ero.
5 salto M feito se cZ est? desativado.

I8S46UHI5 JG #J8/E$
)ro!Ksito, Salto .ondi.ional0 e o sinal M tomado.
SintaEe,
JG sQmbolo
+ instru=>o salta se est? lar"er0 se est? not lar"er ou se est? eCual.
5 salto o.orre se cZ Y P ou se 5Z Y SZ.

I8S46UHI5 JGE #J8/$
)ro!Ksito, Salto .ondi.ional0 e o sinal M tomado.
SintaEe,
JGE sQmbolo
+ instru=>o salta se est? lar"er0 se est? less than ou se est? eCual.
5 salto M feito se SZ Y 5Z.

I8S46UHI5 J/ #J8GE$
)ro!Ksito, Salto .ondi.ional0 e o sinal M tomado.
SintaEe,
J/ sQmbolo
+ instru=>o salta se est? less than0 se est? not lar"er than ou se est?
eCual.
5 salto M feito se SZ M diferente de 5Z.

I8S46UHI5 J/E #J8G$
)ro!Ksito, Salto .ondi.ional0 e o sinal M tomado.
SintaEe,
J/E sQmbolo
+ instru=>o salta se est? less than0 se est? eCual ou se est? not lar"er.
5 salto M feito se cZ Y 1 ou se SZ M diferente de 5Z.

I8S46UHI5 JC
)ro!Ksito, Salto .ondi.ional0 e os fla"s s>o tomados.
SintaEe,
JC sQmbolo
+ instru=>o salta se h? .arry.
5 salto M feito se CZ Y 1.

I8S46UHI5 J8C
)ro!Ksito, Salto .ondi.ional0 e o estado dos fla"s M tomado.
SintaEe,
J8C sQmbolo
+ instru=>o salta se n>o h? .arry.
5 salto M feito se CZ Y P.

I8S46UHI5 J85
)ro!Ksito, Salto .ondi.ional0 e o estado dos fla"s M tomado.
SintaEe,
J85 sQmbolo
+ instru=>o salta se n>o h? overflo2
5 salto M feito se 5Z Y P.

I8S46UHI5 J8) #J)5$
)ro!Ksito, Salto .ondi.ional0 e o estado dos fla"s M tomado.
SintaEe,
J8) sQmbolo
+ instru=>o salta se n>o h? !aridade ou se a !aridade M Qm!ar.
5 salto M feito se )Z Y P.

I8S46UHI5 J8S
)ro!Ksito, Salto .ondi.ional0 e o estado dos fla"s M tomado.
SintaEe,
J8) sQmbolo
+ instru=>o salta se o sinal est? desativado.
5 salto M feito se SZ Y P.

I8S46UHI5 J5
)ro!Ksito, Salto .ondi.ional0 e o estado dos fla"s M tomado.
SintaEe,
J5 sQmbolo
+ instru=>o salta se h? overflo2.
5 salto M feito se 5Z Y 1.

I8S46UHI5 J) #J)E$
)ro!Ksito, Salto .ondi.ional0 e o estado dos fla"s M tomado.
SintaEe,
J) sQmbolo
+ instru=>o salta se h? !aridade ou se a !aridade M !ar.
5 salto M feito se )Z Y 1.

I8S46UHI5 JS
)ro!Ksito, Salto .ondi.ional0 e o estado dos fla"s M tomado.
SintaEe,
JS sQmbolo
+ instru=>o salta se o sinal est? ativado.
5 salto M feito se SZ Y1.
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

A.@.2.Instru=Bes !ara la=os, /55).
Estas instru=Bes transferem a eEe.u=>o do !ro.esso0 .ondi.ional ou
in.ondi.ionalmente0 !ara um destino0 re!etindo a a=>o atM o .ontador ser
(ero.
/55)
/55)E
/55)8E

I8S46UHI5 /55)
)ro!Ksito, Gerar um la=o no !ro"rama.
SintaEe,
/55) sQmbolo
+ instru=>o /55) de.rementa C] de 1 e transfere a eEe.u=>o do !ro"rama !ara
o sQmbolo Cue M dado .omo o!erador0 .aso C] ainda n>o seja 1.

I8S46UHI5 /55)E
)ro!Ksito, Gerar um la=o no !ro"rama0 .onsiderando o estado de cZ.
SintaEe,
/55)E sQmbolo
Esta instru=>o de.rementa C] de 1. Se C] M diferente de (ero e cZ M i"ual a
10 ent>o a eEe.u=>o do !ro"rama M transferida !ara o sQmbolo indi.ado .omo
o!erador.

I8S46UHI5 /55)8E
)ro!Ksito, Gerar um la=o no !ro"rama0 .onsiderando o estado de cZ.
SintaEe,
/55)8E sQmbolo
Esta instru=>o de.rementa C] de 1 e transfere a eEe.u=>o do !ro"rama a!enas
se cZ M diferente de P.

%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%
A.@.@.Instru=Bes .ontadoras.
Estas instru=Bes s>o usadas !ara de.rementar ou in.rementar o .onte<do de
.ontadores.
7EC
I8C

7EC I8S46UC4I58
)ro!Ksito, 7e.rementar o o!erador.
SintaEe,
7EC destino
Esta instru=>o subtrai 1 do o!erador destino e arma(ena o novo valor no
mesmo o!erador.

I8S46UHI5 I8C
)ro!Ksito, In.rementar o o!erador.
SintaEe,
I8C destino
Esta instru=>o adi.iona 1 ao o!erador destino e mantMm o resultado no mesmo
o!erador.
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

A.@.A.Instru=Bes de .om!ara=>o.
Estas instru=Bes s>o usadas !ara .om!arar os o!eradores0 e elas afetam o
.onte<do dos fla"s.
C9)
C9)S #C9)S:$ #C9)SW$

I8S46UHI5 C9)
)ro!Ksito, Com!arar os o!eradores.
SintaEe,
C9) destino0fonte
Esta instru=>o subtrai o o!erador fonte do destino0 mas n>o arma(ena o
resultado da o!era=>o0 a!enas afeta o estado dos fla"s.

I8S46UHI5 C9)S #C9)S:$ #C9)SW$
)ro!Ksito, Com!arar .adeias de um byte ou uma !alavra.
SintaEe,
C9) destino0fonte
Esta instru=>o .om!ara efetuando uma subtra=>o entre o byte ou !alavra
endere=ado !or 7I0 dentro do se"mento eEtra de dados0 e o byte ou !alavra
endere=ado !or SI dentro do se"mento de dados0 afetando o re"istrador de
fla"s0 mas sem devolver o resultado da subtra=>o.
+ instru=>o automati.amente in.rementa ou de.rementa os re"istradores de
Qndi.e SI e 7I0 de!endendo do valor do fla" 7Z0 de modo a indi.ar os
!rKEimos dois elementos a serem .om!arados. 5 valor de in.remento ou
de.remento M uma de uma ou duas unidades0 de!endendo da nature(a da
o!era=>o.
7iante desta instru=>o0 !ode%se usar um !refiEo !ara re!eti=>o0 de modo a
.om!arar dois blo.os de memKria entre si0 re!etindo a instru=>o de
.om!ara=>o atM Cue ambos se tornem i"uais ou desi"uais.

%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%
A.@..Instru=Bes de fla".
Estas instru=Bes afetam diretamente o .onte<do dos fla"s.
C/C
C/7
C/I
C9C
S4C
S47
S4I

I8S46UHI5 C/C
)ro!Ksito, /im!ar o fla" de .arry.
SintaEe,
C/C
Esta instru=>o desli"a o bit .orres!ondente ao fla" de .arry. Em outras
!alavras0 ela o ajusta !ara (ero.

I8S46UHI5 C/7
)ro!Ksito, /im!ar o fla" de endere=o.
SintaEe,
C/7
Esta instru=>o desli"a o bit .orres!ondente ao fla" de endere=o.

I8S46UHI5 C/I
)ro!Ksito, /im!ar o fla" de interru!=>o.
SintaEe,
C/I
Esta instru=>o desli"a o fla" de interru!=Bes0 desabilitando0 deste modo0
interru!=Bes mas.ar?veis.
Uma interru!=>o mas.ar?vel M aCuela .ujas fun=Bes s>o desativadas Cuando
IZYP.

I8S46UHI5 C9C
)ro!Ksito, Com!lementar o fla" de .arry.
SintaEe,
C9C
Esta instru=>o .om!lementa o estado do fla" CZ. Se CZ Y P a instru=>o o
i"uala a 1. Se CZ Y 10 a instru=>o o i"uala a P.
)oderQamos di(er Cue ela a!enas inverte o valor do fla".

I8S46UHI5 S4C
)ro!Ksito, +tivar o fla" de .arry.
SintaEe,
S4C
Esta instru=>o ajusta !ara 1 o fla" CZ.

I8S46UHI5 S47
)ro!Ksito, +tivar o fla" de endere=o.
SintaEe,
S47
Esta instru=>o ajusta !ara 1 o fla" 7Z.

I8S46UHI5 S4I
)ro!Ksito, +tivar o fla" de insterru!=>o.
SintaEe,
S4I
Esta instru=>o ativa o fla" IZ0 e habilita interru!=Bes eEternas mas.ar?veis
#Cue sK fun.ionam Cuando IZ Y 1$.

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
C+)G4U/5 , I84E66U)HgES E GE6f8CI+ 7E +6VUI\5S


Conte<do,
.1.Interru!=Bes
.2.Geren.iamento de arCuivos
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

Conte<do
.1.1.Interru!=Bes de hard2are interno
.1.2.Interru!=Bes de hard2are eEterno
.1.@.Interru!=Bes de soft2are
.1.A.Interru!=Bes mais .omuns

.1.1.Interru!=Bes de hard2are interno
Interru!=Bes internas s>o "eradas !or .ertos eventos Cue o.orrem durante a
eEe.u=>o de um !ro"rama.
Este ti!o de interru!=Bes s>o "eren.iadas0 na sua totalidade0 !elo hard2are
e n>o M !ossQvel modifi.?%las.
Um eEem!lo .laro deste ti!o de interru!=Bes M a Cue atuali(a o .ontador do
.lo.O interno do .om!utador0 o hard2are .hama esta interru!=>o muitas ve(es
durante um se"undo.
8>o nos M !ermitido "eren.iar diretamente esta interru!=>o0 uma ve( Cue n>o
se !ode .ontrolar a hora atuali(ada !or soft2are. 9as !odemos usar seus
efeitos no .om!utador !ara o nosso benefQ.io0 !or eEem!lo !ara .riar um
virtual .lo.O atuali(ado .ontinuamente !elo .ontador interno de .lo.O. )ara
tanto0 !re.isamos a!enas ler o valor atual do .ontador e o transformar num
formato .om!reensQvel !elo usu?rio.
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

.1.2.Interru!=Bes de hard2are eEterno
Interru!=Bes eEternas s>o "eradas atravMs de dis!ositivos !erifMri.os0 tais
.omo te.lados0 im!ressoras0 !la.as de .omuni.a=>o0 entre outros. S>o tambMm
"eradas !or .o%!ro.essadores.
8>o M !ossQvel desativar interru!=Bes eEternas.
Estas interru!=Bes n>o s>o enviadas diretamente !ara a C)U0 mas0 de uma
forma melhor0 s>o enviadas !ara um .ir.uito inte"rado .uja fun=>o eE.lusiva
M manusear este ti!o de interru!=>o. 5 .ir.uito0 .hamado )ICF29+0 M
.ontrolado !ela C)U atravMs de uma sMrie de .omuni.a=>o .hamada !aths.
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

.1.@.Interru!=Bes de soft2are
Interru!=Bes de soft2are !odem ser ativadas diretamente !or nossos !ro"ramas
assembly0 invo.ando o n<mero da interru!=>o desejada .om a instru=>o I84.
5 uso das interru!=Bes fa.ilita muito a .ria=>o dos !ro"ramas0 torna%os
menores. +lMm disso0 M f?.il .om!reend*%las e "eram boa !erforman.e.
Este ti!o de interru!=Bes !odem ser se!aradas em duas .ate"orias,
Interru!=Bes do Sistema 5!era.ional 75S e interru!=Bes do :I5S.
+ diferen=a entre ambas M Cue as interru!=Bes do sistema o!era.ional s>o
mais f?.eis de usar0 mas tambMm s>o mais lentas0 uma ve( Cue a.essam os
servi=os do :I5S. )or outro lado0 interru!=Bes do :I5S s>o muito mais
r?!idas0 mas !ossuem a desvanta"em de serem !arte do hard2are0 o Cue
si"nifi.a serem es!e.Qfi.as N arCuitetura do .om!utador em Cuest>o.
+ es.olha sobre Cual o ti!o de interru!=>o usar ir? de!ender somente das
.ara.terQsti.as Cue vo.* deseja dar ao seu !ro"rama, velo.idade #use :I5S$0
!ortabilidade #use 75S$.
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

.1.A.Interru!=Bes mais .omuns


Conte<do
.1.A.1.Int 211 #Interru!=>o do 75S$
9<lti!las .hamadas N fun=Bes 75S.
.1.A.2.Int 1P1 #Interru!=>o do :I5S$
Entrada e SaQda de \Qdeo.
.1.A.@.Int 1&1 #Interru!=>o do :I5S$
Entrada e SaQda do 4e.lado.
.1.A.A.Int 1D1 #Interru!=>o do :I5S$
Entrada e SaQda da Im!ressora.

%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%
.1.A.1.Interru!=>o 211
)ro!Ksito, Chamar uma diversidade de fun=Bes 75S.
SintaEe,
Int 211
8ota, Vuando trabalhamos .om o !ro"rama 4+S9 M ne.ess?rio es!e.ifi.ar Cue o
valor Cue estamos usando est? em heEade.imal.
Esta interru!=>o tem muitas fun=Bes0 !ara a.essar .ada uma delas M
ne.ess?rio Cue o n<mero .orres!ondente da fun=>o esteja no re"istrador +1 no
momento da .hamada da interru!=>o.
Zun=Bes !ara mostrar informa=Bes no vQdeo.
P21 EEibe um .ara.ter
P91 EEibe uma .adeia de .ara.teres
AP1 Es.reve num dis!ositivoLarCuivo
Zun=Bes !ara ler informa=Bes do te.lado.
P11 Entrada do te.lado
P+1 Entrada do te.lado usando buffer
@Z1 /eitura de um dis!ositivoLarCuivo
Zun=Bes !ara trabalhar .om arCuivos.
8esta se=>o s>o a!enas es!e.ifi.adas as tarefas de .ada fun=>o0 !ara uma
refer*n.ia a.er.a dos .on.eitos usados0 veja Introdu=>o ao "eren.iamento de
arCuivos.
9Mtodo ZC:
PZ1 +bertura de arCuivo
1A1 /eitura seCTen.ial
11 Es.rita seCTen.ial
1&1 Cria=>o de arCuivo
211 /eitura randUmi.a
221 Es.rita randUmi.a
1andles
@C1 Cria=>o de arCuivo
@71 +bertura de arCuivo
@E1 Ze.hamento de arCuivo
@Z1 /eitura de arCuivoLdis!ositivo
AP1 Es.rita de arCuivoLdis!ositivo
A21 9ove !onteiro de leituraLes.rita num arCuivo

ZU8HI5 P21
Uso,
9ostra um .ara.ter na tela.
6e"istradores de .hamada,
+1 Y P21
7/ Y \alor de .ara.ter a ser mostrado.
6e"istradores de retorno,
8enhum.
Esta fun=>o mostra o .ara.ter .ujo .Kdi"o heEade.imal .orres!onde ao valor
arma(enado no re"istrador 7/0 e n>o modifi.a nenhum re"istrador.
5 uso da fun=>o AP1 M re.omendado ao invMs desta fun=>o.

ZU8HI5 P91
Uso,
9ostra uma .adeia de .ara.teres na tela.
6e"istradores de .hamada,
+1 Y P91
7S,7] Y Endere=o de inQ.io da .adeia de .ara.teres.
6e"istradores de retorno,
8enhum.
Esta fun=>o mostra os .ara.teres0 um !or um0 a !artir do endere=o indi.ado
nos re"istradores 7S,7] atM en.ontrar um .ara.ter j0 Cue M inter!retado .omo
fim da .adeia.
S re.omendado usar a fun=>o AP1 ao invMs desta.

ZU8HI5 AP1
Uso,
Es.rever num dis!ositivo ou num arCuivo.
6e"istradores de .hamada,
+1 Y AP1
:] Y 8<mero do handle
C] Y Vuantidade de bytes a "ravar
7S,7] Y Rrea onde est? o dado
6e"istradores de retorno,
CZ Y P se n>o houve erro
+] Y 8<mero de bytes es.rito
CZ Y 1 se houve erro
+] Y CKdi"o de erro
)ara usar esta fun=>o !ara mostrar a informa=>o na tela0 fa=a o re"istrador
:] ser i"ual a 10 Cue M o valor default !ara o vQdeo no 75S.

ZU8HI5 P11
Uso,
/er um .ara.ter do te.lado e mostr?%lo.
6e"istradores de .hamada
+1 Y P11
6e"istradores de retorno,
+/ Y Cara.ter lido
S muito f?.il ler um .ara.ter do te.lado .om esta fun=>o0 o .Kdi"o
heEade.imal do .ara.ter lido M arma(enado no re"istrador +/. 8os .aso de
te.las es!e.iais0 .omo as de fun=>o Z10 Z20 alMm de outras0 o re"istrador +/
.onter? o valor 10 sendo ne.ess?rio .hamar a fun=>o novamente !ara obter o
.Kdi"o daCuele .ara.ter.

ZU8HI5 P+1
Uso,
/er .ara.teres do te.lado e arma(en?%los num buffer.
6e"istradores de .hamada,
+1 Y P+1
7S,7] Y Endere=o ini.ial da ?rea de arma(enamento
:;4E P Y Vuantidade de bytes na ?rea
:;4E 1 Y Vuantidade de bytes lidos
do :;4E 2 atM :;4E P X 2 Y .ara.teres lidos
6e"istradores de retorno,
8enhum.
5s .ara.teres s>o lidos e arma(enados num es!a=o de memKria Cue foi
definido. + estrutura deste es!a=o indi.a Cue o !rimeiro byte re!resentar? a
Cuantidade m?Eima de .ara.teres Cue !ode ser lida. 5 se"undo0 a Cuantidade
de .ara.teres lidos e0 no ter.eiro byte0 o ini.io onde eles s>o arma(enados.
Vuando se atin"e a Cuantidade m?Eima !ermitida0 ouve%se o som do s!eaOer e
CualCuer .ara.ter adi.ional M i"norado. )ara finali(ar a entrada0 basta
di"itar aE84E6b.

ZU8HI5 @Z1
Uso,
/er informa=>o de um dis!ositivo ou de um arCuivo.
6e"istradores de .hamada,
+1 Y @Z1
:] Y 8<mero do handle
C] Y 8<mero de bytes a ler
7S,7] Y Rrea !ara re.eber o dado
6e"istradores de retorno,
CZ Y P se n>o h? erro e +] Y n<mero de bytes lidos.
CZ Y 1 se h? erro e +] .onter? o .Kdi"o de erro.

ZU8HI5 PZ1
Uso,
+brir um arCuivo ZC:.
6e"istradores de .hamada,
+1 Y PZ1
7S,7] Y )onteiro !ara um ZC:
6e"istradores de retorno,
+/ Y PP1 se n>o h? !roblemas0 de outra forma retorna PZZ1

ZU8HI5 1A1
Uso,
/eitura seCuen.ial num arCuivo ZC:.
6e"istradores de .hamada,
+1 Y 1A1
7S,7] Y )onteiro !ara um ZC: j? aberto.
6e"istradores de retorno,
+/ Y P se n>o h? erros0 de outra forma o .Kdi"o .orres!ondente de erro retornar?,
1 erro no fim do arCuivo0 2 erro na estrutura ZC: e @ erro de leitura !ar.ial.
5 Cue esta fun=>o fa( M ler o !rKEimo blo.o de informa=Bes do endere=o dado
!or 7S,7]0 e atuali(ar este re"istro.

ZU8HI5 11
Uso,
Es.rita seCuen.ial e arCuivo ZC:.
6e"istradores de .hamada,
+1 Y 11
7S,7] Y )onteiro !ara um ZC: ja aberto.
6e"istradores de retorno,
+/ Y PP1 se n>o h? erros0 de outra forma .onter? o .Kdi"o de erro, 1 dis.o .heio ou
arCuivo somente de leitura0 2 erro na forma=>o ou na es!e.ifi.a=>o do ZC:.
+ fun=>o 11 atuali(a o ZC: a!Ks a es.rita do re"istro !ara o !resente
blo.o.

ZU8HI5 1&1
Uso,
Criar um arCuivo ZC:. 6e"istradores de .hamada,
+1 Y 1&1
7S,7] Y )onteiro !ara um ZC: j? aberto.
6e"istradores de retorno,
+/ Y PP1 se n>o h? erros0 de outra forma .onter? o valor PZZ1.
S baseada na informa=>o advinda de um ZC: !ara .riar um arCuivo num dis.o.

ZU8HI5 211
Uso,
/er de modo randUmi.o um arCuivo ZC:.
6e"istradores de .hamada,
+1 Y 211
7S,7] Y )onteiro !ara ZC: aberto.
6e"istradores de retorno,
+ Y PP1 se n>o h? erro0 de outra forma +1 .onter? o .Kdi"o de erro,
1 se M o fim do arCuivo0 2 se h? um erro de es!e.ifi.a=>o no ZC: e @ se um re"istro
foi
lido !ar.ialmente ou o !onteiro de arCuivo est? no fim do mesmo.
Esta fun=>o l* o re"istro es!e.ifi.ado !elos .am!os do blo.o atual e
re"istro de um ZC: aberto e .olo.a a informa=>o na 74+0 Rrea de
4ransfer*n.ia do 7is.o.

ZU8HI5 221
Uso,
Es.rita randUmi.a num arCuivo ZC:.
6e"istradores de .hamada,
+1 Y 221
7S,7] Y )onteiro !ara um ZC: aberto.
6e"istradores de retorno,
+/ Y PP1 se n>o h? erro0 de outra forma .onter? o .Kdi"o de erro,
1 se o dis.o est? .heio ou o arCuivo M a!enas de leitura e 2 se h? um erro na
es!e.ifi.a=>o ZC:.
Es.reve o re"istro es!e.ifi.ado !elos .am!os do blo.o atual e re"istro de um
ZC: aberto. Esta informa=>o M do .onte<do da 74+.

ZU8HI5 @C1
Uso,
Criar um arCuivo se n>o eEiste ou deiE?%lo .om .om!irmento P se eEiste.
6e"istradores de .hamada,
+1 Y @C1
C1 Y +tributo do arCuivo
7S,7] Y 8ome do arCuivo0 no formato +SCII.
6e"istradores de retorno,
CZ Y P e +] informa o n<mero do handle se n>o h? erro. Se .aso houver erro0
CZ ser? 1 e +] .onter? o .Kdi"o de erro, @ .aminho n>o en.ontrado0 A n>o h? handles
dis!onQveis
e a.esso ne"ado.
Esta fun=>o substitui a fun=>o 1&1. 5 nome do arCuivo M es!e.ifi.ado numa
.adeia +SCII de bytes terminados !elo .ara.ter P.
5 arCuivo .riado .onter? os atributos definidos no re"istrador C]0 do
se"uinte modo,
\alor +tributos
PP1 8ormal
P21 1idden
PA1 System
P&1 1idden e System
5 arCuivo M .riado .om !ermiss>o de leitura e es.rita. 8>o M !ossQvel a
.ria=>o de diretKrios atravMs desta fun=>o.

ZU8HI5 @71
Uso,
+bre um arCuivo e retorna um handle.
6e"istradores de .hamada,
+1 Y @71
+/ Y modo de a.esso
7S,7] Y 8ome do arCuivo0 no formato +SCII.
6e"istradores de retorno,
CZ Y P e +] Y n<mero do handle se n>o h? erros0 de outra forma CZ Y 1 e +] Y
.Kdi"o de erro,
P11 se a fun=>o n>o M v?lida0 P21 se o arCuivo n>o foi en.ontrado0 P@1 se o .aminho
n>o foi
en.ontrado0 PA1 se n>o h? handles dis!onQveis0 P1 a.esso ne"ado0 e PC1 se o
.Kdi"o de
a.esso n>o M v?lido.
5 handle retornado M de 1& bits.
5 .Kdi"o de a.esso M es!e.ifi.ado da se"uinte maneira,
:I4S
D & A @ 2 1
. . . . P P P +!enas leitura
. . . . P P 1 +!enas es.rita
. . . . P 1 P /eituraLEs.rita
. . . E . . . 6ESE6\+75

ZU8HI5 @E1
Uso,
Ze.ha um arCuivo #handle$.
6e"istradores de .hamada,
+1 Y @E1
:] Y 8<mero do handle asso.iado
6e"istradores de retorno,
CZ Y P se n>o h? erros0 ou CZ ser? 1 e +] .onter? o .Kdi"o de erro, P&1 se o handle
M inv?lido.
Esta fun=>o atuali(a o arCuivo e libera o handle Cue estava usando.
ZU8HI5 @Z1
Uso,
/er uma Cuantidade es!e.Qfi.a de bytes de um arCuivo aberto e arma(en?%los
num buffer es!e.Qfi.o.
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

.1.A.2.Interru!=>o 1Ph
)ro!Ksito, Chamar uma diversidade de fun=Bes do :I5S
SintaEe,
Int 1P1
Esta interru!=>o tem v?rias fun=Bes0 todas !ara entrada e saQda de vQdeo.
)ara a.essar .ada uma delas M ne.ess?rio .olo.ar o n<mero da fun=>o
.orres!ondente no re"istrador +1.
\eremos a!enas as fun=Bes mais .omuns da interru!=>o 1P1.
Zun=>o P210 sele.iona a !osi=>o do .ursor
Zun=>o P910 eEibe um .ara.ter e o atributo na !osi=>o do .ursor
Zun=>o P+10 eEibe um .ara.ter na !osi=>o do .ursor
Zun=>o PE10 modo alfanumMri.o de eEibi=>o de .ara.teres

Zun=>o P2h
Uso,
9ove o .ursor na tela do .om!utador usando o modo teEto.
6e"istradores de .hamada,
+1 Y P21
:1 Y )?"ina de vQdeo onde o .ursor est? !osi.ionado.
71 Y linha
7/ Y .oluna
6e"istradores de retorno,
8enhum.
+ !osi=>o do .ursor M definida !elas suas .oordenadas0 ini.iando%se na
!osi=>o P0P atM a !osi=>o D902A. /o"o os valores !ossQveis !ara os
re"istradores 71 e 7/ s>o, de P a 2A !ara linhas e de P a D9 !ara .olunas.

Zun=>o P9h
Uso,
9ostra um determinado .ara.ter v?rias ve(es na tela do .om!utador .om um
atributo definido0 ini.iando !ela !osi=>o atual do .ursor.
6e"istradores de .hamada,
+1 Y P91
+/ Y Cara.ter a eEibir
:1 Y )?"ina de vQdeo0 onde o .ara.ter ser? mostrado
:/ Y +tributo do .ara.ter
C] Y 8<mero de re!eti=Bes.
6e"istradores de retorno,
8enhum
Esta fun=>o mostra um .ara.ter na tela v?rias ve(es0 de a.ordo .om o n<mero
es!e.ifi.ado no re"istrador C]0 mas sem mudar a !osi=>o do .ursor na tela.

Zun=>o P+h
Uso,
EEibe um .ara.ter na !osi=>o atual do .ursor.
6e"istradores de .hamada,
+1 Y P+1
+/ Y Cara.ter a eEibir
:1 Y )?"ina de vQdeo onde o .ara.ter ser? eEibido
:/ Y Cor do .ara.ter #a!enas em modo "r?fi.o$
C] Y 8<mero de re!eti=Bes
6e"istradores de retorno,
8enhum.
+ !rin.i!al diferen=a entre esta fun=>o e a anterior M !ermitir mudan=a nos
atributos0 bem .omo mudar a !osi=>o do .ursor.

Zun=>o PE1
Uso,
EEibir um .ara.ter na tela do .om!utador atuali(ando a !osi=>o do .ursor.
6e"istradores de .hamada,
+1 Y PE1
+/ Y Cara.ter a eEibir
:1 Y )?"ina de vQdeo onde o .ara.ter ser? eEibido
:/ Y Cor a usar #a!enas em modo "r?fi.o$
6e"istradores de retorno,
8enhum
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

.1.A.@.Interru!=>o 1&1
\eremos duas fun=Bes da interru!=>o 1&1. + eEem!lo das demais interru!=Bes0
usa%se o re"istrador +1 !ara .ham?%las.

Zun=Bes da interru!=>o 1&h
Zun=>o PP10 l* um .ara.ter do te.lado.
Zun=>o P110 l* o estado atual do te.lado.
Zun=>o PP1 Uso,
/er um .ara.ter do te.lado.
6e"istradores de .hamada,
+1 Y PP1
6e"istradores de retorno,
+1 Y CKdi"o da te.la !ressionada
+/ Y \alor +SCII do .ara.ter
Vuando se usa esta interru!=>o0 os !ro"ramas eEe.utam atM Cue uma te.la seja
!ressionada. Se M um valor +SCII0 M arma(enado no re"istrador +1. Caso
.ontr?rio0 o .Kdi"o M arma(enado no re"istrador +/ e +1YP.
Este valor de +/ !ode ser utili(ado Cuando Cueremos dete.tar te.las Cue n>o
est>o diretamente re!resentadas !elo seu valor +SCII0 tais .omo
a+/4baC58465/b.

Zun=>o P1h
Uso,
/er o estado do te.lado
6e"istradores de .hamada,
+1 Y P11
6e"istradores de retorno,
Se o re"istrador de fla" M (ero0 si"nifi.a Cue h? informa=>o no buffer de
te.lado na memKria. Caso .ontr?rio0 o buffer est? va(io. )ortanto o valor do
re"istrador +1 ser? o valor da te.la arma(enada no buffer.
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

.1.A.A.Interru!=>o 1D1
)ro!Ksito, 9anusear a entrada e saQda da im!ressora.
SintaEe,
Int 1D1
Esta interru!=>o M usada !ara enviar .ara.teres0 setar ou ler o estado de
uma im!ressora.
Zun=Bes da interru!=>o 1Dh
Zun=>o PP10 im!rime um valor +SCII
Zun=>o P110 seta a im!ressora
Zun=>o P210 l* estado da im!ressora
Zun=>o PP1
Uso,
Im!rimir um .ara.ter numa im!ressora.
6e"istradores de .hamada,
+1 Y PP1
+/ Y Cara.ter a im!rimir
7] Y )orta de .oneE>o
6e"istradores de retorno,
+1 Y Estado da im!ressora
5s valores da !orta a .olo.ar no re"istrador 7] s>o,
/)41 Y P0 /)42 Y 10 /)4@ Y 2 ...
5 estado da im!ressora M .odifi.ado bit a bit .omo se"ue,
:I4 1LP SIG8IZIC+75
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
P 1 Estado de time%out
1 %
2 %
@ 1 Erro de entrada e saQda
A 1 Im!ressora sele.ionada
1 Zim de !a!el
& 1 6e.onhe.imento de .omuni.a=>o
D 1 + im!ressora est? !ronta !ara o uso
5s bits 1 e 2 bits n>o s>o relevantes
+ maioria dos :I5S su!ortam @ !ortas !aralelas0 havendo al"uns Cue su!ortam
A.
Zun=>o P1h
Uso,
Setar uma !orta !aralela.
6e"istradores de .hamada,
+1 Y P11
7] Y )orta
6e"istradores de retorno,
+1 Y Status da im!ressora
+ !orta definida no re"istrador 7] !ode ser, /)41YP0 /)42Y10 assim !or
diante.
5 estado da im!ressora M .odifi.ado bit a bit .omo se"ue,
:I4 1LP SIG8IZIC+75
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
P 1 Estado de time%out
1 %
2 %
@ 1 Erro de entrada e saQda
A 1 Im!ressora sele.ionada
1 Zim de !a!el
& 1 6e.onhe.imento de .omuni.a=>o
D 1 + im!ressora est? !ronta !ara o uso
5s bits 1 e 2 bits n>o s>o relevantes
Zun=>o P2h
Uso,
5bter o status da im!ressora.
6e"istradores de .hamada,
+1 Y P11
7] Y )orta
6e"istradores de retorno
+1 Y Status da im!ressora
+ !orta definida no re"istrador 7] !ode ser, /)41YP0 /)42Y10 assim !or
diante.
5 estado da im!ressora M .odifi.ado bit a bit .omo se"ue,
:I4 1LP SIG8IZIC+75
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
P 1 Estado de time%out
1 %
2 %
@ 1 Erro de entrada e saQda
A 1 Im!ressora sele.ionada
1 Zim de !a!el
& 1 6e.onhe.imento de .omuni.a=>o
D 1 + im!ressora est? !ronta !ara o uso
5s bits 1 e 2 bits n>o s>o relevantes
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

.2. Geren.iamento de +rCuivos

Conte<do,
.2.1.9odos de trabalhar .om arCuivos
.2.2.9Mtodo ZC:
.2.@.9Mtodos de .anais de .omuni.a=>o

.2.1.9odos de trabalhar .om arCuivos.
1? dois modos de trabalhar .om arCuivos. 5 !rimeiro M atravMs de ZC: #
blo.os de .ontrole de arCuivo$0 o se"undo M atravMs de .anais de
.omuni.a=>o0 tambMm .onhe.idos .omo handles.
5 !rimeiro modo de manusear arCuivos tem sido usado desde o sistema
o!era.ional C)90 !rede.essor do 75S0 lo"o !ermite .ertas .om!atibilidades
.om muitos arCuivos velhos do C)9 bem .omo .om a vers>o 1.P do 75S0 alMm
deste mMtodo !ermitir%nos ter um n<mero ilimitado de arCuivos abertos ao
mesmo tem!o. Se vo.* Cuiser .riar um volume !ara o dis.o0 a <ni.a forma M
atravMs deste mMtodo.
7e!ois de .onsiderarmos as vanta"ens de ZC:0 o uso do mMtodo de Canais de
Comuni.a=>o M muito sim!les e !ermite%nos um melhor manuseio de erros.
)ara uma melhor fa.ilidade0 daCui !or diante nos referiremos aos :lo.os de
Controle de +rCuivo .omo ZC:s e aos Canais de Comuni.a=>o .omo handles.
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

.2.2.9Mtodo ZC:.
.2.2.1.Introdu=>o
.2.2.2.+bertura de arCuivo
.2.2.@.Criar um novo arCuivo
.2.2.A.Es.rita seCTen.ial
.2.2../eitura seCTen.ial
.2.2.&./eitura e es.rita randUmi.a
.2.2.D.Ze.har um arCuivo
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%
.2.2.1.I84657UHI5
1? dois ti!os de ZC:0 o normal0 .ujo .om!rimento M @D bytes0 e o eEtendido0
.om AA bytes. 8este tutorial iremos assumir o !rimeiro0 ou seja0 Cuando
falarmos em ZC:0 estaremos fa(endo refer*n.ia ao ti!o normal #@D bytes$.
5 ZC: M .om!osto de informa=Bes dadas !elo !ro"ramador e !or informa=Bes Cue
ele toma diretamente do sistema o!era.ional. Vuando estes ti!os de arCuivos
s>o usados0 sK M !ossQvel se trabalhar no diretKrio .orrente0 !ois ZC:s n>o
forne.em su!orte ao sistema de or"ani(a=>o de arCuivos atravMs de diretKrios
do 75S.
ZC: M .om!osto !elos se"uintes .am!os,
)5SIHI5 C59)6I9E845 SIG8IZIC+75
PP1 1 :yte 7rive
P11 F :ytes 8ome do arCuivo
P91 @ :ytes EEtens>o
PC1 2 :ytes 8<mero do blo.o
PE1 2 :ytes 4amanho do re"istro
1P1 A :ytes 4amanho do arCuivo
1A1 2 :ytes 7ata de .ria=>o
1&1 2 :ytes 1ora de .ria=>o
1F1 F :ytes 6eservado
2P1 1 :ytes 6e"istro .orrente
211 A :ytes 6e"istro randUmi.o
)ara sele.ionar o drive de trabalho0 assuma, drive + Y 13 drive : Y 23 et..
Se for usado P0 o drive Cue est? sendo usado no momento ser? tomado .omo
o!=>o.
5 nome do arCuivo deve ser justifi.ado N esCuerda e M ne.ess?rio !reen.her
.om es!a=os os bytes remanes.entes0 a eEtens>o M .olo.ada do mesmo modo.
5 blo.o .orrente e o re"istro .orrente di(em ao .om!utador Cue re"istro ser?
a.essado nas o!era=Bes de leitura e es.rita. Um blo.o M um "ru!o de 12F
re"istros. 5 !rimeiro blo.o de arCuivo M o blo.o P. 5 !rimeiro re"istro M o
re"istro P0 lo"o o <ltimo re"istro do !rimeiro blo.o deve ser o 12D0 uma ve(
Cue a numera=>o M ini.iada .om P e o blo.o !ode .onter 12F re"istradores no
total.
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

.2.2.2.+:E64U6+ 7E +6VUI\5
)ara abrir um arCuivo ZC: M usada a fun=>o PZ1 da interru!=>o 21h.
+ unidade0 o nome e a eEtens>o do arCuivo devem ser ini.iali(adas antes da
abertura.
5 re"istrador 7] deve a!ontar !ara o blo.o. Se o valor ZZ1 M retornado no
re"istrador +1 Cuando da .hamada da interru!=>o0 ent>o o arCuivo n>o foi
en.ontrado. Se tudo der .erto0 o valor P M retornado.
Se o arCuivo M aberto0 ent>o o 75S ini.iali(a o blo.o .orrente em P0 o
tamanho do re"istro !ara 12F bytes. 5 tamanho do arCuivo e a sua data s>o
!reen.hidos .om as informa=Bes en.ontradas no diretKrio.
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

.2.2.@.C6I+6 U9 85\5 +6VUI\5
)ara a .ria=>o de arCuivos M usada a fun=>o 1&1 da interru!=>o 21h.
5 re"istrador 7] deve a!ontar !ara uma estrutura de .ontrole .ujo os
reCuisitos s>o de Cue !elo menos a unidade lK"i.a0 o nome e a eEtens>o do
arCuivo sejam definidas.
Caso o.orra !roblema0 o valor ZZ1 deve retornar em +/0 de outra forma este
re"istrador .onter? o valor P.
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

.2.2.A.ESC6I4+ SEVkE8CI+/
+ntes de .onse"uirmos reali(ar es.rita !ara o dis.o0 M ne.ess?rio definir a
?rea de transfer*n.ia de dados usando0 !ara tanto0 a fun=>o 1+1 da
interru!=>o 21h.
+ fun=>o 1+1 n>o retorna CualCuer estado do dis.o nem da o!era=>o. 9as a
fun=>o 110 Cue usaremos !ara es.rever !ara o dis.o0 fa( isso no re"istrador
+/. Se este for i"ual a (ero0 ent>o n>o h? erro e os .am!os de re"istro
.orrente e de blo.o s>o atuali(ados.

%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%
.2.2../EI4U6+ SEVkE8CI+/
+ntes de tudo0 devemos definir a ?rea de transfer*n.ia de arCuivo ou 74+.
)ara a leitura seCTen.ial usaremos a fun=>o 1A1 da interru!=>o 21h.
5 re"istro a ser lido M definido !elos .am!os re"istro e blo.o .orrente. 5
re"istrador +/ retorna o estado da o!era=>o. Se +/ .ontMm o valor 1 ou @0
si"nifi.a Cue foi atin"ido o fim do arCuivo. Um valor 20 !or sua ve(0
si"nifi.a Cue o ZC: est? estruturado erroneamente.
Caso n>o o.orra erro0 +/ .onter? o valor P e os .am!os de re"istro e blo.o
.orrente s>o atuali(ados.
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

.2.2.&./EI4U6+ E ESC6I4+ 6+87l9IC+
+ fun=>o 211 e a fun=>o 221 da insterru!=>o 21h s>o usadas N reali(a=>o0
res!e.tivamente0 da es.rita e leitura randUmi.a.
5 n<mero de re"istro randUmi.o e o blo.o .orrente s>o usados !ara .al.ular a
!osi=>o relativa do re"istro a ser lido ou es.rito.
5 re"istrador +/ retorna a mesma informa=>o do Cue !ar a es.rita e leitura
seCTen.ial. + informa=>o a ser lida ser? retornada na ?rea de transfer*n.ia
do dis.o0 bem .omo a informa=>o a ser es.rita retorna na 74+.
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

.2.2.D.ZEC1+6 U9 +6VUI\5
)ara fe.har um arCuivo usamos a fun=>o 1P1 da interru!=>o 21h.
Se a!Ks invo.ar esta fun=>o0 o re"isatrador +/ .onter o valor ZZ10 si"nifi.a
Cue o arCuivo foi mudado de !osi=>o0 o dis.o foi mudado ou h? erro de a.esso
a dis.o.
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

.2.@.Canais de .omuni.a=>o.
.2.@.1.4rabalhando .om handles
.2.@.2.Zun=Bes !ara usar handles

.2.@.1.46+:+/1+875 C59 1+87/ES
5 uso de handles !ara "eren.iar arCuivos tra( "randes fa.ilidades na .ria=>o
de arCuivos e o !ro"ramador !ode .on.entrar%se em outros as!e.tos da
!ro"rama=>o sem !reo.u!ar%se .om detalhes Cue !odem ser manuseados !elo
sistema o!era.ional.
+ fa.ilidade dos handles .onsiste em Cue !ara o!erarmos sobre um arCuivo M
a!enas ne.ess?rio definirmos o nome do mesmo e o n<mero de handle a usar0
todo o resto da informa=>o M manuseada internamente !elo 75S.
Vuando usamos este mMtodo !ara trabalhar .om arCuivos0 n>o h? distin=>o
entre a.esso seCTen.ial ou randUmi.o0 o arCuivo M sim!lesmente tomado .omo
uma rede de bytes.
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

.2.@.2.ZU8HgES )+6+ US+6 1+87/ES
+s fun=Bes usadas !ara o manuseio de arCuivos atravMs de handles s>o
des.ritas na !?"ina sobre, Interru!=Bes0 na se=>o dedi.ada N interru!=>o 21h.

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
C+)G4U/5 &, 9+C65S E )65CE7I9E845S
Conte<do
&.1.)ro.edimentos
&.2.9a.ros

&.1.)ro.edimentos
&.1.1.7efini=>o de !ro.edimento
&.1.2.SintaEe de um !ro.edimento
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

&.1.1.7efini=>o de um !ro.edimento
Um !ro.edimento M uma .ole=>o de instru=Bes !ara as Cuais M !ossQvel
dire.ionar o .urso de nosso !ro"rama0 e uma ve( Cue a eEe.u=>o destas
instru=Bes do !ro.edimento tenha a.abado0 o .ontrole retorna !ara linha Cue
se"ue N Cue .hamou o !ro.edimento.
)ro.edimentos nos ajudam a .riar !ro"ramas le"Qveis e f?.eis de modifi.ar.
Vuando se invo.a um !ro.edimento0 o endere=o da !rKEima instru=>o do
!ro"rama M mantido na !ilha0 de onde M re.u!erado Cuando do retorno do
!ro.edimento.
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

&.1.2.SintaEe de um !ro.edimento
1? dois ti!os de !ro.edimentos0 os intrase"ments0 Cue se lo.ali(am no mesmo
se"mento da instru=>o Cue o .hama0 e os inter se"ments0 Cue !odem se
lo.ali(ar em diferentes se"mentos de memKria.
Vuando os !ro.edimentos intrase"ments s>o usados0 o valor de I) M arma(enado
na !ilha e Cuando os !ro.edimentos inter se"ments s>o usados o valor de
CS,I) M arma(enado. /embre%se Cue o re"istrador CS indi.a Cual o se"mento de
.Kdi"o.
+ diretiva Cue .hama um !ro.edimento M .omo se"ue,
C+// 8omedo)ro.edimento
+s !artes Cue .om!Bem um !ro.edimento s>o as se"uintes,
7e.lara=>o do !ro.edimento
CKdi"o do !ro.edimento
7iretiva de retorno
4Mrmino do !ro.edimento
)or eEem!lo0 se Cuisermos uma rotina Cue soma dois bytes arma(enados em +1 e
+/0 e o resultado da soma em :],
Soma )ro. 8ear 3 7e.lara=>o do )ro.edimento
9ov :]0 P 3 Conte<do do )ro.edimento...
9ov :/0 +1
9ov +10 PP
+dd :]0 +]
6et 3 7iretiva de retorno
Soma End) 3 Zim do )ro.edimento
8a de.lara=>o0 a !rimeira !alavra0 Soma0 .orres!onde ao nome do
!ro.edimento. )ro. de.lara%o e a !alavra 8ear indi.a Cue o !ro.edimento M do
ti!o intrase"ment0 ou seja0 no mesmo se"mento. + diretiva 6et .arre"a I) .om
o endere=o arma(enado na !ilha !ara retornar ao !ro"rama Cue .hamou.
Zinalmente0 Soma End) indi.a o fim do !ro.edimento.
)ara de.larar um !ro.edimento inter se"ment0 basta substituir a !alavra 8ear
!ara Z+6.
+ .hamada deste !ro.edimento M feito de modo id*nti.o,
Call Soma
9a.ros ofere.em uma "rande fleEibilidade na !ro"rama=>o0 .om!aradas aos
!ro.edimentos.
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

&.2.9a.ros
&.2.1.7efini=>o de uma 9a.ro
&.2.2.SintaEe de uma 9a.ro
&.2.@.:ibliote.as de 9a.ros
&.2.1.7efini=>o de uma 9a.ro
Uma ma.ro M um "ru!o de instru=Bes re!etitivas em um !ro"rama Cue s>o
.odifi.adas a!enas uma ve( e0 assim0 !ou!am es!a=o0 !odendo ser utili(adas
tantas ve(es Cuantas forem ne.ess?rio.
+ !rin.i!al diferen=a entre uma ma.ro e um !ro.edimento M Cue numa ma.ro M
!ossQvel a !assa"em de !ardmetros e num !ro.edimento n>o. 8o momento em Cue
a ma.ro M eEe.utada0 .ada !ardmetro M substituQdo !elo nome ou valor
es!e.ifi.ado na hora da .hamada.
)odemos di(er0 desta forma0 Cue um !ro.edimento M uma eEtens>o de um
determinado !ro"rama0 enCuanto Cue uma ma.ro M um mKdulo Cue es!e.ifi.a
fun=Bes Cue !odem ser utili(adas !or diferentes !ro"ramas.
Uma outra diferen=a entre uma ma.ro e um !ro.edimento M o modo de .hamada de
.ada um. )ara .hamar um !ro.edimento0 se fa( ne.ess?rio a diretiva C+//0 !or
outro lado0 !ara .hamada de ma.ros M feita .om se fosse uma instru=>o normal
da lin"ua"em assembly.
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%
&.2.2.SintaEe de uma 9a.ro
+s !artes Cue .om!Bem uma ma.ro s>o as se"uintes,
7e.lara=>o da ma.ro
CKdi"o da ma.ro
7iretiva de tMrmino da ma.ro
+ de.lara=>o da ma.ro M feita .omo se se"ue,
8ome9a.ro 9+C65 a!ardmetro10 !ardmetro2...b
7o mesmo modo Cue temos a fun.ionalidade dos !ardmetros0 M !ossQvel tambMm a
.ria=>o de uma ma.ro Cue n>o os !ossua.
+ diretiva de tMrmino da ma.ro M, E879
Um eEem!lo de uma ma.ro !ara .olo.ar o .ursor numa determinada !osi=>o da
tela,
)os 9+C65 /inha0 Coluna
)US1 +]
)US1 :]
)US1 7]
95\ +10 P21
95\ 710 /inha
95\ 7/0 Coluna
95\ :10 P
I84 1P1
)5) 7]
)5) :]
)5) +]
E879
)ara usar uma ma.ro basta .ham?%la !elo seu nome0 tal .omo se fosse CualCuer
instru=>o na lin"ua"em assembly,
)os F0 &
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%

&.2.@.:ibliote.a de 9a.ros
Uma das fa.ilidades ofere.idas !elo uso de ma.ros M a .ria=>o de
bibliote.as0 Cue s>o "ru!o de ma.ros0 !odendo ser in.luQdas num !ro"rama
ori"in?rias de arCuivos diferentes.
+ .ria=>o destas bibliote.as M muito sim!les. Criamos um arCuivo .om todas
as ma.ros Cue ser>o ne.ess?rias e o salvamos .omo um arCuivo teEto.
)ara in.luir uma bibliote.a num !ro"rama0 basta .olo.ar a se"uinte instru=>o
In.lude 8omedo+rCuivo na !arte ini.ial do !ro"rama0 antes da de.lara=>o do
modelo de memKria.
Su!ondo Cue o arCuivo de ma.ros tenha sido salvo .om o nome de 9+C65S.4]40 a
instru=>o In.lude seria utili(ada do se"uinte modo,
3InQ.io do !ro"rama
In.lude 9+C65S.4]4
.957E/ S9+//
.7+4+
35s dados v>o aCui
.C57E
Ini.io,
35 .Kdi"o do !ro"rama .ome=a aCui
.S4+C^
3+ !ilha M de.larada
End Ini.io
3Zim do !ro"rama
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
C+)G4U/5 D, E]E9)/5S 7E )65G6+9+S


Conte<do,
D.1.EEem!los de )ro"ramas .om 7ebu"
D.2.EEem!los de )ro"ramas .om 4+S9
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%
D.1.EEem!los de )ro"ramas .om 7ebu"
8esta se=>o forne.eremos al"uns !ro"ramas feitos no debu" do 75S.
\o.* !ode eEe.utar .ada !ro"rama assembly usando o .omando ["[ #"o$0 !ara
ver o Cue .ada !ro"rama fa(.
)ro.edimento
)rimeiro !asso
Carre"ar o !ro"rama eEem!lo
)or eEem!lo,
C,_`debu"
%n one..om
%l
%u 1PP 1P9
P7FP,P1PP :FP&PP 95\ +]0PPP&
P7FP,P1P@ ::PAPP 95\ :]0PPPA
P7FP,P1P& P17F +77 +]0:]
P7FP,P1PF C72P I84 2P
%
8ota,
%n one..om
7ar nome ao !ro"rama a ser .arre"ado
%l
Carre"?%lo
%u 1PP 1P9
7esmontar o .Kdi"o do endere=o ini.ial ao final es!e.ifi.ado
Se"undo !asso
7i"ite o .omando "
)or eEem!lo,
%"
)ro"ram terminated normally
%

EEem!los de !ro"ramas no 7ebu"
)rimeiro eEem!lo
%aP1PP
29D7,P1PP 95\ +]0PPP& 3)Be o valor PPP& no re"istrador +]
29D7,P1P@ 95\ :]0PPPA 3)Be o valor PPPA no re"istrador :]
29D7,P1P& +77 +]0:] 3+di.iona :] ao .onte<do de +]
29D7,P1PF I84 2P 3Zinali(a o )ro"rama
+ <ni.a .oisa Cue este !ro"rama fa( M salvar dois valores em dois
re"istradores e adi.ionar o valor de um ao outro.
Se"undo eEem!lo
% a1PP
PC1:,P1PP jm! 12 3Salta !ara o endere=o 12h
PC1:,P1P2 aEnterb
% e 1P2 m1ello0 1o2 are you Jm Pd Pa mjm
% a12
PC1:,P12 95\ 7]0P1P2 3Co!ia a strin" !ara re"istrador 7]
PC1:,P12F 95\ C]0PPPZ 3Vuantas ve(es a strin" ser? mostrada
PC1:,P12: 95\ +10P9 3Co!ia o valor P9 !ara re"istrador +1
PC1:,P127 I84 21 39ostra a strin"
PC1:,P12Z 7EC C] 3Subtrai 1 de C]
PC1:,P1@P JC]c P1@A 3Se C] M i"ual a P salta !ara o endere=o P1@A
PC1:,P1@2 J9) P127 3Salta ao endere=o P127
PC1:,P1@A I84 2P 3Zinali(a o !ro"rama
Este !ro"rama mostra 1 ve(es na tela a strin" de .ara.teres.
4er.eiro eEem!lo
%a1PP
29D7,P1PP 95\ +10P1 3Zun=>o !ara mudar o .ursor
29D7,P1P2 95\ C]0PPPD 3Zormata o .ursor
29D7,P1P I84 1P 3Chama interru!=>o do :I5S
29D7,P1PD I84 2P 3Zinali(a o !ro"rama
Este !ro"rama muda o formato do .ursor.
Vuarto eEem!lo
%a1PP
29D7,P1PP 95\ +10P1 3Zun=>o 1 #l* .ara.tere do te.lado$
29D7,P1P2 I84 21 3Chama interru!=>o do 75S
29D7,P1PA C9) +/0P7 3Com!ara se o .ara.tere lido M um E84E6
29D7,P1P& J8c P1PP 3Se n>o M0 l* um outro .ara.tere
29D7,P1PF 95\ +10P2 3Zun=>o 2 #es.reve um .ara.tere na tela$
29D7,P1P+ 95\ 7/0+/ 3Chara.ter to 2rite on +/
29D7,P1PC I84 21 3Chama interru!=>o do 75S
29D7,P1PE I84 2P 3Zinali(a o !ro"rama
Este !ro"rama usa a interru!=>o 21h do 75S. Usa duas fun=Bes da mesma, a
!rimeira l* um .ara.tere do te.lado #fun=>o 1$ e a se"undo es.reve um
.ara.tere na tela. 5 !ro"rama l* .ara.teres do te.lado atM en.ontrar um
E84E6.
Vuinto eEem!lo
%a1PP
29D7,P1PP 95\ +10P2 3Zun=>o 2 #es.reve um .ara.tere na tela$
29D7,P1P2 95\ C]0PPPF 3)Be o valor PPPF no re"istrador C]
29D7,P1P 95\ 7/0PP 3)Be o valor PP no re"istrador 7/
29D7,P1PD 6C/ :/01 36ota.iona o byte em :/ um bit !ara a esCuerda
29D7,P1P9 +7C 7/0@P 3Converte o re"istrador de fla" !ara 1
29D7,P1PC I84 21 3Chama interru!=>o do 75S
29D7,P1PE /55) P1P 3Salta se C] ` P !ara o endere=o P1P
29D7,P11P I84 2P 3Zinali(a o !ro"rama
Este !ro"rama mostra na tela um n<mero bin?rio atravMs de um .i.lo
.ondi.ional #/55)$ usando a rota=>o do byte.
SeEto eEem!lo
%a1PP
29D7,P1PP 95\ +10P2 3Zun=>o 2 #es.reve um .ara.tere na tela$
29D7,P1P2 95\ 7/0:/ 3)Be o valor de :/ em 7/
29D7,P1PA +77 7/0@P 3+di.iona o valor @P a 7/
29D7,P1PD C9) 7/0@+ 3Com!ara o valor @+ .om o .onte<do de 7/ sem
afet?%lo
3seu valor a!enas modifi.a o estado do fla" de .arry
29D7,P1P+ J/ P1PZ 3salta ao endere=o P1Pf0 se for menor
29D7,P1PC +77 7/0PD 3+di.iona o valor PD a 7/
29D7,P1PZ I84 21 3Chama interru!=>o do 75S
29D7,P111 I84 2P 3Zinali(a o !ro"rama
Este !ro"rama im!rime um valor (ero em dQ"itos heEade.imais.
SMtimo eEem!lo
%a1PP
29D7,P1PP 95\ +10P2 3Zun=>o 2 #es.reve um .ara.tere na tela$
29D7,P1P2 95\ 7/0:/ 3)Be o valor de :/ em 7/
29D7,P1PA +87 7/0PZ 34rans!orta fa(endo +87 dos n<meros bit a bit
29D7,P1PD +77 7/0@P 3+di.iona @P a 7l
29D7,P1P+ C9) 7/0@+ 3Com!ara 7l .om @+
29D7,P1P7 J/ P112 3Salta ao endere=o P1120 se menor
29D7,P1PZ +77 7/0PD 3+di.iona PD a 7/
29D7,P112 I84 21 3Chama interru!=>o do 75S
29D7,P11A I84 2P 3Zinali(a o !ro"rama
Este !ro"rama M usado !ara im!rimir dois dQ"itos heEade.imais.
5itavo eEem!lo
%a1PP
29D7,P1PP 95\ +10P2 3Zun=>o 2 #es.reve um .ara.tere na tela$
29D7,P1P2 95\ 7/0:/ 3)Be o valor de :/ em 7/
29D7,P1PA 95\ C/0PA 3)Be o valor PA em C/
29D7,P1P& S16 7/0C/ 37eslo.a os A bits mais altos do n<mero ao nibble mais
N direita
29D7,P1PF +77 7/0@P 3+di.iona @P a 7/
29D7,P1P: C9) 7/0@+ 3Com!ara 7l .om @+
29D7,P1PE J/ P11@ 3Salta ao endere=o P11@0 se menor
29D7,P11P +77 7/0PD 3+di.iona PD a 7/
29D7,P11@ I84 21 3Chama interru!=>o do 75S
29D7,P11 I84 2P 3Zinali(a o !ro"rama
Este !ro"rama im!rime o !rimeiro de dois dQ"itos heEade.imais.
8ono eEem!lo
%a1PP
29D7,P1PP 95\ +10P2 3Zun=>o 2 #es.reve um .ara.tere na tela$
29D7,P1P2 95\ 7/0:/ 3)Be o valor de :/ em 7/
29D7,P1PA 95\ C/0PA 3)Be o valor PA em C/
29D7,P1P& S16 7/0C/ 37eslo.a os A bits mais altos do n<mero ao nibble mais
N direita
29D7,P1PF +77 7/0@P 3+di.iona @P a 7/
29D7,P1P: C9) 7/0@+ 3Com!ara 7l .om @+
29D7,P1PE J/ P11@ 3Salta ao endere=o P11@0 se menor
29D7,P11P +77 7/0PD 3+di.iona PD a 7/
29D7,P11@ I84 21 3Chama interru!=>o do 75S
29D7,P11 95\ 7/0:/ 3)Be o valor de :/ em 7/
29D7,P11D +87 7/0PZ 34rans!orta fa(endo +87 dos n<meros bit a bit
29D7,P11+ +77 7/0@P 3+di.iona @P a 7/
29D7,P117 C9) 7/0@+ 3Com!ara 7l .om @+
29D7,P12P J/ P12 3Salta ao endere=o P120 se menor
29D7,P122 +77 7/0PD 3+di.iona PD a 7/
29D7,P12 I84 21 3Chama interru!=>o do 75S
29D7,P12D I84 2P 3Zinali(a o !ro"rama
Este !ro"rama im!rime o se"undo de dois dQ"itos heEade.imais.
7M.imo eEem!lo
%a1PP
29D7,P1PP 95\ +10P1 3Zun=>o 1 #l* .ara.tere do te.lado$
29D7,P1P2 I84 21 3Chama interru!=>o do 75S
29D7,P1PA 95\ 7/0+/ 3)Be o valor de +/ em 7/
29D7,P1P& SU: 7/0@P 3Subtrai @P de 7/
29D7,P1P9 C9) 7/0P9 3Com!ara 7/ .om P9
29D7,P1PC J/E P111 3Salta ao endere=o P1110 se menor ou i"ual
29D7,P1PE SU: 7/0PD 3Subtrai PD de 7/
29D7,P111 95\ C/0PA 3)Be o valor PA em C/
29D7,P11@ S1/ 7/0C/ 3Insere (eros N direita
29D7,P11 I84 21 3Chama interru!=>o do 75S
29D7,P11D SU: +/0@P 3Subtrai @P de +/
29D7,P119 C9) +/0P9 3Com!ara +/ .om P9
29D7,P11: J/E P11Z 3Salta ao endere=o P11f0 se menor ou i"ual
29D7,P117 SU: +/0PD 3Subtrai PD de +/
29D7,P11Z +77 7/0+/ 3+di.iona +/ a 7/
29D7,P121 I84 2P 3Zinali(a o !ro"rama
Este !ro"rama !ode ler dois dQ"itos heEade.imais.
7M.imo !rimeiro eEem!lo
%a1PP
29D7,P1PP C+// P2PP 3Chama um !ro.edimento
29D7,P1P@ I84 2P 3Zinali(a o !ro"rama
%a2PP
29D7,P2PP )US1 7] 3)Be o valor de 7] na !ilha
29D7,P2P1 95\ +10PF 3Zun=>o F
29D7,P2P@ I84 21 3Chama interru!=>o do 75S
29D7,P2P C9) +/0@P 3Com!ara +/ .om @P
29D7,P2PD J: P2P@ 3Salta se CZ M ativado ao endere=o P2P@
29D7,P2P9 C9) +/0A& 3Com!ara +/ .om A&
29D7,P2P: J+ P2P@ 3Salta ao endere=o P2P@0 se diferente
29D7,P2P7 C9) +/0@9 3Com!ara +/ .om @9
29D7,P2PZ J+ P21: 3Salta ao endere=o P21:0 se diferente
29D7,P211 95\ +10P2 3Zun=>o 2 #es.reve um .ara.tere na tela$
29D7,P21@ 95\ 7/0+/ 3)Be o valor de +/ em 7/
29D7,P21 I84 21 3Chama interru!=>o do 75S
29D7,P21D SU: +/0@P 3Subtrai @P de +/
29D7,P219 )5) 7] 3EEtrai o valor de 7] da !ilha
29D7,P21+ 6E4 36etorna o .ontrole ao !ro"rama !rin.i!al
29D7,P21: C9) +/0A1 3Com!ara +/ .om A1
29D7,P217 J: P2P@ 3Salta se CZ M ativado ao endere=o P2P@
29D7,P21Z 95\ +10P2 3Zun=>o 2 #es.reve um .ara.tere na tela$
29D7,P22 95\ 7/0+/ 3)Be o valor +/ em 7/
29D7,P22@ I84 21 3Chama interru!=>o do 75S
29D7,P22 SU: +/0@D 3Subtrai @D de +/
29D7,P22D )5) 7] 3EEtrai o valor de 7] da !ilha
29D7,P22F 6E4 36etorna o .ontrole ao !ro"rama !rin.i!al
Este !ro"rama se mantMm lendo .ara.teres atM re.eber um Cue !ossa ser
.onvertido !ara um n<mero heEade.imal.
%%%%%%%%%%%%%%% LL %%%%%%%%%%%%%%%
D.2.EEem!los de )ro"ramas .om 4+S9
8esta se=>o forne.eremos a vo.* v?rios eEem!los de !ro"ramas a serem
montados fa(endo uso do 4+S9 da :orland.
)ro.edimento,
)ara mont?%los0 si"a os se"uintes !assos,
)rimeiro !asso
9ontar o !ro"rama
)or eEem!lo,
C,_`tasm one.asm
4urbo +ssembler \ersion 2.P Co!yri"ht #.$ 19FF0 199P :orland International
+ssemblin" file, one.asm
Error messa"es, 8one
Warnin" messa"es, 8one
)asses, 1
6emainin" memory, AD1O
C,_`
Isto .riar? um !ro"rama objeto .om o mesmo nome do fonte0 neste .aso,
one.obj
Se"undo !asso
Criar o !ro"rama eEe.ut?vel
)or eEem!lo,
C,_`tlinO one.obj
4urbo /inO \ersion @.P Co!yri"ht #.$ 19FD0 199P :orland International
C,_`
Isto .ria o !ro"rama eEe.ut?vel .om o mesmo nome do objeto e .om eEtens>o
diferente0 one.eEe
4er.eiro !asso
6odar o !ro"rama eEe.ut?vel. :asta di"itar o nome do !ro"rama .riado.

EEem!los de )ro"ramas +ssembly
)rimeiro eEem!lo
3nome do !ro"rama, one.asm
3
.model small
.sta.O
..ode
mov +101h 3Zun=>o 1 do 75S
Int 21h 3l* o .ara.ter e returna o .Kdi"o +SCII ao re"istrador +/
mov 7/0+/ 3move o .Kdi"o +SCII !ara o re"istrador 7/
sub 7/0@Ph 3subtrai de @Ph !ara .onverter a um dQ"ito de P a 9
.m! 7/09h 3.om!ara se o dQ"ito est? entre P e 9
jle di"it1 3se verdadeiro obtMm o !rimeiro n<mero #A bits$
sub 7/0Dh 3se falso0 subtrai de Dh !ara .onverter a uma letra +%Z
di"it1,
mov C/0Ah 3!re!ara !ara multi!li.ar !or 1&
shl 7/0C/ 3multi!li.a !ara .onverter dentro dos A bits mais altos
int 21h 3obtMm o !rKEimo .ara.ter
sub +/0@Ph 3re!ete a o!era=>o de .onvers>o
.m! +/09h 3.om!ara o valor 9h .om o .onte<do do re"istrador +/
jle di"it2 3se verdadeiro0 obtMm o se"undo dQ"ito
sub +/0Dh 3se falso0 subtrai de Dh
di"it2,
add 7/0+/ 3adi.iona o se"undo dQ"ito
mov +10ACh 3fun=>o ACh do 75S #eEit$
Int 21h 3interru!=>o 21h
End 3finali(a o !ro"rama
Este !ro"rama l* dois .ara.teres e os im!rime na tela
Se"undo eEem!lo
3nome do !ro"rama, t2o.asm
.model small
.sta.O
..ode
)6I84n+nJ )65C
95\ 7/0m+m 3move o .hara.ter + !ara o re"istrador 7/
95\ C]01P 3move o valor de.imal 1P !ara o re"istrador C]
3este valor M usado !ara fa(er la=o .om 1P intera=Bes
)6I84n/55),
C+// W6I4EnC1+6 3Im!rime o .ara.ter em 7/
I8C 7/ 3In.rementa o valor do re"istrador 7/
/55) )6I84n/55) 3/a=o !ara im!rimir 1P .ara.teres
95\ +10ACh 3Zun=>o ACh0 !ara sair ao 75S
I84 21h 3Interru!=>o 21h
)6I84n+nJ E87) 3Zinali(a o !ro.edimento
W6I4EnC1+6 )65C
95\ +102h 3Zun=>o 2h0 im!rime .ara.ter
I84 21h 3Im!rime o .ara.ter Cue est? em 7/
6E4 36etorna o .ontrole ao !ro.edimento Cue .hamou
W6I4EnC1+6 E87) 3Zinali(a o !ro.edimento
E87 )6I84n+nJ 3Zinali(a o !ro"rama
Este !ro"rama mostra os .ara.teres +:C7EZG1IJ na tela.
4er.eiro eEem!lo
3nome do !ro"rama, three.asm
.model small
.S4+C^
..ode
4ES4nW6I4En1E] )65C
95\ 7/0@Zh 39ove o valor @Zh !ara o re"istrador 7/
C+// W6I4En1E] 3Chama a sub%rotina
95\ +10AC1 3Zun=>o ACh
I84 21h 36etorna o .ontrole ao 75S
4ES4nW6I4En1E] E87) 3Zinali(a o !ro.edimento
)U:/IC W6I4En1E]
3........................................................3
3Este !ro.edimento .onverte !ara heEade.imal o byte 3
3arma(enado no re"istrador 7/ e mostra o dQ"ito 3
3Use,W6I4En1E]n7IGI4 3
3........................................................3
W6I4En1E] )65C
)US1 C] 3.olo.a na !ilha o valor do re"istrador C]
)US1 7] 3.olo.a na !ilha o valor do re"istrador 7]
95\ 7107/ 3move o valor do re"istrador 7/ !ara o re"istrador 71
95\ C]0A 3move o valor A !ara o re"istrador C]
S16 7/0C/
C+// W6I4En1E]n7IGI4 3mostra na tela o !rimeiro n<mero heEade.imal
95\ 7/071 3move o valor do re"istrador 71 !ara o re"istrador 7/
+87 7/0PZh
C+// W6I4En1E]n7IGI4 3mostra na tela o se"undo n<mero heEade.imal
)5) 7] 3retira da !ilha o valor do re"istrador 7]
)5) C] 3retira da !ilha o valor do re"istrador C]
6E4 36etorna o .ontrole ao !ro.edimento Cue .hamou
W6I4En1E] E87)
)U:/IC W6I4En1E]n7IGI4
3......................................................................3
3Este !ro.ediento .onverte os A bits mais baiEos do re"istrador 7/ 3
3!ara um n<mero heEade.imal e o mostrana tela do .om!utador 3
3Use, W6I4EnC1+6 3
3......................................................................3
W6I4En1E]n7IGI4 )65C
)US1 7] 3.olo.a na !ilha o valor de 7]
C9) 7/01P 3.om!ara se o n<mero de bits M menor do Cue 1P
J+E 1E]n/E44E6 3se n>o0 salta !ara 1E]n/E4E6
+77 7/0[P[ 3se sim0 .onverte !ara n<mero
J9) Short W6I4En7IGI4 3es.reve o .ara.ter
1E]n/E44E6,
+77 7/0[+[%1P 3.onverte um .ara.ter !ara heEade.imal
W6I4En7IGI4,
C+// W6I4EnC1+6 3im!rime o .ara.ter na tela
)5) 7] 36etorna o valor ini.ial do re"istrador 7]
3!ara o re"istrador 7/
6E4 36etorna o .ontrole ao !ro.edimento Cue .hamou
W6I4En1E]n7IGI4 E87)
)U:/IC W6I4EnC1+6
3......................................................................3
3Este !ro.edimento im!rime um .ara.ter na tela usando o 7.5.S. 3
3......................................................................3
W6I4EnC1+6 )65C
)US1 +] 3Colo.a na !ilha o valor do re"istarador +]
95\ +102 3Zun=>o 2h
I84 21h 3Interru!=>o 21h
)5) +] 3EEtrai da !ilha o valor de +]
6E4 36etorna o .ontrole ao !ro.edimento Cue .hamou
W6I4EnC1+6 E87)
E87 4ES4nW6I4En1E] 3Zinali(a o !ro"rama
Vuarto eEem!lo
3nome do !ro"rama, four.asm
.model small
.sta.O
..ode
4ES4nW6I4En7ECI9+/ )65C
95\ 7]012@A 39ove o valor de.imal 12@A !ara o re"istrador 7]
C+// W6I4En7ECI9+/ 3Chama o !ro.edimento
95\ +10AC1 3Zun=>o ACh
I84 21h 3Interru!=>o 21h
4ES4nW6I4En7ECI9+/ E87) 3Zinali(a o !ro.edimento
)U:/IC W6I4En7ECI9+/
3.................................................................3
3Este !ro.edimento es.reve um n<mero de 1& bit .omo um n<mero 3
3sem sinal em nota=>o de.imal 3
3Use, W6I4En1E]n7IGI4 3
3.................................................................3
W6I4En7ECI9+/ )65C
)US1 +] 3)Be na !ilha o valor do re"istrador +]
)US1 C] 3)Be na !ilha o valor do re"istrador C]
)US1 7] 3)Be na !ilha o valor do re"istrador 7]
)US1 SI 3)Be na !ilha o valor do re"istrador SI
95\ +]07] 3move o valor do re"istrador 7] !ara +]
95\ SI01P 3move o valor 1P !ara o re"istrador SI
]56 C]0C] 3(era o re"istrador C]
858ncE65,
]56 7]07] 3(era o re"istrador C]
7I\ SI 3divi(>o entre SI
)US1 7] 3)Be na !ilha o valor do re"istrador 7]
I8C C] 3in.rementa C]
56 +]0+] 3n>o (ero
J8E 858ncE65 3salta !ara 858ncE65
W6I4En7IGI4n/55),
)5) 7] 36etorna o valor em modo reverso
C+// W6I4En1E]n7IGI4 3Chama o !ro.edimento
/55) W6I4En7IGI4n/55) 3loo!
E87n7ECI9+/,
)5) SI 3retira da !ilha o valor do re"istrador SI
)5) 7] 3retira da !ilha o valor do re"istrador 7]
)5) C] 3retira da !ilha o valor do re"istrador C]
)5) +] 3retira da !ilha o valor do re"istrador +]
6E4 36etorna o .ontrole ao !ro.edimento Cue .hamou
W6I4En7ECI9+/ E87) 3Zinali(a o !ro.edimento
)U:/IC W6I4En1E]n7IGI4
3......................................................................3
3 3
3Este !ro.edimento .onverte os A bits mais baiEos do re"istrador 7/ 3
3num n<mero heEade.imal e os im!rime 3
3Use, W6I4EnC1+6 3
3......................................................................3
W6I4En1E]n7IGI4 )65C
)US1 7] 3)Be na !ilha o valor do re"istrador 7]
C9) 7/01P 3Com!ara o valor 1P .om o valor do re"istrador 7/
J+E 1E]n/E44E6 3se n>o0 salta !ara 1E]n/E4E6
+77 7/0[P[ 3se M0 .onverte em dQ"ito numMri.o
J9) Short W6I4En7IGI4 3es.reve o .ara.ter
1E]n/E44E6,
+77 7/0[+[%1P 3.onverte um .ara.ter !ara um n<mero heEade.imal
W6I4En7IGI4,
C+// W6I4EnC1+6 3mostra o .ara.ter na tela
)5) 7] 36etorna o valor ini.ial !ara o re"istrador 7/
6E4 36etorna o .ontrole ao !ro.edimento Cue .hamou
W6I4En1E]n7IGI4 E87)
)U:/IC W6I4EnC1+6
3......................................................................3
3Este !ro.edimento im!rime um .ara.ter na tela usando uma fun=>o 7.5.S.3
3......................................................................3
W6I4EnC1+6 )65C
)US1 +] 3)Be na !ilha o valor do re"istrador +]
95\ +102h 3Zun=>o 2h
I84 21h 3Interru!=>o 21h
)5) +] 36etira da !ilha o valor ini.ial do re"istrador +]
6E4 36etorna o .ontrole ao !ro.edimento Cue .hamou
W6I4EnC1+6 E87)
E87 4ES4nW6I4En7ECI9+/ 3finali(a o !ro"rama
Este !ro"rama mostra na tela os n<meros 12@A
Vuinto eEem!lo
3nome do !ro"rama, five.asm
.model small
.sta.O
..ode
)6I84n+SCII )65C
95\ 7/0PPh 3move o valor PPh !ara o re"istrador 7/
95\ C]02 3move o valor de.imal 2 !ara o re"istrador C]
3usado !ara fa(er um la=o .om 2 intera=Bes
)6I84n/55),
C+// W6I4EnC1+6 3Chama o !ro.edimento Cue im!rime
I8C 7/ 3In.rementa o valor do re"istrador 7/
/55) )6I84n/55) 3/oo! !ara im!rimir 1P .ara.teres
95\ +10ACh 3Zun=>o ACh
I84 21h 3Interru!=>o 21h
)6I84n+SCII E87) 3Zinali(a o !ro.edimento
W6I4EnC1+6 )65C
95\ +102h 3Zun=>o 2h !ara im!rimir um .ara.ter
I84 21h 3Im!rime o .ara.ter Cue est? em 7/
6E4 36etorna o .ontrole ao !ro.ediemento Cue .hamou
W6I4EnC1+6 E87) 3Zinali(a o !ro.edimento
E87 )6I84n+SCII 3Zinali(a o !ro"rama
Este !ro"rama mostra na tela o valor dos 2& .ara.teres do .Kdi"o +SCII.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
C+)G4U/5 F, :I:/I5G6+ZI+
CrMditos,
9oni.o :riseoo C.0 En"enheiro
IdMia 5ri"inal
7esenvolvimento e Im!lementa=>o da edi=>o 199&
1u"o Eduardo )Mre( ).
7esenvolvimento e Im!lementa=>o da edi=>o 199
\Q.tor 1u"o +vila :.
\ers>o In"lesa
Jeferson :otelho do +maral
\ers>o )ortu"uesa
+na 9arQa )era(a
)ro"ramadora de /in"ua"em +ssembly
Gra.iela Sal.edo 9an.illa
)ro"ramadora 4.lL4O
Juan 5lmos 9onroy
7esi"ner Gr?fi.o

6efer*n.ias :iblio"r?fi.as,
+ssembly /an"ua"e Zor I:9 9i.ro.om!uters
J. 4erry Godfrey
)renti.e 1all 1is!anoameri.ana0 S.+.
9eEi.o
:asi. +ssembler
+. 6ojas
Ed Com!ute. Editores S.+. de C.\.
9eEi.o
I:9 )ersonal Com!uter +ssembly /an"ua"e 4utorial
Joshua +uerba.h
;ale University
5r"ani(a=>o Estruturada de Com!utadores
+ndre2 S. 4anenbaum
)renti.e 1all do :rasil
Guia do )ro"ramador !ara as )la.as EG+ e \G+
6i.hard Z. Zerraro
Ed. Ci*n.ia 9oderna
)ro"ramando em +ssembler FPF&LFPFF
Jeremias 6. 7. )ereira dos Santos
Edison 6aymundi Junior
9.Gra2%1ill
+ssembly I:9 )C % 4M.ni.as de )ro"rama=>o
+lan 6. 9iller
E:6+S0 Editora :rasileira
/in"ua"em +ssembly !ara I:9 )C
)eter 8orton
John So.ha
Editora Cam!us
C % CaiEa de Zerramentas
Carlos +u"usto ). Gomes
+ntonio Carlos :arbosa
Editora Sri.a
Interru!=Bes 9S%75S0 659%:I5S
Euri.o Soalheiro :r?s
9.Gra2%1ill
7esenvolvimento de Soft2are :?si.o
/eland /. :e.O
Editora Cam!us
)ro"rama=>o +ssembly FP@F& % Guia )r?ti.o !ara )ro"ramadores
6oss ). 8elson
9.Gra2%1ill

Você também pode gostar