Escolar Documentos
Profissional Documentos
Cultura Documentos
Pedro Botelho
Engenharia de Computação - UFC
INSTRUÇÕES
• Operações Executadas pela CPU
• Instrução → “Algo que a CPU saiba realizar”
• Ex: Movimentar um dados na memória Exemplo: Instruções x86
• Instruções Manipulam:
• Unidade Lógico-Aritmética MOV EAX, 1
• Unidade de Controle MOV EBX, 2
• Interrupções ADD EAX, EBX
• Coprocessadores
• Cada Arquitetura tem um Conjunto de Instruções (ISA)
• Dois tipos de Designs:
• Conjunto Complexo de Instruções (CISC)
• Design Original
• Instruções levam vários ciclos de clock
• Exemplos: x86, x86-64, MCS-51
• Conjunto Reduzido de Instruções (RISC)
• Redesign do CISC
• Instruções levam apenas um ciclo de clock
• Exemplos: ARM, AVR, PIC
• Maioria das famílias de microcontroladores
• Cenário Atual → CISC incorporando RISC
Pedro Botelho
Engenharia de Computação - UFC
INSTRUÇÕES EM ASSEMBLY
• Ideias Centrais:
• Mnemônicos ao invés de Opcodes → Facilitar a programação
• 0xB803000000 → MOV EAX, 3
• 0x41 → INC ECX
• Baixo Nível de Abstração → Visão próxima do hardware
• Mova o valor do acumulador para o endereço 50 da memória
• Assembly → MOV [0x50], EAX
• Para comparação → Alto Nível de Abstração
• Visão distante do hardware
• Visão abstraída da memória
• C → posicao_memoria = valor;
• Formato de uma instrução mnemônica:
• Mnemônico simbolizando a instrução
• Operando(s)
• Dois
• Um
• Nenhum
• Como funciona?
• Assembly → MOV destino, origem
• C → destino = origem;
Pedro Botelho
Engenharia de Computação - UFC
INSTRUÇÕES BÁSICAS
Pedro Botelho
Engenharia de Computação - UFC
EQUIVALÊNCIAS BÁSICAS
Pedro Botelho
Engenharia de Computação - UFC
EQUIVALÊNCIAS BÁSICAS
• Valores na memória:
• Alto nível de abstração → int num1 = 3;
• Baixo nível de abstração → num1 DD 3
• Reserve 4 bytes de memória
• A esse espaço reservado atribua o valor 3
• Soma:
• Alto nível de abstração → res = num1 + num2;
• Baixo nível de abstração → ADD EAX, EBX
• Observe que uma operação em alto nível pode ser convertida em
várias instruções em baixo nível
• Instruções em Assembly x86 tem limite de operandos
• Logo programas em Assembly são mais complexos
• Função principal:
• Alto nível de abstração → int main(){ … }
• Baixo nível de abstração → main: ...
• Retorno da função principal:
• Alto nível de abstração → return 0;
• Baixo nível de abstração → RET
Pedro Botelho
Engenharia de Computação - UFC
SEÇÕES DO CÓDIGO
Pedro Botelho
Engenharia de Computação - UFC
SEÇÃO DE TEXTO
Pedro Botelho
Engenharia de Computação - UFC
SEÇÃO DE DADOS INICIALIZADOS
• Define um espaço na memória a uma variável
• Valor Pré-estabelecido
• Para armazenar valores na memória principal é preciso:
• Etiqueta
• Tamanho do dado
• Valor a ser armazenado
• Para definir um valor na memória:
• Pseudo-Instrução DX → Define X
• Onde X é o tamanho do dado
• Ex: Define Word → DW
Pedro Botelho
Engenharia de Computação - UFC
CONCLUSÃO
Pedro Botelho
Engenharia de Computação - UFC