Hanoi in NASM — 如何正确学习汇编
曾经的嵌入式课程令人头皮发麻,教材是一本老师们随意拼凑在一起的书,里面的东西毫无学习的逻辑可言。汇编语言的教学更加令人无语,老师说,你们看看书,自己多写写就会了(但是书写的很差,也不适合初学者上手)。
然而最近在看Paul Carter教授编写的PC Assembly Language一书,我猛然悟道了,之前许多一知半解的知识在书中都得到了比较完善的讲解。所以大家学习汇编也可以多看看他写的这本书,确实会对大家理解计算机比较偏底层的知识非常有帮助,毕竟汇编可以说是离硬件最近的一门语言。而且在学完汇编后,你会发现你对C语言的理解也更上了一个台阶。
曾经在嵌入式课上,老师建议我们可以用汇编写一下汉诺塔,但是当时我对汇编中函数调用时寄存器的分配,存储空间的操作一头雾水,并没能自己独立写好。现在,我回过头来重新写这个作业(曾经的bonus作业),也算是给自己补了补课。代码如下:
1 | ; int main(int argc, const char * argv[]) { |
更加完整的文档我放到了我自己的github上(包括如何编译的说明),大家如果有兴趣可以自行下载。