汇编常用语句及实例

序言:       

       文章主要内容包括了一些基本汇编语句的含义和一些实例,通过这篇文章可以实现读懂和写出一般的汇编代码。

  

1. 

           

   汇编的时候会把伪指令提换成如:nop 换成:mov r0, r0

2. 

流程图如下:

程序如下:

​
area RESET, code,readonly
code32					  
entry					 

start					 

	mov r0, #9
	mov r1, #15
loop
	cmp r0,r1 ;判断两个寄存器值是否相等
	beq stop  ;如果相等,结束程序
	cmp r0,r1 ;判断两个寄存器值
	subgt r0,r0,r1 ;如果大于,则执行r0=r0-r1
	sublt r1,r1,r0 ;如果小于,则执行r1=r1-r0
bloop          ;跳转到loop标号继续执行
stop
	end

​

解析:b:跳转指令,bloop:跳转到loop标号的位置执行。gt:表示如果大于,lt:小于,subgt r0,r0,r1 :表示大于时执行r0=r0-r1

          cmp:比较两个寄存器所存的值。

3.

ldr r0,=0x12345678   ;将数写去r0

str r0,[r1]                    ;将r0的值写入r1寄存器内数值为地址的内存。

ldr r2,[r1]                    ;将r1指向地址的值放入r2中。

4. 给你一个运算单元,两个寄存器,一个cpu,没有rom,ram.怎么交换两个寄存器的值?

当时一直纠结直接操作寄存器去了。

我的答案是:

ldr p1,=100

ldr p2,=200

add p1,p1,p2     ;p1=p1+p2

sub p2,p1-p2     ;p2 = p1-p2 ,p2 = 100 

sub p1,p1-p2     ;p1 = p1-p2, p1= 200

当时有的语句写错了,这一种会出现数据比较大时,两个数相加会出现越界问题。还有一种方法。

ldr p1,=0x12345678

ldr p2,=0x22345678

xor p1,p1,p2     ;p1^=p2

xor p2,p2,p1       ;p2^=p1

xor p1,p1,p2       ;p1^=p2

  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kevin@1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值