ARM 最基本指令运算


;/*汇编文件中的符号*/
;1.指令:编译完成后作为一条指令存储在内存单元当中,CPU执行时能完成一定的操作
;2.伪操作:不会生成代码也不会占用内存,告诉编译器怎样编译
;3.伪指令:本身不是指令,编译器在编译的时候将其替换成CPU能识别的指令


;/*指令*/
;1.数据操作指令:对数据进行逻辑、数学等运算与处理
;2.跳转指令:实现程序的跳转,实质是修改PC
;3.Load/Store:对内存的读写操作
;4.状态寄存器传送指令:对CPSR进行读写操作
;5.异常中断产生指令:触发软中断
;6.协处理器指令:


ENTRY

;/*****数据处理指令*****/
;数据搬移指令
;mov r1, #1
;r1 = 1
;mov r2, r1
;r2 = r1
;mvn r3, r1
;r3 = ~r1
;立即数
;mov r1, #0x12345678
;立即数的本质是包含在指令当中的数,提升指令的效率
;在指令中给立即数留了12位的存储空间,所以立即数只包含了2的12次方个
;mov r1, #0xFFFFFFFF

;加法指令
;mov r1, #1
;mov r2, #2
;add r3, r1, r2
;r3 = r1 + r2
;add r3, r1, #5
;r3 = r1 + 5


;数据运算指令的基本格式
;《操作码》《目标寄存器》《第一操作寄存器》《第二操作数》


;数据运算指令对CPSR的影响
;默认情况下,数据处理指令不影响条件码标志位,但可以选择通过添加“S”来影响标志位。
;mov r1, #0xFFFFFFFE
;mov r2, #5
;adds r3, r1, r2


;带进位的加法指令
;两个64位数相加,第一个64位数的低32位放在r0高32位放在r1,第二个64位数的低32位放在r2高32位放在r3
;编写代码实现两个64位数的和,结果的低32位放在r4高32位放在r5
;mov r0, #0xFFFFFFFE
;mov r1, #1
;mov r2, #5
;mov r3, #1
;adds r4, r0, r2
;adc r5, r1, r3
;本质:r5 = r1 + r3 + 'C'


; 减法指令
; mov r1, #5
; mov r2, #3
; sub r3, r1, r2
; r3 = r1 - r2


;带借位的减法指令
;mov  r0, #5
;mov  r1, #3
;mov  r2, #6
;mov  r3, #1
;subs r4, r0, r2
;sbc  r5, r1, r3
;本质:r5 = r1 - r3 - '!c'


; 乘法指令
; mov r1, #3
; mov r2, #5
; mul r3, r1, r2
; 乘法指令不能使用立即数


; 逻辑与
; mov r0, #0xf0
; mov r1, #0x0f
; and r2, r0, r1
; r2 = r0 & r1


; 逻辑或运算
; mov r0, #0xf0
; mov r1, #0x0f
; orr r2, r0, r1
; r2 = r0 | r1


; 逻辑异或运算
; mov r0, #0xff
; mov r1, #0xff
; eor r2, r1, r0
; r2 = r1 eor r0


; 位清零指令
; mov r0, #0xff
; bic r0, r0, #0xf
; 第二操作数中的哪一位是1  就把第一操作寄存器中的哪一位清零  结果放在目标寄存器



END
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值