- 注册时间
- 2005-6-3
- 最后登录
- 1970-1-1
|
发表于 2006-8-28 21:36:48
|
显示全部楼层
鉴于没有意义,我重新发。。。
可能是我不懂的,也可能是重要的。。。
留个印
例2: //求二进制数的平方根
程序目的:将地址2100的内容求得其平方根后,结果送地址2101,为方便计算,这里假设地址2100的内容为整数,方根也取整数
例如 若(2100)=19 (十进制的25)
结果(2101)=05
若(2101)=65 (十进制的101)
结果(2101)=0A
求方根方法:我们知道任何整数都有如下性质:
1 * 1 = 1
2 * 2 = 1 + 3
3 * 3 = 1 + 3 + 5
4 * 4 = 1 + 3 + 5 + 7
......
N * N=1 + 3 + 5 + ...... + (2N-1)
那么,我们可以把一个正整数X = N * N连续减去奇数 1, 3, 5, 7......(2N-1)直到结果为0或者不够减为止,所减去奇数的个数
就是这个正整数的整数平方根.
在下面的程序里,我们将目标数连续减去地址F0的内容
2000 DA#$00 //初始化地址F0的内容为00
2002:STA $F0
2004 DA $2100 //取目标数到寄存器A中
2007:SEC
2008:SBC $F0 //目标数减去地址F0的内容
200A:BCC $2016 //不够减转结束,结果在地址F0中
200C:INC $F0 //地址F0的内容加1,(06)为已减的奇数个数
200E:SBC $F0 //和前面的减法指令合起来正好减去了奇整数
2010:BEQ $2016 //减结果为0,转结束,结果在地址F0中
2012:BCS $2008 //减结果>0,继续减
2014 EC $F0 //减结果<0,则从结果中扣除1
2016 DA $F0
2018:STA $2101 //把最后结果送地址2101
201B:RTS |
|