Instrucoes de Transferencia de Blocos

As instruções de transferência de blocos operam com três pares de registos: HL, DE e BC. 0 par HL aponta a posição de memória fonte da operação. 0 par DE aponta a posição de memória destino da operação. o par BC funciona como contador de bytes.

Depois de 0 programador ter inicializado estes três pares de registos qualquer uma das quatro instruções de transferência de blocos pode ser utilizada.

   

LDI (Load and Increment)

A instrução LDI muda um byte da posição de mem6ria endereçada pelo par HL para a posição de mem6ria endereçada pelo par DE. Os registos HL e DE são automaticamente incrementados apontando as posições seguintes. Ao mesmo tempo, 0 contador de bytes, par BC, e’ decremen­tado.  

Esta instrução é utilizada quando existe necessidade de mover blocos de dados mas, entre cada byte mudado, são necessários outros proce­dimentos. Estes procedimentos estão ligados, por exemplo, ao próprio software do programa. Na figura 13 representa-se um troço de fluxo­grama que executa, servindo-se da instrução LDI, a transferência de um bloco de N bytes da memória. os registos HL e DE foram previamente carregados com os valores dos endereços de memória e BC com 0 valor N.

 

 

 

(DE) ←(HL)          · - Flag não alterada

DE   DE+1         x - Posição ignorada

HL  HL+1         0 - Flag reset

BC   BC-1         1 - Flag set

   

  =O se BC - 1=0

  =1 se BC - 1¹ 0

Fig.13

LDIR (Load, increment and Repeat)

A instrução LDIR é uma extensão da instrução LDl. A mesma operação de carregamento e incremento é repetida até 0 conteúdo do registo BC (contador de bytes) ser zero. Assim, uma simples instrução consegue mover um bloco de dados de um local para outro.

Uma vez que se utilizam registos de 16 bits, a dimensão do bloco tem um máximo de 64 Kbytes (1 k = 1024). 0 bloco pode ser movido de qualquer local da memória para qualquer outro lugar. Note-se que Os blocos podem-se interpenetrar, uma vez que não ha’ restrições para Os dados armazenados nos três pares de registos.  

  LDD (Load and Decrement) e LDDR (Load, Decrement end Repeat)

Estas duas instruções são similares As duas anteriores (LD®LDI; LD®LDIR). A única diferença é que os pares de registos HL e DE são decrementados após a transferência do byte. Neste caso, a transferência de blocos começa Com 0 byte de endereço mais elevado.

Apenas um bit do segundo byte do código de operação é alterado em relação As instruções LDI e LDIR:

O registo de flags é afectado da mesma forma que no caso das instruções LDI (LDD) e LDIR (LDDR).

Na tabela 11 apresenta-se um resumo dos códigos das instruções do transferência do blocos.

As instruções do procura de caracteres funcionam do modo semelhante as instruções de transferência de blocos. Tal como estas, existem quatro instruções de procura.

Tabela 11

CPI (Compare and Increment)

A instrução de CPI compara 0 valor armazenado no acumulador com 0 conteúdo da posição de memória endereçada pelo par do registos HL. 0 resultado da comparação é armazenado num dos flip-flops do registo de flags, enquanto que 0 par HL é incrementado e 0 par BC é decre­mentado. Os pares de registos HL e BC são utilizados da mesma ma­neira que nas instruções de transferência de blocos. 0 par DE não é utilizado.

 

CPIR (Compare, Increment and Repeat)

A instrução CPIR é meramente uma extensão da instrução CPI. A compararão com 0 conteúdo do acumulador é repetida até ser encontrado um caracter que iguale 0 do acumulador ou 0 conteúdo do par BC se tome igual a zero. Assim, esta simples instrução pode percorrer toda a memória em busca de um caracter de oito bits.

  CPD (Compare and Decrement) e CPDR (Compare, Decrement and Repeat)

As instruções CPD e CPDR são similares As instruções CPI e CPIR, respectivamente. A única diferença reside no facto de CPD e CPDR decrementarem 0 par de registos HL depois de cada comparação, pes­quisando a memória a partir da posição mais elevada, armazenada em HL, para posições inferiores.

Apenas um bit do segundo byte do código de operação é alterado em relação aos códigos das instruções CPI e CPIR:

  Na tabela 12 encontram-se resumidos Os códigos das instruções de procura de caracteres.

<-- Voltar

Hosted by www.Geocities.ws

1