User: alciro    User
 

Microcontroladores 8051

Share |

4.2. Instrucciones aritméticas

Instrucciones aritméticas microcontroladores 8051.

Las instrucciones aritméticas de estos microcontroladores son muy limitadas, permiten sumar, restar, incrementar, decrementar y excepcionalmente se ha integrado el producto y la división de números enteros.

ADD A, byte. Suma de 8 bits. Suma el contenido del Acumulador con un Byte, con el direccionamiento indicado, el resultado queda en el acumulador.

MOV A,#3  ; A<-3 Mueve al Acumulador el dato inmediato 3
MOV R0,#2 ; A<-2 Mueve al registro 0 el dato inmediato 2
ADD A,R0 ; A<-(A)+(R0) Se suma el Acumulador con el Registro 0, el resultado queda en el Acumulador

ADDC A, byte. Suma con Carry. La suma con Acarreo permite realizar sumas de números enteros superiores a 8 bits.

Ejemplo: Suma de dos variables enteras de 16 bits que se encuentran el las posiciones de memoria 30H y 32H. El resultado ha de quedar en una tercera variable en la posición 34.

MOV A,30H  ; A<-(30H) Mueve el contenido de 30H al Acumulador, parte baja de Variable 1
ADD A,32H  ; A<-(A)+(32H) Suma el Acumulador con la posición 32H, parte baja de la Variable 2
MOV 34H,A ; 34H<-(A) Mueve el Acumulador a la posición 34H, el resultado a parte baja de la Variable 3
MOV A,31H  ; A<-(31H) Mueve el contenido de 31H al Acumulador, parte alta de Variable 1
ADDC A,33H ; A<-(A)+(32H) Suma el Acumulador y el Carry con la posición 33H, parte alta de la Variable 2
MOV 35H,A ; 35H<-(A) Mueve el Acumulador a la posición 35H, el resultado a parte alta de la Variable 3

La siguiente figura muestra un esquema del contenido de la memoria para realizar la suma de dos números enteros de 16 bits. Se supone que los datos de la suma (35FEH+00003H) se han establecido previamente y no son objeto del estudio en este ejemplo.

Suma de números enteros de 16 bits en Ensamblador

SUBB A,byte. Resta con Carry. Resta al contenido del Acumulador un Byte, con el direccionamiento indicado, el resultado queda en el acumulador.

MOV A,#5    ; A<-5 Mueve al Acumulador el dato inmediato 5
CLR C       ; C<-0 Pone a 0 el carry, por si en operaciones anteriores ha sido afectado, para que no interfiera en la resta
SUBB A,#03H ; A<-(A)-3 Se resta al Acumulador el dato inmediato 3, el resultado queda en el Acumulador

INC byte. Incremento. Incrementa una unidad el contenido de un Byte (Acc, registro, memoria), con el direccionamiento indicado.

MOV R0,#30H   ; R0<-30H Mueve al registro 0 el dato inmediato 30H
INC @R0       ; ((R0))<-((R0))+1 Incrementa el contenido de la posición de memoria que indica R0

DEC byte. Decremento. Decremento de una unidad el contenido de un Byte (Acc, registro, memoria), con el direccionamiento indicado.

DEC R1       ; (R1)<-(R1)-1 Decrementa el contenido de R1

DA A. Ajuste decimal del acumulador. Esta instrucción realiza el ajuste en formato BCD (0-9) de los nibbles de acumulador (b0-b3 bits menos significativos y b4-b7 bits más significativos) del resultado de la suma con las instrucciones ADD o ADDC. Esta instrucción es utilizada cuando se trabaja con dígitos de 7 segmentos y es necesario trabajar en BCD.

MUL AB. Multiplicación de 8 bits. Realiza una multiplicación de números enteros de 8 bits sin signo de los valores contenidos en el registro A y el B. El resultado es un número entero de 16 bits, quedando la parte menos significativa en el acumulador y la parte más significativa en el registro B.

DIV AB. División entera de 8 bits. Realiza la división de números enteros de 8 bits sin signo de acumulador entre el registro B. En el acumulador queda el resultado (cociente), mientras que el resto de la división entera queda en el registro B.

Loading

copyright © 2007-2024  www.alciro.org  All rights reserved.         
Share |