Vous êtes sur la page 1sur 15

15/01/2017 LinguagemdemontagemWikipedia

Linguagemdemontagem
Origem:Wikipdia,aenciclopdialivre.

Umconjunto(oumontador)lngua,[1]frequentemente
Linguagemdemontagem
abreviadoASM,umalinguagemdebaixonvelde
programaoparaumcomputador,ououtroaparelho
programvel,emqueexisteumamuitoforte(geralmente
umparaumcorrespondncia)entrealnguaeode
arquiteturadecdigodemquinainstrues.Cada
linguagemdemontagemespecficaparaumadeterminada
arquiteturadecomputador.Emcontraste,amaioriadas
linguagensdeprogramaodealtonvelsogeralmente
porttilatravsdemltiplasarquiteturas,masexigem
interpretaooucompilao.Linguagemdemontagem
tambmpodeserchamadodecdigodemquinasimblica
.[2]

Linguagemassemblyconvertidoemcdigodemquina
executvelporumprogramautilitrioreferidocomoum
assembler.Oprocessodeconversoreferidocomo
conjunto,ouamontagemdocdigofonte.Tempode
montagemopassocomputacional,ondeummontador
executado.

Linguagemassemblyusaummnemnicopararepresentar
cadainstruodemquinadebaixonvelouoperao,
normalmentetambmcadaarquitectnicoregisto,bandeira
,etc.Muitasoperaesrequeremumoumaisoperandos,a
fimdeformarumainstruocompletaeamaioriadas
montadoraspodetomarexpressesdenmerosenomeado
constantes,bemcomoregistosertuloscomooperandos, MotorolaMC6800Listademontagem,mostrandoa
liberandooprogramadordeclculosrepetitivostedioso. linguagemdemontagemoriginaleaformamontada
Dependendodaarquitectura,esteselementospodem
tambmsercombinadosparaobterinstruesespecficasou Paradigma Imperativo,Unstructured
modosdeendereamentoutilizandodeslocamentosou Primeiroapareceu 1949
outrosdados,bemcomoosendereosfixos.Muitas
montadorasoferecemmecanismosadicionaisparafacilitaro
desenvolvimentodoprograma,paracontrolaroprocessodemontagem,eparaajudaradepurao.

Contedo
1 Terminologia
2 Conceitoschave
2.1 Assembler
2.1.1 Nmerodepasses
2.1.2 montadoresdealtonvel
2.2 Alinguagemassembly
3 designdalinguagem
3.1 Elementosbsicos
3.1.1 mnemnicosOpcodeemnemnicosprolongados
3.1.2 directivasdedados
3.1.3 directivasdaAssembleia
3.2 macros
https://en.wikipedia.org/wiki/Assembly_language 1/15
15/01/2017 LinguagemdemontagemWikipedia

3.2 macros
3.3 Suporteparaprogramaoestruturada
4 Usodelinguagemassembly
4.1 Perspectivahistrica
4.2 Ousocorrente
4.3 Aplicaestpicas
5 Listademontadorasparadiferentesarquiteturasdecomputadores
6 Maisdetalhes
7 Vejatambm
8 Referncias
9 Leitura
10 Ligaesexternas

Terminologia
Umassemblermacroincluiumamacroinstructionfacilidadedemodoque(parametrizada)textoem
linguagemassemblypodeserrepresentadoporumnomeeessenomepodeserusadoparainserirotexto
expandidoemoutrocdigo.
Amontadoracruz(vertambmcompiladorcruzado)ummontadorqueexecutadoemum
computadorousistemaoperacional(oanfitriodosistema)deumtipodiferentedosistemanoqualo
cdigoresultanteexecutar(osistemadedestino).Crossmontagemfacilitaodesenvolvimentode
programasparasistemasquenotmosrecursosparaapoiarodesenvolvimentodesoftware,comoum
sistemaembarcado.Emtalcaso,aresultantedecdigoobjetodevesertransferidoparaosistemade
destino,queratravsdesomenteleituradememria(ROM,EPROM,etc.)ouumlinkdedados
utilizandoumacpiaexatabitporbitdocdigodeobjetoouumrepresentaobaseadaemtextodo
referidocdigo,taiscomoMotorolaSrecordouIntelHEX.
Ummontadordealtonvelumprogramaqueforneceabstraeslingusticasmaisfrequentemente
associadoscomlinguagensdealtonvel,taiscomoestruturasdecontroleavanado(IF/THEN/ELSE,
DOCASO,etc.)edealtonveltiposdedadosabstratos,incluindoestruturas/Registros,sindicatos,
classeseconjuntos.
Ummicroassemblerumprogramaqueajudaaprepararummicroprogram,chamadofirmware,para
controlaraoperaodebaixonveldeumcomputador.
Umametaassemblerumtermousadoemalgunscrculospara"umprogramaqueaceiteadescrio
sintticaesemnticadeumalinguagemdemontagem,egeraummontadorparaesseidioma."[3]

Conceitoschave
Assembler

Umassemblerprogramacriacdigodeobjeto,traduzindocombinaesdemnemnicosesintaxeparaas
operaesemodosdeendereamentoparaseusequivalentesnumricos.Estarepresentaoinclui,tipicamente,
umcdigodeoperao("opcode"),bemcomooutrocontrolopedaosedados.Amontadoratambmcalcula
expressesconstanteseresolvenomessimblicosparaposiesdememriaeoutrasentidades.[4]Ousode
refernciassimblicasumacaractersticafundamentaldasmontadoras,poupandoclculostediosose
actualizaesdeendereosmanualapsalteraesdoprograma.Amaioriadasmontadorastambmincluem
macroinstalaesparaarealizaodesubstituiodetextoporexemplo,paragerarsequnciascurtascomuns
deinstruescomoemlinha,emvezdechamadasdesubrotinas.

Algumasmontadoraspodemtambmsercapazdeexecutaralgunstipossimplesdeconjuntodeinstrues
especicosotimizaes.Umexemploconcretodissopodeseroonipresentex86montadoresdevrios
fornecedores.Amaioriadelescapazdeexecutarsubstituiesdesaltoinstruo(saltoslongossubstitudos
porsaltoscurtosourelativos)emqualquernmerodepasses,apedido.Outrospodematmesmofazer

https://en.wikipedia.org/wiki/Assembly_language 2/15
15/01/2017 LinguagemdemontagemWikipedia

rearranjosimplesouinserodeinstrues,comoalgumasmontadorasparaRISCarquiteturasquepodem
ajudaraotimizarumasensataagendamentodeinstruesparaexplorarogasodutoCPUtoeficientemente
quantopossvel.

ComolinguagensdeprogramaoadiantadostaiscomoFortran,Algol,CoboleLisp,montadoresesto
disponveisdesdeadcadade1950easprimeirasgeraesdetextocombaseinterfacesdecomputador.No
entanto,montadoresveioprimeirocomoelessomuitomaissimplesdeescreverdoquecompiladorespara
linguagensdealtonvel.Issoocorreporquecadamnemnicojuntocomosmodosdeendereamentoeos
operandosdeumainstruosetraduzemdiretamentenasrepresentaesnumricasdessainstruoparticular,
semmuitocontextoouanlise.Houvetambmvriasclassesdetradutoresegeradoresdecdigosemi
automticacompropriedadessemelhantesaambasaslnguasdemontagemedealtonvel,comspeedcode
comotalvezumdosexemplosmaisconhecidos.

