分类: LINUX
2011-07-03 22:18:39
数字常量表达式
数字常量表达式可以简单到一个立即数,还可以使用单目操作符、双目操作符、逻辑操作符和算术操作符等。
# 0x88 ;立即数
# 0x40+0x20 ;使用加法
# 0x40+0x20*4 ;使用加减乘除算术运算
# 0x80:ROR:02 ;使用移位操作,循环右移2位
# 2_11010010 ;使用二进制
# 0xFF:MOD:08 ;取模操作
# 0xFF0000:AND:660000 ;逻辑操作,两数相与
ADDS R0, R2, R4 ;低32位加,S影响标志位
ADC R1, R3, R5 ;高32位带进位加
SUB指令示例:
SUB R0,R1,R2 ;R0 = R1 - R2
SUB R0,R1,#6 ;R0 = R1 - 6
SUB R0,R2,R3,LSL#1 ;R0 = R2 - (R3 左移一位)
RSB指令示例:
RSB R0,R1,R2 ; R0 = R2-R1
RSB R0,R1,#6 ; R0 =6-R1
RSB R0,R2,R3,LSL #1 ; R0 = (R3左移一位)-R2
CMP指令示例:
CMP R1,#10 ;将寄存器R1的值与10相减, ;并设置CPSR的标志位
ADDGT R0,R0,#5 ;如果R1>10,则执行 ;ADDGT指令,
将R0加5 LDR指令示例:
LDR R4,START ;将存储地址为START的字数据读入R4
STR R5,DATA1 ;将R5存入存储地址为DATA1中;前索引
LDR R0,[R1] ;将存储器地址为R1的字数据读入寄存器R0。
LDR R0,[R1,R2] ;将存储器地址为R1+R2的字数据读入寄存器R0。
LDR R0,[R1,#8] ;将存储器地址为R1+8的字数据读入寄存器R0。
LDR R0,[R1,R2,LSL#2] ;将存储器地址为R1+R2×4的字数据读入寄存器R0。;自动索引
STR R0,[R1,R2]! ;将R0字数据存入存储器地址为R1+R2的存储单元中, ;并将新地址R1+R2写入R1。
STR R0,[R1,#8]! ;将R0字数据存入存储器地址为R1+8的存储单元中, ;并将新地址R1+8写入R1
STR R0,[R1,R2,LSL#2]! ;将R0字数据存入地址为R1+R2×4的存储单元中, ;并将新地址R1+R2×4写入R1。;后索引
LDR R0,[R1],#8 ;将存储器地址为R1的字数据读入寄存器R0, ;并将新地址R1+8写入R1
LDR R0,[R1],R2 ;将存储器地址为R1的字数据读入寄存器R0,;并将新地址R1+R2写入R1。
LDR R0,[R1],R2,LSL#2 ;将存储器地址为R1的字数据读入 ;寄存器R0 ,并将新地址 ;R1+R2×4写入R1。