Programação em Assembly Conceitos Iniciais Prof. Luiz Antonio Rodrigues Prof. Luiz Antonio Unioeste - Cascavel Jpanel e Diagramadores.

Slides:



Advertisements
Apresentações semelhantes
A Arquitetura: conjunto de instruções
Advertisements

Sistemas Embarcados Microcontroladores PIC
Arquitetura dos Microprocessadores 8086 e 8088
ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM
REPRESENTAÇÃO DE INSTRUÇÕES
ARQUITETURA DE COMPUTADORES ANEXO-1: INSTRUÇÕES (LOGICAS) AND DE DADOS ENTRE REGISTRADORES REG 0 :AH,AL,AX,BH,BL,BX,CH,CL,CX,DH,DL,DX,SI,DI,SP,BP,CS, DS,ES,SS.
ANEXO-1: INSTRUÇÕES (MOVIMENTAÇÃO DE DADOS)
Autor: Fernando de Mesentier Silva
Linguagem de Montagem.
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno Computador Cleópatra Arquitetura e Programação.
Linguagem de Montagem PROVA 4 – 3/12.
Prática de Programação Assembly 8086
Agenda - Aula 2 Introdução (Computador Digital) Processadores
Arquitetura de Computadores
A Linguagem de Máquina – Desvios e Laços
8088 Assembly Software Básico Mitsuo Takaki.
8 - 1 Organização Básica de Computadores e Linguagem de Montagem Ricardo Pannain ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM A pilha e subrotinas.
Afonso Ferreira Miguel
Ney Laert Vilar Calazans Exemplo de Apresentação de TP1 Descrição Resumida de uma Arquitetura de Processador: o estudo de caso do Intel 8086 ORGANIZAÇÃO.
1 Estruturas Condicionais Aula – Tópico 3 Algoritmos e Estruturas de Dados I (DCC/003)
Arquitetura ARM Subrotinas.  Implementar uma sub-rotina requer dois passos: 1.Armazenar o endereço de retorno. 2.Desviar a execução para o endereço da.
A CPU E SUA EVOLUÇÃO. CPU (Central Processing Unit ou Unidade Central de Processamento)  DEFINIÇÕES:  A CPU é o hardware principal do computador; 
INE5408 Estruturas de Dados Ponteiros, passagem de parâmetros e modelos de memória.
Capítulo 10 Conjuntos de instruções: Características e funções William Stallings Arquitetura e Organização de Computadores 8 a Edição © 2010 Pearson Prentice.
Programação em Assembly Introdução e Revisão Prof. Luiz Antonio Rodrigues Prof. Luiz Antonio Unioeste - Cascavel Jpanel e Diagramadores.
Como funciona o processador Nomes: Fernando, Maurício, William Turma: 1J-1PC1 Disciplina: Fundamentos da Computação Curso: Técnico em Programação de Computadores.
Programação em Assembly Ambiente de Programação Prof. Luiz Antonio Rodrigues Prof. Luiz Antonio Unioeste - Cascavel Jpanel e Diagramadores.
Pseudocódigo É a técnica na construção de algoritmos mais próxima de uma linguagem de programação. Estrutura básica: Algoritmo [Variáveis:, : ] Início.
CPU por dentro. Por dentro do CPU + ULA Teoria - Considerando que a ALU já tem dois números porque já fez LOAD - CPU recebe a instrução da RAM ( que está.
ARQUITETURA AULA 3 Prof. Luiz Ricardo Lima 2º sem de 2016.
Projeto Integrador Número Binários Professor: Charles Leite.
Aula 3 - Estruturas de Repetição
Modulo 9 - Arquitetura de microprocessadores
Programação em Assembly
Ciclos de operação em processador
PSI3441 – Arquitetura de Sistemas Embarcados
NEANDERWin - Simulador
Aspectos de Interrupção
Mapeamento de Entrada e Saída em Sistemas Digitais
ELD - Eletrônica Digital
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
Computador MIPS Organização básica e conjunto de instruções.
Caminho de Dados (aula passada)
Nataniel Vieira Endereçamento IP Nataniel Vieira
Programação em C Aula 2.
Prof. Wellington Franco
FUNDAMENTO DE PROGRAMAÇÃO
Instruções.
Arquitetura e organização de computadores
Algoritmos e Técnicas CEFET/RN.
Arquitetura de Computadores
PROGRAMAÇÃO I UNIDADE 3.
Níveis de Abstrações TANENBAUM:
Arquitetura de Barramentos
Programação de Computadores I – Ponteiros
Representação da Informação
Funcionamento básico de um processador de 8 bits
Sistemas Operacionais I
ELEMENTOS DE ORGANIZAÇÃO DE COMPUTADORES :
Ney Laert Vilar Calazans
Arquitetura de Computadores
Professora Roberta Bonamichi Guidi Garcia
Bus de controlo Bus de Endereços Bus de dados SET LIGADO ENABLE LIGADO.
Programação de Computadores I – Ponteiros
Linguagem de Programação I
PSI3441 – Arquitetura de Sistemas Embarcados
Organização de um Computador
Conjunto de instruções
CURSO DE LICENCIATURA EM COMPUTAÇÃO Disciplina: Organização e Arquitetura de computadores Tema: Álgebra booleana e Circuitos lógicos digitais Professor:
Aula 2 Professores: Conteúdo: Dante Corbucci Filho
Transcrição da apresentação:

Programação em Assembly Conceitos Iniciais Prof. Luiz Antonio Rodrigues Prof. Luiz Antonio Unioeste - Cascavel Jpanel e Diagramadores

Os Processadores As operações internas da CPU são muito complexas Processadores hipotéticos serão utilizados Possuem o mesmo conjunto de registradores e de instruções Registradores Unidade Aritmética e Lógica Instruções

Registradores São posições de memória construídas com flip- flops Não fazem parte da memória principal São poucos e o tamanho varia de acordo com a arquitetura Vamos considerar registradores com 16 bits AXAcumulador BXRegistrador do endereço base CXContador DXRegistrador de Dados Temos ainda: apontador de instruções: contém o endereço da próxima instrução a ser executada Flag: guarda o resultado de uma comparação

Unidade aritmética e lógica ALU - Arithmetic and Logical Unit É onde a maioria das ações ocorrem dentro da CPU Exemplo: adicionar o valor 5 ao registrador AX ✔ Copia o valor de AX para dentro da ALU ✔ Envia o valor cinco para a ALU ✔ Instrui a ALU para somar esses dois valores ✔ Move o resultado de volta para o registrador AX

Instruções As CPUs do x86 possuem 20 classes de instruções Instruções de cópia Instruções aritméticas e lógicas Instruções de transferência de controle Outras get e put permitem a leitura e a escrita de valores inteiros get pára e espera que o usuário entre com um valor hexadecimal e então armazena o valor dentro do registrador ax put exibe (em hexadecimal) o valor do registrador ax halt – termina o programa

Instruções de cópia Instruções mov Copia o segundo parâmetro para o primeiro reg é um dos registradores ax, bx, cx ou dx const é uma constante numéria hexadecimal men é uma posição de memória mov reg, reg/mem/const mov mem, reg Exemplo: mov ax,01 ;move o valor 01h para o registrador ax mov cx,07 ;move o valor 07h para o registrador cx

Instruções aritméticas e lógicas add - adiciona o valor do segundo operando ao primeiro operando, deixando a soma no primeiro operando sub - subtrai o valor do segundo operando do primeiro, deixando a diferença no primeiro operando cmp - compara o primeiro operando com o segundo e salva o resultado desta comparação para que possa ser utilizada com uma das instrução de desvio condicional and e or - calculam as operações lógicas correspondentes em nível de bits sobre os dois operandos e armazenam o resultado dentro do primeiro operando not - inverte os bits em um único operando de memória ou registrador add reg, reg/mem/const sub reg, reg/mem/const cmp reg, reg/mem/const and reg, reg/mem/const or reg, reg/mem/const not reg/mem

Instruções de transferência de controle Usadas após um cmp ja dest - Desvia se maior jae dest - Desvia se maior ou igual jb dest - Desvia se menor jbe dest - Desvia se menor ou igual je dest - Desvia se igual jne dest - Desvia se não igual jmp dest - Desvio incondicional ret- retorno do procedimento Exemplo: if (1>2)... else... mov ax, 1 cmp ax, 2 ja maior jbe menor_igual

opcodes Códigos que o processador usa para identificar as instruções

Modos de endereçamento 5 tipos Por registrador Constantes 3 tipos de endereçamento por memória Por registrador Pode ser feita entre qualquer par de registradores Exemplo: mov ax, ax mov ax, bx mov ax, cx mov ax, dx

Modos de endereçamento Por constantes São diretas Exemplo: mov ax, 25 mov bx, 195 mov cx, 2056 mov dx, 1000

Modos de endereçamento Por memória 3 tipos mov ax, [1000]- direto mov ax, [bx]- indireto mov ax, [1000+bx] - indexado mov bx, 1000 mov ax, [bx] são equivalentes à instrução mov ax,[1000]

Testando as Funções Emular programa usando o SIMx86 SIMX86.zip Teste 1: Atribuir valores aos registradores mov ax, 10 mov bx, 11 mov ax,[0050] move cx,[ax] Teste 3: Comparando dois valores cmp ax, bx cmp ax, [0050] cmp ax, [dx]

Testando as Funções Teste 4: Operações aritméticas add ax, 10 add bx, ax add cx, [ax] sub ax, 3 not ax and ax, 1 or bx, 1 Teste 5: saltos incondicionais jmp b je igual jne not_equals

Exercícios Somar dois valores em diferentes posições de memória e armazenar no registrador bx Trocar o valor do byte do endereço de memória 0038h com o valor do endereço 0039h Mostrar os caracteres A,B,C,D,E,F Mostrar os dígitos 9-0 Ordenar 3 valores Obter o resultado da expressão: 2*x+3*y, sendo x e y posições de memória