打印

51单片机c语言与汇编的疑问

[复制链接]
1791|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
ayb_ice| | 2013-1-3 13:33 | 只看该作者
本帖最后由 ayb_ice 于 2013-1-3 13:34 编辑

这有什么好解释的,不就是一一对应吗,可能有上些优化,想要防止优化变量加volatile修饰一下即可

使用特权

评论回复
板凳
醉心369|  楼主 | 2013-1-3 14:14 | 只看该作者
ayb_ice 发表于 2013-1-3 13:33
这有什么好解释的,不就是一一对应吗,可能有上些优化,想要防止优化变量加volatile修饰一下即可 ...

MOV   R5,0x06
是什么意思啊

使用特权

评论回复
地板
uet_cache| | 2013-1-3 14:16 | 只看该作者
MOV是赋值语句。如果你用C语言写程序就不用考虑汇编。如果你非要搞懂汇编,可以看下单片机课本,上面一般有讲汇编语言。

使用特权

评论回复
5
ayb_ice| | 2013-1-3 14:24 | 只看该作者
醉心369 发表于 2013-1-3 14:14
MOV   R5,0x06
是什么意思啊

直接寻址嘛
0x06 = 0R6

使用特权

评论回复
6
醉心369|  楼主 | 2013-1-3 15:07 | 只看该作者
ayb_ice 发表于 2013-1-3 14:24
直接寻址嘛
0x06 = 0R6

这句话的意思不就是把地址0x06(即R6)的内容赋给R5嘛,是不是也可以写成MOV   R5,@R6  ?

那为什么要把地址0x06(即R6)的内容赋给R5呢

使用特权

评论回复
7
ayb_ice| | 2013-1-3 15:40 | 只看该作者
醉心369 发表于 2013-1-3 15:07
这句话的意思不就是把地址0x06(即R6)的内容赋给R5嘛,是不是也可以写成MOV   R5,@R6  ?

那为什么要 ...

意思是那意思,
可是51不支持你说的那个写法,实际是没有那个寻址方式,要么用直接寻址,要么用多条语句实现,当然直接寻址效率高些。。。

使用特权

评论回复
8
醉心369|  楼主 | 2013-1-3 15:43 | 只看该作者
ayb_ice 发表于 2013-1-3 15:40
意思是那意思,
可是51不支持你说的那个写法,实际是没有那个寻址方式,要么用直接寻址,要么用多条语句 ...

把地址0x06(即R6)的内容赋给R5,是不是想把表达式i++保存下来啊

使用特权

评论回复
9
望断云山| | 2013-1-4 11:28 | 只看该作者
51的r0-r7寄存器是可以切换的,0x06是r6,但r6就不一定是0x06

使用特权

评论回复
10
醉心369|  楼主 | 2013-1-4 15:36 | 只看该作者
其实我想问的是这句话的意思,我个人理解:把地址0x06(即R6)的内容赋给R5,并把表达式i++保存下来啊

使用特权

评论回复
11
xuyaqi| | 2013-1-4 17:13 | 只看该作者
MOV   R5,0x06 没有把表达式i++保存下来的作用,INC R6才是i++

使用特权

评论回复
12
醉心369|  楼主 | 2013-1-4 18:43 | 只看该作者
xuyaqi 发表于 2013-1-4 17:13
MOV   R5,0x06 没有把表达式i++保存下来的作用,INC R6才是i++

那这句话的意思到底起什么作用,如果不起作用直接去掉就oK了,我相信他存在的作用

使用特权

评论回复
13
醉心369|  楼主 | 2013-1-5 14:33 | 只看该作者
自己顶一下

使用特权

评论回复
14
xuyaqi| | 2013-1-6 18:13 | 只看该作者
醉心369:你是怎么理解 i++ 的。

使用特权

评论回复
15
醉心369|  楼主 | 2013-1-7 07:54 | 只看该作者
xuyaqi 发表于 2013-1-6 18:13
醉心369:你是怎么理解 i++ 的。

公式i++ 不是就等于i++后的i吗,MOV   R5,0x06 我就想弄明白这句话的意思

使用特权

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

本版积分规则

60

主题

283

帖子

2

粉丝