Argentina   Brasil   Chile   Costa Rica   España   India   México   Perú   United Kingdom   United States   Venezuela
Boonic  
Buscar en Boonic 
 
 
Linguagem de montagem
Compartilhar     Comentários     Páginas Relacionadas     Artigos Relacionados


Uma linguagem de montagem ou assembly é uma notação legível por humanos para o código de máquina que uma arquitectura de computador específica usa. A linguagem de máquina, que é um mero padrão de bits, torna-se legível pela substituição dos valores em bruto por símbolos chamados mnemônicos.

Por exemplo, enquanto um computador sabe o que a instrução-máquina IA-21 (10110000 01100001) faz, para os programadores é mais fácil recordar a representação equivalente em intruções mnemônicas MOV AL, 61h. Tal instrução ordena que o valor hexadecimal 61 (97, em decimal) seja movido para o registrador AL.

Ao contrário do que acontece nas linguagens de alto nível, existe (até certo ponto) uma correspondência de 1 para 1 entre a linguagem de montagem simples e a linguagem de máquina. Por isso a tradução do código de montagem em código de máquina não é chamada compilação, mas montagem. Consegue-se transformar a linguagem de montagem em linguagem de máquina recorrendo a um montador (também chamado assembler, originado do termo em inglês), e a transformação inversa faz-se recorrendo a um desmontador (também chamado disassembler, originado do termo em inglês).

Cada arquitectura de computador tem a sua própria linguagem de máquina e, portanto, sua própria linguagem de montagem. Essas linguagens de montagem diferem no número e tipo de operações que suportam. Também têm diferentes tamanhos e números de registos, e diferentes representações dos tipos de dados armazenados. Enquanto todos os computadores de utilização genérica são capazes de desempenhar essencialmente as mesmas funções, o modo como o fazem é diferente.

Além disso, podem existir conjuntos múltiplos de mnemónicas, ou sintaxes de linguagem de montagem, para um único conjunto de instruções. Nestes casos, o conjunto mais popular é aquele que é utilizado pelo fabricante na sua documentação.

A maioria dos processadores só consegue manipular os dados que estão em registradores e a linguagem de montagem facilita o trabalho direto com os registradores.

Hoje existem duas arquiteturas no mercado. Primeiro a IA32 , criada pela Intel em 1985 e primeiramente utilizada pelo processadores i386 e segundo a IA32-EM64T (ou IA32-AMD64 ) criada em 2002 pela AMD (Mas tambem utilizida pela Intel hoje). O IA32 utiliza o grupo de instruções chamado x86, e o IA32-EM64T utiliza o grupo chamado x86-64. As duas arquiteturas usam numeros diferentes de registradores gerais e tamanho. Enquanto os registradores do x86 são 32 bits os da x86-64 são 64 bits.

Os registradores de uso geral da arquitetura x86 são:

Os registradores de uso geral da arquitetura x86-64 são:

...), em que cada registrador desempenhava um papel específico. Na arquitetura i386, todos eles são de uso geral, embora eles continuem a poder ser utilizados em seus papéis tradicionais.

A arquitetura IA32 ainda apresenta os registradores de segmento CS, DS, ES, SS, FS e GS, um contador de programa EIP, um registro de sinalizadores EFLAGS, 8 registradores de ponto flutuante e seus sinalizadores associados. Existem também registradores utilizados pelo sistema operacional para controle da execução em modo protegido, bem como outros registradores de uso específico (depuração, controle de desempenho, etc.).

