Chinaunix首页 | 论坛 | 博客
  • 博客访问: 605889
  • 博文数量: 99
  • 博客积分: 5128
  • 博客等级: 大校
  • 技术积分: 1538
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-27 19:40
文章分类

全部博文(99)

文章存档

2012年(3)

2011年(5)

2010年(4)

2009年(31)

2008年(56)

分类:

2008-08-06 09:28:39

/*------------------------------------------------
                   单字节乘法子程序
        1. 芯片 :EM78P156N
        2. 作者 :Etual
        3. 联系 :Etual@163.com
        4. 日期 :2007-4-27

测试条件: 

          0*0 = 0
          0*1 = 0
          0xFF * 0xFF = 0xFE01
          0x55 * 0xAA = 0x3872
结果:
    抽取了几个比较极限的参数,全零和最大值情况
另外取了一个普通数值,全部计算正确。
-------------------------------------------------*/

r20 == 0x20
r21 == 0x21
r22 == 0x22
count == 0x23
psw == 0x03
c == 0
z == 2

/*-----------------------------------------------*/
               org 0x00
               jmp start
         
start:
               mov a,@0x55
               mov r21,a
               mov a,@0xaa
               mov r22,a
               call mul_sub
loop:
               wdtc
               jmp loop


/*---------------------------------------------------
                  单字节的乘法
功能:R21*R22-->R20:R21(H:L)
入口:      

            被乘数 :R21
            乘数 :R22
出口:

            积 :R20:R21(R20为高位)
            局部变量 :count
---------------------------------------------------*/
mul_sub:
               clr r20
               mov a,@8
               mov count,a
               bc psw,c
               rrc r21
mul_r1:
               jbs psw,c
               jmp mul_r2
               mov a,r22
               add r20,a
mul_r2:
               rrc r20
               rrc r21
               djz count
               jmp mul_r1
               ret
               

阅读(1104) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~