嵌入式系统讲义 第4章S3C2410X系统结构 周国运 2007.3
嵌入式系统讲义 第4章 S3C2410X系统结构 周国运 2007.3
第三章习题解答 1、ARM指令中的第二操作数“ operand2”有哪些具 体形式? 解:有三种:寄存器、寄存器移位、8位位图立即数
第三章习题解答 1、 ARM指令中的第二操作数“operand2”有哪些具 体形式? 解:有三种:寄存器、寄存器移位、8位位图立即数
2、对于ARM的变址寻址方式,有基地址和偏移地址两部分 组成。(1)基地址可以是哪些寄存器?(2)偏移地址可以 有哪些形式?(3)总地址的计算方法有哪些?怎么表示? (4)变址寻址应用于哪些指令? 解:(1)基地址可以是通用寄存器R0-R15中的任意一个。 (2)偏移地址可以有三种形式:12位立即数、寄存器、 寄存器移位 (3)总地址的计算方法。有三种:前索引偏移、后索引 偏移、程序相对偏移。 前索引偏移:即先使用偏移,后传送数据。不定修改基地址。 如: ldr Rd,IRn,#ml; STR Rd.,[Rn,#m]!(修改基地址) 后索引偏移:即先传送数据,后先使用偏移,修改基地址。 如: ldr Rd,[Rm,#m 相对偏移:寻址地址在PC中,以当前指令为基地址,土4KB内。 如: Ldr Rd, lable; lable为程序标号 (4)有4条指令:LDR、STR、LDM、STN
2、 对于ARM的变址寻址方式,有基地址和偏移地址两部分 组成。(1)基地址可以是哪些寄存器?(2)偏移地址可以 有哪些形式?(3)总地址的计算方法有哪些?怎么表示? (4)变址寻址应用于哪些指令? 解:(1)基地址可以是通用寄存器R0---R15中的任意一个。 (2)偏移地址可以有三种形式:12位立即数、寄存器、 寄存器移位。 (3)总地址的计算方法。有三种:前索引偏移、后索引 偏移、程序相对偏移。即偏移地址的计算方法 – 前索引偏移:即先使用偏移,后传送数据。不定修改基地址。 如:LDR Rd,[Rn,#m]; STR Rd,[Rn,#m]!(修改基地址) – 后索引偏移:即先传送数据,后先使用偏移,修改基地址。 如:LDR Rd,[Rn],#m – 相对偏移:寻址地址在PC中,以当前指令为基地址,±4KB内。 如:LDR Rd,lable ;lable为程序标号 (4) 有4条指令:LDR、STR、LDM、STM
3、存储器从0x4000始的100个单元中存放着ASCI 编写程序,将其所有的小写字母转换成大写字母,对其 的ASCI码不做变换。 解: MOV R0,#x400000 MOV R1,#0 LP LDRB R2,[R0,R1 CMP R2,#x61 BLO NEXT CMP R2,#0x7B;0x61-0x7A为小写字母的ASC SUBLO R2,R2,#x20 STRBLO R2, RO, RI NEXT ADD R1,R1,#1 CMP R1,#100 BNE
3、 存储器从0x400000开始的100个单元中存放着ASCII码, 编写程序,将其所有的小写字母转换成大写字母,对其它 的ASCII码不做变换。 解: MOV R0,#0x400000 MOV R1,#0 LP LDRB R2,[R0,R1] CMP R2,#0x61 BLO NEXT CMP R2,#0x7B ;0x61---0x7A为小写字母的ASC SUBLO R2, R2,#0x20 STRBLO R2,[R0,R1] NEXT ADD R1, R1,#1 CMP R1,#100 BNE LP
4、编写程序,比较存储器中0x40000830x400004 两无符号字数据的大小,并且将比较结果存于 0x400008的字中,若两数相等其结果记为0,若前 者大于后者其结果记为1,若前者小于后者其结果 记为-1。 解 MOV R0,#0x400000 LDR R1,[R0 ;取第1个数 LDR R2,[R0,#4;取第2个数 CMP R1,R2 ;两个数相比较 MOVH RI #1 ;R1大 MOVLO RI#-1 ;R1小 MⅤEQR1,#0 ;两个数相等 STR R1,[R0,#8
4、 编写程序,比较存储器中0x400000和0x400004 两无符号字数据的大小,并且将比较结果存于 0x400008的字中,若两数相等其结果记为0,若前 者大于后者其结果记为1,若前者小于后者其结果 记为-1。 解: MOV R0,#0x400000 LDR R1,[R0] ;取第1个数 LDR R2,[R0,#4] ;取第2个数 CMP R1,R2 ;两个数相比较 MOVHI R1,#1 ;R1大 MOVLO R1,# -1 ;R1小 MOVEQ R1,#0 ;两个数相等 STR R1,[R0,#8]