六、八、九章习题答案 下载本文

Chapter6习题解答

6.4某计算机系统有8个I/O接口芯片,每个接口芯片?#21152;?个端口地址。若起始地址为9000H,8个接口芯片的地址连续分布,用74LS138作为译码器,试画出端口译码电路图,并说明每个芯片的端口地址范围。

A15 A14 ? ? A7 A6

A5A4A3 EN C B A Y7 . Y1 Y0 接口8 A2~A0 接口1 接口2 ??

接口编号 1 2 3 4 5 6 7 A15~A6 A5 0 0 0 0 1 1 1 A4 0 0 1 1 0 0 1 A3 0 1 0 1 0 1 0 A2~A0 000~111 000~111 000~111 000~111 000~111 000~111 000~111 地址?#21344;?9000H~9007H 9008H~900FH 9010H~9017H 9018H~901FH 9020H~9027H 9028H~902FH 9030H~9037H 1001000000 8 1 1 1 000~111 9038H~903FH 6.6 CPU与I/O设备之间的数据传送有哪几?#22336;?#24335;?每种工作方式的特点是什么?各适用于什么场合?

①无条件控制(同步控制):特点:方式简单,CPU随时可无条件读/写数据,无法保证数据总是有效,适用面窄。适用于外设数据变化缓慢,操作时间固定,可?#21592;?#35748;为始终处于就绪状态。

②条件控制(查询控制): 特点:CPU主动,外设被动,执行I/O操作时CPU总要先查询外设状态;若传输条件不满足时,CPU等待直到条件满足。解决了CPU与外设间的同步问题,可靠性高,但CPU利用率低,低优先级外设可能无法及时得到响应。适用于CPU不太忙,传送速度不高的场合。

③中断方式: 特点:CPU在执行?#20013;?#31243;序时为处理一些紧急发出的情况,暂时停止当前程序,转而对该紧急事件进?#20889;?#29702;,并在处理完后返回正常程序。CPU利用率高,外设具有申请CPU中断的主动权,可以实现实时?#25910;?#22788;理,实时响应外设的处理,但中断服务需要保护?#31995;悖ㄕ加么?#20648;?#21344;洌?#38477;低速度)。适用于CPU的任务较忙,传送速度要求不高的场合,

尤其适用实时控制中紧急事件的处理。

④DMA控制: 特点:数据不通过CPU,而由DMAC直接完成存储单元或I/O端口之间的数据传送。接口电路复杂,?#24067;?#24320;销大,大批量数据传送速度极快。适用于存储器与存储器之间,存储器与外设之间的大批量数据传送的场合。

⑤通道方式:特点:以程序方式进行I/O管理,可直接访问主存储器,不需CPU干预,可通过通道程序实现除数据传输外的其他操作。

6.7常用的中断优先级的管理方式有哪几种?分别有哪些优缺点? ①软件查询:方法简单,实现起来?#20808;?#26131;,效率低。 ②?#24067;?#25490;序:?#21152;糜布试矗?#25928;?#24335;?#39640;。 ③中断控制芯片:成本较高,效率很高。

6.8在微机与外设的几种输入/输出方式中,便于CPU处理随机事件和提高工作效率的I/O方式是哪一种?数据传输速?#39318;?#24555;的是哪一种?

便于CPU处理随机事件和提高工作效率的是中断方式,数据传输速?#39318;?#24555;的是DMA控制方式。

Chapter8习题解答

8.2 指出下列指令操作数的寻址方式。

1) MOVE R1,R2 寄存器直接寻址 2) 3) 4) 5)

SUBS R0,R0, #2 立即寻址

SWP R1,R1,[R2] 寄存器间接寻址 STR R1,[R0,#-4]! 基址变址寻址

LDMFD SP! , {R1~R4,LR} 多寄存器直接寻址

6) ANDS R0,R0,R1,LSL R2 寄存器移位寻址 7) STMIA R1!, {R2~R5, R8} 多寄存器直接寻址 8) BL AGAIN 相对寻址

8.3 ARM指令中的第二操作数有哪几种表示形式?举例说明。

第二源操作数有三类表示形式,分别是:

1) 立即数方式(#imm) #imm是一个无符号的32位数值变量,例如 0x104 2) 寄存器方式(Rm) Rm是存储第二源操作数的寄存器,例如R3表示R3寄存器 3) 寄存器移位方式(Shifter_operand) 例如R3,ASR #2表示R3地址右移2后寄存

器中的值

8.4 判断下列指令的正误,并说明理由。

1) ADD R1,R2,#4! 错误,#4是立即数寻址,不是寄存器寻址,所以不能使用

