汇编其实没有想象中的那么难!
我们用高级语言时,定义变量,循环语句,判断语句等等句子,我们就不想知道它在汇编是怎么实现的吗?
汇编其实就是对我们板子中寄存器的操作,所以汇编提供了一堆指令,我这里就不展开了,只列举一下会用到的几个。
ADD 增加 ADD R1 #1 表示R1寄存器加一
MOV 传值 MOV R1 #0 表示将R1寄存器的值设为一
B 转跳 B XX 表示要转跳去执行xxx语句
CMP 比较大小 CMP R1 R2 比较R1和R2的大小
HS 大于等于 BHS XXX 表示如果大于或等于则去执行XXX 跟在比较语句后面使用
NOP 啥都不干 基本就是程序结束了
我一直觉得,学习一个新东西,只要把它的一个简单实例弄懂了之后,后面就很简单了。
来看看C语言的循环语句,定义i和j,循环10次,每次把i和j加一
int i = 0; int j = 0; for(;i<10;i++){ j++; } return 0;
相应的汇编语言
因为方便大家看到颜色,我就截图来了。
简单说一下:
LOOP 和 LOOP_END是程序段名称,代表了后面的那一段程序。
首先我们使用了R1和R2这两个寄存器,做为我们的I和J两个变量。
初始化时,先用MOV语句,将这俩寄存器置为0.
LOOP是循环执行语句段,比较R1和10的大小,若小于10,则使用ADD语句,将R1和R2的值加一,然后再执行LOOP的程序段;如果R1大于等于10,则执行跳转语句,
跳转到LOOP_END程序段,结束该循环。
好了,就介绍到这里。