Modo de endereçamento de registro

Sem dúvidas, o modo de endereçamento mais comum no microprocessador Intel 8086 é o de registro, que é o que vamos estudar com mais detalhe nesse artigo do nosso curso sobre microprocessadores, que fala especificamente sobre esse modo de endereçamento.

Para saber mais sobre o que são, quais tipos e modos de endereçamento, leia o artigo:
Modos de endereçamento do 8086/8088


Registros de mesmo tamanho

Um detalhe importante, que muitos esquecem, que acaba por ser um erro por parte dos estudantes, é o tamanho dos registros quando estamos trabalhando com a instrução MOV.

Os registros de 8 bits são: AL, AH, BL, BH, CL, CH, DL e DH
Os registros de 16 bits são: AX, BX, CX, DX e os registros de segmento (CS, DS, ES, SS, FS e GS).

Sabendo disso, instruções do tipo não são permitidas:
MOV AL, BX

Pois o registro BX armazena 16 bits e o AL somente 8 bits.
O Assembler também irá acusa erro caso faça:
MOV BX, AL

Ou seja, só usa registros de mesmo tamanho para trabalhar com a instrução MOV.

A instrução MOV no endereçamento de registro

Como pudemos ver no artigo passado, quando introduzimos os conceitos sobre os modos de endereçamento no microprocessador 8086, a instrução MOV é extremamente poderosa e versátil, sendo amplamente usada nos mais diversos tipos de endereçamentos.

Porém, ela tem suas regras e limitações, que são detalhes importantes de serem lembrados.
Por exemplo, usamos ela para copiar informações entre registros e/ou memória, porém não podemos usar a instrução MOV entre registros de segmentos, bem como registros de segmento não podem ser usados como destino. Ou seja, não podemos fazer:
MOV DS, ES
MOV ES, AX

A razão disso é que o endereço da próxima instrução a ser executada pelo microprocessador 8086/8088 está armazenado nos registros CS e IP, e se mudarmos apenas um desses registros, não seria possível encontrar a próxima instrução.

Um cuidado que devemos lembrar é o que foi dito no tópico anterior: só use a instrução MOV entre registros de mesmo tamanho.

Por fim, lembramos sempre que a instrução MOV não altera os bits de flag.

Nenhum comentário:

Veja também: