Aula 18 - Professor Diovani

Propaganda
Arquitetura e organização de
computadores
Programação em linguagem assembly
continuação
Aula 18
Prof. Diovani Milhorim
Linguagem assembly
 Os componentes da linguagem Assembly
Os componentes da linguagem Assembly são basicamente as
instruções para o processador. os componentes da linguagem
Assembly podem ser divididos nas seguintes categorias:









Instruções de registradores
Instruções de pilha
Instruções de execução
Instruções de memória
Instruções de flag
Declarações de memória
Diretivas para o assembler
Comentários
Instruções para o sistema operacional (Windows)
Linguagem assembly
Instruções de registradores
Estas instruções transferem dados ou realizam cálculos utilizando os
registradores de 32 bits da CPU. Existem seis registradores de uso geral
chamados de EAX, EBX, ECX, EDX, ESI e EDI. Exemplos deste tipo de
instrução são:
Linguagem assembly
Instruções de pilha
A pilha é uma área de memória reservada pelo sistema operacional como
área de arquivamento temporário para cada programa que estiver rodando.
São exemplos deste tipo de instrução:
Linguagem assembly
Instruções de execução
Estas instruções desviam o processador para que execute código a partir
de um ponto que não seja a próxima linha de execução. São exemplos:
Linguagem assembly
Instruções de memória
 Estas instruções lêem ou escrevem em áreas de memória que não sejam
da pilha. Normalmente estas áreas estão na seção de dados do próprio
executável ou podem ser alocadas pelo sistema operacional em tempo de
execução. São exemplos:
Linguagem assembly
Instruções de flag
As principais flags usadas são a Z (flag zero), C (flag carry), S (flag de
sinal) e D (flag de direção). A maioria das instruções alteram as flags
automaticamente para mostrarem o resultado da instrução. Existem
determinadas instruções que podem ser usadas para alterar o valor das
flags manualmente:
Linguagem assembly
 Declarações de memória
O sistema operacional reserva memória para o
executável quando ele é executado. Declarações são
feitas para reservar memória na seção de dados ou na
seção de constantes se os dados devem ser
inicializados, isto é, devem receber um valor. Se forem
dados não inicializados, a área de dados pode ficar
reservada na seção de dados não inicializados. Isto não
toma espaço algum no arquivo executável, por que um
espaço de memória é alocado para este tipo de dado
quando o executável é iniciado pela primeira vez.
Linguagem assembly
Declarações de memória
Seguem exemplos de como a memória é declarada, o que pode
variar de acordo com o assembler utilizado:
Linguagem assembly
Diretivas para o assembler
 São instruções que orientam onde o Assembler deve colocar o código fonte
que as segue. O Assembler marca a seção de código como apenas para
leitura e executável; as seções de dados definidos e indefinidos como
leitura/escrita. Veja alguns exemplos (que podem variar de acordo com o
assembler):
Linguagem assembly
Comentários
Após ponto e vírgula, o texto é ignorado até a próxima
quebra de linha. Desta forma é possível associar
descrições e explicações ao código fonte, as quais
serão ignoradas pelo assembler.
Download