打印

发个48时钟的2字节乘以两字节的51汇编。

[复制链接]
1694|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
linqing171|  楼主 | 2009-5-20 09:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
知道老hot和邓mm 高人经常来这里。
今天看资料,有点疑问发一下。

8-bit (8051) 
MOV A, XL ; 2 bytes
MOV B, YL ; 3 bytes 
MUL AB; 1 byte
MOV R0, A; 1 byte 
MOV R1, B; 3 bytes
MOV A, XL ; 2 bytes 
MOV B, YH ; 3 bytes 
MUL AB; 1 byte 
ADD A, R1; 1 byte 
MOV R1, A; 1 byte
MOV A, B ; 2 bytes
ADDC A, #0 ; 2 bytes
MOV R2, A; 1 byte
MOV A, XH ; 2 bytes
MOV B, YL ; 3 bytes
MUL AB; 1 byte
ADD A, R1; 1 byte
MOV R1, A; 1 byte
MOV A, B ; 2 bytes
ADDC A, R2 ; 1 bytes
MOV R2, A; 1 byte
MOV A, XH ; 2 bytes
MOV B, YH ; 3 bytes
MUL AB; 1 byte
ADD A, R2; 1 byte
MOV R2, A; 1 byte
MOV A, B ; 2 bytes
ADDC A, #0 ; 2 bytes
MOV R3, A; 1 byte
Time: 48 clock cycles 
Code size: 48 bytes 


16-bit 
MOV R4,&0130h 
MOV R5,&0138h
MOV SumLo,R6
MOV SumHi,R7
(Operands are moved
to and from a memory
mapped hardware
multiply unit)
Time: 8 clock cycles 
Code size: 8 bytes 



ARM Cortex-M0
MULS r0,r1,r0
Time: 1 clock cycle
Code size: 2 bytes

相关帖子

沙发
linqing171|  楼主 | 2009-5-20 09:02 | 只看该作者

例子里面的是最快的么?

使用特权

评论回复
板凳
linqing171|  楼主 | 2009-5-20 21:42 | 只看该作者

老hot还没有上线?

我只是想确认一下第一个51的在只使用R0 R1 R2 R3 结果寄存器和源寄存器,长度是不是最短的。

使用特权

评论回复
地板
ljm810010| | 2009-5-20 23:12 | 只看该作者

肯定不是最短的

粗看了一下,第一个程序有两处这样的:
MOV A, B ; 2 bytes
ADDC A, #0 ; 2 bytes

稍为改一下
CLR  A    ; 1 byte
ADDC A, B ; 2 bytes

这样就省两字节了。

高手们请继续...

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

53

主题

2875

帖子

15

粉丝