PodehavervriasmontadorascomdiferentessintaxeparaumdeterminadoCPUouconjuntodeinstrues
arquitetura.Porexemplo,umainstruoparaadicionardadosdememriaparaumregistoemumx86
processadorfamilypodeseraddeax,[ebx],nooriginalsintaxeIntel,considerandoqueesteseriaescritoaddl
(%ebx),%eaxnasintaxeAT&TusadopeloGNUAssembler.Apesardediferentesaparncias,asformas
sintticasdiferentesgeralmentegeraramesmanumricocdigodemquina,vermaisabaixo.Umanica
montadoratambmpodemterdiferentesmodosafimdeapoiarvariaesdeformassintticas,bemcomosuas
interpretaessemnticasexatas(comoFASMsyntax,TASMsyntax,omodoidealetc.,nocasoespecialde
montagemx86programao).

Nmerodepasses

Hdoistiposdemontadoresbaseadosemquantaspassagenspelafontesonecessrios(quantasvezeso
montadorlaorigem)paraproduziroprogramaexecutvel.

Osmontadoresdeumapassagempassampelocdigofonteumavez.Qualquersmbolousadoantesde
serdefinidoexigir"errata"nofinaldocdigoobjeto(ou,pelomenos,noantesdopontoemqueo
smboloestdefinido)dizendoavinculadorouocarregadorpara"voltar"esubstituirumEspao
reservadoquetinhasidodeixadoondeosmboloaindaindefinidofoiusado.
Multipassmontadorescriarumatabelacomtodosossmboloseseusvaloresnasprimeiraspassagens,
emseguida,usaratabelaempassagensposterioresparagerarcdigo.

Emambososcasos,omontadordevesercapazdedeterminarotamanhodecadainstruonospassesiniciais
paracalcularosendereosdossmbolossubseqentes.Istosignificaque,seotamanhodeumaoperao
referindoseaumoperandodefinidoposteriormentedependedotipoouadistnciadooperando,omontador
irfazerumaestimativapessimistaseuprimeirocontactocomaoperao,e,senecessrioalmofadacomum
oumais"nooperao"instruesemumapassagemposteriorouaerrata.Emumamontadoracom
otimizaoolhomgico,osendereospodemserrecalculadasentrepassesparapermitirasubstituiode
cdigopessimistacomcdigosobmedidaparaadistnciaexatadoalvo.

Arazooriginalparaousodemontadoresdeumapassagemeravelocidadedemontagemmuitasvezesuma
segundapassagemexigiriarebobinarerelendoafontedeprogramaemfitaourelendoumbaralhodecartasou
fitadepapelperfurado.Comcomputadoresmodernosissodeixoudeserumproblema.Avantagemdo
montadormultipassqueaausnciadeerratafazcomqueoprocessodevinculao(ouocarregamentodo
programa,seomontadorproduzdiretamentecdigoexecutvel)maisrpido.[5]

Exemplo:noseguintetrechodecdigodeummontadordeumapassagemseriacapazdedeterminaro
endereodarefernciaparatrsbkwdaomontardeclaraoS2,masnoseriacapazdedeterminaroendereo
darefernciaparaafrenteFWDaomontaradeclaraoramoS1fatoFWDpodeserindefinido.Ummontador
deduaspassagensdeterminariaambososendereosnapassagem1,entoelesseriamconhecidosaogeraro
cdigonapassagem2,

https://en.wikipedia.org/wiki/Assembly_language 3/15
15/01/2017 LinguagemdemontagemWikipedia

S1BFWD
...
FWDEQU*
...
BkwdEQU*
...
S2Bbkwd

Montadoresdealtonvel

Maissofisticadosmontadoresdealtonvelfornecemabstraeslingusticas,taiscomo:

Declaraesdeprocedimento/funodealtonveleinvocaes
Estruturasdecontroloavanadas
Tiposdedadosabstratosdealtonvel,incluindoestruturas/registros,unies,classeseconjuntos
Processamentodemacrosofisticados(emboradisponvelnamontadorescomunsdesdeofinaldosanos
1950paraIBMsrie700e,desdeadcadade1960paraIBM/360,entreoutrasmquinas)
Programaoorientadaaobjetosfuncionalidades,taiscomoaulas,objetos,abstrao,polimorfismoe
herana[6]

Verdesigndalinguagemabaixoparamaisdetalhes.

Linguagemassembly

Umprogramaescritoemlinguagemdemontagemconsisteemumasriedeinstruesdeprocessador
(mnemnico)emetainstrues(conhecidascomodiretivas,pseudoinstruesepseudoops),comentriose
dados.Instruesemlinguagemassemblynormalmenteconsistemdeumcdigodeoperaomnemnica
seguidoporumalistadedados,argumentosouparmetros.[7]Estessotraduzidosporummontadorem
linguagemdemquinainstruesquepodemsercarregadosnamemriaeexecutadas.

Porexemplo,ainstruoaseguirdizumx86/IA32processadorparamoverumvalorde8bitsimediatoem
umregisto.Ocdigobinrioparaestainstruo10110seguidoporumidentificadorde3bitsparaqual
registrousar.OidentificadorparaoALregisto000,entooseguintecdigodemquinacarregaoAL
registrarcomosdados01100001.[8]

1011000001100001

Estecdigobinriocomputadorpodeserfeitamaislegvelexpressandoaemhexadecimalcomosesegue.

B061

Aqui,B0significa"moverumacpiadovalorseguinteemAL',e61umarepresentaohexadecimaldovalor
01100001,que97emdecimal.Linguagemassemblyparaafamlia8086forneceamnemnicaMOV(uma
abreviaturademovimento)paraobterinstruescomoeste,portanto,ocdigodemquinaacimapodeser
escritodaseguinteformaemlinguagemassembly,completocomumcomentrioexplicativo,senecessrio,
apsopontoevrgula.Issomuitomaisfcildeleredeselembrar.

MOVAL,61h;CarregarALcom97decimais(61hex)

Emalgunsidiomasdemontagem,omesmomnemnico,comoMOV,podeserusadoparaumafamliade
instruesrelacionadasparacarregar,copiaremoverdados,sejamelesvaloresimediatos,valoresemregistros
oulocaisdememriaapontadosporvaloresemregistros.Outrosmontadorespodemusarmnemnicosopcode
separados,comoLpara"movermemriapararegistrar",STpara"moverregistroparamemria",LRpara
"moverregistropararegistrar",MVIpara"moveroperandoimediatoparamemria",etc.
https://en.wikipedia.org/wiki/Assembly_language 4/15
15/01/2017 LinguagemdemontagemWikipedia

Ocdigodeoperaox8610110000(B0)copiaumvalorde8bitsnaALregisto,enquanto10.110.001(B1)
moveloemCLe10.110.010(B2)fazissoemDL.Exemplosdelinguagemdemontagemparaestesseguem.
[8]

MOVAL,1h;ColoqueALcomvalorimediato1
MOVCL,2h;CargaCLcomimediatovalor2
MOVDL,3h;CarregarDLcomvalorimediato3

AsintaxedeMOVtambmpodesermaiscomplexacomomostramosexemplosaseguir.[9]

MOVEAX,[EBX] ;Movaos4bytesdememrianoendereocontidonoEBXemEAX
MOV[ESI+EAX],CL;MovaocontedodeCLparaobytenoendereoESI+EAX

