汇编里的JAE和JGE有什么区别?
jge
转移条件:sf异或of=0
转移说明:大于等于转移
其他说明:有符号数,两个标志位sf和of
jae
转移条件:cf=0
转移说明:不低于,或者高于等于,或者进位标志转移清零时转移
其他说明:单个标志,无符号数
在转移指令之前有test、cmp等比较指令
建议看看基础汇编的书:《80x86汇编语言程序设计教程》《汇编语言_第2版(王爽)》
汇编是普通程序员能接触到的最底层语言,学习汇编能够让程序员知道程序在机器上运行的最底层操作。我认为是最能够掌握软件精髓,编写最高效代码的必然选择。
至于怎么学习汇编,不同的人有不同的基础,这个很难有个统一标准。我只能分享一下自己的过程。
上世纪末毕业之后就开始开发单片机程序,使用汇编大约6-7年时间,之后在嵌入式中主要用C,汇编偶尔还是要用。刚开始接触单片机时,第一天先看汇编指令,什么MOV,JAMP之类的,指令并不多,也好理解。再要基本了解单片机的各个引脚。再看别人的经典代码,这个过程比较麻烦,因为好的代码往往写得很巧妙,为了效率(包括考虑运行速度和占用ROM、RAM空间等)代码有时让人难以理解,但看明白一段代码会收获很大。我觉得那时候的代码优美很多,可能现在的嵌入式芯片的空间和速度相对比以前快了很多,已经不大需要太过精简优美的代码。
在编写代码的时候,对单片机的RAM和ROM及引脚功能是必须要了解的,这样就可以编写简单的代码了。要写出好的代码,对芯片时钟和各指令所占字节空间和运行周期必须要掌握,再了解各种中断的原理,这样你在写代码的过程会发现完全掌握代码是如何在芯片上运行的,如何反应在引脚上,这种感觉很爽!在熟悉一种单片机或嵌入式之后,再做其他芯片的开发,你会发现并不困难,只需要重点了解芯片的资料,指令什么的差别都不大的。如果用便宜的芯片完成高精度的时序波形输出,汇编是个好选择。
个人在后期开发生涯,有使用过JAVA和C#,对比起来还是觉得汇编更得心应手,我想主要是汇编让我感觉到可掌控。