1、简答题 ( 1) LDR R1, [R0, #0x08]属于哪种寻址方式
答:变址寻址 ; R1=[R0+0x08] ( 2) ARM指令的条件码有多少个
默认条件码是什么
答:条件码16个,默认AL ( 3) ARM指令中第二个操作数有哪几种形式
举例5个 8位图立即数
答:立即数,寄存器,寄存器及移位常数 ( 4) LDR/STR指令的偏移形式有哪4种
LDRB和 LDRSB有何区别
答:零偏移, 前索引偏移, 程序相对偏移, 后索引偏移; LDRB就是读出指定地址的数据并存入指定寄存器,LDRSB读出指定地址的数据,并高24位用符号位扩展,再存入指定寄存器
( 5)请指出MOV指令与LDR加载指令的区别及用途
答: LDR 的操作数既可以来源于寄存器也可以来源于存储器,MOV 的操作数能来源于寄存器; LDR 指令从内存中读取数据放入寄存器,用于对内存变量和数据的访问、查表、程序的跳转、外围部件的控制操作等;MOV 指令将8 位立即数或寄存器传送到目标寄存器(Rd),可用于移位运算等操作
( 6) CMP指令的操作是什么
写一个程序,判断R1的值是否大于0x30,是则将R1减去 答:CMP是比较指令,CMP{条件码} op1,op2 CMP R1,0x30 SUBHI R1,R1,0x30 ( 7)调用子程序是用B还是用BL指令
请写出返回子程序的指令
答:调用子程序用BL,B是最简单的分支指令
MOV PC,R14 ( 8)请指出LDR伪指令的用法
指令格式与LDR加载指令的区别是什么
答:LDR 伪指令用于加载 32 位的立即数或一个地址值到指定寄存器; LDR加载指令为地址表达式
LDR{条件码} 寄存器组,=[常量或常量表达式] ( 9) ARM状态与Thumb状态的切换指令是什么
答: BX指令 ( 10) Thumb状