Práctica con AVR Studio 4: Plantilla SUMA
por Baena Oliva, Carmen
—
Última modificación
22/04/2025 17:05
AVR_2025_Plantilla1_Suma_Alumnos.txt
—
Plain Text,
2Kb
Contenido del Archivo
;***************************************** ; Plantilla Programa AVR Suma [32] ; SUM = A + B ; Todos los datos son de 32 bits (little endian a nivel de Byte) ; Su ubicaci�n memoria M ser� ; SUM en M(result+3):M(result) ; A[32] en M(datos+3):M(datos) ; B[32] en M(datos+7):M(datos+4) ;***************************************** ; Comienzo general .include "m328Pdef.inc" ; Valores de sumandos mediante EQU (A y B en little endian) ; A = A3 A2 A1 A0. Primer dato: A = $ 12 34 56 78 ; B = B3 B2 B1 B0. Segundo dato: B = $ 09 AB CD EF .equ A3 = 0x12 ***** Complete los otros valores de los bytes de A y de B .cseg .org 0 jmp main ; Programa principal (main) .org $100 main: call IniVal ; M <-- A, B usando Y como puntero call cargaenreg ; Carga los datos A y B desde M a registros call suma32 ; Suma 4 Bytes, R7:R4 <-- R7:R4 + R11:R8 ; Guardar el resultado usando Z como puntero ; En primer lugar, se da valor a Z ldi zh,high(result) ldi zl,low(result) ; En segundo lugar, se guarda el resultado en M usando Z ***** Complete esta parte fin: rjmp fin ; Acaba aqu�l programa ; Subrutina IniVal, que guarda A y B en M(datos):M(datos+7) ; Y como puntero y se guardan en little endian a nivel de Byte IniVal: ; En primer lugar, se da valor a Y ***** Complete esta parte ; En segundo lugar, se guardan en M los datos A y B ldi r16,A0 ;Guarda A0 st y+,r16 ***** Complete los otros valores ret ; retorno de IniVal ; Subrutina cargaenreg, para cargar datos A y B desde M a registros ; Usando Y como puntero, R11:R4 <-- M(datos+7):M(datos) cargaenreg: ***** Inicialice de nuevo el valor del puntero Y ***** Guarde en R11:R4 los valores M(datos+7):M(datos) ret ; retorno de cargaenreg ; suma32 R7:R4 = R7:R4 + R11:R8 suma32: add r4,r8 ***** Complete las instrucciones de suma ret ; retorno de suma32 ; Segmento de datos para reservar 8 bytes para A y B y 4 para la suma .dseg .org $100 datos: .byte 8 result: .byte 4