RAM汇编语言编程
北京微芯力科技有限公司
苏兰冬
数据处理指令
简单的寄存器操作
立即数操作
寄存器移位操作
设置条码
条码的使用
乘法
简单的寄存器操作
¾ 算术操作
¾ 按位逻辑操作
¾ 寄存器传送操作
¾ 比较操作
简单的寄存器操作—算术操作
这类指令对两个32位操作数进行二进制算术操作
加减和反向减后者指把操作数次序颠倒后相
减
ADD ro, r1, r2 ;r0 = r1+r2
ADD ro, r1, r2 ; r0 = r1+r2+C
SUB ro, r1, r2 ; r0 = r1-r2
SBC ro, r1, r2 ; r0 = r1-r2+C-1
RSB ro, r1, r2 ; r0 = r2-r1
RSC ro, r1, r2 ; r0 = r2-r1+C-1
简单的寄存器操作—按位逻辑操作
这类指令对输入操作数的对应位进行指定的布尔
逻辑操作
ADD r0,r1,r2 ;r0 = r1 and r2
ORR r0,r1,r2 ;r0 = r1 or r2
EOR r0,r1,r2 ;r0 = r1 xor r2
BIC r0,r1,r2 ; r0 = r1 and not r2
简单的寄存器操作—寄存器传送操作
这些指令不用第一操作数它在汇编语言格式中被
省略
MOV r0,r2 ;r0 = r2
MVN r0r,2 ;r0 = not r2
简单的寄存器操作—比较操作
这类指令不产生结果仅根据所选择的操作来设置
CMP r1,r2 ;根据r1-
CMN r1,r2 ;根据r1-
TST r1,r2 ;根据r1 and
TEQ r1,r2 ;根据r1 xor
立即数操作
如果只希望把一个常数加到寄存器而不是两个寄存器
相加可以用立即数值取代第二位操作数
立即数通常是常量 literal) 前面加“#”
ADD r3,r3 #1; r3:=r3+1
AND r8,r7 # & ff; r8:=r7[7:0]
立即数= 0 255 X22n
寄存器移位操作
第三种定义数据操作的方式同第一种类似但
允许第二个寄存器操作数在同第一操作数运算
之前完成移位操作例:
ADD r3, r2, r1, LSL # 3 ;r3:=r2+8xr1
注意它是一条RAM指令在单个时钟周期内执行
设置条件码
如果程序员要那么任何数据处理指令都能设置条件码
N Z C和V 比较操作只能设置条件码
要求以增加S操作码来指明意为“设置条件码例
ADDS r2, r2, r0 ;32位进位输出 C……
ADC r3, r3, r1 ;…再加到高位字节中
RAM汇编语言编程 来自淘豆网m.daumloan.com转载请标明出处.