Emcadacaso,omnemnicoMOVtraduzidodiretamenteparaumopcodenasfaixas888E,A0A3,B0B8,
C6ouC7porummontador,eoprogramadornoprecisasaberoulembrarqual.[8]

Transformandolinguagemassemblyemcdigodemquinaotrabalhodeummontador,eoinversopodepelo
menosparcialmenteseralcanadoporumdesmontador.Aocontrriodelinguagensdealtonvel,
normalmentehumacorrespondnciadeumparaumentreasdeclaraesdemontagemsimpleseinstrues
emlinguagemdemquina.Noentanto,emalgunscasos,ummontadorpodeproporcionarpseudo
(essencialmentemacros)queseexpandememvriasinstruesemlinguagemdemquinaparafornecer
funcionalidadescomunsnecessrias.Porexemplo,paraumamquinaquenopossuiumainstruo
"ramificaosemaiorouigual",ummontadorpodefornecerumapseudoinstruoqueseexpandeparao"set
iflessthan"damquinae"branchifzero(noresultadodainstruoset)".Amaioriadasmontadorascom
recursoscompletostambmfornecemumaricamacrolinguagem(discutidoabaixo),queutilizadopor
fornecedoreseprogramadoresparagerarsequnciasdecdigoededadosmaiscomplexos.

Cadaarquiteturadecomputadortemasuaprprialinguagemdemquina.Oscomputadoresdiferemnonmero
etipodeoperaesquesuportam,nosdiferentestamanhosenmerosderegistrosenasrepresentaesdos
dadosarmazenados.Enquantoamaioriadoscomputadoresdepropsitogeralsocapazesderealizar
essencialmenteamesmafuncionalidade,asformasdefazlodiferemAslinguagensdemontagem
correspondentesrefletemessasdiferenas.

Vriosconjuntosdemnemnicosousintaxedalinguagemassemblypodeexistirparaumnicoconjuntode
instrues,normalmenteinstanciadoemdiferentesprogramasassembler.Nestescasos,omaispopular
geralmenteaquelefornecidopelofabricanteeusadoemsuadocumentao.

Designdelinguagem
Elementosbsicos

Humgrandegraudediversidadenaformacomoosautoresdemontadorasclassificamasdeclaraesena
nomenclaturaqueelasusam.Emparticular,algunsdescrevemqualquercoisaquenosejaumamquina
mnemnicaoumnemnicaestendidacomoumapseudooperao(pseudoop).Umalinguagemdemontagem
tpicaconsisteem3tiposdeinstruoinstruesquesousadasparadefiniroperaesdeprograma:

opcodemnemnicos
Definiesdedados
Directivasdemontagem

Mnemnicosopcodeemnemnicosprolongados

https://en.wikipedia.org/wiki/Assembly_language 5/15
15/01/2017 LinguagemdemontagemWikipedia

Instrues(declaraes)emlinguagemassemblysogeralmentemuitosimples,aocontrriodaquelesem
linguagensdealtonvel.Geralmente,ummnemnicoumnomesimblicoparaumanicainstruoem
linguagemdemquinaexecutvel(umcdigodeoperao),ehpelomenosummnemnicoopcodedefinido
paracadainstruoemlinguagemdemquina.Cadainstruonormalmenteconsistedeumaoperaoou
opcodealmdezerooumaisoperandos.Amaioriadasinstruesserefereaumnicovalor,ouumparde
valores.Operandospodemserimediatos(valorcodificadonainstruopropriamentedita),registros
especificadosnainstruoouimplcitos,ouosendereosdedadoslocalizadosemoutrolugarno
armazenamento.Issodeterminadopelaarquiteturadeprocessadorsubjacente:omontadorsimplesmente
refletecomoessaarquiteturafunciona.Mnemnicosprolongadossomuitasvezesutilizadosparaespecificar
umacombinaodeumcdigodeoperaocomumoperandoespecfico,porexemplo,oSystem/360
montadoresusarBcomoummnemnicoestendidaparaBCcomumamscarade15eNOP("nenhumaoperao"
nofazemnadaparaumpasso)paraBCcomUmamscarade0.

Mnemnicosprolongadossomuitasvezesutilizadosparaapoiarusosespecializadosdeinstrues,muitas
vezesparafinsnobviasdonomedeinstruo.Porexemplo,muitasCPUnotmumainstruoNOP
explcita,mastminstruesquepodemserusadasparaessefim.Em8086CPUsainstruoutilizadopara,
comsendoumpseudocdigodeoperaoparacodificarainstruo.Algunsdisassemblersreconhecerissoe
vaidecodificarainstruocomo.Damesmaforma,montadoresIBMparaSystem/360eSystem/370usaros
mnemnicosestendidoseparaecomzeromscaras.ParaaarquitecturaSPARC,estessoconhecidoscomo
instruessintticos.[10]xchgax,axnopnopxchgax,axxchgax,axnopNOPNOPRBCBCR

Algumasmontadorastambmsuportamsimplesmacroinstruesembutidasquegeramduasoumais
instruesdamquina.Porexemplo,comalgunsmontadoresZ80ainstruoldhl,bcreconhecidoparagerar
ldl,cseguidoporldh,b.[11]Estessoporvezesconhecidoscomopseudocdigosdeoperao.

MnemnicossosmbolosarbitrriosEm1985,oIEEEpublicadaPadro694paraumconjuntouniformede
mnemnicosparaserusadoportodasasmontadoras.Anormafoidesdeentoretirada.

Directivasdedados

Existeminstruesusadasparadefinirelementosdedadosparaarmazenardadosevariveis.Elasdefinemo
tipodedados,ocomprimentoeoalinhamentodosdados.Estasinstruestambmpodemdefinirseosdados
estodisponveisparaprogramasexternos(programasmontadosseparadamente)ouapenasparaoprogramano
qualaseodedadosdefinida.Algunsmontadoresclassificamestescomopseudoops.

Directivasdemontagem

Asdiretivasdemontagem,tambmchamadasdepseudoopcodes,pseudooperaesoupseudoops,so
comandosdadosaummontador"direcionandoopararealizaroperaesquenosejaminstruesde
montagem".[4]directivasafectaraformacomoamontadoraoperae"podeafetarocdigoobjeto,tabelade
smbolos,oarquivodeperfil,eosvaloresdosparmetrosassemblerinternos."svezesotermopseudocdigo
deoperaoreservadoparaasdirectivasquegeramcdigoobjeto,comoaquelesquegeramdados.[12]

Osnomesdepseudoopscomeamfrequentementecomumpontoparadistinguilosdasinstruesdamquina.
Pseudoopspodefazeramontagemdoprogramadependentedeparmetrosdeentradaporumprogramador,de
modoqueumprogramapodesermontadomaneirasdiferentes,talvezparadiferentesaplicaes.Ou,um
pseudooppodeserusadoparamanipularaapresentaodeumprogramaparatornlomaisfcildelere
manter.Outrousocomumdepseudoopsreservarreasdearmazenamentoparadadosemtempodeexecuo
e,opcionalmente,inicializarseucontedoparavaloresconhecidos.

Montadoressimblicospermitirqueosprogramadoresassociarnomesarbitrrios(etiquetasousmbolos)com
posiesdememriaevriasconstantes.Normalmente,cadavarivelconstanteedadoumnometo
instruespodefazerrefernciaaesseslocaispelonome,promovendoassimocdigodeautodocumentado.
Nocdigoexecutvel,onomedecadasubrotinaestassociadoaoseupontodeentrada,demodoque
https://en.wikipedia.org/wiki/Assembly_language 6/15
15/01/2017 LinguagemdemontagemWikipedia

