标题: 单片机汇编程序解读,一个下午没整明白 [打印本页]

作者: 弟弟的猫    时间: 2018-12-9 18:43
标题: 单片机汇编程序解读,一个下午没整明白
请大神帮忙解读下这三段程序,一条条解读,越详细越好。
一群人学了下下午没整明白。。。

QQ图片20181209181237.jpg (36.05 KB, 下载次数: 59)

QQ图片20181209181237.jpg

QQ图片20181209182402.jpg (39.12 KB, 下载次数: 62)

QQ图片20181209182402.jpg

QQ图片20181209182347.jpg (43.09 KB, 下载次数: 56)

QQ图片20181209182347.jpg

QQ图片20181209182355.jpg (33.34 KB, 下载次数: 54)

QQ图片20181209182355.jpg

作者: phang    时间: 2018-12-10 09:20
不找书,不学习,直接问人什么意思???除非你是老板了。
作者: Y_G_G    时间: 2018-12-10 11:49
一条条解读,越详细越好
这语气,神了你,在这的人不是说是为了服务你而来的,大家都是本着相互学习的态度来帮忙别人,同时也是在提高自己.
你知道一条条的去注释,这要多久吗?你也知道自己搞了一个下午.
你随便找一个STC的单片机的数据手册,点到指令集,然后对着指令后面,一条一条抄下来就可以了
作者: diy1997    时间: 2018-12-10 13:03
我第一个学习的就是汇编,用了好久。

后来发现C的好处后弃之。

但现在如果不是非必要,不会用汇编的。


作者: hmz    时间: 2018-12-10 13:53
可以帮但没必要
作者: diego2003    时间: 2018-12-10 14:10
汇编语言比较基础,学好了  对C语言学习也是很有好处的
作者: 嘿嘿1614    时间: 2018-12-10 14:36
加油   先记代码
作者: chengrui    时间: 2018-12-10 14:48
多看书啊,兄弟
作者: zhonghui88    时间: 2018-12-10 14:55
可以帮助!精神可嘉,都用c了,他还在弄汇编
作者: fantasywlh    时间: 2018-12-10 15:27
  不要这样直接看吧,写汇编最好找一个编译软件。 我最早做51就是用汇编的,用伟福什么的那个软件,一步一步去跑代码,看寄存器变化,就知道是什么意思了。学起来还是很快的。   
  如果是为了应付考试,那么还真别浪费这个时间了。
作者: sxhwdz    时间: 2018-12-10 15:57
学汇编不是为了用汇编编程。编程效率C远大于汇编,但是掌握了汇编,可以更好地运用C,更便于调试。有C基础的学习汇编时,可以看看每条C指令对应的汇编,对学习是有好处的
作者: angmall    时间: 2018-12-11 00:15
我给你来个试试

  1. ;流水灯程序
  2. org         0000h       ;设置起始地址
  3.                 ajmp main   ;无条件跳转指令 跳到 main
  4. org         0100h       ;定位的伪指令 顺序放到从0100H开始的程序单元
  5. main:         mov r4,#04h ;向R4寄存器中载入十六进制数04H
  6. loop:         mov a,#01h  ;向A寄存器中载入十六进制数01H
  7. loop1:         mov P1,a    ;取出的值输出到P1端口
  8.                 acall delay ;调入延时程序
  9.                 rl a        ;  累加器A 循环左移
  10.                 djnz r4,loop1  ;检测R4是否为零,每次减1不为零就跳 否则跳到loop1处继续执行
  11.                 mov r4,#04h ;赋初值
  12.                 ajmp loop   ;无条件跳转指令 跳到loop
  13. delay:         mov r7,#64h ;   延时程序 ;向R7寄存器中载入十六进制数64H
  14. loop3:         mov r6,#0C8h ;向R6寄存器中载入十六进制数0C8H
  15. loop4:         nop         ;表示执行一条没有什么意义的空指令
  16.                 nop         ;表示执行一条没有什么意义的空指令
  17.                 nop         ;表示执行一条没有什么意义的空指令
  18.                 djnz r6,loop4  ;检测R6是否为零,每次减1不为零就跳 否则跳到loop4处继续执行
  19.                 djnz r7, loop3  ;检测R7是否为零,每次减1不为零就跳 否则跳到loop3处继续执行
  20.                 ret         ;返回指令
  21. End  ;程序结束
复制代码





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1