打印

stm8 指令执行周期需要几个系统时钟?

[复制链接]
21038|26
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wjlqz|  楼主 | 2009-11-13 10:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
stm8 指令执行周期需要几个系统时钟?

有没有 DEMO 汇编代码?
沙发
香水城| | 2009-11-13 11:18 | 只看该作者

使用特权

评论回复
板凳
香水城| | 2009-11-13 11:51 | 只看该作者
不同的STM8指令,占用的空间长度不一样,执行的时间长短也不一样,具体哪条指令占几个字节、多少周期要看2楼给的手册,3楼这样计算有点过于简单了吧?:L

使用特权

评论回复
地板
wjlqz|  楼主 | 2009-11-13 16:02 | 只看该作者
呵呵,看到指令表里有介绍执行周期了;感觉汇编指令很难理解,操作码或标号后面又带一些参数,搞不懂是干嘛用的?

使用特权

评论回复
5
wjlqz|  楼主 | 2009-11-13 16:13 | 只看该作者
汇编指令表里用 R0~R7 来表示 Bit0~Bit7 非常不习惯,对于学过 89C51 的人来说 R0~R7 是通用寄存器,并不是某个寄存器的某一位。

使用特权

评论回复
6
香水城| | 2009-11-13 16:30 | 只看该作者
汇编指令表里用 R0~R7 来表示 Bit0~Bit7 非常不习惯,对于学过 89C51 的人来说 R0~R7 是通用寄存器,并不是某个寄存器的某一位。
wjlqz 发表于 2009-11-13 16:13


不会吧? STM8中根本就没有什么通用寄存器R0~R7,怎么可能搞错。如果不习惯,说明你的适应能力太差,:L

使用特权

评论回复
7
wangkj| | 2009-11-13 16:47 | 只看该作者
r0-r7 表示8个寄存器,32 bit的。
每个运行级,这些寄存器好像都是独立的。
总共实际上是好几十个寄存器。如果我没记错的话。

使用特权

评论回复
8
香水城| | 2009-11-13 17:07 | 只看该作者
8楼的朋友总是喜欢误导大家,关于STM8的指令周期,我已经在另外一个帖中解释得很清楚了,你根本没有好好看,或者说根本不愿意好好看。

唉,悲哀呀!

使用特权

评论回复
9
wjlqz|  楼主 | 2009-11-13 17:39 | 只看该作者
谁可以解释一下 STM8 汇编指令中的附加参数,如: ADD   A,($12,SP)  ;根据指令的基本格式我这样理解:$12 与 A 相加,结果保存在 A ,可是后面的那个 “SP”呢,它是干嘛用的?

使用特权

评论回复
10
香水城| | 2009-11-13 18:01 | 只看该作者
所有的寻址方式都在2楼给出的文档的第5章有详细的解释,12楼说的这个指令寻址方式是SP Indexed addressing mode。下面是手册中的对应说明:

STM8 SP Indexed addressing mode.GIF (19.81 KB )

STM8 SP Indexed addressing mode.GIF

使用特权

评论回复
11
香水城| | 2009-11-13 18:06 | 只看该作者
谁可以解释一下 STM8 汇编指令中的附加参数,如: ADD   A,($12,SP)  ;根据指令的基本格式我这样理解:$12 与 A 相加,结果保存在 A ,可是后面的那个 “SP”呢,它是干嘛用的? ...
wjlqz 发表于 2009-11-13 17:39


简单地说,这条指令的意义是:把A的内容与堆栈中第12个字节相加,结果存放在累加器A中。

这个寻址方式可以方便地实现C语言中对局部变量和函数参数表的操作。

使用特权

评论回复
12
wjlqz|  楼主 | 2009-11-13 20:20 | 只看该作者
STM8 汇编指令的算术运算和逻辑运算的结果都是保存在累加器 A 中,如果要存在其它寄存器中要多一条传送指令,这一点就比其它 CPU 的指令麻烦多了。

使用特权

