ARM指令系统
- 格式:ppt
- 大小:1.09 MB
- 文档页数:111


ARM指令系统.txt蜜蜂整日忙碌,受到赞扬;蚊子不停奔波,人见人打。
多么忙不重要,为什么忙才重要。
1.ARM指令的寻址方式有几种?试分别举例说明。
答:立即数寻址:MOV R0,#15寄存器寻址:ADD R0,R1,R2寄存器间接寻址:LDR R0,[R4]寄存器移位寻址:ADD R0,R1,R2,LSL #1基址变址寻址:LDR R0,[R1,#4]多寄存器寻址:LDMIA R0!,{R1-R4}相对寻址:BL proc;跳转到子程序proc处执行…proc MOV R0,#1堆栈寻址:STMFD R13!,{R0-R4};LDMFD R13!,{R0-R4};2.ARM指令系统对字节、半字、字的存取是如何实现的?LDR/STR字数据加载/存储指令LDRB/STRB字节数据加载/存储指令LDRH/STRH半字数据加载/存储指令LDRSB/LDRSH有符号数字节/半字加载指令3.如何从ARM指令集跳转到Thumb指令集?BX指令跳转到指令中所指定的目标地址,并实现状态的切换。
Rm是一个表达目标地址的寄存器。
当Rm中的最低位Rm[0]为1时,强制程序从ARM指令状态跳到Thumb指令状态;当Rm中的最低位Rm[0]为0时,强制程序从Thumb指令状态跳到ARM指令状态。
4.ARM指令集支持哪几种协处理器指令?CDP LDC STC MCR MRC5.ARM指令的条件码有多少个?默认条件码是什么?15个默认条件码是AL6.ARM指令中的第二操作数有哪几种形式?试举例说明。
寄存器形式MOV R1,R0;将寄存器R0的值传送到寄存器R1立即数形式MOV R0,#5;将立即数5传送到寄存器R0被移位的寄存器形式MOV R1,R0,LSL#37.MOV指令与LDR指令有何区别?LDR指令用于在存储器和处理器的寄存器之间传送数据MOV主要用于将一个寄存器中的数据传送到另一个寄存器,或者将一个立即数传送到寄存器,8.判断下列指令正误,并说明理由?(1)LDR R3,[R4]!(2)ADD R6,R5,#4!(3)LDMIA R6,{R3-R7}!(4)LDMFD R13!,{R2,R4}(5)ADD R1,R2,#0x104(6)ADD R1,R2,#0x101(7)MOV R0,R0(8)MVN R7,#0x2F100(9)MVN R0,R3,#2_011100(10)SBC R15,R6,LSR R5(11)AND R5,[R6],R7(12)MRS R15,CPSR(13)MSR CPSR,#0x001(14)MUL R3,R3,R6(15)MUL R4,R6,#0x80(16)STRB SPLDRB R1,[R6,R4],R6(18)STRB R0,[R15,#0x04]!(19)LDRB PC,[R5](20)LDRSB R5,[R4,#0x101](21)STRSH R6,[R5]9.下列指令在什么条件下被执行SUBMI R3,R3,#0x08负数ADDNE R0,R0,R4不等10.下列两段代码是用来实现打开中断和关闭中断,请补齐空白处内容MRS R1,CPSRBIC R0,R1,__ #0x80MSR CPSR_c,R0MRS R1,CPSRORR R1,___MSR CPSR_c,R111.举例说明B和BL指令的区别、BX和BLX的区别?B指令示例:backword SUB Rl,R1,#1CMP R1,#0;比较R1和0BEQ forward;如果R1=0则跳转到forward处执行SUB R1,R2,#3SUB R1,R1,#1forward ADD R1,R2,#4ADD R2,R3,#2B backword;程序无条件跳转到标号backword处执行BL指令示例…BL func;跳转到子程序ADD R1,R2,#2;子程序调用完返回后执行的语句,返回地址…func;子程序…;子程序代码MOV R15,R14;复制返回地址到PC,实现子程序的返回BX指令示例CODE32;ARM程序段,32位编码arm1 ADR R0,thumb1+1;伪指令,把语句标号thumb1所在的地址赋;给R0,末位R0[0]置1,要跳转到THUMB指令集MOV LR,PC;设置返回地址BX R0;跳转ADD R1,R2,#2;返回地址处,第4条指令CODE16;THUMB程序段,16位编码thumb1 ADD R1,R3,#1;THUMB程序…BX LR;跳转到返回地址处,执行第4条指令BLX指令示例CODE32;ARM程序段,32位编码arm1 ADR R0,thumb1+1;伪指令,把语句标号thumb1所在的地址赋;给R0,末位R0[0]置1,要跳转到THUMB指令集;MOV LR,PC;该指令注销,比较BL指令BLX R0;跳转,同时设置返回地址即PC?LRADD R1,R2,#2;返回地址处,第4条指令CODE16;THUMB程序段,16位编码thumb1 ADD R1,R3,#1;THUMB程序…BX LR;跳转到返回地址处,执行第4条指令分析:使用BLX指令代替BX指令简化了Thumb例程的调用,因为BLX指令在连接寄存器LR中自动设置了返回地址。