AVR 单片机实现 /90 的汇编算法

本文介绍了一个用于计算除以90的操作的汇编语言函数。该函数通过特殊的数学技巧,利用乘法和位移操作实现了高效的除法运算。输入值存储在寄存器r3:r2中,而计算结果则被放置在r2中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//函数:计算除以90
// 输入放在r3:r2中,输出放在r2
;90 * 182  = 16380 ~ 16384 = 2^14
FUNC_DIVIDE:
 push r0
 push r1
 push r5
 push r16
 ldi r16,182
 
 mul r2,r16 //低字节乘以182
 mov r5,r1 //把结果的高字节存到r5,低字节放弃,即相当于右移了8位
 mul r3,r16 //高字节乘以182
 add r0,r5
 clr r5
 adc r1,r5
 //再右移6位,共右移14位
 swap r0
 lsr r0
 lsr r0
 ldi r16,0b00000011
 and r0,r16
 lsl r1
 lsl r1
 or r1,r0
 //保存结果
 mov r2,r1
 pop r16
 pop r5
 pop r1
 pop r0
 ret
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值