,eax
7C90EC5C   mov         eax,esp
7C90EC5E   push        eax
7C90EC5F   call        7C90EBAC
LOOP:LARP    AR1LRLK    AR1,apontadorADRK    TAMANHO_CONSTANTEADRK    fimcon_rxLAC     *       BZ      NAOPASSARAM10MS    ;ZACSACL    *LARP    AR1LRLK    AR1,apontador+CONSTANTE_AADRK    controleLAC     *       BZ      LOOP            ;NAO DECORRIDO TEMPO: FICA NO LOOP
NAOPASSARAM10MS:SACL    *LARP    AR1B       LOOP
LOOP:mvmm    ar1,ar3         ;move conteúdo de ar1 para ar3rpt     #10             ;repetemvdd    *ar3+,*ar5+     ;move word endereçada por ar1 para pos. end. por ar6
;Instruçoes com acumulador:STM     #1000h,AR1      ;load ar1 with konstant 1000h LD      #0,A            ;zera o acumulador STL     A,*AR1          ;store accumulator low LD      #1,A            ;load accumulator with short konstant "1" STL     A,*AR1          ;store accumulator low at (addresses by ar1) LD      #65535,A        ;load accumulator with long konstant "65535" STL     A,10            ;store accumulator low at address 10 STH     A,10            ;store accumulator high at address 10 STL     A,*AR1          ;store accumulator low at (addresses by ar1) STH     A,*AR1          ;store accumulator high at (addresses by ar1) 
;Instruções com registradores auxiliares:STM     #1,AR1          ;load ar1 with konstant "1" STM     #2,AR0          ;load ar0 with konstant "2" MAR     *AR1+0          ;add content of ar0 to ar appointed by arp (1) MVDK    256,*(AR2)      ;load ar2 with content of address 256 MAR     *AR1+           ;increase ar appointed by arp (1) MVKD    *(AR2),256      ;store content of ar2 at address 256 MAR     *AR1-           ;decrease ar appointed by arp (1) 
;Instruções de teste de bit:BITF    *AR1,#128       ;TESTA BIT D7 BC      caca,NTC        ;branch to caca if bit==0 MAR     *AR1+           ;increase ar appointed by arp (1) 
caca:MAR     *+AR4(-128)     ;sbrk      80h
*Instruções de manipulação de ponteiros: 
* mvdm transforma arn no ponteiro(VETOR_AL):mvdm    *(VETORAL),ar1  ;move conteúdo da memória apontada para o ar
* mvmd restaura ponteiro(VETORAL) de acordo com arn:mvmd    ar1,*(VETORAL)  b       LOOP


Principais linguagens de programação (outras)

Linguagens históricas
ALGOL - Assembly - B - BASIC - BCPL - Clipper - COBOL - Fortran - Modula - Simula
Linguagens acadêmicas
Pascal - Prolog - Haskell - Lisp - Logo - OCaml
Linguagens comerciais
ABAP - Ada - AWK - C - C++ - C# - C? - COBOL - ColdFusion - Delphi - Eiffel - Fortran - Lisp - MUMPS - PowerBuilder - Smalltalk - SQL - Visual Basic
Linguagens livres
Euphoria - Java - JavaScript - Lua - Perl - PHP - Python - Ruby - Shell script - Tcl

 


Este artigo está licenciado sob a GNU Free Documentation License. É uma adaptação do artigo da Wikipédia "Linguagem de montagem".



   Tags: linguagem, montagem,

 
 

Compartilhar

 
 

Enviar Comentário

 

 
 

Páginas Relacionadas

montagem manutencao | outros materiais | da linguagem | linguagem computador | a linguagem | linguagem das | filosofia da | linguagem coloquial | uso coloquial | linha montagem |
 
 

 
 
Baias Para Lan House / Telemarketing / Call Center/ Cybercaf
Baias Para Lan House / Telemarketing / Call Center/ Cybercaf

R$ 80.00
2 Cds Papel Arroz +5.000 Imagens +  Dvd Montagem,
2 Cds Papel Arroz +5.000 Imagens + Dvd Montagem,

R$ 29.90
Mascaras Prontas Para Montagem De Foto Livro
Mascaras Prontas Para Montagem De Foto Livro

R$ 84.90
Micro Transmissor Fm - Spy 400 Metros - Kit Para Montagem
Micro Transmissor Fm - Spy 400 Metros - Kit Para Montagem

R$ 20.00
Arara Luxo Secalux Branca Com Rodinhas E Ajuste De Tamanho !
Arara Luxo Secalux Branca Com Rodinhas E Ajuste De Tamanho !

R$ 69.00
Exceptional Fios De Coral Para Montagem
Exceptional Fios De Coral Para Montagem

R$ 10.00
Outras Pedras | Semi - Jóias | Outras Pedras | Pérolas | Outros | Outros Materiais | Outras Pedras | Outros | Madrepérolas | Astrologia | Até R13 | Lingüística | Outros Materiais | Outros | Outros | Outros | Pedagogia | Fundamental | Outras Pedras | Cristais |