首页 > 解决方案 > 如何在函数调用后保持所有变量不变(相同)?

问题描述

我编写了一个简单的汇编代码来计算矩形的表面。但是,在调用我的函数后,我的所有寄存器(包括 R0 和 R1)都必须保持不变。

start:

.DEF var1= R16
.DEF var2= R17
.DEF suma2= R18
.DEF temp= R19
rjmp main2

Rectangle:
mov suma2, var1
mul suma2, var2
ret

main2:
ldi temp, low(RAMEND) 
out SPL, temp
ldi temp, high(RAMEND)
out SPH, temp

ldi var1, 3
ldi var2, 4
ldi suma2, 0

rcall Rectangle
rjmp end4

end4:
nop

这是我写的代码。有没有人知道我可以如何改进我的代码,以便在调用函数后这些寄存器不会改变它们的值?我正在使用 Atmel Studio 7.0,我正在为 ATmega8 微控制器编程(当然代码是用汇编编写的)。

标签: assemblyatmegaatmelstudio

解决方案


推荐阅读