简单的ARM汇编(一)

1.1 题目描述

请编写arm汇编语言程序,实现数列求和:2+4+6+8+...+100(即100以内的偶数求和)。要求:使用寄存器r2保存循环边界,r0用于循环控制,计算的和值保存在寄存器r1中。

1.2 设计思路 

用三个寄存器实现数列求和,一个用来控制循环(也就是每次要加的数),一个用来放循环边界(即100),一个用来存放运算结果。通过 ADD操作实现累加求和,通过CMP和BNE组合使用实现循环跳转。

1.3 实现代码

  1. 通过MOV指令根据题目所需赋予r0、r2、r1寄存器初值

         MOV R0,#2                  ;寄存器R0控制循环

         MOV R2,#100                ;寄存器R2保存循环边界

         MOV R1,#0                  ;结果保存在寄存器R1中

  1. 通过ADD指令进行和操作,同时控制循环的寄存器r0内数值加2

         ADD R1,R1,R0                ;进行和操作         

         ADD R0,R0,#2;                

  1. 用CMP指令判断该值是否等于100,若不等于则执行BNE指令跳转至步骤2;若等于则结束程序。

         CMP R0,R2;

         BNE LOOP;

 

1.4 运行结果

运行结果图如:图1

100转化为16进制为64H

2550转化为16进制为9f6H

寄存器R1中保存的是和值,故100内偶数和为2550,运行结果正确

    

                     图1  100以内偶数求和运行结果图

 

AREA  F,CODE,READONLY

EXPORT Reset_Handler;

Reset_Handler;

MOV R0,#2                   ;寄存器R0控制循环

MOV R2,#100                 ;寄存器R2保存循环边界

MOV R1,#0                   ;结果保存在寄存器R1中

LOOP

ADD R1,R1,R0;

ADD R0,R0,#2;

CMP R0,R2;

BLE LOOP;

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值