汇编语言的概念:指用助记符代替操作码,用地址符号或者标签代替地址码的编程语言
优点:可以直接访问硬件目标代码简短,执行速度快;
缺点:可移植性可读读性差;
ARM中流水线执行指令的基础就是指令的长度需要不保持一样,因此16位指令和32位指令需要切换状态; 几乎所有的指令执行都是有条件的执行; 寄存器与内存之间交互数据采用专用指令集; ARM基本指令集格式:
<opcode> {<cond>}(s)<Rn> {,<operand2>}
其中<>号内的项是必须的,{}号内的项目是可选的,各项的说明如下:
“ - opcode:指令助记符; - cond:执行条件; - S:是更新CPSR寄存器的值; - Rd:目标寄存器; - Rn:第一个操作数的寄存器; - operand2:第二个操作数; “`立即数是使用特殊的计数法实现在12位的内存上存储很大的地址数据,立即数有专用的编码队列;
MVN将数据按位取反,之后在使用echo $path查看环境变量
关中断
MOV R0, #1
MSR PRIMASK, R0
使用CPS指令关中断
CPSID i ;关中断
开中断
MOV R0, #0
MSR PRIMASK, R0
使用CPS指令开中断
CPSIE i ;开中断
在更精巧的设计中,需要对中断掩蔽进行的更加细腻的控制—–只遮蔽优先级低于某一阈值的中断—-它们的优先级在数值上大于等于某个数。那么这个数存储在BASEPRI中,不过如果往BASEPRI中写0,则另当别论—BASEPRI将停止遮蔽任何中断 如我们需要遮蔽优先级低于0x60的中断;
MOV R0, #0x60
MSR BASEPRI, R0
如果需要取消BASEPRI对中断的遮蔽,则示例代码如下:
MOV R0, #0
MSR BASEPRI, R0