qualquerchamadaparaumasubrotinapodeusarseunome.Subrotinasdentro,GOTOdestinossodadas
etiquetas.Algumasmontadorasapoiarsmboloslocaisquesolexicallydistintodesmbolosnormais(por
exemplo,ousode"10$"comoumdestinoGOTO).

Algumasmontadoras,comoNASMfornecergerenciamentosmboloflexvel,programadoresdeixando
gerenciardiferentesnamespaces,calcularautomaticamentedeslocamentosdentrodeestruturasdedadose
atribuirrtulosquesereferemavaloresliteraisouoresultadodeclculossimplesrealizadospelamontadora.
Asetiquetastambmpodemserusadasparainicializarconstantesevariveiscomendereosrelocveis.

Linguagensdemontagem,comoamaioriadasoutraslinguagensdecomputador,permitemcomentriosaser
adicionadoaoprogramadecdigofontequeseroignoradosduranteamontagem.Comentriojudicioso
essencialemprogramasdelinguagemdemontagem,comoosignificadoeafinalidadedeumaseqnciade
instruesdemquinabinriapodeserdifcildedeterminar.Alinguagemassembly"raw"(uncommented)
geradaporcompiladoresoudesmontadoresbastantedifcildelerquandoasalteraesdevemserfeitas.

Macros

Muitasmontadorasapoiarmacrosprdefinidos,eoutrosapoiardefinidapeloprogramador(redefinvele
repetidamente)macrosqueenvolvemsequnciasdelinhasdetextoemqueasvariveiseconstantesso
incorporados.Estaseqnciadelinhasdetextopodeincluiropcodesoudiretivas.Umavezqueumamacro
tenhasidodefinida,seunomepodeserusadonolugardeummnemnico.Quandooassemblerprocessaessa
instruo,elasubstituiainstruopelaslinhasdetextoassociadasaessamacroeprocessaascomose
existissemnoarquivodecdigofonte(incluindo,emalgunsmontadores,aexpansodetodasasmacros
existentesnotextodesubstituio).MacrosnestedatasentidoIBMautocodersdadcadade1950.

Emlinguagemassembly,otermo"macro"representaumconceitomaisabrangentedoqueelefazemalguns
outroscontextos,comonalinguagemdeprogramaoC,ondeasuadirectiva#definenormalmenteusado
paracriarmacrosdelinhanicacurtas.Assemblerinstruesmacro,comomacrosemPL/Iealgumasoutras
lnguas,podeser"programas"longosporsis,executadospelainterpretaopelamontadoradurantea
montagem.

Umavezqueasmacrospodemternomes'curtos'masexpandirparavriasoumesmomuitaslinhasdecdigo,
elaspodemserusadasparatornarosprogramasdelinguagemdemontagemparecemsermuitomaiscurtos,
exigindomenoslinhasdecdigofonte,comoemlinguagensdenvelsuperior.Elestambmpodemserusados
paraadicionarnveismaisaltosdeestruturaaosprogramasdemontagem,opcionalmenteintroduzircdigode
depuraoincorporadoatravsdeparmetroseoutrosrecursossemelhantes.

Montadoresmacromuitasvezespermitemmacrosparatirarparmetros.Algunsmontadoresincluem
linguagensdemacrobastantesofisticadas,incorporandoelementosdelinguagemdealtonvelcomo
parmetrosopcionais,variveissimblicas,condicionais,manipulaodeseqnciaseoperaesaritmticas,
todosutilizveisduranteaexecuodeumadadamacroepermitindomacrosparasalvarocontextooutrocar
informaes.Assim,umamacropodegerarnumerosasinstruesdelinguagemdemontagemoudefiniesde
dados,combasenosargumentosdemacro.Issopoderiaserusadoparagerarestruturasdedadosdeestilode
registroouloops"desenrolados",porexemplo,oupoderiageraralgoritmosinteirosbaseadosemparmetros
complexos.Umaorganizaoqueusaumalinguagemdemontagemamplamenteestendidausandoumconjunto
demacrospodeserconsideradacomotrabalhandoemumalinguagemdenvelmaisalto,umavezqueesses
programadoresnoestotrabalhandocomoselementosconceituaisdenvelmaisbaixodeumcomputador.
Sublinhandoesteponto,asmacrosforamusadasparaimplementaruminciodemquinavirtualemSNOBOL4
(1967),quefoiescritonaSNOBOLimplementaodalinguagem(SIL),umalinguagemdemontagempara
umamquinavirtual,quefoientodirecionadosparamquinasfsicasportranspiledaumassemblernativa
atravsdeumassemblermacro.[13]Istopermitiuumelevadograudeportabilidadeparaotempo.

Asmacrosforamusadasparapersonalizarsistemasdesoftwareemgrandeescalaparaclientesespecficosna
eramainframeetambmforamusadaspelopessoaldoclienteparasatisfazerasnecessidadesdeseus
empregadores,fazendoversesespecficasdesistemasoperacionaisdefabricantes.Issofoifeito,porexemplo,
https://en.wikipedia.org/wiki/Assembly_language 7/15
15/01/2017 LinguagemdemontagemWikipedia

sistemasdeprogramadoresquetrabalhamcomIBMMachine'sConversationalMonitorSystem/Virtual(VM
/CMS)ecomodaIBM"operaodeprocessamentoemtemporeal"addons,CustomerInformationSystem
ControlCICSeACP/TPF,acompanhiaarea/sistemafinanceiroquecomeounadcadade1970eainda
corremuitosgrandessistemasdereservasporcomputador(CRS)esistemasdecartodecrditohoje.

Tambmpossvelusarapenasashabilidadesdeprocessamentomacrodeummontadorparagerarocdigo
escritoemcompletamentediferenteslnguas,porexemplo,paragerarumaversodeumprogramaemCOBOL
usandoumprogramaassemblermacropuroquecontmlinhasdecdigoCOBOLdentrooperadorestempode
montagemInstruindoomontadoragerarcdigoarbitrrio.IBMOS/360utilizamacrosparaexecutargerao
dosistema.Ousurioespecificaopescodificandoumasriedemacrosdoassembler.Montagemdesses
macrosgeraumfluxodetrabalhoparaconstruirosistema,incluindoalinguagemdecontroledetrabalhoe
utilitriodecontroledeclaraes.

Issoocorreporque,comofoipercebidonadcadade1960,oconceitode"processamentomacro"
independentedoconceitode"montagem",sendooprimeiroemtermosmodernosmaisprocessamentodetexto,
processamentodetextodoquegerandocdigoobjeto.Oconceitodeprocessamentodemacroapareceue
aparecenalinguagemdeprogramaoC,quesuporta"instruesdeprprocessador"paradefinirvariveise
fazertestescondicionaisemseusvalores.Notesequeaocontrriodeanterioresprocessadoresmacrodentro
montadores,oprprocessadorCnoTuringcompletoporquenotemahabilidadetantodeloopou"irpara",
esteltimopermitindoqueprogramasloop.

Apesardopoderdeprocessamentodemacro,caiuemdesusoemmuitaslinguagensdealtonvel(principais
exceessendoC/C++ePL/I)mantendoseumapereneparamontadoras.

