ARM汇编程序设计——第三章汇编程序设计

1)ARM汇编器支持的伪指令
在这里插入图片描述
2)语句格式
标号 指令或伪指令;注释
在行的末尾用\表示下一行与本行为同一语句,标号必须顶格写且后面没有:号。
①变量代换
程序中的变量可以通过代换操作取得一个常量,代换操作符为$
1)数值变量前有$
编译器会将该数字变量的值转换为十六进制的字符串
2)逻辑变量前
编译器会将逻辑变量代换为它的取值(真或假)
3)字符串变量
编译器会将字符串变量代换为它的值
②结合性和优先级
优先级:括号>单目运算符>双目运算符
结合性:单目运算符从右到左,双目运算符从左到右
③数值表达式和运算符
数值表达式一般由数值常量,数值变量,数值运算符和括号组成。
1)算术运算符
+,-,*,/,MOD
2)移位运算符
ROl,ROR,SHL,SHR
3)数值逻辑运算符
AND,OR,NOT,EOR
④逻辑表达式及运算符
逻辑表达式由逻辑量,逻辑运算符,括号组成
1)关系操作符
+,>,<,>=,<=,/=,<>
2)逻辑运算符
LAND,LOR,LNOT,LEOR
⑤字符串表达式及运算符
字符表达式一般由字符串常量字符串变量运算符和括号组成字符串的最大长度为512B
返回字符串长度运算符:LEN
字节整数转化为字符运算符:CHR
字符串转换运算符:STR
返回左端字符串运算符:LEFT
返回右端字符串运算符:RIGHT
合并字符串运算符:CC
(13)汇编语言程序设计结构
1)顺序程序设计
一条条指令执行下去。
2)分支程序设计
ARM分支程序设计通常用分支指令B加上条件执行来实现。
例:给0x30100000-0x30100003中a,b,c三个数排序

      AREA EXAMPLE2,COOE,READONLY
      ENTRY
      COOE32
CMPA  LDR R0,=0X30007000   ;指向首地址
      LDR R1,[R0]		   ;取第一个数a
      LDR R2,[R0+4]        ;取第二个数b   
      CMP R1,R2            ;第一个数与第二个数比较
      BHI NEXT1            ;a>=b?
      STR R2,[R0]          ;a,b交换
      STR R1,[R0+4]        ;a,b交换
NEXT1 LDR R1,[R0+4]        ;取中间的数
      LDR R2,[R0+8]        ;取第三个数
      CMP R1,R2            ;b>=c?
      BHI NEXT2            
      STR R2,[R0+4]        ;b,c交换
      STR R1,[R0+8]        ;b,c交换
NEXT2 LDR R1,[R0]
      LDR R2,[R0+4]
      CMP R1,R2            ;a>=b
      BHI NEXT3
      STR R2,[R0]		   ;a,b交换
      STR R1,[R0+4]		   ;a,b交换
NEXT3 MOV R1,0X0D
      STRBR1,[R0+0X0C]     ;0x0d写入0x300700c
      END

      

3)循环程序设计
循环结构一般是根据某一条件判断为真或假来判断是否重复执行循环体。
①由计数控制循环
用一个通用寄存器作为计数器,先给初始值,然后每循环一次减一,直到循环次数为零结束循环。
②由条件控制循环
有些情况不能预先知道循环次数,要通过一定的条件控制循环。
4)子程序设计
5)多段结构程序设计
6)c语言调用汇编语言
7)汇编语言调用c语言
8)c语言嵌入汇编语言

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

亻乍屯页女子白勺

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

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

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

打赏作者

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

抵扣说明:

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

余额充值