浅谈单片机中C语言与汇编语言的转换(3)

delay70:
        mov r6,#70
D2:        mov R7,#248   
d1:        djnz R7,d1    //248*70次
        djnz R6,D2
        ret
       
delay5:   
        mov r6,#5  //消抖。
F7:    mov R7,#248
F8:    djnz r7,F8    //248*5次
        djnz r6,F7
        ret

注意:248=28 ,约等于1ms。delay为延时程序。

温馨提示:在汇编中���序代码的大小写不受影响,但在C语言中就有影响了。

思考1:ret 和 reti都是程序返回指令,有什么区别?

我的回答:ret是子程序返回指令,reti是中断子程序返回指令。区别在于如果是acall 、lcall指令调用的子程序,返回指令就用ret;如果地址是0003,0013,000B,001B,0023调用的子程序,返回指令就用reti。

思考2:mov 20h,#0h 和 setb 20h 都是加1,用什么区别?

我的回答:mov指令中的20h指字节,setb中的20h是位。

旅途结束!

还记得前段时间我一直纠结于汇编语言中的各种指令的语法和功能,直到一个阳光明媚的中午,我一手拿着已经写好的两页半的C语言代码,一手拿着一本单片机的汇编指令查询手册,开始一行一行的翻译,可能汇编代码会在调试中有所错误,但基本逻辑是对的。而且这次C——>汇编,使我更加深入地理解了数据在计算机中的存储与调用。在此期间班主任和同学也给我答疑解惑,相信在以后的道路上,我会更加更深入地理解计算机。越努力,越幸运!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/4d44d39645c5d497d2e6a8c672900322.html