Asubstituiodeparmetrosdemacroestritamentepornome:notempodeprocessamentodemacro,ovalor
deumparmetrotextualmentesubstitudoporseunome.Aclassemaisfamosadebugsresultantefoiousode
umparmetroqueporsiseraumaexpressoenoumnomesimplesquandooescritordemacroesperavaum
nome.Namacro:

Foo:macroa
Carregueum*b

Aintenoeraqueochamadorforneceriaonomedeumavarivel,eavarivel"global"ouconstantebseria
usadaparamultiplicar"a".Sefoochamadocomoparmetroac,aexpansomacrodeloadac*bocorrer.
Paraevitarqualquerambigidadepossvel,osusuriosdeprocessadoresdemacropodementreparnteses
parmetrosformaisdentrodedefiniesdemacro,ouchamadorespodemparnteseosparmetrosdeentrada.
[14]

Suporteparaprogramaoestruturada

Algumasmontadorastmincorporadodeprogramaoestruturadaelementosparacodificarofluxode
execuo.OmaisantigoexemplodestaabordagemestavanoConcept14setmacro,originalmenteproposto
peloDr.HarlanMills(Marode1970),eimplementadoporMarvinKesslernaDivisodeSistemasFederalda
IBM,queprorrogouoassemblermacroS/360comif/else/ENDIFeblocosdefluxodecontrolesimilares.
[15]EstafoiumamaneiradereduziroueliminarousodeGOTOoperaesnocdigodemontagem,umdos
principaisfatoresquecausamcdigoespagueteemlinguagemassembly.Estaabordagemfoiamplamente
aceitanoinciodosanos80(osltimosdiasdousodelinguagemassemblyemlargaescala).

UmprojetocuriosofoiAnaturais,umamontadorade"orientadaparaostream"para8080/Z80processadores
DeWhitesmithsLtd.(desenvolvedoresdoUnixcomoIdrissistemaoperacional,eoquefoirelatadoparasero
primeirocomercialCcompilador).Alinguagemfoiclassificadacomoummontador,porqueeletrabalhoucom
elementosdemquinascrus,comoopcodes,registroserefernciasdememriaMasincorporouumasintaxe
deexpressoparaindicaraordemdeexecuo.Osparnteseseoutrossmbolosespeciais,juntamentecom

https://en.wikipedia.org/wiki/Assembly_language 8/15
15/01/2017 LinguagemdemontagemWikipedia

construesestruturadasestruturadasporblocos,controlavamaseqnciadasinstruesgeradas.Anaturalfoi
construdocomoalinguagemdeobjetodeumcompiladorC,aoinvsdeparaamocodificao,massua
sintaxelgicaganhoualgunsfs.

Houvepoucademandaaparentepormontadorasmaissofisticadasdesdeodeclniododesenvolvimentode
linguagemdemontagememlargaescala.[16]Apesardisso,elesaindaestosendodesenvolvidoseaplicados
noscasosemqueaslimitaesderecursosoupeculiaridadesdaarquiteturadosistemadedestinoimpediro
usoeficazdelinguagensdealtonvel.[17]

Osmontadorescomummotordemacrofortepermitemaprogramaoestruturadaatravsdemacros,comoa
macrodecomutadorfornecidacomopacoteMasm32(notequeestecdigoumprogramacompleto):

Incluem\masm32\include\masm32rt.inc;UseabibliotecaMasm32

.cdigo
Demomnio
REPETIR20
Switchrv(nrandom,9);Gerarumnmeroentre0e8
Movecx,7
Caso0
Cpia"caso0"
Casoecx;Emcontrastecomamaioriadasoutraslinguagensdeprogramao,
Impresso"caso7";OparmetroMasm32permite"casosvariveis"
Caso1..3
.ifeax==1
Cpia"caso1"
.eseifeax==2
Cpia"caso2"
.outro
Imprimir"casos1a3:outros"
.fimse
Caso4,6,8
Impresso"casos4,6ou8"
Padro
Movebx,19;Impresso20estrelas
.Repetir
impresso"*"
Decebx
.Atosinal?;Atqueosinalizadoresteja
Termina
Imprimirchr$(13,10)
ENDM
Sair
Demomniofinal

Usodelinguagemassembly
Perspectivahistrica

Idiomasdemontagemeautilizaodapalavrademontagem,dataparaaintroduodocomputadorde
programaarmazenado.ODelaycalculadoraeletrnicaAutomaticStorage(EDSAC)teveummontador
chamadopedidosiniciaiscomumaletramnemnicosem1949.[18]SABO(ProgramadaAssembliaOptimal
simblico)foiumalinguagemdemontagemparaoIBM650computadorescritoporStanPoleyem1955.[19]

Linguagensassemblyeliminargrandeparteda,tediosoedemoradopropensoaerrosdeprimeiragerao
programaonecessriacomosprimeiroscomputadores,libertandoosprogramadoresdetdiocomolembrar
cdigosnumricosecalcularendereos.Elesjforamamplamenteutilizadosparatodosostiposde
programao.Noentanto,nadcadade1980(1990emmicrocomputadores),seuusotinhasidolargamente
suplantadoporlinguagensdealtonvel,nabuscadeumamelhorprodutividadedeprogramao.Hoje,o
linguagemdemontagemaindausadoparamanipulaodiretadehardware,acessoainstruesde
processadorespecializadasoupararesolverproblemascrticosdedesempenho.Osusostpicossodriversde
dispositivo,debaixonveldesistemasembarcadoseemtemporealdesistemas.

https://en.wikipedia.org/wiki/Assembly_language 9/15
15/01/2017 LinguagemdemontagemWikipedia

Historicamente,numerososprogramasforamescritosinteiramenteemlinguagemassembly.Sistemas
operacionaisforaminteiramenteescritoemlinguagemassemblyataintroduodoMasterControlProgram
(1961),quefoiescritoemSistemasExecutivoProblemOrientedLanguage(ESPOL),umdialetoAlgol.Muitos
aplicativoscomerciaisforamescritosemlinguagemdemontagem,bemcomo,incluindoumagrande
quantidadedemainframeIBMsoftwareescritoporgrandescorporaes.COBOL,FortranealgunsPL/I,
eventualmentedeslocadomuitodestetrabalho,emboraumnmerodegrandesorganizaesretido
infraestruturasdeaplicativosemlinguagemassemblybemnadcadade1990.

Amaioriadosprimeirosmicrocomputadoressebaseavanalinguagemdemontagemcodificadamanualmente,
incluindoamaioriadossistemasoperacionaisegrandesaplicativos.Issoocorreuporqueessessistemastinham
restriesseverasderecursos,impuserammemriaidiossincrticaearquiteturasdeexibioeforneceram
serviosdesistemalimitadosecombugs.Talvezmaisimportantefosseafaltadecompiladoresdeprimeira
classedelinguagemdealtonveladequadosparaousodemicrocomputadores.Umfatorpsicolgicotambm
podeterdesempenhadoumpapel:aprimeirageraodeprogramadoresdemicrocomputadoresreteveum
aficionado,"fiosealicates"atitude.

Emumcontextomaiscomercial,asmaioresrazesparaousodelinguagemdemontagemforammnima
inchao(tamanho),mnimasobrecarga,maiorvelocidadeeconfiabilidade.

