1、, b) a+;else b+;写出对应的ARM指令程序(其中设R0为a,R1为b)?CMP R0,R1 ADDHI R0,R0,#1 ;若R0R1,则R0=R0+1 ADDLS R1,R1,#1 ;若R0R1,则R1=R1+128、 将C代码:if(a!=10)&(b!=20) a=a+b 转化为ARM指令程序? CMP R0,#10 ;比较R0是否为10CMPNE R1,#20 ;若R0不为10,则比较R1是否为20CMPNE R0,R0,R1 ;若R0不为10且R1不为20,指令执行,R0=R0+R129、 LDR/STR指令的偏移形式有哪4种?LDRB和LDRSB有何区别?LDR/ST
2、R指令的偏移形式有:1)零偏移;2)前索引偏移;3)程序相对偏移;4)后索引偏移。LDRB仅为无符号字节数据装载,其装载后的高24位为0,而LDRSB为有符号字节数据装载,高24位为符号位的扩展。30、 请指出MOV指令与LDR加载指令的区别及用途。MOV指令是数据处理过程中的操作,可以传递立即数和寄存器到另一个寄存器的操作,而LDR加载指令用于将存储器单元数据装载到寄存器的操作。31、 CMP指令的操作是什么?写一个程序,判断R1的值是否大于0x30,是则将R1减去0x30。CMP指令操作是比较操作;判断R1的值是否大于0x30,是则将R1减去0x30程序如下:CMP R1,#0x30SUB
3、GT R1,R1,#0x30OrSUBHI R1,R1,#0x3032、 调用子程序是用B还是用BL指令?请写出返回子程序的指令?调用子程序是用BL指令。返回子程序的指令:BL lable MOV PC,LR33、 LDR伪指令用途?其指令格式与LDR装载指令的差别?LDR伪指令用于加载32位的立即数或一个地址值到指定寄存器,映射真正指令类型由编译程序决定;LDR伪指令指令格式为LDR Rn,=expr,LDR加载指令为LDR Rn,地址值。34、 ARM状态与Thumb状态的切换指令是什么?请举例说明。ARM状态与Thumb状态的切换指令是BX Rm。ARM_CODE ADR R0,THUM
4、B_CODE+1 CODE 16THUMB_CODE MOV R0,#10 MOV R1,#20 ADD R0,R1 B THUM_CODE END35、 Thumb状态与ARM状态的寄存器有区别吗?Thumb指令对哪些寄存器访问受到一定限制?Thumb状态与ARM状态的寄存器本身并无区别,都是32位寄存器。但Thumb指令仅对R8-R15受到一定限。36、 Thumb指令集的堆栈入栈、出栈指令是哪两条?压栈指令:PUSH reglist,LR ;弹栈指令:POP reglist,PC37、 Thumb指令集的BL指令转移范围为何能达到4MB?其指令编码是怎样的?Thumb指令集的BL采用2条
5、这样的指令组合成22位半字偏移(符号扩展为32位),使指令转移范围为4MB。其指令编码为:1111+H+offset11共16位。其中H为1位,offset11为了11位。38、 在中断向量中转移指令为什么没有用B指令?而是用什么指令实现跳转的?在中断向量中转移指令没有用B指令是由于B指令转移范围仅在32MB内,因此满足不了中断向量的全地址范围内的转移。实际中断向量中转移指令是用LDR PC ,addr,和文字池(DCD伪指令)来实现的,它可以实现4GB范围内跳转。39、 LPC2114可使用的外部晶振频率范围是多少(使用/不使用PLL功能时)?使用PLL功能时,外部晶振频率范围为10-25M
6、HZ;不使用PLL功能时为1-30MHZ。在复位时。40、 描述一下LPC2210的P0.14、P1.20、P1.26、BOOT1和BOOT0引脚在芯片复位时分别有什么作用?并简单说明LPC2000系列ARM7微控制器的复位处理流程。LPC2210的P0.14决定外部复位后是否进入ISP状态,如为低电平则进入ISP状态。P1.20决定复位后是否使用P1.16-P1.25作为跟踪端口进行跟踪同步。P1.26决定复位后是否使用P1.31-P1.26作为调试端口。BOOT1和BOOT0引脚在芯片复位时决定复位后存储器的来源以及存储器的宽度。 LPC2000系列ARM7微控制器的复位处理流程:流程略(
7、见书P119、120)。41、 LPC2000系列ARM7微控制器对向量表有何要求(向量表中的保留字)?LPC2000系列ARM7微控制器要求:在向量表中所有32个32位指令二进制编码的向量按有符合数据累加之和为0,这时向量表才有效,且芯片复位后,能脱机独立运行。因此向量表中的保留字是配置数据累加和为0而留着的。42、 如何启动LPC2000系列ARM7微控制器的ISP功能?相关电路应该如何设计?微控制器在复位后可能有多种初始状态,决定于引脚状态和只读存储器的数据。当有外部复位信号Reset ,P0.14低电平时,进入ISP状态,当P0.14为高电平时,同时BOOT0和BOOT1为高电平时,进
8、入ISP状态。相关电路应该为:43、 LPC2000系列ARM7微控制器片内Flash是多少位宽度的接口?它是通过哪个功能模块来提高Flash的访问速度?LPC2000系列ARM7微控制器片内Flash是128位宽度的接口,是通过数据缓冲模块、预取缓冲模块、分支跟踪缓存模块、两Flash存储模块来提高Flash的访问速度。44、 LPC2210的BANK0存储块使用32位总线,访问BANK0时,地址线A1、A0是否有效?EMC模块中的BLS0BLS3具有什么功能?如果存储器组配置成32位宽度,地址线A0和A1无用,这是由于地址位的增减与存储器数据增减同步,此时A0和A1可作为GPIO使用(由P
9、INSEL2设置)。EMC模块中的BLS0BLS3具有字节定位的选择信号功能,当BLS0为低时,存取定位到低8位字节上,当BLS1为低时,存取定位次到低8位字节上,当BLS2为低时,存取定位到次高字节,当BLS3为低时,存取定位到高位字节上。45、 如果存储器组配置寄存器中RBLE位置1,表示按字节区分存储器组,现有程序: LDR R0,=0x80000001 mov R1,0x55STR R1,R0 请问执行STR指令后,存储器地址线上的地址应为 0x80000000,数据线的前16位数据中,低8位为 无效 ,高8位为 0x55 。EMC模块中的引脚线BLS0和BLS1电平分别为 高电平 和
10、 低电平 。(填高低电平)46、 在startup.s启动代码中,设置异常向量表时,IRQ入口处为什么放置LDR PC,PC,# -0x0ff0指令而非LDR PC,IRQ_Addr。这是由于LDR PC,IRQ_Addr指令不能提供灵活的转移地址,在处理时就要耗费大量的时间解决IRQ转移分类问题。而LDR PC,PC,# -0ff0指令转移地址来源于完部的VICVectAddr寄存器保存的地址值。不同的中断异常,其VICVectAddr的值不同,可通过初始配置,节省了软件的转移选择开销。47、 在startup.s启动代码中,设置异常向量表时,IRQ入口处放置LDR PC,PC,# -0x0
11、ff0指令中PC-0x0FF0地址单元是指向 VICVectAddr 寄存器的地址。48、 BOOT0和BOOT1与BCFG029:28的关系和区别是什么?Bank0用于引导程序运行,BCFG029:28的复位值与BOOT0和BOOT1设定有关。BOOT0和BOOT1与BCFG029:28的关系: Bank 复位时BOOT1:0的状态 BCFG29:28 存储器宽度 0 LL 00 8位 0 LH 01 16位 0 HL 10 32位 0 HH 10 32位 1 xx 10 32位 2 xx 01 16位 3 xx 00 8位而对Bank1、Bank2和Bank3而言, BCFG29:28决定
12、存储器宽度,与BOOT1:0设定无关。对Bank0而言,BCFG29:28的复位值由BOOT1:0设定决定,且存储器宽度也由BOOT1:0决定。49、 请问引脚连接模块选择寄存器有哪些?请举一个例子说明选择寄存器的功能?引脚连接模块选择寄存器有PINSEL0、PINSEL1和PINSEL2。如设定:PINSEL0 &= 0x00000001;则选择P0.0脚,功能为TxD(UART0)。50、 启动代码中总线引脚设置为:ResetInit LDR R0,=PINSEL2IF : DEF:EN_CRP LDR R1,=0x0f814910ELSE LDR R1,=0x0f814914ENDIF
13、STR R1,R0 分析每条代码的含义,并说明PINSEL2配置0x0f814910和配置0x0f814914的区别?程序清单中,当预定义有EN_CRP宏时,将会编译程序清单LDR R1,=0x0f814910语句,并将PINSEL2寄存器设置为0x0f814910,否则编译LDR R1,=0x0f814914语句,并将PINSEL2寄存器设置为0x0f814914。区别:前一种执行禁止使用JTAG口调试,起到加密作用。后一种使用JTAG口调试。51、 LPC2000系列ARM7微控制器具有引脚功能复用特性,那么如何设置某个引脚为指定功能?例如通过设置PINSEL01:0=00时,引脚为GPI
14、O功能;设置为01时,引脚为UART0的TxD功能。设置为10时,引脚为PWM1功能脚。52、 设置引脚为GPIO功能时,如何控制某个引脚单独输入/输出?当需要知道某个引脚当前的输出状态时,是读取IOPIN寄存器还是读取IOSET寄存器?设置引脚为GPIO功能时,控制某个引脚单独输入/输出是用IODIR方向控制寄存器控制,寄存器中每位对应控制着I/O位,如IODIR0对应px.0脚,IODIR31对应px.31脚,写入1时对应引脚作为输出功能,写入0时作为输入功能。当需要知道某个引脚当前的输出状态时,是读取IOPIN寄存器。53、 P0.2和P0.3口是I2C接口,当设置它们为GPIO时,是否
15、需要外接上拉电阻才能输出高电平?需要外接上拉电阻1-10K,这是因此I2C接口两根线都开漏输出。54、 使用SPI主模式时,SSEL引脚是否可以作为GPIO?若不能,SSEL引脚应如何处理?使用SPI主模式时,SSEL引脚不可以作为GPIO,对SSEL引脚的处理,使用SPI主模式时,必须选择相应的引脚用作SSEL功能并使其保持高电平。55、 LPC2114的两个UART是符合什么标准?哪一个UART可用ISP通信?哪一个UART具有MODEM接口?必须符合16C550工业标准; UART0可用ISP通信,UART1具有MODEM接口功能。56、 LPC2114具有几个32位定时器?PWM定时器
16、是否可以作通用定时器使用?LPC2114具有2个32位定时器,定时器0和定时器1,PWM定时器是专用定时器,不可作通用定时器使用。57、 LPC2000系列ARM7 微控制器具有哪两种低耗模式?如何降低系统的功耗?LPC2000系列ARM7 微控制器具空闲模式和掉电模式的低耗模式。在空闲模式下,处理器、存储器系统和相关控制器以及内部总线不再消耗功率,但外设继续保持并可产生中断使处理器恢复运行。在掉电模式下,振荡器关闭,芯片没有任何内部时钟,处理器状态和寄存器、外设寄存器以及内部SRAM值在掉电模式下被保持。芯片的逻辑电平保持静态。复位或特定的不需要时钟仍能工作的中断可终止掉模式,并使芯片恢复正
17、常运行。58、 有符号和无符号加法下面给出A和B的值,可先手动计算A+B,并预测N、Z、V和C标志位的值。其中(A,B)值分别为(0xFFFF000F,0x0000FFF1)或(0x7FFFFFFF,0x02345678)或(67654321、23110000),将三组用分别用LDR伪指令向寄存器(R0,R1)附值。其程序如下:START LDR R0,=A LDR R1, =BLOOP BL ADD_SUB B LOOPADD_SUB ADDS R0,R0,R1END试判断如果A和B为有符号数时,计算结果和标志位的状态?如果为无符号数时,计算结果和标志的状态? 0xFFFF000F 0x7FFFFFFF 67654321 A+ 0x0000FFF1 0x02345678 23110000 B结果: 0x100000000 0x82345677 90764321 N=0;Z=1;V=0;C=1 N=1;Z=0;V=1;C=0 N=
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1