六、八、九章习题答案.docx

上传人:时光煮雨 文档编号:11772015 上传时间:2021-09-06 格式:DOCX 页数:7 大小:108.83KB
返回 下载 相关 举报
六、八、九章习题答案.docx_第1页
第1页 / 共7页
六、八、九章习题答案.docx_第2页
第2页 / 共7页
六、八、九章习题答案.docx_第3页
第3页 / 共7页
六、八、九章习题答案.docx_第4页
第4页 / 共7页
六、八、九章习题答案.docx_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《六、八、九章习题答案.docx》由会员分享,可在线阅读,更多相关《六、八、九章习题答案.docx(7页珍藏版)》请在三一文库上搜索。

1、Chapter6习题解答6.4某计算机系统有 8个I/O接口芯片,每个接口芯片占用8个端口地址。若起始地址为9000H, 8个接口芯片的地址连续分布,用 74LS138作为译码 器,试画出端口译码电路图,并说明每个芯片的端口地址范围。c接口 8接口编A15A6A5A4A3A2A0地址空间110010000000000001119000H9007H20010001119008H900FH30100001119010H9017H40110001119018H901FH51000001119020H9027H61010001119028H902FH71100001119030H9037H811100

2、01119038H903FH6.6 CPU与I/O设备之间的数据传送有哪几种方式?每种工作方式的特点是什么?各适用于 什么场合?无条件控制(同步控制):特点:方式简单,CPU随时可无条件读/写数据,无法保证数据 总是有效,适用面窄。适用于外设数据变化缓慢, 操作时间固定,可以被认为始终处于就绪 状态。条件控制(查询控制):特点:CPU主动,外设被动,执行 I/O操作时CPU总要先查询 外设状态;若传输条件不满足时,CPU等待直到条件满足。解决了 CPU与外设间的同步问题,可靠T高,但 CPU利用率低,低优先级外设可能无法及时得到响应。适用于 CPU不太 忙,传送速度不高的场合。中断方式:特点:

3、CPU在执行现行程序时为处理一些紧急发出的情况,暂时停止当前程序,转而对该紧急事件进行处理,并在处理完后返回正常程序。CPU利用率高,外设具有申请CPU中断的主动权,可以实现实时故障处理,实时响应外设的处理,但中断服务需要 保护断点(占用存储空间,降低速度)。适用于CPU的任务较忙,传送速度要求不高的场合,尤其适用实时控制中紧急事件的处理。DMA控制: 特点:数据不通过 CPU,而由DMAC直接完成存储单元或I/O端口之间的数据传送。 接口电路复杂,硬件开销大, 大批量数据传送速度极快。适用于存储器与存储器之间,存储器与外设之间的大批量数据传送的场合。通道方式:特点:以程序方式进行I/O管理,

4、可直接访问主存储器,不需 CPU干预,可通过通道程序实现除数据传输外的其他操作。6.7 常用的中断优先级的管理方式有哪几种?分别有哪些优缺点?软件查询:方法简单,实现起来较容易,效率低。硬件排序:占用硬件资源,效率较高。中断控制芯片:成本较高,效率很高。6.8 在微机与外设的几种输入/输出方式中,便于CPU 处理随机事件和提高工作效率的 I/O方式是哪一种?数据传输速率最快的是哪一种?便于 CPU 处理随机事件和提高工作效率的是中断方式,数据传输速率最快的是DMA 控制方式。Chapter8 习题解答8.2 指出下列指令操作数的寻址方式。1) MOVE R1, R2 寄存器直接寻址2) SUB

5、S R0, R0, #2 立即寻址3) SWPR1 , R1 , R2寄存器间接寻址4) STRR1, R0 , #-4! 基址变址寻址5) LDMFD SP! , R1R4 , LR 多寄存器直接寻址6) ANDSR0, R0, R1 , LSL R2 寄存器移位寻址7) STMIA R1!, R2R5 , R8 多寄存器直接寻址8) BL AGAIN 相对寻址8 3 ARM 指令中的第二操作数有哪几种表示形式?举例说明。第二源操作数有三类表示形式,分别是:1) 立即数方式( #imm) #imm 是一个无符号的 32 位数值变量,例如 0x1042) 寄存器方式( Rm ) Rm 是存储第

6、二源操作数的寄存器,例如 R3 表示 R3 寄存器3) 寄存器移位方式( Shifter_operand) 例如 R3, ASR #2 表示 R3 地址右移 2后寄存 器中的值8.4 判断下列指令的正误,并说明理由。1) ADD R1, R2, #4! 错误, #4 是立即数寻址,不是寄存器寻址,所以不能使用 “! ”来对寄存器值更新。2) LDMFD R13! , R2 , R4 正确3) LDRR1, R3! 错误,这是零偏移形式,无需使用“! ”4) MVN R5, #0x2F100正确5) SBC R15, R6, LSR R4 错误,没有指明对那个地址进行移位(LSR)6) MULR

7、2 , R2 , R5 正确7) MSRCPSR,#0x001 正确8) LDRBPC,R3正确8. 5对下列各指令组写出运算指令执行的条件。1) CMPR0, R1ADDHI R1, R1, #1 HI:如果R0中的无符号数R1中的无符号数则执行 ADD 指令。2) CMPR1 , R2SUBMI R2, R2, #0x08 MI:表示如果 R1寄存器中的值小于 R2寄存器中的值, 则执行SUB指令。8.7 指出MOV指令与LDR加载指令的区别及用途。ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完 成,也就是LDR/STR指令。比如想把数据从内存中某处读取到寄存器中

