在ARM汇编指令中实现下面条件转移语句: if(a<b){ x=5; y=c+d; } else x=c-d;
1个回答
展开全部
设a,b,x,y,c,d的地址分帆纤别为add_a……add_c
PRONAME ;设置个标号
ldr r0,=add_a ;将a地址给r0
ldr r0,[r0] ;将r0里地址培轿基的数据赋给r0
ldr r1,=add_b ;将变量b的地址给r1
ldr r1,[r1] ;将变量b的值赋给r1
CMP r0,r1 ;比较a与b
bcc %f1 ;bcc 无符号小于,如带符号可用blt,成立向前跳到标号1处
ldr r0,=add_c ;不成立,向下执行,先将c变量地址给r0
ldr r0,[ro] ;将c变量值给r0
ldr r1,=add_d
ldr r1,[r1] ;将d变量值给r1
sub r0,r0,r1 ;将c-d的值存入r0中,r0=r0-r1
ldr r1,=add_x ;将x变量地址给r1
str r0,[r1] ;将r0中的值,即c-d,存入r1地址中,即x=c-d
bx lr ;执行配谨完后,程序返回
1
ldr r0,=add_x ;参考上面,自己理解
ldr r1,=5
srt r1,[r0]
ldr r0,=add_c
ldr r0,[ro]
ldr r1,=add_d
ldr r1,[r1]
and r0,r0,r1
ldr r1,=add_y
str r0,[r1]
bx lr
PRONAME ;设置个标号
ldr r0,=add_a ;将a地址给r0
ldr r0,[r0] ;将r0里地址培轿基的数据赋给r0
ldr r1,=add_b ;将变量b的地址给r1
ldr r1,[r1] ;将变量b的值赋给r1
CMP r0,r1 ;比较a与b
bcc %f1 ;bcc 无符号小于,如带符号可用blt,成立向前跳到标号1处
ldr r0,=add_c ;不成立,向下执行,先将c变量地址给r0
ldr r0,[ro] ;将c变量值给r0
ldr r1,=add_d
ldr r1,[r1] ;将d变量值给r1
sub r0,r0,r1 ;将c-d的值存入r0中,r0=r0-r1
ldr r1,=add_x ;将x变量地址给r1
str r0,[r1] ;将r0中的值,即c-d,存入r1地址中,即x=c-d
bx lr ;执行配谨完后,程序返回
1
ldr r0,=add_x ;参考上面,自己理解
ldr r1,=5
srt r1,[r0]
ldr r0,=add_c
ldr r0,[ro]
ldr r1,=add_d
ldr r1,[r1]
and r0,r0,r1
ldr r1,=add_y
str r0,[r1]
bx lr
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询