A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Programação em Assembly Conceitos Iniciais Prof. Luiz Antonio Rodrigues Prof. Luiz Antonio Unioeste - Cascavel Jpanel e Diagramadores."— Transcrição da apresentação:

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

2 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

3 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

4 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

5 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

6 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

7 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

8 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

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

10 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

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

12 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]

13 Testando as Funções Emular programa usando o SIMx86 http://www.numaboa.com.br/informatica/assembly/files/ 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]

14 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

15 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


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

Apresentações semelhantes


Anúncios Google