next up previous contents
Next: Exercícios Up: Linguagem Assembly do 8086 Previous: For-To-Do

Arrays

Os ciclos são especialmente úteis quando se pretende implementar a mesma operação ou a mesma sequência de operações para um conjunto de items de dados guardados em posições contíguas de memória. Um conjunto de items de dados do mesmo tipo armazenados em posições contíguas de memória chama-se um array.

Na linguagem Assembly do 8086 um array de 10 bytes podia ser declarado e inicializado da seguinte forma:

DATA SEGMENT
        ...
	ARRAY   DB   00H, 10H, 20H, 30H, 40H, 50H, 60H, 70H, 80H, 90H
        ...
DATA ENDS

Neste caso deu-se ao array o nome ARRAY. Quando o programa for carregado em memória para ser executado, dez bytes do segmento de dados vão ser carregados com os valores 00H, 10H, 20H, 30H, 40H, 50H, 60H, 70H, 80H e 90H, em posições contíguas de memória.

Para aceder aos items de dados que constituem o array pode-se utilizar endereçamento directo ou indirecto. Por exemplo, para mover para o registo AL o quinto elemento do array, utilizando o endereçamento directo, poderíamos usar a seguinte instrução:

        MOV AX, ARRAY+0005H

Utilizando o endereçamento indirecto seria necessário a seguinte sequência de instruções:

        LEA BX, ARRAY+05H
        MOV AL, [BX]

A instrução LEA é utilizada para ir buscar o endereço efectivo (deslocamento em relação ao registo de segmento) da variável ARRAY.

Também é possível indexar os vários elementos de um array. Neste caso a sequência de instruções seria:

        MOV BX, 05H
        MOV AL, ARRAY[BX]

Aqui, o endereço efectivo do elemento do array é calculado somando o endereço do ARRAY e o conteúdo de BX.


next up previous contents
Next: Exercícios Up: Linguagem Assembly do 8086 Previous: For-To-Do
Maria Joao Nicolau
1/28/1999