评论回复
13
香水城| | 2009-11-13 21:03 | 只看该作者
STM8 汇编指令的算术运算和逻辑运算的结果都是保存在累加器 A 中,如果要存在其它寄存器中要多一条传送指令,这一点就比其它 CPU 的指令麻烦多了。
wjlqz 发表于 2009-11-13 20:20


以累加器为核心的指令系统都是这样, 如果你想深入研究或做对比,可以去看看著名的8080、 80x86、Z80等的指令系统,然后我们再来讨论是不是很麻烦,是不是有非常的必要需要高效的寄存器间的传输指令。

使用特权

评论回复
14
wjlqz|  楼主 | 2009-11-13 22:46 | 只看该作者
有没有必要,主要看场合,用低速的时钟又要求有较高的速度,就需要比较高的效率,我写的一个对讲机程序,只用一个定时器,实现9600波特率的串口通讯,模拟亚音频、数字亚音频收发,蜂鸣提示音,外带一个按键检测,全部是 I/O 口模拟,系统时钟只有3.58M。一条指令周期为两个系统时钟。这个芯片的价格只有 STM8S103K 的大约一半左右。

使用特权

评论回复
15
wjlqz|  楼主 | 2009-11-13 23:17 | 只看该作者
还有一点是关于程序空间,台系精简指令集的 MCU 一般是指可以存放多少条的指令,而欧美(暂且这样称呼吧)的MCU是以字节为单位(PIC系列除外),不同的指令占用不同的字节数,STM8 很多对寄存器操作的指令都占用了4个字节的程序空间。这样算下来,8K程序空间的 STM8S103K 能放的指令条数,估计都比不上台系精简指令集 4K程序空间的 MCU 。

使用特权

评论回复
16
秋天落叶| | 2009-11-14 09:29 | 只看该作者
汇编,学习中

使用特权

评论回复
17
香水城| | 2009-11-14 09:32 | 只看该作者
还有一点是关于程序空间,台系精简指令集的 MCU 一般是指可以存放多少条的指令,而欧美(暂且这样称呼吧)的MCU是以字节为单位(PIC系列除外),不同的指令占用不同的字节数,STM8 很多对寄存器操作的指令都占用了4 ...
wjlqz 发表于 2009-11-13 23:17


显然楼主不知道什么是RISC和CISC的差别。

使用特权

评论回复
18
wjlqz|  楼主 | 2009-11-14 11:28 | 只看该作者
我们做消费类电子的不管你的 MCU 是什么结构,我们关心的是性价比,老板更关心价格,相同档次的产品,我们不能采样价格比别人高的器件来做,也许你们的产品可以很好的支持 C 语言;但对于我们熟练的汇编程序员来讲,并没有任何的优势;说道移植性,一个优秀的汇编人员同样也可以采样宏指令做到快速移植,我目前写的义隆汇编指令里就采用定义宏的方式插入了很多 51 的指令和合泰的指令。

使用特权

评论回复
19
香水城| | 2009-11-14 13:13 | 只看该作者
本帖最后由 香水城 于 2009-11-14 17:35 编辑

谢谢您的指教。任何产品都不是万能的,适合其它应用场合的产品不一定适合你的应用,适合你的应用场合的产品不一定适合其它的应用。

欢迎您继续讨论“stm8 指令执行周期需要几个系统时钟?”这个话题。

使用特权

评论回复
20
yewuyi| | 2009-11-14 16:22 | 只看该作者
我们做消费类电子的不管你的 MCU 是什么结构,我们关心的是性价比,老板更关心价格,相同档次的产品,我们不能采样价格比别人高的器件来做,也许你们的产品可以很好的支持 C 语言;但对于我们熟练的汇编程序员来讲, ...
wjlqz 发表于 2009-11-14 11:28


关心整体方案+方案维护的成本才是正道,系统的成本不由一个器件决定就如同系统的可靠性不由一个器件决定一样,怪不得现在的消费电子产品质量越来越差了啊。。。

使用特权

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

本版积分规则

1

主题

8

帖子

1

粉丝