Escolar Documentos
Profissional Documentos
Cultura Documentos
INSTRUÇÕES ARITMÉTICAS
As instruções aritméticas básicas fornecidas pelo MC8051 são as quatro operações básicas:
adição, subtração, multiplicação e divisão que podem ser executados com operandos de 8 bits.
No MC8051, estas instruções sempre envolvem o ACC(acumulador) que conterá um dos
operandos, sendo o outro operando o conteúdo de um registrador, posição de memória ou, ainda,
um dado imediato.
Soma de 8 bits
A instrução ADD (do inglês add, somar) realiza a adição entre o conteúdo do acumulador, ACC e
o conteúdo da posição da memória de dados interna ou uma constante. O resultado da adição é
armazenado no acumulador. O endereçamento do <OPERANDO FONTE> pode ser de todos os
modos possíveis (imediato, direto, indireto e registro).
Sintaxe:
ADD A,<OPERANDO FONTE>
FLAGS
INSTRUÇÃO OPERANDO OPERANDO BYTES MC CY AC OV
DESTINO FONTE
ADD A, Rn 1 1 X X X
direto 2 1
@Ri 1 1
#data 2 1
ADD A,Rn
Soma o conteúdo de Rn(R0 A R7) com ACC o resultado da soma é gravado no ACC.
ADD A,direto
Soma o conteúdo da posição de memória com ACC o resultado da soma é gravado no ACC.
ADD A,@Ri
Soma o conteúdo da posição de memória indicada por Ri(R1 ou R0) com ACC o resultado da
soma é gravado no ACC.
ADD A,#data
Soma o dado ao ACC e o resultado é gravado no ACC.
ADDC A,Rn
Soma o conteúdo de Rn(R0 a R7) ao ACC e com o flag carry. O resultado é gravado no ACC.
ADDC A,direto
Soma o conteúdo da posição de memória com o ACC e com o flag carry. O resultado é gravado
no ACC.
ADDC A,@Ri
Soma o conteúdo da posição de memória indicado por Ri (R1 ou R0) com ACC e com o flag carry
o resultado é gravado no ACC.
ADDC A,#data
Soma o dado “#data” e o flag carry ao ACC o resultado é gravado no ACC.
Ajuste decimal
A instrução DA (do inglês decimal ajust) realiza o ajuste decimal do acumulador após operações
de adição em BCD.
Sintaxe:
DA A
FLAGS
INSTRUÇÃO OPERANDO BYTES MC CY AC OV
DA A
Converte em BCD o conteúdo do ACC.
OBS:
DA A não pode simplesmente converter um número hexadecimal para BCD nem se aplica à
subtração ou multiplicação. O ajuste é valido apenas para as somas (ADD e ADDC). Existe uma
única instrução.
SUBB A,Rn
Subtrai do ACC o conteúdo de Rn (R0 a R7) e o “vem um” (borrow). O resultado é gravado no
ACC.
SUBB A,direto
Subtrai do ACC o conteúdo da posição de memória e o “vem um” (borrow). O resultado é gravado
no ACC.
SUBB A,@Ri
Subtrai do ACC o conteúdo da posição de memória indicado por Ri (R0 ou R1) e o “vem um” (se
existir). O resultado é gravado no ACC.
SUBB A,#data
Subtrai do ACC o dado e o “vem um” (borrow), se este existir, e o resultado é gravado no ACC.
Incremento de 8 bits
A instrução INC incrementa o operando de uma unidade. O endereçamento pode ser feito de
todos os modos (imediato, direto, indireto e registro). Há 4 instruções para incremento.
Sintaxe:
INC <OPERANDO>
FLAGS
INSTRUÇÃO OPERANDO BYTES MC CY AC OV
INC A 1 1 X X X
Rn 2 1
direto 1 1
@Ri 2 1
INC A
Soma 1 ao ACC.
INC Rn
Soma 1 ao conteúdo de Rn(R0 a R7)
INC direto
Soma 1 ao conteúdo da posição de memória.
INC @RI
Soma 1 ao conteúdo da memória indicado por Ri(R0 ou R1).
Decremento de 8 bits
As instruções de decremento se parecem muito com as de incremento. Temos 4 instruções de
decremento de 8 bits.
A instrução DEC decrementa o operando de uma unidade. O endereçamento pode ser feito de
todos os modos possíveis (imediato, direto, indireto e registro).
Sintaxe:
DEC <OPERANDO>
FLAGS
INSTRUÇÃO OPERANDO BYTES MC CY AC OV
DEC A 1 1 X X X
Rn 1 1
direto 2 1
@Ri 1 1
DEC A
Subtrai 1 ao ACC.
DEC Rn
Subtrai 1 ao conteúdo de Rn(R0 a R7).
DEC direto
Subtrai 1 ao conteúdo da posição de memória.
DEC @RI
Subtrai 1 ao conteúdo da memória indicado por Ri(R0 ou R1).
Incremento de 16 bits
Para o incremento de 16 bits há apenas uma instrução e é bom lembrar que não temos instrução
para decremento de 16 bits.
A instrução INC incrementa o operando de uma unidade. O endereçamento somente pode ser
feito no modo de registro.
Sintaxe:
INC <OPERANDO>
FLAGS
INSTRUÇÃO OPERANDO BYTES MC CY AC OV
INC DPTR 3.11 4.12 5.1- 6.1- 7.1-
INC DPTR
Soma 1 ao registrador DPTR.
MUL AB
Multiplica o conteúdo do ACC pelo conteúdo do registrador B. O resultado é registrado em
B(MSB) e ACC(LSB).
A instrução DIV realiza a divisão entre o ACC e o registrador B.
Sintaxe:
DIV AB
FLAGS
INSTRUÇÃO OPERANDO BYTES MC CY AC OV
DIV AB 3.11 4.14 5.10 6.1X 7.1-
DIV AB
Divide o conteúdo do acumulador ACC pelo conteúdo do registrador B. O quociente fica em A e o
resto B.
Tanto na multiplicação como na divisão as instruções necessitam de um tempo maior para
executar as operações.