51的单片机有111条指令,复杂?
我现在正在学习51单片机的汇编,指令太多了,简单的程序还可以,但是要有点复杂的程序编写起来真麻烦,我想是不应该学习C语言,但我听说汇编的程序很容易运行并且很快,我不知道我是否应该继续把汇编学下去,太难了,太复杂了,指令太多了,不实用的单片机,这样的指令怎样去普及?我想不明白,或许是想以后更好的发展空间才这样设计的吧?请老师们说说看法!
全部回复(10)
正序查看
倒序查看
现在还没有回复呢,说说你的想法
@njyd
还有: 111条指令是指机器指令,是操作指令与寻址“相乘”得到的.实际应用只需要记住汇编中的操作指令(mov、jmp等)与每种操作指令可以使用的寻址方式就行了,这样顶多记十几条就够用了,碰到不常用的没记住再查书. 还有,象调用子程序指令有长调用LCALL和短调用ACALL,直接转移指令也有长短之分:LJMP、AJMP、SJMP.实际写程序时不需要管长短,只接写CALL和JMP就行了,现在的汇编程序会根据距离远近自动选用长短.这样不光少记了三条指令,还不需要在编程时判断距离远近.
老师,你说的真好,有道理,指点了就是明白!我还想问相乘等运算在实际编程中有用吗?大吗?有简便的方法吗?还有设定时间很麻烦,有简单的方法设定吗?有时候还需要计算每个指令的长度等?
0
回复
提示
@苏磊
老师,你说的真好,有道理,指点了就是明白!我还想问相乘等运算在实际编程中有用吗?大吗?有简便的方法吗?还有设定时间很麻烦,有简单的方法设定吗?有时候还需要计算每个指令的长度等?
单字节相乘很容易,多字节就比较麻烦,我是从书上找乘法程序改一下用上,而且在我的范围基本上不用乘除法.
有一些偷懒办法,比如乘除二、四等可以用右、左移一、两位解决.
时间要准确一般应该用定时器,如果要计算一段程序的运行时间我有个偷懒的办法,不用算.仿真机监控程序都有运行时间显示,在仿真机上运行这段程序再看时间显示就知道了.但这种方法不太准,因为大部分程序运行时都会有不同的转移路径,这样每次运行到的语句就会不一样.甚至没有不同的转移路径也会有误差,我碰到过同样一段延时程序多次运行时间有大约千分之几的不同.
有一些偷懒办法,比如乘除二、四等可以用右、左移一、两位解决.
时间要准确一般应该用定时器,如果要计算一段程序的运行时间我有个偷懒的办法,不用算.仿真机监控程序都有运行时间显示,在仿真机上运行这段程序再看时间显示就知道了.但这种方法不太准,因为大部分程序运行时都会有不同的转移路径,这样每次运行到的语句就会不一样.甚至没有不同的转移路径也会有误差,我碰到过同样一段延时程序多次运行时间有大约千分之几的不同.
0
回复
提示