Documentos de Académico
Documentos de Profesional
Documentos de Cultura
GuiaparaoAssembly80x86,deGavinParte2
UmaIntroduoaInstruesAssembly
Existemmuitasinstruesemassemblymasapenasporvoltadevintedelasvocdeverconhecere
utilizarmuitofreqentemente.Amaioriadasinstruessocompostasportrscaracteresepossuem
umoperandoentoumavrgulaeentooutrooperando.Porexemplo,paracopiarumdadoparaum
registradorvocutilizaainstruoMOV.
movax,10
movbx,20
movcx,30
movdx,40
;copia10paraax
;copia20parabx
;copia30paracx
;copia40paradx
Observequeemassemblytudoqueestiverapsum(pontoevrgula)ignorado.Istomuitotil
parasecolocarcomentriosemseucdigo.
PushePop:DuasInstruesparamanuseiodaPilha
Vocjconheceapilhamasnosabecomocolocareretirardadosdela.Existemduasinstrues
simplesquevocprecisaconhecer:pushepop.Eisasintaxeparaoseuuso:
PUSH:Colocadadosnotopodapilha.
Sintaxe:
pushdados
POP:Recuperaodadodotopodapilhaparaumregistradorespecificadoouumavarivel.
Sintaxe:
popregistrador(ouvarivel)
Esteexemplodecdigodemonstracomoutilizarasintruespushepop
pushcx
pushax
popcx
popax
;copiacxnapilha
;copiaaxnapilha
;recuperavalordotopodapilhaparacx
;recuperavalordotopodapilhaparaax
VejaqueosvaloresdeCXeAXserotrocados.Humainstruoparatrocarocontedodedois
registradores:XCHG,quereduziriaofragmentodecdigoanteriorpara"xchgax,cx".
TiposdeOperandos
Existemtrstiposdeoperandosemassembly:imediato,registradorememria.Imediatoaquele
valorqueserconhecidonacompilaoesempreseromesmo,porexemplo'20'ou'A'.Um
operandodotiporegistradorqualquerregistradordeusogeraloudendice,porexemploAXouSI.
Umoperandodotipomemriaumavarivelqueestarmazenadaemmemriaeserdetalhado
maistarde.
AlgumasInstruesquevocprecisarconhecer
Estaumalistadealgumasinstruesimportantesquevocprecisaconhecerantesdeconseguir
entenderouescreverprogramasemassembly.
MOV:moveumvalordeumlugarparaoutro.
http://www.cin.ufpe.br/~arfs/Assembly/apostilas/Tutorial%20Assembly%20%20Gavin/ASM3.HTM
1/4
16/12/2015
GuiaparaoAssembly80x86,deGavinParte2
Sintaxe:
MOVdestino,origem
porexemplo:
movax,10
;moveumvalorimediatoparaax
movbx,cx
;moveovalordecxparabx
movdx,Number ;movesovalordeNumberparadx
INT:chamaumafunoDOSouBIOSquesosubrotinasparafazercoisasparaoqueno
criaramosumafuno,porexemploalteraromododevdeo,abrirumarquivo,etc.
Sintaxe:
INTnmerodainterrupo
Porexemplo:
int21h
int10h
;ChamaserviosdoDOS
;ChamaainterrupodeVdeodaBIOS
Amaiorpartedasinterrupespossuemmaisdeumafuno,significandoquevocdevepassaro
nmerodafunodesejada.EstenormalmentecolocadoemAH.Paraimprimirumamensagemna
teladomonitortudoquevocprecisafazeristo:
movah,9
int21h
;nmerodasubrotina9
;chamaainterrupo
Masprimeirovocdeveespecificaroqueimprimir.EstafunoprecisaqueDS:DXsejaumponteiro
dotipofarparaondeastringestiver.Astringdeveserterminadacomumcaractercifro($).Isto
seriafcilseDSpudessesermanipuladodiretamente,paracontornaristonsteremosqueusarAX.
Esteexemplomostracomoistofunciona:
movdx,OFFSETMessage
movax,SEGMessage
movds,ax
movah,9
int21h
;DXcontmooffsetdamessagem
;AXcontmosegmentodamessagem
;DS:DXapontaparaamessagem
;funo9exibeastring
;chamaserviodoDOS
AspalavrasOFFSETeSEGdizemaomontadorquevocquerosegmentoouooffsetdamensagem
colocadonoregistrador,noocontedodamensagem.Agoraquesabemoscomoprepararocdigo
paraexibiramensagem,precisaremosdeclararamensagem.Nosegmentodedadosnsdeclaramosa
mensagemdaseguinteforma:
MessageDB"HelloWorld!$"
Observequeastringestterminadacomumcifro.Oquesignifica'DB'?DBaabreviaode
DefinirByteeamensagemumconjuntodebytes(umcaracterASCIIocupaumbyte).Dados
podemserdeclaradosemvriostamanhos:bytes(DB),words(DW)edoublewords(DD).Vocno
precisasepreocuparcomdoublewordsporenquantoumavezquevocprecisadeumregistradorde
32bits,talcomooEAX,paracoloclas.
Aquiestoalgunsexemplosdedeclaraodedados:
Number1db?
Number2dw?
Osinaldeinterrogao(?)nofinalsignificaqueodadonoiniciado,isto,elenopossuiumvalor
http://www.cin.ufpe.br/~arfs/Assembly/apostilas/Tutorial%20Assembly%20%20Gavin/ASM3.HTM
2/4
16/12/2015
GuiaparaoAssembly80x86,deGavinParte2
definidonoinciodaexecuo.Istopoderiaserescritofacilmentecomo:
Number1db0
Number2dw1
DestavezNumber1iguala0eNumber2iguala1quandooseuprogramacarregado.Seu
programatambmterumtamanhode3bytes.
Sevocdeclararumavarivelcomoumawordvocnopodermoverovalordestavarivelparaum
registradorde8bitsevocnopoderdeclararumavarivelcomoumbyteemoverseuvalorpara
umregistradorde16bits.Porexemplo:
moval,Number1
movax,Number1
;ok
;erro
movbx,Number2
movbl,Number2
;ok
;erro
Tudooquevocdeverlembrarquevocspodecolocarbytesdentroderegistradoresde8bits,e
wordsemregistradoresde16bits.
Seuprimeiroprogramaassembly
Agoraquevocconhecealgumasinstruesbsicaseumpoucosobredadoshoradedaruma
olhadaemumprogramaassemblycompletoquepossasermontado.
Listagem1:1STPROG.ASM
;Esteumprogramasimplesqueexibe"HelloWorld!"
;nateladomonitor.
.modelsmall
.stack
.data
Messagedb"HelloWorld!$"
;messagemaserexibida
.code
start:
movdx,OFFSETMessage ;offsetdaMessagemestemDX
movax,SEGMessage
;segmentodaMessagemestemAX
movds,ax
;DS:DXapontaparaastring
movah,9
int21h
movax,4c00h
int21h
;funo9exibestring
;chamaservioDOS
;retornaaoDOS
ENDstart
;terminaaqui
InstruesdeMontagem
Existemalgumasinstruesparamontareligarprogramas.Sevoctiverummontadorquenoo
TASMouoA86entoconsulteseumanualdeinstrues.
TurboAssembler
http://www.cin.ufpe.br/~arfs/Assembly/apostilas/Tutorial%20Assembly%20%20Gavin/ASM3.HTM
3/4
16/12/2015
GuiaparaoAssembly80x86,deGavinParte2
tasmfile.asm
tlinkfile[/t]
Aopo/tcriaumarquivo.COM.Istosirfuncionarsefordeclaradoomodelodememriatinyno
arquivofonte.
A86
a86file.asm
Istoirgeraroprogramaemumarquivo.COM.Noimportaqualsejaomodelodememria.
RetornarparaoSumrio
http://www.cin.ufpe.br/~arfs/Assembly/apostilas/Tutorial%20Assembly%20%20Gavin/ASM3.HTM
4/4