ExemplostpicosdeprogramasemlinguagemassemblygrandesdestetemposoIBMPCDOSsistemase
inciodosaplicativosqueoperamcomoaplanilhaprogramaLotus123.Mesmonadcadade1990,amaioria
dosjogosdeconsoledevdeoforamescritosemconjunto,incluindoamaioriadosjogosparaoMegaDrive/
GenesiseaEntertainmentSystemSuperNintendo.DeacordocomalgunsEspecialistasdosetor,alinguagem
assemblyfoiamelhorlinguagemdeprogramaoparausarparaobteromelhordesempenhoforadoSega
Saturn,umconsolequeeranotoriamentedifceisdedesenvolverejogosdeprogramapara.[20]Ojogode
arcadaNBAJam(1993)outroexemplo.

Linguagemassemblytemsidoalinguagemdedesenvolvimentoprincipalparamuitoscomputadores
domsticospopularesdosanos1980e1990(comooMSX,SinclairZXSpectrum,Commodore64,
CommodoreAmigaeAtariST).Istofoiemgrandeparteporqueinterpretadosdialetosbsicassobreestes
sistemasoferecidosvelocidadedeexecuoinsuficiente,bemcomoinstalaessuficientesparatiraromximo
proveitodohardwaredisponvelnessessistemas.Algunssistemasaindatmumambientededesenvolvimento
integrado(IDE)comadepuraoaltamenteavanadaeinstalaesdemacro.

Usoatual

Semprehouvedebatessobreautilidadeeodesempenhodalinguagemassemblyemrelaoslnguasdealto
nvel.Alinguagemdemontagemtemusosdenichoespecficosondeimportanteverabaixo.Nondicetiobe
depopularidadelinguagemdeprogramao,actualmente(Novembrode2016)noRank9,frentede,por
exemplo,Swifterubi.[21]Assemblerpodeserusadoparaotimizaravelocidadeouotimizarparatamanho.No
casodeotimizaodevelocidade,modernoscompiladoresdeotimizaosoreivindicados[22]paratornar
linguagensdealtonvelemcdigoquepodecorrertorpidoquantoassemblyescritomo,apesardas
contraexemplosquepodemserencontrados.[23][24][25]Acomplexidadedeprocessadoresmodernosesub
sistemasdememriafazoptimizaoeficazescadavezmaisdifcilparacompiladores,bemcomo
programadoresdemontagem.[26][27]Almdisso,aumentandoodesempenhodoprocessadorfezcomquea
maioriadasCPUsficamociososnamaiorpartedotempo,[28]comosatrasoscausadosporestrangulamentos
previsveis,taiscomoerrosdecache,E/Soperaesepaginao.Issotornouavelocidadedeexecuode
cdigobrutaumnoproblemaparamuitosprogramadores.

Existemalgumassituaesemqueosdesenvolvedorespodemoptarporusarlinguagemassembly:

Umexecutvelautnomodetamanhocompactonecessrioquedeveexecutarsemrecursoaosruntime
componentesoubibliotecasassociadascomumalinguagemdealtonvelEstatalvezasituaomais

https://en.wikipedia.org/wiki/Assembly_language 10/15
15/01/2017 LinguagemdemontagemWikipedia

comum.Porexemplo,firmwareparatelefones,sistemasdecombustveleigniodeautomveis,
sistemasdecontroledearcondicionado,sistemasdeseguranaesensores.
Cdigoquedeveinteragirdiretamentecomohardware,porexemplo,driversdedispositivoe
manipuladoresdeinterrupo.
EmumprocessadorincorporadoouDSP,interrupesdealtarepetioexigemomenornmerode
ciclosporinterrupo,comoumainterrupoqueocorre1000ou10000vezesporsegundo.
Programasqueprecisamusarinstruesespecficasdoprocessadornoimplementadasemum
compilador.Umexemplocomumarotaobitabitdeinstruesnoncleodemuitosalgoritmosde
codificao,bemcomoconsultandoaparidadedeumbyteouotransportedeumaadiode4bits.
Programasquecriamfunesvetorizadasparaprogramasemlinguagensdealtonvel,comoC.Na
linguagemdealtonveleste,porvezesauxiliadosporcompiladorfunesintrnsecasquemapeiam
diretamenteparamnemnicosSIMD,mas,noentanto,resultaremumaconversodeumparaum
conjuntoespecficoParaoprocessadorvectorialdado.
Programasquerequeremotimizaoextrema,porexemplo,uminteriordeloopemumalgoritmode
processamentointensivo.Programadoresdejogostirarpartidodascapacidadesdosrecursosdehardware
emsistemas,permitindoaosjogosparacorrermaisrpido.Tambmgrandessimulaescientficas
exigemalgoritmosaltamenteotimizadas,porexemplo,algebralinearcomBLAS[23][29]ou
transformaodecosenodiscreta(porexemploSIMDversodemontagemdex264[30])
Situaesemquenoexistelinguagemdealtonvel,numprocessadornovoouespecializado,por
exemplo.
Programasquenecessitamdetempopreciso,como
emtemporealprogramascomosimulaes,ossistemasdenavegaodevoeequipamentos
mdicos.Porexemplo,emumflybywiresistemadetelemetriadevemserinterpretadasepostas
emprticadentroderestriesdetempoestritas.Taissistemasdevemeliminarasfontesdeatrasos
imprevisveis,quepodemsercriadospor(alguns)interpretoulnguasautomticasdecoletadelixo
,operaesdepaginao,oumultitarefapreemptiva.Noentanto,algumaslinguagensdenvel
superiorincorporamcomponentesemtempodeexecuoeinterfacesdesistemaoperacionalque
podemintroduzirtaisatrasos.Escolhendolinguagensdemontagemoudenvelinferiorparaesses
sistemasdaosprogramadoresmaiorvisibilidadeecontrolesobredetalhesdeprocessamento.
algoritmoscriptogrficosquedevemtersemprerigorosamenteomesmotempoparaexecutar,
impedindoataquesdetemporizao.
ModifiqueeestendaocdigoherdadoescritoparacomputadoresmainframeIBM.[31]
Situaesondenecessrioocontrolecompletosobreoambiente,emsituaesextremamenteelevados
desegurana,ondenadapodeserdadocomocerto.
Osvrusdecomputador,bootloaders,algunsdriversdedispositivo,ououtrositensmuitopertodo
hardwareoudosistemaoperacionaldebaixonvel.
Simuladoresdeconjuntodeinstruesparaamonitorizao,detecoedepuraodecima,onde
adicionalreduzidoaomnimo
Reversoengenhariaedeprogramasdemodificaodearquivos,taiscomo
existentesbinriosquepodemounotersidooriginalmenteescritosemumalinguagemdealto
nvel,porexemplo,quandotentarrecriarprogramasparaosquaisocdigofontenoest
disponveloufoiperdido,oufissuras,proteocontracpiadesoftwareproprietrio.
Jogosdevdeo(tambmdenominadoROMhackers),quepossvelatravsdevriosmtodos.O
mtodomaisutilizadoalterarocdigodoprogramaemnveldelinguagemassembly.
Automodificarocdigo,aoquallinguagemassemblyprestasebem.
Jogoseoutrossoftwaresparacalculadorasgrficas.[32]

