Herramientas Personales

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
Acciones de Documento