我在大学期间以68HC11学习。它们的使用非常简单,但是老实说,大多数低功耗微控制器都是类似的(AVR,8051,PIC,MSP430)。将增加微控制器的ASM编程复杂性的最大问题是支持的存储器寻址模式的数量和类型。首先应避免使用更复杂的设备,例如高端ARM处理器。
我可能会建议将MSP430作为一个很好的起点。也许用C编写程序,然后通过用内联汇编替换各种功能来学习。从简单开始,x + y = z,依此类推。
用汇编语言替换函数或算法后,比较并对比编码方式和C编译器生成的内容。在我看来,这可能是学习汇编的更好的方法之一,同时也了解编译器的工作方式,这对于嵌入式程序员而言非常有价值。只需确保首先关闭C编译器中的优化,否则您可能会对编译器生成的代码感到困惑。逐渐打开优化并注意编译器的工作。
RISC与CISC
RISC的意思是“精简指令集计算”,它不是指特定的指令集,而只是表示CPU具有最少指令集的设计策略。很少有指令可以各自执行基本操作。对“成为RISC”的要求没有严格的技术定义。另一方面,CISC架构有很多指令,但是每个指令都“做更多”。
RISC的目的优势在于,您的CPU设计需要更少的晶体管,这意味着更少的功耗(对于微控制器来说很大),更便宜的制造成本和更高的时钟频率可带来更高的性能。通常,更低的功耗和更便宜的制造是正确的,由于CISC体系结构的设计改进,更高的性能并未真正达到目标。
今天,几乎所有的CPU内核都是RISC或“中间层”设计。即使使用最著名(或臭名昭著)的CISC体系结构,x86。现代的x86 CPU在内部是类似RISC的内核,前端装有螺栓连接的解码器,可将x86指令分解为多个RISC指令。我认为英特尔将这些称为“微型操作”。
至于哪个(RISC vs CISC)更容易在汇编中学习,我认为这很容易。与使用CISC指令集执行相同的操作相比,使用RISC指令集执行的操作通常需要更多的汇编行。另一方面,由于大量可用指令,CISC指令集学习起来更加复杂。
CISC取一个不好的名字的大部分原因是,x86到目前为止是最常见的示例,使用时有些混乱。我认为多数是由于x86指令集很旧,并且在保持向后兼容性的同时已被扩展了六次或更多次。甚至您的4.5Ghz核心i7都可以在286模式下运行(并在启动时运行)。
至于ARM是RISC架构,我认为这值得商de。它当然是一个负载存储架构。基本指令集类似于RISC,但是在最近的修订中,指令集已经发展到相当程度,以至于我个人认为它更像是RISC和CISC之间的中间立场。Thumb指令集确实是ARM指令集中最“ RISCish”的部分。