Você está na página 1de 18

Arquitetura de Computadores

Cursos: Tecnologia em Análise e Desenvolvimento de Sistemas


e Tecnologia em Redes de Computadores
1o¯ Semestre
2019.1

Prof. Werton Araujo


Linguagem de montagem

• Código de máquina
• Linguagem de montagem
• Mnemônicos
• Outros símbolos
• Tradutor, montador e compilador
• Tipos de montadores
• Vantagens da linguagem de montagem
• Vantagens das linguagens de alto nível
Linguagem de montagem (cont.)

• Conjunto de instruções (Zilog Z80)


• Registradores (Zilog Z80)
• Exemplo de código de montagem (Zilog Z80)
• Registradores (Intel 80386)
• Exemplo de código de montagem (Intel 80386)
Código de máquina

• O código de máquina consiste nas instruções que um pro-


cessador executa.
• As instruções são sequências de bits cujo tamanho de-
pende da arquitetura do processador (8 bits, 16 bits, 32 bits,
64 bits, 128 bits etc.).
• As instruções residem na memória principal (RAM) do sis-
tema, e são lidas (fetched) pelo processador para que este
as execute.
• Por ser formado por sequências de bits, o código de máquina
não é facilmente manipulado pelo ser humano.
Código de máquina (cont.)

• Qual a representação de código de máquina mais fácil de se


trabalhar?
a) 10110000 01100001
b) B0 61
c) MOV AL, 97 ; Carregue AL com 97 decimal (61 hexa)
Linguagem de montagem

• A linguagem de montagem (assembly language) é uma re-


presentação do código de máquina que o torna mais aces-
sível ao ser humano.
• É uma linguagem de baixo nível, possibilitando ao progra-
mador o acesso a todos os recursos de um processador.
• Da mesma maneira que o código de máquina, a linguagem
de montagem é específica a uma determinada arquitetura
de processador.
• Cada linha de um programa em linguagem de montagem
normalmente corresponde a uma instrução do processador.
Mnemônicos

• Os mnemônicos são palavras ou abreviações de palavras


da língua inglesa, e são usados para representar os códigos
de operação (opcodes) das instruções de um processador.
• Além dos opcodes, os mnemônicos também são usados para
representar os registradores de um processador.
• Exemplos de mnemônicos:
a) Opcodes: ld, mov, inc, dec, add, sub, and, or, cmp,
push, pop, jmp, call, ret, halt etc.
b) Registradores: a, b, c, hl, ix, sp, eax, ebx, ecx, edx, ebp,
esp, esi, edi, eip etc.
Outros símbolos

• Além dos mnemônicos, a linguagem de montagem utiliza ou-


tros símbolos para representar os operandos (caso existam)
de uma instrução:
a) Valores numéricos em diversas bases: 27 (decimal), 0c9h
(hexadecimal), 11001000b (binário), 310q (octal) etc.
b) Caracteres: ‘c’, “Hello world” etc.
c) Rótulos (labels): start, loop, done, error etc.
d) Outros modos de endereçamento: (4000h), (hl), (ix + 56),
[esi], [ebp + 16] etc.
Tradutor, montador e compilador

• Um tradutor é um programa que converte um código escrito


em uma linguagem fonte para uma linguagem alvo.
• Um montador (assembler ) é um tradutor onde a linguagem
fonte é a linguagem de montagem e a linguagem alvo é a
linguagem (ou código) de máquina.
• Um compilador é um tradutor onde a linguagem fonte é uma
linguagem de alto nível (C, C++, Java, C# etc.) e a lingua-
gem alvo é a linguagem (ou código) de máquina.
• Alguns compiladores podem gerar código em linguagem mon-
tadora como uma etapa intermediária.
Tipos de montadores

• Macro montador (macro assembler ): possui um recurso


chamado macro, em que um trecho de linguagem de mon-
tagem pode ser representado por um nome.
• Montador cruzado (cross assembler ): roda em um compu-
tador ou sistema operacional de um tipo diferente daquele
em que o código de máquina gerado será executado.
• Montador de alto nível (high-level assembler ): provê abs-
trações normalmente associadas com linguagens de alto ní-
vel (if/then/else, estruturas etc.).
Vantagens da linguagem de montagem

• O código de máquina gerado é tipicamente mais rápido e


mais compacto, permitindo um uso mais eficiente do pro-
cessador.
• O programador tem acesso direto a todos os recursos do
hardware, sem depender das limitações impostas por uma
linguagem de alto nível ou por um sistema operacional.
• Programar em linguagem de montagem aprofunda os co-
nhecimentos relativos ao funcionamento dos computadores,
mesmo que não seja necessário fazê-lo profissionalmente.
Vantagens das linguagens de alto nível

• As linguagens de alto nível são mais próximas das lingua-


gens naturais, permitindo que o programador se concentre
no problema a ser resolvido.
• O código em alto nível é portável, ou seja, pode ser compi-
lado para ser executado em processadores de arquiteturas
bastante diferentes.
• A depuração de programas é bem menos tediosa e propensa
a erros que na linguagem de montagem, aumentando a pro-
dutividade do programador.
Conjunto de instruções (Zilog Z80)
• Operações lógicas e aritméticas com 8 bits
• Operações aritméticas com 16 bits
• Carregamento de registradores de 8 bits
• Carregamento de registradores de 16 bits
• Ligar, desligar e testar bit
• Chamar rotina, retornar e reiniciar
• Troca de registradores, transferência em bloco e busca
• Aritmética de propósito geral e controle da CPU
• Entrada e saída
• Saltos
• Rotação e deslocamento
Registradores (Zilog Z80)
Exemplo de código de montagem (Zilog Z80)
Registradores (Intel 80386)
Exemplo de código de montagem (Intel 80386)
Até a próxima aula!

Você também pode gostar