Posted by : Andrés Cuaycal miércoles, 15 de abril de 2015

INSTRUCCIONES ARITMÉTICAS

Todas las instrucciones se encuentran en el set de instrucciones.

>> Instrucción INC, Increment

Esta instrucción permite agregar 1 al contenido de Rd y el resultado es ubicado en el mismo Rd.

Operación:
Rd Rd+1

Sintaxis:                                Operandos
INC  Rd                                0 ≤ d ≤ 31

Ejemplos:
ldi    r16,20      ; cargo en R16 el valor de 20
inc    r16         ; R16=R16+1
inc    r16         ; R16=R16+1
                   ; == R16 termina con el valor de 22 ==

>> Instrucción DEC, Decrement

Esta instrucción permite restar 1 al contenido del registro Rd y el resultado es ubicado en el mismo registro Rd.

Operación:
Rd ← Rd-1

Sintaxis:                                Operandos
DEC  Rd                                0 ≤ d ≤ 31

Ejemplos:
ldi     r20,15      ; cargo en R20 el valor de 15
dec     r20         ; R20=R20-1
dec     r20         ; R20=R20-1
                    ; == R20 termina con el valor de 13 ==

>> Instrucción ADD, Add without carry

Esta instrucción suma los contenidos de dos registros Rd y Rr sin considerar la bandera del carry, y el resultado de la operación se lo ubica en el registro de destino Rd.

Operación:
Rd ← Rd+Rr

Sintaxis:                                Operandos
ADD  Rd,Rr                           0 ≤ d ≤ 31, 0 ≤ r ≤ 31

Ejemplos:
ldi     r16,15      ; cargo en R16 el valor de 15  
ldi     r17,14      ; cargo en R17 el valor de 14
add     r16,r17     ; sumo R16+R17, resultado se guarda en R16
                    ; = R16 termina con 29, R17 sigue con 14

>> Instrucción ADC, Add with carry

Esta instrucción suma los contenidos de dos registros Rd y Rr, considerando además la bandera del carry, y el resultado de la operación se lo ubica en el registro de destino Rd.

Operación:
Rd ← Rd+Rr+C

Sintaxis:                                Operandos
ADC  Rd,Rr                           0 ≤ d ≤ 31, 0 ≤ r ≤ 31

Ejemplos:
ldi     r16,15      ; cargo en R16 el valor de 15  
ldi     r17,14      ; cargo en R17 el valor de 14
sec                 ; hago que el carry sea C=1
add     r16,r17     ; sumo R16+R17+C, resultado se guarda en R16
                    ; = R16 termina con 30, R17 sigue con 14


>> Instrucción ADIW, Add Immediate to Word

Esta instrucción suma de forma inmediata el valor de una constante (0-63) y el resultado es ubicado a un par de registros. Esta instrucción opera con los cuatro registros pares más altos y es apropiada para trabajar con los registros punteros.

Operación:
Rd+1:Rd ← Rd+1:Rd+K

Sintaxis:                                Operandos
ADIW  Rd+1:Rd,K              d {24, 26, 28, 30}   0 ≤ K ≤ 63

Ejemplos:
adiw    r26,5       ; R27:R26=R27:R26+5

adiw    r27:r26,5   ; R27:R26=R27:R26+5

En los ejemplos anteriores las dos formas de utilizar la instrucción son equivalentes.

>> Instrucción SUB, Substract without carry

Esta instrucción realiza la sustracción del contenido del registro de origen del contenido del registro de destino, y el resultado queda en el registro de destino.

Operación:
Rd ← Rd-Rr

Sintaxis:                                Operandos
SUB  Rd,Rr                           0 ≤ d ≤ 31, 0 ≤ r ≤ 31

Ejemplos:
ldi     r28,12      ; cargo en R28 el valor de 12
ldi     r15,10      ; cargo en R15 el valor de 10
sub     r28,r15     ; resto R28-R15, el resultado se guarda en R28
                    ; = R28 termina con 2, r15 sigue con 12

>> Instrucción SBC, Substract with carry

Esta instrucción realiza la sustracción del contenido del registro de origen del contenido del registro de destino y además resta el carry, el resultado queda en el registro de destino.

Operación:
Rd ← Rd-Rr-C

Sintaxis:                                Operandos
SBC  Rd,Rr                           0 ≤ d ≤ 31, 0 ≤ r ≤ 31

Ejemplos:
ldi     r28,12      ; cargo en R28 el valor de 12
ldi     r16,10      ; cargo en R15 el valor de 10
sec                 ; hago que el carry sea C=1
sub     r28,r16     ; resto R28-R15, el resultado se guarda en R28

                    ; = R28 termina con 1, r15 sigue con 12

>> Instrucción SUBI, Substract inmediate

Esta instrucción realiza la sustracción de una constante del contenido del registro de destino y el resultado queda en el registro de destino. Esta instrucción trabaja con los registros R16 al 31.

Operación:
Rd ← Rd-K

Sintaxis:                                Operandos
SUBI  Rd,K                          0 ≤ d ≤ 31, 0 ≤ K ≤ 255

Ejemplos:
ldi     r25,13      ; cargo en R25 el valor de 13
subi    r25,5       ; resto 5 de R25
                    ; = R25 termina con 8

>> Instrucción SBIW, Substract immediate from Word

Esta instrucción realiza la sustracción de forma inmediata de una constante (0-63) y el resultado es ubicado a un par de registros. Esta instrucción opera con los cuatro registros pares más altos y es apropiada para trabajar con los registros punteros.

Operación:
Rd+1:Rd ← Rd+1:Rd-K

Sintaxis:                                Operandos
SBIW  Rd+1:Rd,K              d {24, 26, 28, 30}   0 ≤ K ≤ 63

Ejemplos:
sbiw    r26,5       ; R27:R26=R27:R26-5
sbiw    r27:r26,5   ; R27:R26=R27:R26-5

En los ejemplos anteriores las dos formas de utilizar la instrucción son equivalentes.


>> Instrucción MUL, Multiply Unsigned

Esta instrucción realiza la multiplicación de dos numeros de 8bits, con un resultado de 16 bits.

Rd
Rr
R1
R0
Multiplicando
x
Multiplicador
Product High
Product Low
8
8
16

Operación:
R1:R0 ← RdxRr  (unsigned  unsigned x unsigned)

Sintaxis:                                Operandos
MUL  Rd,Rr                           0 ≤ d ≤ 31, 0 ≤ r ≤ 31

Ejemplos:
ldi     r18,100     ; cargo en R18 el valor de 100
ldi     r19,200     ; cargo en R19 el valor de 200
mul     r18,r19     ; multiplico R18 x R19 = 100 X 200 = 20000, guardado en R1:R0
movw    r18,r0      ; copio el resultado de vuelta a R19:R18

{ 1 comentarios... read them below or add one }

  1. Este comentario ha sido eliminado por un administrador del blog.

    ResponderEliminar

Buscar en el Blog

Contador de Visitas

Traducir Blog

Etiquetas

Post Populares

- Copyright © Tutoriales Avr -