嵌入式系统原理及应用第三章习题

发布时间 : 星期六 文章嵌入式系统原理及应用第三章习题更新完毕开始阅读

第三章 软件作业习题

3、将存储器中0x400000开始的200字节的数据,传送到0x400800开始的区域。 解:

AREA procedure3,CODE,READONLY

ENTRY CODE32 START

MOV R0,#0x400000 LDR R1,=0x400800 MOV R7,#200

LOOP LDRB R2,[R0],#1 STRB R2,[R1],#1

SUBS R7,R7,#1

BNE LOOP CEASE

B CEASE END

4、编写程序,比较存储器中0x400000和0x400004两无符号字数据的大小,并且将比较结果存于0x400008的字中,若两数相等其结果记为0,若前者大于后者其结果记为1,若前者小于后者其结果记为-1。 解:

AREA procedure4,CODE,READONLY ENTRY CODE32 START

MOV R0,#0x400000

LDR R1,[R0],#4 ;取第1个数 LDR R2,[R0],#4 ;取第2个数

CMP R1,R2 ;将两个数相比较 MOVHI R1,#1 ;R1比R2大

MOVLO R1,#-1 ;R1比R2小 MOVEQ R1,#0 ;两个数相等 STR R1,[R0]

CEASE

B CEASE END

5、存储器从0x400000开始的100个单元中存放着ASCII码,编写程序,将其所有的小写字母转换成大写字母,对其它的ASCII码不做变换。 解:

AREA procedure5,CODE,READONLY ENTRY CODE32 START

MOV R0,#0x400000 MOV R1,#0

LOOP LDRB R2,[R0,R1]

CMP R2,#0x61 ;与‘a’比较 BLO NEXT ;小于转到NEXT CMP R2,#0x7B ;0x7A为‘z’ SUBLO R2, R2,#0x20 ;小于转换 STRBLO R2,[R0,R1] ;小于保存 NEXT

ADD R1,R1,#1 CMP R1,#100 BNE LOOP

CEASE

B CEASE END

6、编写一程序,查找存储器从0x400000开始的100个字中为0的数目,将其结果存到0x400190中。 解:

AREA procedure6,CODE,READONLY ENTRY

CODE32 START

MOV R0,#0x400000

MOV R7,#100 ;控制循环变量 MOV R1,#0 ;保存0的数目 LOOP

LDR R2,[R0],#4 ;取数 CMP R2,#0 ;比较为0 ADDEQ R1,R1,#1 ;为0加1

SUBS R7,R7,#1 ;修改控制变量 BNE LOOP

STR R1,[R0] ;保存0的数目

CEASE

B CEASE END

7、编写一程序,存储器中从0x400200开始有一个64位数。 (1)将取反,再存回原处;

(2)求其补码,存放到0x400208处。 解:

AREA procedure7,CODE,READONLY ENTRY CODE32 START

LDR R0,=0x400200

LDR R2,=0xFFFFFFFF

LDR R1,[R0] ;取低32位数 EOR R1,R1,R2 ;取反

STR R1,[R0] ;存低32位反码 ADDS R1,R1,#1 ;又加1为求补 STR R1,[R0,#8] ;存低32位补码 LDR R1,[R0,#4] ;取高32位数 EOR R1,R1,R2 ;取反

STR R1,[R0,#4] ;存高32位反码 ADC R1,R1,#0 ;高32位求补 STR R1,[R0,#12] ;存高32位补码 CEASE

B CEASE END

8、编写一简单ARM汇编程序段,实现1+2+…+100的运算。 解:

AREA procedure8,CODE,READONLY ENTRY CODE32 START

MOV R2,#100 MOV R1,#0 LOOP

ADD R1,R1,R2 ;R1 SUBS R2,R2,#1 ;R2 BNE LOOP

CEASE

B CEASE END

中为累加和 控制循环

联系合同范文客服:xxxxx#qq.com(#替换为@)