ARM汇编语言实现while循环

.section .data
.output:
	.ascii "%d\n\000"
.section .text
	.global main
main:
	mov ip, sp
	stmfd sp!, {fp,ip,lr,pc}
	sub fp, ip, #4
	sub sp, sp, #80 

	@memory and register

	mov r3, # 1
	mov r0,r3

loop:
	cmp r0,# 15
	bge stop
	mov r1,# 1
	add r2, r0, r1
	mov r0, r2 

	@保护现场
	str r0, [fp,#-16]	

	str r0,[fp,# -20 ]
	ldr r0, =.output
	ldr r1,[fp,# -20 ]
	bl printf  

	@恢复现场
	ldr r0,[fp,#-16]

	b loop
stop:
	ldmea fp, {fp,sp,pc}

  

ARM汇编语言实现while循环,布布扣,bubuko.com

时间: 2024-08-04 20:50:02

ARM汇编语言实现while循环的相关文章

ARM 汇编语言源代码行的语法规则

ARM 汇编语言源代码行的语法规则 3.1 Syntax of source lines in assembly language 汇编器首先解析汇编语言源代码,然后把源代码汇编成目标文件.汇编语言源代码的每一行都要符合如下所示的语法格式:      {symbol} {instruction|directive|pseudo-instruction} {;comment} 语法格式中的以大括号分割的三个部分都是可选的. symbol通常表示一个标号.在指令和伪指令中,symbol总是一个标号.

[基于Android的ARM汇编语言系列]之一:ARM汇编语言开篇

作者:郭嘉 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell 这是[基于Android的ARM汇编语言系列]博文的开篇文章,这里会先介绍一下ARM处理器的大致分类和作用. 一 ARM处理器与ARM指令集 整个ARM处理器被分为三个部分: Classic Embedded Application Classic被称为经典系列. ARM1~ARM11一直都以数字来命名

[基于Android的ARM汇编语言系列]之二:原生程序的生成过程

作者:郭嘉 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell 所谓的原生程序指的是用C/C++编写的程序,下面来详细演示一下原生程序是怎么一步步生成汇编代码的. 这里编译的是一个简单的hello.c程序,如下所示: #include <stdio.h> int main(int argc, char* argv[]){ printf("Hello AR

ARM汇编语言的程序结构

一个ARM汇编语言源程序的基本结构: AREA Init, CODE, READONLY ENTRY Start LDR R0, =0x3FF5000 LDR R1, 0xFF STR R1, [R0] LDR R0, =0x3FF5008 LDR R1, 0x01 STR R1, [R0] ... ... ... ... ... ... END 在 ARM( Thumb)汇编语言程序中,以程序段为单位组织代码. 段是相对独立的指令或数据序列,具有特定的名称.段可以分为代码段和数据段,代码段的内

[基于Android的ARM汇编语言系列]之四:ARM处理器的寻址方式

作者:郭嘉 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell 处理器的寻址方式是通过指令给出的地址码字段来寻找真实操作数地址的方式,ARM处理器支持9中寻址方式. 一 立即寻址 立即寻址指令后面的地址码部分为立即数(常量或常数),立即寻址多用于给寄存器赋值. 举例 MOV RO, #1234 指令执行后,R0=1234. 二 寄存器寻址 寄存器寻址中,操作数在寄存

[基于Android的ARM汇编语言系列]之五:ARM指令集与Thumb指令集

作者:郭嘉 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell 写在前面:本篇文章旨在大致介绍下ARM指令集的相关内容,这里也同时提供一个有详细解释和用例的待书签的PDF版本,方便大家查阅. ARM指令集详解 指令集是处理器的核心,ARM指令的基本格式如下所示: opcode {cond}{S}{.W\.N}Rd, Rn{.operand2} S:指定是否影响CPS

ARM汇编语言

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells Github:https://github.com/AllenWells 一 寄存器 存储单元,32存储单元,4个字节的存储单元临时存放ALU运算结果的存储单元 Cortex-A R0到R15 为寄存器的编号 R0~R7 1组 8 R8~R12 2组 10 R13 7组 7 R14 7组 7 R15(PC) 1组 CPSR 1组 SPSR 6组 A

[基于Android的ARM汇编语言系列]之三:ARM汇编语言程序结构

作者:郭嘉 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell Android平台的ARM汇编是GNU ARM汇编格式,使用的汇编器是GAS(GNU Assembler),GAS有自己的一套语法结构.详细的内容可以查阅GAS语法结构官方手册. 我们先来看一个完整的ARM汇编程序: C代码: #include <stdio.h> int main(int argc,

[基于Android的ARM汇编语言系列]之六:NEON指令集与VFP指令集

作者:郭嘉 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell NEON指令集与VFP指令集是ARM指令集的扩展,多用于多媒体编程和浮点运算. 一 Android平台使用NEON指令集与VFP指令集 Android NDK从r3版本开始也添加了对NEON指令集与VFP指令集的支持.使用方法如下所示: 1 运行时检测处理器是否支持NEON指令集与VFP指令集 Andr