“!”来对寄存器值更新。 2) LDMFD R13!,{R2,R4} 正确 3) LDR R1,[R3]! 错误,这是零偏移形式,无需使用“!”

4) MVN R5,#0x2F100 正确 5) SBC R15,R6,LSR R4 错误,没有指明对那个地址进行移位(LSR) 6) MUL R2,R2,R5 正确

7) MSR 8) LDRB

CPSR,#0x001 正确

PC,[R3] 正确

8.5 对下列各指令组写出运算指令执行的条件。

1) CMP

R0,R1

ADDHI R1,R1,#1 HI:如果R0中的无符号数>R1中的无符号数则执行ADD指令。

2) CMP R1,R2

SUBMI R2,R2,#0x08 MI:表示如果R1寄存器中的值小于R2寄存器中的值,

则执行SUB指令。

8.7 指出MOV指令与LDR加载指令的区别及用途。

ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是LDR/STR指令。比如想把数据从内存中某处读取到寄存器中,只能使用ldr比如:

LDR R0, 0x12345678

就是把0x12345678这个地址中的值存放到R0?#23567;?#32780;MOV不能这样用,MOV只能在寄存器之间移动数据,或者把立即数移动到寄存器中,这个是和x86这种CISC架构的芯片区别最大的地方。x86中没有LDR这种指令,因为x86的MOV指令可以将数据从内存中移动到寄存器?#23567;?

8.8 写一段代码判断R1的值是否大于0x30 , 是则将R1减去0x30.

CMP R1, 0x30

SUBGT R1 , R1, 0x30

8.9 ARM处理器中支持哪几种堆栈? 画出每种堆栈操作的示意图。

ARM支持的四种堆栈类?#20572;?

1. 满递增(FA):堆栈向上增长,堆栈指针指向内含有效数据项的最高地址。

存储器地址 0xA0000004 0xA0000008 0xA000000C 0xA0000010

堆栈生长方向 栈?#36164;?#25454; 堆栈数据 堆栈数据 堆栈数据

栈顶数据 指针 0xA0000014

2. 空递增(EA) :堆栈向上增长,堆栈指针指向堆栈上的第一个空位置。

存储器地址 0xA0000004 0xA0000008 0xA000000C 0xA0000010 0xA0000014

堆栈生长方向 栈?#36164;?#25454; 堆栈数据 堆栈数据 堆栈数据 空闲

指针

3. 满递减(FD) :堆栈向下增长,堆栈指针指向内含有效数据项的最低地址。

存储器地址 0xA0000004 0xA0000008 0xA000000C 0xA0000010 指针 堆栈生长方向 栈顶数据 堆栈数据 堆栈数据 堆栈数据 栈?#36164;?#25454; 0xA0000014 4. 空递减(ED) :堆栈向下增长,堆栈指针向堆栈下的第一个空位置。

存储器地址 0xA0000004 0xA0000008 0xA000000C 0xA0000010 0xA0000014

指针 堆栈生长方向 空闲 堆顶数据 堆栈数据 堆栈数据 堆?#36164;?#25454; Chapter9习题解答

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

R3 , R2

BHI GREATER ADD R3 , R2 , #100 B

STOP

GREATER ADD R3 , R2 , #10 STOP

END

9.8?#21592;?#20889;一个循环程序,实?#25191;?开始10个偶数的累加。

AREA Foud,CODE,READONLY ENTRY

MOV R0,#0 MOV R1,#0 MOV R2,#9 Loop

ADD R1,R1,#2

ADD R0,R0,R1

SUB R2,R1,#1

BNE Loop

??

Stop

END

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

llsearch

CMP R0, #0

LDRNEB R2, [R0] CMPNE R1, R2 LDRNE R0, [R0, #4] BNE llsearch

MOV PC, LR

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

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

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

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(的前一个字节单元); ?#26469;?#27604;较?#22336;?#20018;S1、S2中的?#22336;?#30452;至任一?#22336;?#20018;结束;

将S1,S2第一个不同?#22336;?#25110;最后一个?#22336;?#30340;差存入R0并返回;

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

CMP R0, #maxindex

;调整累加次数

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





pk10开奖直播视频