140 likes | 228 Views
Linguagem de Montagem. Vetores. Conteúdo. Correção Exercícios Vetores Exercício Prova 03/12. Exercício 1.
E N D
Linguagem de Montagem Vetores
Conteúdo • Correção Exercícios • Vetores • Exercício • Prova 03/12
Exercício 1 • Escreva um procedimento chamado MAX que receba três inteiros do programa principal e retorne o máximo dos três em AX. O programa principal deve pedir ao usuário que entre os três inteiros e mostrar na tela o maior deles utilizando para isso o procedimento MAX.
Procedimento MAX segment .bbs x resw 1 y resw 1 z resw 1 segment .text ;ler x,y,z mov AX,x mov BX,y mov CX,z call MAX ;escrever AX MAX: ;entrada AX, BX, CX ;saída maior em AX cmp AX, BX jge prox xchg AX,BX prox: cmp AX,CX jge fim xchg AX,CX fim: ret
Procedimento MAX prox: cmp AX,CX jge fim xchg AX,CX fim: pop EBP ret MAX: push EBP mov EBP, ESP mov AX,[EBP+12] mov BX,[EBP+10] mov CX,[EBP+8] cmp AX, BX jge prox xchg AX,BX segment .bbs x resw 1 y resw 1 z resw 1 segment .text ;ler x,y,z push [x] push [y] push [z] call MAX add ESP,6 ;escrever AX
Vetores • Usamos vetores quando utilizamos a representação de strings. • Matrizes unidimensionais • Vetor em C: int nota[10]; nota[0] ... nota[9]
Vetores • Atributos dos vetores em linguagem de alto nível: • Nome do vetor (nota) • Número de elementos (10) • Tamanho de cada elemento (4 bytes) • Tipo do elemento (inteiro) • Intervalo de índices (0 a 9)
Vetores • Através destas informações a quantidade de espaço de armazenamento necessário para o vetor pode ser calculado da seguinte forma: espaço de armazenamento = número de elementos x tamanho do elemento em bytes = 10 x 4 = 40 bytes
Vetores • Na linguagem assembly vetores são implementados através da alocação do espaço de armazenamento necessário nota resd 10 • Um nome para o vetor pode ser determinado para o espaço de armazenamento, mas isso será tudo que será possível na linguagem Assembly
Vetores • Você precisa saber como o vetor será armazenado para acessar os elementos deste. • Para vetores, sua representação na memória é direta. • Os elementos do vetor são armazenados linearmente. • Para acessar um elemento precisamos saber o valor do deslocamento em bytes desde o inicio do vetor.
Vetores • Sabemos o tamanho em bytes de cada elemento. deslocamento = número do elemento x tamanho do elemento em bytes.
Vetores • Exemplo: • Nota do sexto estudante • Elemento 5 de nota • Deslocamento = 5 x 4 = 20
Exemplo segment .data nota dd 40,50,70,94,81 segment .text mov AX,0 ;soma das notas mov CX,5 ;contador mov ESI,0 ;indice repete: add AX,[nota+ESI*4] inc ESI loop repete
Exercícios • Utilize o programa anterior para mostrar o maior e o menor dos três inteiros reescrevendo o procedimento e renomeando este para MINMAX. • Escreva um programa em Assembly que leia um vetor com 20 números inteiros em uma ordem qualquer e chame um procedimento ORDENA que ordena este vetor em ordem crescente.