Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2321313
  • 博文数量: 318
  • 博客积分: 8752
  • 博客等级: 中将
  • 技术积分: 4944
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-23 07:56
文章分类

全部博文(318)

文章存档

2019年(1)

2017年(2)

2016年(12)

2015年(2)

2014年(1)

2013年(17)

2012年(22)

2011年(9)

2010年(37)

2009年(33)

2008年(44)

2007年(43)

2006年(95)

分类: C/C++

2006-09-12 10:47:20

//函数:计算除以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
阅读(1003) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~