8、,只能 使用ldr比如:LDR R0, 0x12345678就是把0x12345678这个地址中的值存放到 R0中。而MOV不能这样用, MOV只能在寄存器之间移动数据,或者把立即数移动到寄存器中,这个是和x86 这种CISC架构的芯片区别最大的地方。x86中没有LDR这种指令,因为x86的 MOV指令可以将数据从内存中移动到寄存器中。8.8 写一段代码判断 R1的值是否大于 0x30 ,是则将R1减去0x30.CMP R1,0x30SUBGT R1 , R1, 0x308.9 ARM 处理器中支持哪几种堆栈 ?画出每种堆栈操作的示意图。ARMt持的四种堆栈类型:1 .满递增(FA):堆栈向上

9、增长,堆栈指针指向内含有效数据项的最高地址。存储器地址0xA00000040xA0000008堆栈0xA000000C生长方向 0xA000001010xA0000014指针-争2 .空递增(EA):堆栈向上增长,堆栈指针指向堆栈上的第一个空位置。存储器地址0xA00000040xA0000008堆栈生长0xA000000C士心万向0xA00000100xA0000014指针3 .满递减(FD):堆栈向下增长,堆栈指针指向内含有效数据项的最低地址。存储器地址0XA00000040XA00000080XA000000C0XA00000100XA0000014栈顶数据堆栈数据堆栈数据堆栈数据栈底数

10、据生长方向指针vt堆栈4 .空递减(ED):堆栈向下增长,堆栈指针向堆栈下的第一个空位置。指针 .卜堆栈 生长 方向存储器地址0XA00000040XA00000080XA000000C0XA00000100XA0000014Chapter9习题解答9.5编写一个程序段,当寄存器r3中数据大于r2中的数据时,将r2中的数据加10存入寄存器r3;否则将r2中的数据加100存入寄存器r3 ,并把这个程序段定义成一个代码段。AREA ADDITION , CODE , READONLYENTRYLoopCMP R3 , R2BHI GREATERADD R3 , R2 , #100B STOPGRE

11、ATERADD R3 , R2 , #10STOPEND9.8试编写一个循环程序,实现从0开始10个偶数的累加。AREAFoud, CODE ,ENTRYREADONL Y;存放累加和;存放加数;累加次数MOVR0,#0MOVR1,#0MOVR2,#9LoopADDR1,R1,#2ADD R0,R0,R1SUB R2,R1,#1 ;调整累加次数BNE LoopStopEND9.15 阅读程序,说明如下程序完成的功能。llsearchCMP R0, #0LDRNEB R2, R0CMPNE R1, R2LDRNE R0, R0, #4BNE llsearchMOV PC, LR若R0W0,则将R

12、0指向的字节数据读入R2;若R0W0且R1WR2,则将R0+4指向的双字数据存入 R0中;循环,直至R0=R2 退出子程序。9.16 阅读程序,说明如下程序完成的功能。strcmpLDRB R2, R0, #1LDRB R3, R1, #1CMP R2, #0CMPNE R3, #0BEQ returnCMP R2, R3BEQ strcmpreturnSUB R0, R2, R3MOV PC, LRR0指向数据串S1 (的前一个字节单元),R1指向数据串S2 (的前一个字节单元);依次比较字符串 S1、 S2 中的字符,直至任一字符串结束;将S1,S2第一个不同字符(或最后一个字符)的差存入

13、 R0并返回;9.17 阅读程序,说明如下程序完成的功能。CMP R0, #maxindexLDRLO PC, PC, R0, LSL #2B IndexOutOfRangeDCD Handler0DCD Handler1DCD Handler2DCD Handler3 实现子程序散转:若 R0在有效范围内(小于 #maxindex)则跳转到HanderO3所指的子程 序之一。9.18 阅读程序,说明如下程序完成的功能。loopLDMIA R12!, (R0-R11)STMIA R13!, (R0-R11)CMP R12, R14BLO loop将 R12 开始向大地址方向所指的 12 个数据

14、压入向上生成的堆栈( R13 开始向大地址方向所指的 12 个单元)中;比较 R12 和 R14 的值,若 R12 小于 R14 则循环,否则退出程序;9.19 分别编写一个主程序和子程序,实现主程序对子程序的调用。要求子程序完成两个数的加法运算功能;主程序完成对变量的初始化赋值后调用子程序,实现两个数的加法运算。按照如下两种方式来完成程序设计。(1) 主程序采用 C 语言程序,子程序采用汇编语言程序设计;(2) 主程序采用汇编语言程序,子程序采用 C 语言程序设计。(1)extern int myadd(int a , int b) int main() int a=1,b=2,c; c=myadd(a,b);AREA myadd , CODE , READONL YEXPORT myadd myaddADD R0,R0,R1MOV PC,LREND(2)IMPROT myaddAERA Example, CODE, READONL YENTRYMOV R0, #1MOV R1,#2BL myaddMOV R3,R0ENDint myadd(int a, int b) return(a+b);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1