好文档 - 专业文书写作范文服务资料分享网站

微处理器系统结构与嵌入式系统设计第二版 - chap9习题解答

天下 分享 时间: 加入收藏 我要投稿 点赞

第9章习题答案

编写一个程序段,当寄存器r3中数据大于r2中的数据时,将r2中的数据加10存入寄存器r3;否则将r2中的数据加100存入寄存器r3,并把这个程序段定义成一个代码段。

AREA ADDITION,CODE,READONLY ENTRY Loop STOP END

试编写一个循环程序,实现从0开始10个偶数的累加。

CMP BHI ADD B

R3 , R2 GREATER R3 , R2 , #100 STOP

GREATER

ADD R3 , R2 , #10 …

AREA Foud,CODE,READONLY ENTRY Loop SUB Stop END

阅读程序,说明如下程序完成的功能。 llsearch CMP R0, #0 LDRNEB R2, [R0] CMPNE R1, R2 LDRNE R0, [R0, #4] BNE llsearch

MOV R0,#0 MOV R1,#0 MOV

R2,#9

;存放累加和 ;存放加数 ;累加次数

ADD R1,R1,#2 R2,R1,#1 BNE

Loop ……

;调整累加次数

ADD R0,R0,R1

MOV PC, LR

若R0≠0,则将R0指向的字节数据读入R2;

若R0≠0且R1≠R2,则将R0+4指向的双字数据存入R0中; 循环,直至R0=R2退出子程序。

阅读程序,说明如下程序完成的功能。 strcmp

LDRB R2, [R0], #1 LDRB R3, [R1], #1 CMP R2, #0 CMPNE R3, #0 BEQ return CMP R2, R3 BEQ strcmp return SUB R0, R2, R3 MOV PC, LR

R0指向数据串S1(的前一个字节单元),R1指向数据串S2(的前一个字节单元); 依次比较字符串S1、S2中的字符,直至任一字符串结束; 将S1,S2第一个不同字符(或最后一个字符)的差存入R0并返回;

阅读程序,说明如下程序完成的功能。 CMP R0, #maxindex LDRLO PC, [PC, R0, LSL #2] B IndexOutOfRange DCD Handler0 DCD Handler1 DCD Handler2 DCD Handler3 …

实现子程序散转:若R0在有效范围内(小于#maxindex)则跳转到Hander0~3所指的子程序之一。

阅读程序,说明如下程序完成的功能。 loop

LDMIA R12!, (R0-R11) STMIA R13!, (R0-R11) CMP R12, R14

BLO loop

将R12开始向大地址方向所指的12个数据压入向上生成的堆栈(R13开始向大地址方向所指的12个单元)中;

比较R12和R14的值,若R12小于R14则循环,否则退出程序;

分别编写一个主程序和子程序,实现主程序对子程序的调用。要求子程序完成两个数的加法运算功能;主程序完成对变量的初始化赋值后调用子程序,实现两个数的加法运算。按照如下两种方式来完成程序设计。

(1) 主程序采用C语言程序,子程序采用汇编语言程序设计; (2) 主程序采用汇编语言程序,子程序采用C语言程序设计。

(1)

extern int myadd(int a , int b) int main() { }

AREA myadd , CODE , READONLY EXPORT myadd myadd ADD R0,R0,R1 MOV PC,LR END (2)

IMPROT myadd

AERA Example, CODE, READONLY ENTRY MOV R0, #1 MOV R1,#2 BL myadd MOV R3,R0 END

int myadd(int a, int b)

{return(a+b);}

int a=1,b=2,c;

c=myadd(a,b);

微处理器系统结构与嵌入式系统设计第二版 - chap9习题解答

第9章习题答案编写一个程序段,当寄存器r3中数据大于r2中的数据时,将r2中的数据加10存入寄存器r3;否则将r2中的数据加100存入寄存器r3,并把这个程序段定义成一个代码段。AREAADDITION,CODE,READONLYENTRYLoopSTOPEND试编写一个循环程序,实现从0开始10个偶数
推荐度:
点击下载文档文档为doc格式
3rjja6edti5kaxd91bwp423gj8gjlb00kyi
领取福利

微信扫码领取福利

微信扫码分享