L9-D9专用指令

目录

9.1状态寄存器传送指令

9.2软中断指令

9.3协处理器指令

9.4伪指令

作业


9.1状态寄存器传送指令

@ 1.4 状态寄存器传送指令:访问(读写)CPSR寄存器
	
		@ 读CPSR
		MRS R1, CPSR
		@ R1 = CPSR
		
		@ 写CPSR
		MSR CPSR, #0x10
		@ CPSR = 0x10
		
		@ 在USER模式下不能随意修改CPSR,因为USER模式属于非特权模式
		MSR CPSR, #0xD3

CPSR复位后的默认状态0xD3,     svc模式(刚上电时svc,FIQ与IRQ禁止)-user模式-svc模式


9.2软中断指令

@ 1.5 软中断指令:触发软中断
	
		@ 异常向量表
		@ B MAIN
		@ B .
		@ B SWI_HANDLER
        @ B .
        @ B .
        @ B .
        @ B .
        @ B .


		@ 应用程序
@ MAIN:
		@ MOV SP, #0x40000020
		@ 初始化SVC模式下的栈指针
		@ MSR CPSR, #0x10
		@ 切换成USER模式,开启FIQ、IRQ
		@ MOV R1, #1
		@ MOV R2, #2
		@ SWI #1
		@ 触发软中断异常
		@ ADD R3, R2, R1
		@ B STOP
		
		@ 异常处理程序
@ SWI_HANDLER:
		@ STMFD SP!,{R1,R2,LR}
		@ 压栈保护现场
		@ MOV R1, #10
		@ MOV R2, #20
		@ SUB R3, R2, R1
		@ LDMFD SP!,{R1,R2,PC}^
		@ 出栈恢复现场
		@ 将压入到栈中的LR(返回地址)出栈给PC,实现程序的返回
		@ ‘^’表示出栈的同时将SPSR的值传递给CPSR,实现CPU状态的恢复

9.3协处理器指令

1.6 协处理器指令:操控协处理器的指令
    
         1.协处理器数据运算指令
            CDP
         2.协处理器存储器访问指令
            STC    将协处理器中的数据写入到存储器
            LDC    将存储器中的数据读取到协处理器
         3.协处理器寄存器传送指令
            MRC    将协处理器中寄存器中的数据传送到ARM处理器中的寄存器
            MCR    将ARM处理器中寄存器中的数据传送到协处理器中的寄存器


9.4伪指令

2.伪指令:本身不是指令,编译器可以将其替换成若干条等效指令

        空指令,浪费了CPU时间
        NOP

        指令
        LDR R1, [R2]
        将R2指向的内存空间中的数据读取到R1寄存器
        
        伪指令
        LDR R1, =0x12345678                @R1 = 0x12345678    
        LDR伪指令可以将任意一个32位的数据放到一个寄存器
        
        LDR R1, =STOP
        将STOP表示的地址写入R1寄存器
        
        LDR R1, STOP
        将STOP地址中的内容写入R1寄存器

 

作业

1.编程实现通过状态寄存器传送指令,将ARM处理器的模式修改成USER模式并将FIQ与IRQ使能
2.简述伪指令和指令的本质区别是什么

答:

1.

.text

.global _start

_start:

MRS R1,CPSR                @R1=CPSR

MSR CPSR,#0x10           @模式修改成USER模式并将FIQ与IRQ使能,CPSR寄存器(00010000)(0x10)

STOP:

                B STOP

.end

2.

指令是控制程序运行时的机器代码运作的,是CPU执行的依据,编程、编译、执行都是有效的。 伪指令本身不是指令,编译器可以将其替换成若干条等效指令,编译完成后,伪指令的作用也就消失了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值