next up previous contents
Next: Instruções com operando em Up: Instruções lógicas e aritméticas Previous: Instruções de um operando   Sumário

Instruções envolvendo um registrador de dados e outro operando

As instruções aqui apresentadas têm por característica o fato de que um dos operandos envolvidos deve ser sempre um registrador de dados acessado no modo direto, enquanto que o outro operando apresenta flexibilidade de endereçamento.

O primeiro grupo de instruções deste tipo que serão aqui aprsentadas inclui ADD, AND, OR e SUB. Estas instruções podem ser utilizadas como em

    ADD <ea>, Dn
onde o registrador de dados é também o destino do resultado, ou como em
    ADD Dn, <ea>
onde o outro operando será o destino do resultado da operação.

A forma genérica destas instruções de máquina é

    cccc.ddd.ooo.mmm.rrr
onde
cccc
é o campo de código da instrução,
Instrução Código
ADD 1101
AND 1100
OR 1000
SUB 1001

ddd
é o número do registrador de dados envolvido na operação;

ooo
é o modo de operação, que pode assumir os valores
byte word long operação
000 001 010 Dn $ \leftarrow $ (Dn) op (<ea>)
100 101 110 <ea> $ \leftarrow $ (Dn) op (<ea>)

mmmrrr
indicam os campos de modo e de registrador do endereço efetivo do operando, que podem ser do modo (An), (An)+, -(An), d(An), d(An,Ri), Abs.W e Abs.L se o endereço efetivo refere-se ao operando de destino. Se o endereço efetivo for do operando fonte, os modos Dn, An, d(PC), d(PC,Ri) e Imm também são válidos, sendo que o modo An pode apenas ser utilizado com operandos de tamanho word ou long.

Considere por exemplo a instrução ADD.L D0,D1. A codificação começa com a seqüência do código de operação 1101, seguida de 001 (registrador D1), 010 (long com destino sendo o registrador especificado, D1), 000 (outro operando está em registrador) e 000 (o outro registrador é o D0). Portanto, o código binário para esta instrução é

    1101001010000000
ou $D280.

A instrução ADD.L #1,D1 terá a primeira palavra da instrução codificada pela seqüência de bits 1101 (instrução ADD), 001 (D1), 010 (resultado em D1), 111100 (operando imediato). A primeira palavra da instrução terá portanto o valor $D2BC. Seguirão então mais duas palavras de extensão (uma vez que a operação é sobre operandos do tipo long) contendo o valor imediato a ser adicionado, sendo que a primeira palavra será $0000 e a segunda palavra será $0001. A instrução ocupa portanto três palavras de memória, com conteúdo $D2BC00000001.

Outro grupo de instruções com esta mesma estrutura básica incluem DIVS (divisão com sinal), DIVU (divisão sem sinal), MULS (multiplicação com sinal) e MULU (multiplicação sem sinal). Estas instruções tem apenas uma forma de uso, onde o destino deve ser o registrador de dados, e apenas um tamanho de operando (word), sendo o resultado armazenado em 32 bits. No caso da divisão, este resultado de 32 bits é dividido em dois resultados de 16 bits cada, sendo a parte menos significativa o quociente da operação e a parte mais significativa o resto da divisão. As formas de uso destas instruções são:

    DIVS <ea>,Dn
    DIVU <ea>,Dn
    MULS <ea>,Dn
    MULU <ea>,Dn

O formato da instrução de máquina é similar ao das instruções do grupo acima, sendo:

Instrução Código
DIVS 1000.ddd.111.mmm.rrr
DIVU 1000.ddd.011.mmm.rrr
MULS 1100.ddd.111.mmm.rrr
MULU 1100.ddd.011.mmm.rrr
onde o único modo de endereçamento inválido é o registrador de endereços direto.

Há ainda mais duas instruções adicionais com formato similar, CMP (comparação) e EOR (ou exclusivo). A forma de uso destas instruções é

    CMP <ea>,Dn
e
    EOR Dn,<ea>

O código de máquina para estas duas instruções tem o mesmo campo de operação,

    1011.ddd.ooo.mmm.rrr
sendo que as duas instruções são diferenciadas pelo campo ooo:
Instrução byte word long Operação
CMP 000 001 010 (Dn) - (<ea>)
EOR 100 101 110 <ea> $ \leftarrow $ (<ea>) $ \oplus$ Dn

Para a instrução CMP todos os modos de endereçamento são válidos, embora o modo An apenas para operandos do tipo word ou long. A instrução EOR é restrita aos modos de endereçamento de dados alteráveis.


next up previous contents
Next: Instruções com operando em Up: Instruções lógicas e aritméticas Previous: Instruções de um operando   Sumário
Ivan L. M. Ricarte 2003-02-14