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.
A instrução LEA do 8086 tem o seguinte formato:
LEA <destino>, <fonte>
Quando executada, esta instrução, carrega o deslocamento da posição de memória especificada por <fonte> no registo de 16 bits especificado por <destino>.
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.