思考题 1、如何强行重新编译ADS1
2工程的所有文件
答:Project -> Remove Object Code
删除工程中的*
obj文件 2、LDR伪指令与LDR加载指令的功能和应用有何区别,举例说明
答:LDR加载指令用于从内存中读取数据到寄存器中,例如: LDR r1,[r3] LDR伪指令用于加载32位的立即数或一个地址值到指定的寄存器中,例如: LDR r0,#0xff123456 3、在AXD调试时如何复位程序
答:File -> Reload Current Image 重新加载映象文件 4、指令MOV R0,#0x12345678是否正确
因为ARM是RISC结构,数据从内存到CPU之间的移动只能通过LDR/STR指令完成,而MOV只能在寄存器之间移动数据,不能干这个活,因此正确的写法是: LDR r0,#0X12345678 另外,还可以用LDR伪指令,后面跟一个“=”,LDR r0,=0x12345678,LDR伪指令和MOV是比较相似的,只不过MOV命令限制了立即数的长度为8为,也就是不要超过512,而LDR没有限制
如果 LDR后面的立即数没有超过8位,那么计算机在处理的过程中,该 LDR伪指令会被转化成MOV来执行的
5、使用MOV、ADD指令实现:R8=R3=X+Y且 X与Y是8位图数据 答:x equ 1 y equ 2 mov r0,#x mov r1,#y add r3,r0,r1 mov r8,r3 6、使用MOV、MVN、SUB指令实现:R5=0x5FFFFFF8 - R8 * 8(乘法除法用移位解决) 答:MVN R0,#0xA0000007 ;MOV R8,#0x1 SUB R5,R0,R8,LSL #3 7、使用CMP指令判断(5*Y/2)>(2*X)吗
若大于则 R5=R5&