利用ARM指令具有条件执行的功能写出下列C代码对应的汇编代码。要求按照ARM汇编程序语法书写。

int a=1,b=4;
if (a>b)
a=b+1;
else
b=a+1;
return a-b;

inti,a[10]={0,1,2,3,4,5,6,7,8,9};
for (i=0;i<10;i++)
a[i]=a[i]+i;
每行帮忙写下注释,谢谢1

第1个回答  2014-12-18
小学文化胡编一个

.equ a, 1 @ GNU binutils
.equ b, 4
ldr r0, = a

ldr r1, = b

cmp r0, r1
ite gt
addgt r0, r1, # 1
addle r1, r0, # 1
sub r0, r1

.equ i, 0
a: .byte 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
ldr r2, = a

ldr r3, = i
yanshi1:

add r3, # 1

add r4, r2, r3
ldr r5, [r4]
str r4, [r5]

cmp r3, # 10
bne yanshi1本回答被网友采纳

arm常用几个汇编语言的程序
COUNT EQU 0x30003100 ;定义变量COUNT的基地址 AREA Example1,CODE,READONLY;声明代码段Example1为只读 ENTRY ;标识程序入口 CODE32 ;声明32位ARM指令 START LDR R1,=COUNT ;将0X30003100赋给R1 MOV R0,#0 ;执行R0=0 STR R0,[R1] ;存储R0寄存器的数据到R1指向的存储单元 LOOP LDR R1,=COUNT...

用arm的汇编语言,求1到50的累加和,记住是arm下的汇编语言
将一个存储空间设置为1,预先留两个存储空间,一个用来做加数,一个用来做和数。这个程序需要循环,50次。第一条指令是设置一个循环标示,第二条指令存将初值为1的存储空间的数取出存入加数的存储空间。第三条指令初值为1的那个空间自增1,相加后存到和数中去。第四条指令,判断循环是否需要结束。

代码or 指令,浅析ARM架构下的函数的调用过程
2、一个例子 通过C代码实例,分析了函数调用与返回的实际过程,以及在ARM架构下的栈操作。借助gdb运行后发现的SEGFAULT错误,结合反汇编代码,观察了栈空间的变化,从而推导出函数调用关系。3、实战讲解 通过具体的core分析,展示了如何从汇编指令中推导出调用栈。重点关注了x29、x30、sp、pc四个寄存器的值...

Linux内核-GCC内联汇编参考手册
内嵌汇编语言的使用类似于普通 C 语句,例如以下简单示例:`asm("nop");`,它实际上执行了一个无操作指令(NOP),在一些情况下用于实现短暂的延迟效果。然而,在将其添加到 C 代码之前,建议深入阅读本文档以确保理解其工作方式。在内嵌汇编中,可将多条汇编指令包含在同一行内,但为了提高代码可读性...

C语言调用汇编程序时,使用哪些寄存器来传递参数?
\\r\\n在使用C语言时,要用到和汇编语言的混合编程。若汇编代码较为简洁,则可使用直接内嵌汇编的方法;否则要将汇编程序以文件的形式加入到项目中,按照ATPCS(ARM\/Thumb过程调用标准,ARM\/Thumb Procedure Call Standard)的规定与C程序相互调用与访问。\\r\\n在C程序和ARM汇编程序之间相互调用时必须遵守...

写出以下C语言过程对应的MIPS汇编表示?
硬件平台是什么?pc上还是51上或者arm,mips?不 同硬件平台汇编不同,编译器对程序的处理也就不同。用汇编一般都是考虑到可以直接访问寄存器,速度有优势,但最大的缺点是不能跨平台,可移植性很差。

ARM汇编语言简单编程问题
1.用ARM汇编指令实现的C赋值语句:x=(a+b)-c,在进行运算之前,代码必须先把a、b、c的值装入到寄存器,运算结束后,还要把x的值存回存储器中。2用ARM汇编指令实现的C语句:z=(a<<2)|(b&15)。3在ARM汇编指令中实现下面条件转移语句:if(a...

使用ARM汇编伪指令编程:分别将两个无符号数放在寄存器R0和R1中,求...
…LPOOL DCD 0xFFF 将外部地址ADDR1读取到R1中 LDR R1,=ADDR1 汇编后将得到:LDR R1,[PC,OFFSET_TO_LPOOL]…LPOOL DCD ADDR1 4、NOP空操作伪指令 在汇编时将被替换成ARM中的空操作,如MOV R0,R0 NOP伪指令不影响CPSR中的条件标志位 以上是对ARM汇编语言的回答描述,望采纳。谢谢 ...

如何使用arm汇编指令的条件执行功能实现if语句
可以用CMP Rn , operand2指令比较完条件后,在后面执行程序时指令后加上"EQ",就实现了条件执行,也就是if 功能。比如: LDR R1 , [R0] ;R0为地址的数据加载到R1 CMP R1 , #0x12345678 ;比较R1中的数和0x12345678 ADDEQ R1 , R1 , #5 ;当上述比较相等时,R1 = R1...

ARM汇编语言入门(四)
在ARM汇编语言中,内存操作是通过加载(LDR)和存储(STR)指令进行的,与x86系统不同,ARM不支持直接内存访问。本文将通过实例解析ARM的LDR和STR指令,以及三种基本偏移形式:立即数、寄存器基址和缩放寄存器基址寻址。以下是主要内容的简化概述:1. LDR和STR操作基础:- LDR将内存中的值加载到寄存器,STR...

相似回答