Você está na página 1de 5

SENAI – Curso Microcontroladores 8051

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.

Unidade 3 – Software do microcontrolador 8051 1


Instruções aritméticas
SENAI – Curso Microcontroladores 8051

Soma de 8 bits com carry


A instrução ADDC (em que C é do inglês carry, que significa levar, conduzir), leva em conta o “vai
um” na operação de adição. A soma do conteúdo do ACC é realizada com o conteúdo de uma
posição de memória de dados interna ou constante e mais a flag de carry. O resultado da soma é
armazenado no ACC, e o endereçamento do <OPERANDO FONTE> pode ser de todos os modos
(imediato, direto, indireto e registro). Esta instrução permite que adições com mais de 8 bits
possam ser implementadas graças ao aproveitamento do flag de carry da operação.
Sintaxe:
ADDC A,<OPERANDO FONTE>
FLAGS
INSTRUÇÃO OPERANDO OPERANDO BYTES MC CY AC OV
DESTINO FONTE
ADDC A, Rn 1 1 X X X
direto 2 1
@Ri 1 1
#data 2 1

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 3.11 4.11 5.1X 6.1X 7.1-

DA A
Converte em BCD o conteúdo do ACC.

Unidade 3 – Software do microcontrolador 8051 2


Instruções aritméticas
SENAI – Curso Microcontroladores 8051

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.

Subtração de 8 bits com borrow


A instrução SUBB (do inglês subtract, que corresponde a subtrair, e borrow, que corresponde a
emprestar) realiza a subtração do conteúdo do acumulador, ACC, com um segundo operando e o
resultado é gravado no acumulador. Temos 4 instruções de subtração com borrow.
A subtração é feita entre o acumulador e o conteúdo de uma posição da memória de dados
interna ou com uma constate e o flag de carry (BORROW). O resultado da subtração é gravado no
ACC e o endereçamento do <OPERANDO FONTE> pode ser feito de todos os modos (imediato,
direto, indireto e registro). O flag de carry (BORROW) é afetado conforme o resultado da
operação.
Sintaxe:
SUBB A,<OPERANDO FONTE>
FLAGS
INSTRUÇÃO OPERANDO OPERANDO BYTES MC CY AC OV
DESTINO FONTE
SUBB A, Rn 1 1 X X X
direto 2 1
@Ri 1 1
#data 2 1

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>

Unidade 3 – Software do microcontrolador 8051 3


Instruções aritméticas
SENAI – Curso Microcontroladores 8051

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).

Unidade 3 – Software do microcontrolador 8051 4


Instruções aritméticas
SENAI – Curso Microcontroladores 8051

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.

Multiplicação e divisão de 8 bits


Tanto para multiplicação como para a divisão o resultado é conduzido para o mesmo registro.
A instrução MUL realiza a multiplicação entre o acumulador ACC e o registrador B.
Sintaxe:
MUL AB
FLAGS
INSTRUÇÃO OPERANDO BYTES MC CY AC OV
MUL AB 3.11 4.14 5.10 6.1- 7.1X

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.

Unidade 3 – Software do microcontrolador 8051 5


Instruções aritméticas

Você também pode gostar