assembly - 如何在函数调用后保持所有变量不变(相同)?
问题描述
我编写了一个简单的汇编代码来计算矩形的表面。但是,在调用我的函数后,我的所有寄存器(包括 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 微控制器编程(当然代码是用汇编编写的)。
解决方案
推荐阅读
- python-3.x - 根据条件更新两个数据框列
- android - 如何匹配存储在 Firebase 安全规则内用于 Firestore 的文档字段中的用户 uid
- android - 无法在 android 设备上运行本机应用程序
- java - Android Room 数据库创建了 3 个文件,包括 -shm 和 -wal 文件
- sql - 如何找到所有具有 CHAR 数据类型的列并在其中具有数值的表?
- javascript - 在 textarea 中发现受限字词时不提交表单
- bash - 使用 grep 打印不匹配的模式而不是文件的不匹配内容
- sql - 计算Oracle SQL中单独行中总和的分布
- xml - 如何使用powershell在xml中获取选定节点的行号
- excel - 使用 OpenXML 创建的 Excel 文件在 Excel 中打开时需要修复