keil汇编语言学习关于ben和beq的区别

本文介绍了keil汇编语言学习中的一个实践问题,即如何编写程序实现R4R11的累加并存入栈中。同时探讨了ben和beq这两个汇编指令,它们都基于Z标志位判断,但跳转条件相反,ben在条件满足时不跳转,而beq在条件满足时跳转。
摘要由CSDN通过智能技术生成

keil汇编语言学习

1.编写程序循环对R4R11进行累加8次赋值,R4R11起始值为1~8, 每次加操作后把R4R11的内容放入SP栈中,SP初始设置为0x800。最后把R4R11用LDMFD指令清空赋值为0。

NUM EQU 20;必须定格写
		AREA ARMcodel,CODE,READONLY ;必须空格
		export ;必须空格
START
		ldr r0,=src	;将r0指向src(起始地址)数据域的首地址,这里借用src是防止程序长度改变影响地址位置
		ldr r1,=dst		;将r1指向dst(目的地址)数据域的首地址,用r2记录需要搬移数据的次数20次
		mov sp,#0x400	;设置sp指针的地址,结合下文用于保存r4-r11寄存器内的数据blockcopy 
		movs r3,r2,lsr#3;将x2的数据右移3位放到r3中并改变cpsr中的标志位c 
		beq copywords;简单的说就是判断r3是否为零,实质.上是根据cpsr中标志位z是否为0,为判断跳转,为零不跳转
		stmfd sp!,{r4-r11}	;保存r4-r11寄存器内的数据
octcopy
		ldmia r0!,{r4-r11};将r0的前8位数取出放到r4-r11,改变r0的地址,(r0的地址增 加)
		stmia r1!,{r4-r11};拷贝r4-r11内的数据到r1的地址内,r1的地址增加
		subs r3,r3,#1	&#x
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值