zoukankan      html  css  js  c++  java
  • 汇编入门:循环语句的汇编实现

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

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

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

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

    好了,就介绍到这里。

  • 相关阅读:
    使用C#调用C++类库
    C# IntPtr类型
    C# 调用C++ dll string类型返回
    C# try、catch、finally语句
    C语言 char *、char []、const char *、string的区别与相互转换
    C# 字符串string与char数组互转!
    C#如何调用C++(进阶篇)
    Springboot通过过滤器实现对请求头的修改
    【spring事务】
    命令行参数库:McMaster.Extensions.CommandLineUtils【转】
  • 原文地址:https://www.cnblogs.com/wzben/p/5357406.html
Copyright © 2011-2022 走看看