导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→请帮忙指点除法算法问题?[zxlsky]

 *第26585篇: 请帮忙指点除法算法问题?

  
楼 主:zxlsky 2004年10月11日20:19
 请帮忙指点除法算法问题?
各位好!今日看到除法子程序,却不知其算法,演示完了,仍不知其到底是怎么实现的,望前辈指点迷津!万分感谢!


子程序如下:

双字节二进制无符号数除法 

入口条件:被除数在R2、R3、R4、R5中,除数在R6、R7中。 
出口信息:OV=0 时,双字节商在R2、R3中,OV=1 时溢出。 
影响资源:PSW、A、B、R1~R7 堆栈需求: 2字节 
DIVD: CLR C ;比较被除数和除数 
MOV A,R3 
SUBB A,R7 
MOV A,R2 
SUBB A,R6 
JC DVD1 
SETB OV ;溢出 
RET 
DVD1: MOV B,#10H ;计算双字节商 
DVD2: CLR C ;部分商和余数同时左移一位 
MOV A,R5 
RLC A 
MOV R5,A 
MOV A,R4 
RLC A 
MOV R4,A 
MOV A,R3 
RLC A 
MOV R3,A 
XCH A,R2 
RLC A 
XCH A,R2 
MOV F0,C ;保存溢出位 
CLR C 
SUBB A,R7 ;计算(R2R3-R6R7) 
MOV R1,A 
MOV A,R2 
SUBB A,R6 
ANL C,/F0 ;结果判断 
JC DVD3 
MOV R2,A ;够减,存放新的余数 
MOV A,R1 
MOV R3,A 
INC R5 ;商的低位置一 
DVD3: DJNZ B,DVD2 ;计算完十六位商(R4R5) 
MOV A,R4 ;将商移到R2R3中 
MOV R2,A 
MOV A,R5 
MOV R3,A 
CLR OV ;设立成功标志 
RET 

  
2楼:hawker2001 2004年10月12日08:48
 将一个二进制数进行左移一位就是它原来的2
将一个二进制数进行左移一位就是它原来的2倍,即X2的值,同理将这个数右移一位就是除2了.不妨验证一下.不过要注意带进位的问题
  
3楼:guest 2004年10月15日16:38
 从高位减起,比从底位减起有快,可以验算一
从高位减起,比从底位减起有快,可以验算一下

>>>>>>对该主题发表你的看法

本主题贴数3,分页: [第1页]


[上一篇主题]:新手及爱好者和零售商可以考虑。

[下一篇主题]:应届毕业生可以考虑