Linguagemassemblyaindaensinadanamaioriacinciadacomputaoedeengenhariaelectrnica
programas.Emboraalgunsprogramadoreshojetrabalhemregularmentecomalinguagemdemontagemcomo
umaferramenta,osconceitossubjacentespermanecemmuitoimportantes.Taistemasfundamentaiscomoa
aritmticabinria,alocaodememria,processamentodepilha,conjuntodecaracteresdecodificao,
interrupodeprocessamento,ecompiladorprojetoseriadifcildeestudaremdetalhe,semumacompreenso
decomoumcomputadoroperanonveldohardware.Desdequeocomportamentodeumcomputador
definidofundamentalmenteporseujogodeinstruo,amaneiralgicadeaprendertaisconceitosestudar
umalinguagemassembly.Amaioriadoscomputadoresmodernostmconjuntosdeinstruessemelhantes.
Portanto,estudarumanicalinguagemdemontagemsuficienteparaaprender:I)osconceitosbsicosII)
reconhecersituaesemqueousodelinguagemassemblypodeserapropriadoEIII)paravercomoocdigo
https://en.wikipedia.org/wiki/Assembly_language 11/15
15/01/2017 LinguagemdemontagemWikipedia

executveleficientepodesercriadoapartirdelinguagensdealtonvel.[33]Istoanlogoacrianasque
necessitamdeaprenderasoperaesaritmticasbsicas(porexemplo,adivisolonga),emboracalculadoras
soamplamenteutilizadosparatodos,excetoosclculosmaistriviais.

Asaplicaestpicas
Linguagemassemblynormalmenteusadoemumsistemadeinicializaodecdigo,ocdigodebaixo
nvelqueinicializaetestaohardwaredosistemaantesdainicializaodosistemaoperacionalemuitas
vezesarmazenadosemROM.(BIOSnoIBMcompatvelcomPCesistemasCP/Mumexemplo.)
Algunscompiladorestraduzemlinguagensdealtonvelemconjuntoantesdetotalmentecompilao,
permitindoqueocdigodemontagemparaservistoparadepuraofinseotimizao.
Relativamentelinguagensdebaixonvel,comoC,permitirqueoprogramadorparaincorporar
linguagemassemblydiretamentenocdigofonte.Osprogramasqueutilizamessasinstalaes,comoo
kerneldoLinux,podeentoconstruirabstraesusandolinguagemassemblydiferenteemcada
plataformadehardware.Osistemaporttildecdigopodeusaressescomponentesespecficosdo
processadoratravsdeumainterfaceuniforme.
Linguagemassemblytilemengenhariareversa.Muitosprogramassodistribudosapenasemforma
decdigodemquina,quesimplesdetraduziremlinguagemdemontagem,masmaisdifcilde
traduzirparaumalinguagemdenvelsuperior.FerramentascomooDisassemblerinteractivofazemuso
extensivodedesmontagemparatalfinalidade.Estatcnicausadaporhackersparacracksoftware
comercial,eosconcorrentesparaproduzirsoftwarecomresultadossemelhantesdeempresas
concorrentes.
Alinguagemdemontagemusadaparaaumentaravelocidadedeexecuo,especialmentenos
primeiroscomputadorespessoaiscompoderdeprocessamentolimitadoeRAM.
Osmontadorespodemserusadosparagerarblocosdedados,semsobrecargadelinguagemdealtonvel,
decdigofonteformatadoecomentado,paraserusadoporoutrocdigo.

Listademontadorasparadiferentesarquiteturasdecomputadores
Maisdetalhes
Paraqualquercomputadorpessoal,mainframe,sistemaembutidoeconsoladejogos,tantonopassadocomono
presente,pelomenosumpossivelmentedezenasdemontadoresforamescritos.Paraalgunsexemplos,vera
listademontadores.

NoUnixsistemas,omontadortradicionalmentechamadocomo,emboranosejaumnicocorpodecdigo,
sendogeralmenteescritodenovoparacadaporta.UmnmerodevariantesdeUnixusaroGNUAssembler,
chamadode"como"ou"gs",queumcrossassemblerparamuitossistemasdeacolhimentoemuitosalvos.

Dentrodegruposdeprocessadores,cadamontadortemseuprpriodialeto.svezes,algumasmontadoras
podelerdialetodeoutramontadora,porexemplo,TASMpodelervelhoMASMcdigo,masnooinverso.
FASMeNASMtmsintaxesemelhante,mascadasuportardiferentesmacrosquepoderiamtornlosdifceis
detraduzirparaooutro.Osconceitosbsicossotodosiguais,masosrecursosavanadosserodiferentes.[34]

Almdisso,amontagempodesvezesserporttilatravsdediferentessistemasoperacionaisnomesmotipo
deCPU.Convenesdechamadaentreossistemasoperacionaismuitasvezesdiferemligeiramenteounoem
todos,ecomcuidado,possvelganharalgumaportabilidadeemlinguagemassembly,geralmenteligandocom
umCbibliotecaquenomudaentreossistemasoperacionais.Umconjuntodeinstruessimuladorpode
processarocdigodeobjeto/binriodequalquermontadoraparaatingiraportabilidademesmoatravsde
plataformascomumasobrecarganosuperiorauminterpretadorbytecodetpico.Issosemelhanteaousode
microcdigoparaalcanaracompatibilidadeentreafamliadeprocessadores.

Algumaslinguagensdecomputadormaiselevadonvel,comoCeBorlandPascal,suportedemontagemem
linhaondeasseesdecdigodemontagem,naprticageralmentebreves,podemserincorporadosnocdigo
delinguagemdealtonvel.OForthlinguagemcomumentecontmummontadorusadoempalavrasdecdigo.
https://en.wikipedia.org/wiki/Assembly_language 12/15
15/01/2017 LinguagemdemontagemWikipedia

Umemuladorpodeserusadoparaprogramasemlinguagemassemblydedepurao.

Vejatambm
Compilador
Desmontagem
Segmentodedados
Hexadecimal
Mordidela
Montagemdealtonvel
Conjuntodeinstrues
Cdigodeespaguete
ComputadorHomempequenoummodelodecomputadoreducacionalcomumalinguagemassembly
base10
Linguagemdemontagemdigitada

Referncias

