汇编入门:循环语句的汇编实现

时间:2021-02-21 01:10:03

汇编其实没有想象中的那么难!

我们用高级语言时,定义变量,循环语句,判断语句等等句子,我们就不想知道它在汇编是怎么实现的吗?

汇编其实就是对我们板子中寄存器的操作,所以汇编提供了一堆指令,我这里就不展开了,只列举一下会用到的几个。

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程序段,结束该循环。

 

好了,就介绍到这里。