这里使用的是keil4软件,将编写的C语言程序汇编成汇编语言。
这里只用最简单的C语言做了一下参考,所举的例子是最简单的,只能用于了解一下汇编的表达方式。
如图所示,条件判断语句的汇编语句表达是赋值后与进行异或比较,再判断是否进行跳转。
将立即数03赋值给累加器A,然后将累加器A的值与立即数05进行异或(XRL是异或运算指令)之后赋值给A,相同的两个数值进行异或运算会得到0的结果,之后判断A的值是否为0,JNZ是A不为零就跳转到C:080F地址处,若A为零则运行下一条语句。
while(1)的实现方式十分简单,只是一条无条件跳转语句SJMP,执行到这一条语句就跳转回C:080F,一遍遍执行while括号里的指令,死循环,不跳出。
若不存在死循环,主函数main执行完一遍后回进行复位,将所有寄存器复位成00的初始状态,特殊寄存器SP复位为0x07,之后跳转程序开头(C:0800)重复执main函数。
将学到的东西纪录下来,既是对当天学习成果的总结,也是对自身的检验,看自己到底是只过了一遍脑,还是真得掌握了所学的知识。
C语言程序的反汇编解析
这篇博客通过keil4软件演示了如何将C语言程序反汇编为汇编语言。作者以简单的C语言代码为例,解释了条件判断和死循环在汇编语言中的实现。例如,条件判断通过赋值、异或比较和跳转指令实现,而while(1)循环则由无条件跳转指令SJMP构成,形成无限循环。文章强调了记录和理解这些过程对于巩固学习成果的重要性。
1645

被折叠的 条评论
为什么被折叠?