1.linguagemAssembler(http://www01.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.asma40
0/asmr102112.htm),centrodeConhecimentoIBM
2.Saxon,JamesPlette,William(1962).Msgstr"ProgramaodoIBM1401".PrenticeHall.LoC6220615.[usodo
termoprogramademontagem]
3.(JohnDaintith,ed.)ADictionaryofComputing:"metaassembler"(http://www.encyclopedia.com/doc/1O11metaasse
mbler.html)
4.DavidSalomon(1993).Montadorasecarregadeiras(http://www.davidsalomon.name/assem.advertis/asl.pdf)
5.Beck,LelandL.(1996)."2".SoftwaredeSistema:UmaIntroduoProgramaodeSistemas.AddisonWesley.
6.Hyde,Randall."Captulo12ClasseseObjetos".Aartedalinguagemdemontagem,2aedio.NoStarchPress.
2010.
7.Manual,Volume2daIntelArchitectureSoftwareDeveloper:InstructionSetReference(PDF).IntelCorporation.
1999.Retirado18dedeNovembrode2010.
8.Manual,Volume2daIntelArchitectureSoftwareDeveloper:InstructionSetReference(PDF).IntelCorporation.
1999.pp.442e35.Retirado18dedeNovembrode2010.
9.Evans,David(2006)."Guiademontagemx86".UniversityofVirginia.Retirado18dedeNovembrode2010.
10."OManualSPARCArquitectura,Verso8"(PDF).SPARC,Internacional.1992.
11.cdigosZ80OpparaZINT(http://www.z80.de/z80/z80code.htm).Z80.de.Obtidoem20130721.
12.MicrosoftCorporation."MASM:directivasePseudoOpcodes"(PDF).Retirado19dedeMarode,2011.
13.Griswold,RalphE.AImplementaoMacrodeSNOBOL4.SanFrancisco,CA:WHFreemanandCompany,1972
(ISBN0716704471),Captulo1.
14."Macros(C/C++),MSDNLibraryparaVisualStudio2008".MicrosoftCorp.Retirado2010/06/22.
15."Conceito14Macros".SoftwareMVS.RetiradodeMaiode25de,2009.
16.Answers.com."linguagemassembly:DefinioemuitomaisdeAnswers.com".Retirado2008/06/19.
17.Provinciano,Brian."NESHLA:Oaltonvel,OpenSource,6502AssemblerparaoNintendoEntertainmentSystem".
18.Salomon.MontadoreseCarregadores(PDF).P.7.Retirado2012/01/17.
19."AIBM650TamborMagnticoCalculator".Retirado2012/01/17.
20.deEidolonInn:SegaBaseSaturn(http://www.eidolonsinn.net/tikiindex.php?page=SegaBase+Saturn)
21."ndiceTIOBEdenovembro2016".Retirado2016/11/11.
22.Rusling,DavidA."TheLinuxKernel".RetiradoMar11,2012.
23."Escrevendoocdigomaisrpido,mo,paraodivertimento:umcomputadorhumanoMantmAcelerarfritas".
NewYorkTimes,JohnMarkoff.20051128.Retirado2010/03/04.
24."Bitfieldmaldade".Hardwarebug.org.20100130.Arquivadodooriginalem05defevereirode2010.Retirado
2010/03/04.
25."GCCfazumabaguna".HardwareBug.org.20090513.Arquivadodooriginalem16demarode2010.Retirado
2010/03/04.
26.RandallHyde."OGrandeDebate".Arquivadodooriginalem16dejunhode2008.Retirado2008/07/03.
27."Cdigosourceryfalharnovamente".Hardwarebug.org.20100130.Arquivadodooriginalem02deabrilde2010.
Retirado2010/03/04.
28.Clique,Cliff."UmCursoBaternohardwaremoderno".Retirado1deMaiode,2014.
29."BLASbenchmarkAugust2008".Eigen.tuxfamily.org.20080801.Retirado2010/03/04.
https://en.wikipedia.org/wiki/Assembly_language 13/15
15/01/2017 LinguagemdemontagemWikipedia

30."x264.git/common/x86/DCT32.asm".Git.videolan.org.20100929.Retirado2010/09/29.
31."Captulo1PorqueestudarAssemblyLanguage".www.edwardbosworth.com.Retirado2016/06/01.
32."Programao68KemFargoII".Arquivadodooriginalem02dejulhode2008.Retirado2008/07/03.
33.Hyde,Randall(1996/09/30)."Prefcio("Porquealgumiriaaprenderessascoisas?"),Op.Cit.".Arquivadodo
originalem25demarode2010.Retirado2010/03/05.
34.RandallHyde."QualAssembleromelhor?".Arquivadodooriginalem18Outubro2007.Retirado2007/10/19.

Almdissoleitura
Yurichev,Dennis,"UmaIntroduoEngenhariaReversaparaIniciantes".Livroonline:
http://yurichev.com/writings/RE_for_beginnersen.pdf
ASMcomunidadedolivro(https://web.archive.org/web/20130602003436/http://www.asmcommunity.net/
book/)"UmlivroonlinecheiodetilinformaesASM,tutoriaiseexemplosdecdigo"pela
ComunidadeASM,arquivadosnoarquivodeinternet.
JonathanBartlett:Programaodaterraacima(https://web.archive.org/web/20110708061040/http://pro
gramminggroundup.blogspot.com/).BartlettPublishing,2004.ISBN0975283847
TambmdisponvelonlineemformatoPDF(http://download.savannah.gnu.org/releasesnoredirect/pgub
ook/ProgrammingGroundUp10booksize.pdf)
RobertBritton:ProgramaoMIPSAssemblyLanguage.PrenticeHall,2003.ISBN0131420445
PaulCarter:PCAssemblyLanguage.Ebooklivre,2001.
Site(https://web.archive.org/web/20051124110958/http://www.drpaulcarter.com:80/pcasm/)
JeffDuntemann:AssemblyLanguagePassoaPasso.Wiley,2000.ISBN0471375233
RandallHyde:TheArtofAssemblyLanguage.NoStarchPress,2003.ISBN1886411972
Asversespreliminaresdisponveisonline(http://www.plantationproductions.com/Webster/www.artof
asm.com/index.html)emformatoPDFeHTML
CharlesW.Kann:IntroduoProgramaoMIPSAssemblyLanguage(https://web.archive.org/web/20
160304070400/http://cupola.gettysburg.edu/cgi/viewcontent.cgi?article=1001&context=oer).2015.
PeterNorton,JohnSocha,LivrodeLinguagemAssemblydePedroNortonparaoIBMPC,Brady
Books,NY:1986.
MichaelCantor,PDP11.AssemblerLinguagemdeProgramaoeOrganizaomquina,JohnWiley
&Sons,NY:1980.
DominicSweetman:VerMIPSRun.MorganKaufmannPublishers,1999.ISBN1558604103
JohnWaldron:IntroduoProgramaoRISCAssemblyLanguage.AddisonWesley,1998.ISBN0
201398281

Ligaesexternas
ProgramaodelinguagemdemontagemUnix(http://www.int80h.org/)
LinuxAssembly(http://asm.sourceforge.net/)
PPR:AprendendoaLinguagemdeMontagem(http://c2.com/cgi/wiki?LearningAssemblyLanguage)
NASMONetwideAssembler(umpopularassemblylanguage)(http://www.nasm.us/)
Exemplosdeprogramaodelinguagemdemontagem(http://www.azillionmonkeys.com/qed/asmexamp
le.html)
CriaodeaplicativosdoWindowsnoidiomadoassembly(https://web.archive.org/web/2005112501050
5/http://grc.com:80/smgassembly.htm)
AssembliaOptimizationDicas(http://mark.masmcode.com/)porMarkLarson
TheArtofAssemblyLanguage(http://www.plantationproductions.com/Webster/www.artofasm.com/Wi
ndows/HTML/AoATOC.html)porRandallHyde

Retiradode"https://en.wikipedia.org/w/index.php?title=Assembly_language&oldid=757020910"

Categorias: Linguagensdemontagem Implementaodalinguagemdeprogramao


Linguagensdeprogramaocriadasem1949 Software1949 Introduoacomputadoresem1949

https://en.wikipedia.org/wiki/Assembly_language 14/15
15/01/2017 LinguagemdemontagemWikipedia

Estapginafoimodificadapelaltimavezem28dedezembrode2016,s08:11.
OtextoestdisponvelsobaLicenaCreativeCommonsAtribuioCompartilhamentopelamesma
Termosadicionaispodemseraplicados.Aoutilizarestesite,vocconcordacomosTermosdeUsoe
PolticadePrivacidade.WikipdiaumamarcacomercialregistradadaWikimediaFoundation,Inc.,
umaorganizaosemfinslucrativos.

https://en.wikipedia.org/wiki/Assembly_language 15/15

Vous aimerez peut-être aussi