计算机组成原理与汇编语言程序设计课后习题及解答(详解)

更新时间:2024-01-30 00:34:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

计算机组成原理与汇编语言程序设计课后习题及解答

徐洁,俸远祯 电子工业出版社

第1章 习题一

1.什么是程序存储工作方式?

答:计算机的工作方式——存储程序工作方式。即事先编写程序,再由计算机把这些信息存储起来,然后连续地、快速地执行程序,从而完成各种运算过程。 2.采用数字化方法表示信息有哪些优点? 用数字化方法表示信息的优点: (1)抗干扰能力强, 可靠性高。

(2)依靠多位数字的组合,在表示数值时可获得很宽的表示范围以及很高的精度。 (3)数字化的信息可以存储、信息传送也比较容易实现。 (4)可表示的信息类型与范围及其广泛,几乎没有限制。

(5)能用逻辑代数等数字逻辑技术进行信息处理,这就形成 了计算机硬件设计的基础。 3.如果有7×9点阵显示出字符A的图像,请用9个七位二进制代码表示A的点阵信息。

4.数字计算机的主要特点是什么?

1. (1) 能在程序控制下自动连续地工作; (2|)运算速度快;

(3) 运算精度高;

(4) 具有很强的信息存储能力; (5) 通用性强,应用领域及其广泛。 5.衡量计算机性能的基本指标有哪些? 答:衡量计算机性能的基本指标:

(1)基本字长——参加一次运算的数的位数;

(2)数据通路宽度——数据总线一次能并行传送的位数;

(3)运算速度——可用①CPU的时钟频率与主频,②每秒平均执行指令数,③典型四则运算的时间来表示。

(4)主存储器容量——可用字节数或单元数(字数)×位数来表示。 (5)外存容量——常用字节数表示。

(6)配备的外围设备及其性能。 (7)系统软件配置。

7.系统软件一般包括哪些部分?列举你所熟悉的三种系统软件。

系统软件一般包括操作系统,编译程序、解释程序、各种软件平台等。例如WINDOWS98操作系统,C语言编译程序等,数据库管理系统。

8.对源程序的处理有哪两种基本方式?

对源程序的处理通常有两种处理方式:解释方式和编译方式。

第2章 习题二

1.将二进制数(101010.01)2 转换为十进制数及BCD码。 解:(101010.01)2 = (42.25)10 = (01000010.00100101)BCD 2.将八进制数(37.2)8转换为十进制数及BCD码. 解:(37.2)8 = (31.25)10 =(00110001.00100101)BCD 3.将十六进制数(AC.E)转换为十进制数及BCD码.

解: (AC.E)16 =(172.875)10 = (000101110010.100001110101)BCD

4.将十进制数(75.34)10转换为8位二进制数及八进制数、十六进制数。 解: (75.34)10 = (01001011.01010111)2 =(213.256)8 =(4B.57)16 5.将十进制数13/128转换为二进制数.

解: (13/128)10 =(1101/10000000)2 =(0.0001101)2

6.分别写出下列各二进制数的原码、补码,字长(含一位数符)为8位。 (1)0 (2)- 0 (3)0.1010 (4)- 0.1010 (5)1010 (6)-1010 解: 原码 补码 0 00000000 00000000 -0 10000000 00000000 0.1010 0.1010000 0.1010000 - 0.1010 1.1010000 1.0110000 1010 00001010 00001010

-1010 10001010 11110110 7.若X补=0.1010,则X原、真值等于什么?

解:X补=0.1010,则X原=0.1010,真值 X = 0.1010 8.若X补=1.1010,则X原、真值等于什么?

解:X补=1.1010,则X原=1.0110,真值 X = - 0.0110

9.某定点小数字长16位,含1位符号,原码表示,分别写出下列典型值的二进制代码与十进制真值。 (1)非0最小正数 (2)最大正数

(3)绝对值最小负数 (4)绝对值最大负数

解: 二进制代码 十进制真值 (1)非0最小正数 0.000000000000001 2-15 (2)最大正数 0.111111111111111 1-2-15

(3)绝对值最小负数 1.000000000000001 -2-15

(4)绝对值最大负数 1.111111111111111 -(1-2-15)

10.某定点小数字长16位,含1位符号,补码表示,分别写出下列典型值的二进制代码与十进制真值。 (1)非0最小正数 (2)最大正数

(3)绝对值最小负数 (4)绝对值最大负数

解: 二进制代码 十进制真值 (1)非0最小正数 0.000000000000001 2-15

(2)最大正数 0.111111111111111 1-2-15 (3)绝对值最小负数 1.111111111111111 -2-15

(4)绝对值最大负数 1.000000000000000 -1

11.某浮点数字长16位,其中阶码6位,含1位符号位,补码表示,以2为底;尾数10位(含1位数符),补码表示,规格化。分别写出下列各典型值的二进制代码与十进制真值。 (1)非0最小正数 (2)最大正数

(3)绝对值最小负数 (4)绝对值最大负数

解: 二进制代码 十进制真值 (1)非0最小正数 100000, 0.100000000 (2)最大正数

011111, 0.111111111 (3)绝对值最小负数 100000, 1.100000000 (4)绝对值最大负数 011111, 1.000000000

14.减少指令中一个地址码位数的方法是什么?

答:减少指令中一个地址码位数的方法是采用寄存器寻址方式。 15.某主存单元的地址码与存储单元内容对应关系如下: 地址码 存储内容 1000H A307H

1001H 0B3FH 1002H 1200H 1003H F03CH 1004H D024H

(1)若采用寄存器间接寻址读取操作数,指定寄存器R0的内容为1002H,则操作数是多少?

(2)若采用自增型寄存器间接寻址方式(R0)+,R0的内容为1000H,则操作数是多少?指令执行后R0的内容是什么?

(3)若采用自减型寄存器间接寻址方式-(R1)+读取操作数,R1的内容为1003H,则操作数是多少?指令执行后R1的内容是什么?

(4)若采用变址寻址方式X(R2),指令中给出形式地址 d = 3H , 变址寄存器R2的内容为1000H,则操作数是多少?

解:(1)操作数为1200H。

(2)操作数为A307H,指令执行后R0的内容1001H。 (3)操作数为F03CHH,指令执行后R0的内容1002H。 (4)操作数为F03CHH。

16.对I/O设备的编址方法有哪几种?请稍作解释。

答:对I/O设备的编址方法有两种:外围设备单独编址和外围设备与主存统一编址。

外围设备单独编址:为I/O接口中的有关寄存器分配I/O端口地址,一般由地址总线若干低位提供I/O端口地址,从而选择某个寄存器进行读/写。

外围设备与主存统一编址。将I/O接口中的有关寄存器与主存单元统一编址,一般由地址码中高端(地址值大)的一段区域分配给I/O端口。

17.I/O的设置方法有哪几种?请稍作解释。

答:I/O指令的设置方法有三种:

(1)设置专用的I/O指令:指令中的操作码明确规定某种输入/输出操作,CPU寄存器号,I/O端口地址。应用于外围设备单独编址方式。

(2)用通用的数据传送指令实现I/O操作:应用于外围设备与主存单元统一编址方式。 (3)通过I/O处理器或处理机控制I/O操作:应用于采用协处理器或多处理机的系统。

第3章 习题三

1.试说明串行进位和并行进位的不同之处。

答:采用串行进位的加法器,是将n个加法器串接起来。其中的进位是逐级形成的,每一级的进位直接依赖前一级的近位。由于串行进位的延时时间较长,所以速度很慢。 采用并行进位的加法器中,各加法器的进位信号仅由进位产生函数Gi与进位传递函数Pi及最低位进位C0决定,而Gi和Pi之与本位的Ai和Bi有关,即Gi与Pi的形成是同时的,因此各级的进位输出Ci也是同时形成的。并行进位有效地减少进位延时时间。

3.用变形补码计算[X]补+[Y]补,并指出是否溢出,说明是正溢还是负溢。 (1)[X]补=00 110011 [Y]补 = 00 101101 0 0 1 1 0 0 1 1 +) 0 0 1 0 1 1 0 1

0 1 1 0 0 0 0 0

[X]补+[Y]补=01 100000 , 符号位为01,为正溢。 (2)[X]补=00 010110 [Y]补 = 00 100101 0 0 1 1 0 1 1 0 +) 0 0 1 0 0 1 0 1

0 1 0 1 1 0 1 1

[X]补+[Y]补=01 011011 , 符号位为01,为正溢。 (3)[X]补=11 110011 [Y]补 = 11 101101 1 1 1 1 0 0 1 1 +) 1 1 1 0 1 1 0 1

1 1 1 0 0 0 0 0

[X]补+[Y]补=11 100000 , 符号位为11,结果正确。 (4)[X]补=11 001101 [Y]补 = 11 010011 1 1 0 0 1 1 0 1 +) 1 1 0 1 0 0 1 1

1 0 1 0 0 0 0 0

[X]补+[Y]补=10 100000 , 符号位为10,为负溢。

3.用变形补码计算[X]补-[Y]补,并指出是否溢出,说明是正溢还是负溢。 (1)[X]补=00 110011 [Y]补 = 00 101101 解:[-Y]补=11 010011 0 0 1 1 0 0 1 1 +) 1 1 0 1 0 0 1 1

0 0 0 0 0 1 1 0

[X]补-[Y]补=00 000110 , 符号位为00,结果正确。 (2)[X]补=00 110011 [Y]补 = 11 010011 解:[-Y]补=00 101101 0 0 1 1 0 0 1 1 +) 0 0 1 0 1 1 0 1

0 1 0 0 0 0 0 0

[X]补-[Y]补=01 000000 , 符号位为01,为正溢。 (3)[X]补=00 100011 [Y]补 = 00 110100 解:[-Y]补=11 001100 0 0 1 1 0 0 1 1 +) 1 1 0 0 1 1 0 0

1 1 1 1 1 1 1 1

[X]补-[Y]补=11 111111 , 符号位为11,结果正确。 (4)[X]补=00 101010 [Y]补 = 11 110111 解:[-Y]补=00 001001 0 0 1 0 1 0 1 0 +) 0 0 0 0 1 0 0 1

0 0 1 1 0 0 1 1

[X]补-[Y]补=00 110011 , 符号位为00,结果正确。 6.用无符号数一位乘法计算X×Y,写出规范的运算过程。 (1)X=1001 Y=1101

FT1 M→MDR→IR,PC+1→PC ST0 PC→MAR ST1 M→MDR→C ST2 PC+1→Z ST3 Z→PC ET0 C→R0 (3)MOV -(SP),-(R1) 解:FT0 PC→MAR

FT1 M→MDR→IR,PC+1→PC ST0 R1-1→Z ST1 Z→MAR , R1 ST2 M→MDR→C DT0 SP-1→Z DT2 Z→MAR ,SP ET0 C→MDR

ET1 MDR→M (4)MOV (R0)+ , X(R3) 解:FT0 PC→MAR

FT1 M→MDR→IR,PC+1→PC ST0 PC→MAR

ST1 M→MDR→D , PC+1→PC ST2 D+R3→Z ST3 Z→MAR

ST4 M→MDR→C DT0 R0→MAR DT1 R0+1→Z DT2 Z→R0 ET0 C→MDR ET1 MDR→M

(5)MOV (R0) , (PC)+ 解: FT0 PC→MAR

FT1 M→MDR→IR,PC+1→PC ST0 PC→MAR ST1 M→MDR→C ST2 PC+1→Z ST3 Z→PC DT0 R0→MAR ET0 C→MDR

ET1 MDR→M (6)MOV DI ,(SP)+ 解: FT0 PC→MAR

FT1 M→MDR→IR,PC+1→PC ST0 SP→MAR ST1 M→MDR→C ST2 SP+1→Z ST3 Z→SP

DT0 PC→MAR

DT1 M→MDR→MAR,PC+1→PC ET0 C→MDR ET1 MDR→M

13.拟出下述程序的读取与执行过程: (1)ADD R0,X(R1) 解: FT0 PC→MAR

FT1 M→MDR→IR,PC+1→PC ST0 PC→MAR

ST1 M→MDR→D , PC+1→PC ST2 D+R1→Z ST3 Z→MAR ST4 M→MDR→C DTO R0→D

ET0 C ADD D→Z

ET1 Z→R0

(2)SUB (R1)+,(PC)+ 解: FT0 PC→MAR

FT1 M→MDR→IR,PC+1→PC ST0 PC→MAR ST1 M→MDR→C ST2 PC+1→Z ST3 Z→PC DT0 R0→MAR DT1 M→MDR→D DT2 R0+1→Z DT3 Z→R0

ET0 C SUB D→Z ET1 Z→MDR

ET2 MDR→M (3)AND (R3)+ , R0 解: FT0 PC→MAR

FT1 M→MDR→IR,PC+1→PC ST0 R0→C

DT0 R3→MAR DT1 M→MDR→D DT2 R3+1→Z DT3 Z→R3 ET0 C AND D→Z ET1 Z→MDR

ET2 MDR→M (4)OR R0 , DI

解: FT0 PC→MAR

FT1 M→MDR→IR,PC+1→PC ST0 PC→MAR

ST1 M→MDR→MAR,PC+1→PC

ST2 M→MDR→C DT1 R0→D ET0 C OR D→Z ET1 Z→R0

(5)EOR -(R2) , R1

解: FT0 PC→MAR

FT1 M→MDR→IR,PC+1→PC ST0 R1→C DT0 R2-1→Z DT1 Z→MAR , R2 DT2 M→MDR→D ET0 C EOR D→Z ET1 Z→MDR

ET2 MDR→M (6)INC -(R2)

解: FT0 PC→MAR

FT1 M→MDR→IR,PC+1→PC DT0 R2-1→Z

DT1 Z→MAR , R2 DT2 M→MDR→D ET0 INC D→Z ET1 Z→MDR

ET2 MDR→M (7)DEC (R1)

解: FT0 PC→MAR

FT1 M→MDR→IR,PC+1→PC DT0 R1→MAR DT1 M→MDR→D ET0 DEC D→Z ET1 Z→MDR ET2 MDR→M (8)COM (R0)+

解: FT0 PC→MAR

FT1 M→MDR→IR,PC+1→PC DT0 R0→MAR DT1 M→MDR→D DT2 R0+1→Z DT3 Z→R0 ET0 COM D→Z ET1 Z→MDR

ET2 MDR→M (9)NEG DI

解: FT0 PC→MAR

FT1 M→MDR→IR,PC+1→PC DT0 PC→MAR

DT1 M→MDR→MAR , PC+1→PC

DT2 M→MDR→D ET0 NEG D→Z ET1 Z→MDR ET2 MDR→M

(10)SAL R1

解: FT0 PC→MAR

FT1 M→MDR→IR,PC+1→PC DT1 R1→D ET0 SAL D→Z ET1 Z→R1 (11)SAR R2

解: FT0 PC→MAR

FT1 M→MDR→IR,PC+1→PC DT1 R2→D

ET0 SAR D→Z

ET1 Z→R2

14.拟出下述程序的读取与执行过程: (1)JMP R1

解: FT0 PC→MAR

FT1 M→MDR→IR,PC+1→PC ET0 R1→PC (2)JMP (R0)

解: FT0 PC→MAR

FT1 M→MDR→IR,PC+1→PC ET0 R0→MAR

ET1 M→MDR→PC (3)JMP X(PC)

解: FT0 PC→MAR

FT1 M→MDR→IR,PC+1→PC ST0 PC→MAR

ST1 M→MDR→D ST2 D+PC→Z ST3 Z→PC (4)RST (SP)+

解: FT0 PC→MAR

FT1 M→MDR→IR,PC+1→PC ET0 SP→PC ET1 M→MDR→PC ET2 SP+1→Z ET3 Z→PC (5)JSR R0

解: FT0 PC→MAR

FT1 M→MDR→IR,PC+1→PC ST0 R0→C ET0 SP-1→Z

ET1 Z→MAR , SP

ET2 PC→MDR ET3 MDR→M

ET4 C→PC (6)JSR (R3)

解: FT0 PC→MAR

FT1 M→MDR→IR,PC+1→PC STO R3→MAR ST1 M→MDR→C ET0 SP-1→Z ET1 Z→MAR , SP ET2 PC→MDR ET3 MDR→M ET4 C→PC (7)JSR (R2)+

解: FT0 PC→MAR

FT1 M→MDR→IR,PC+1→PC ST0 R2→MAR ST1 M→MDR→C ST2 R2+1→Z ST3 Z→R2 ET0 SP-1→Z

ET1 Z→MAR , SP ET2 PC→MDR ET3 MDR→M ET4 C→PC

第4章 习题四

3. 在8086/8088CPU中,分别进行下列8位二进制数的运算后,标志寄存器中OF、ZF、SF、CF的值各是多少?

(1)10101011+01010101

结果, OF=0 , ZF=1 , SF=0 , CF=1

(2)11011010+11101101

(3)01010101 – 001111110

(4) 10110011– 01100010

4. 在002B0H和002B3H字单元中,分别存放了2个16位字2C53H和1F0EH, 试用图表示它们在存储器中的存储情况。 答案:

5. 试说明段基址和段基值的不同之处。

答:一个段起始单元的地址称为段基址(20位),其低4位必须位0(可被16整除)。 段基址的高16位称为段基值,它保存在段寄存器CS、DS、SS、ES中。

6. 试说明8086/8088主存储器的逻辑地址由哪两部分组成。 答:逻辑地址:段基值:偏移量

7. 设某一存储单元的物理地址是34567H,试完成下列不同的逻辑地址表示。 (1) 3456H:0007H (2)3400H:0567H

8. 假设某个程序装入主存后,(SS)= 0500H,(SP)= 64H,试计算该程序的堆栈栈底的物理地址。 解:SP的内容为栈顶单元相对堆栈段段基址的字节距离(偏移量)。当SP初始化时,其值为栈顶的长度(这时SP指向栈底+2单元)。所以堆栈栈底的物理地址为: 0500H×10H+64H-2 =05062H

习题 9. 假设堆栈寄存器(SS)= 1E2CH,程序中设定堆栈的长度为100个字节。试计算该程序的堆栈栈底字单元的物理地址,堆栈指针SP的初始值(即堆栈中没有数据时)和SP初始值指向的物理地址。 解:

100=64H

堆栈栈底字单元的物理地址: 1E2CH×10H+64H-2=1E322H 堆栈指针SP的初始值: 64H SP初始值指向的物理地址:1E2CH×10H+64H=1E324H

习题 10. 设(SP)=40H,(BX)=1234H ,(DS)=5678H. 如现有两条压栈指令: PUSH BX PUSH DS

试问两条指令执行后,图4 – 46中各单元的的数据是多少?(SP)等于多少? 答: (SP)=3CH

习题 11. 设(SP)=60H,则执行下述3条指令后,(水平)的值为多少? PUSH AX ; (SP)=5EH PUSH BX ; (SP)=5CH POP CX ; (SP)=5EH 解: (SP)=5EH

习题 12. 试分别说明下列各指令中源操作数和目的操作数使用的寻址方式,试说明如何确定有效地址EA.

(1) ADD AX , 0A51H

(2) MOV BL , DATA1

(3) MOV DS , AX

(4) AND AL , VAR1+2

(5) TEST [SI] , CL

(6) OR ARRY[BX] , - 1

(7) SUB DS:[01FEH] , DX

(8) ADC [BP][DI] , BH

(9) AND CX , - 19[BX][SI]

(10) PUSH ES

(11) CLC ; CF←0

13. 试分别指出下列各指令语句的语法是否有错误,若有错,指明是什么错误。 (1) MOV AL , 0F5H ;√ (2) (2)ADD [BX][BP] , BX ; √ (3) (3)CMP AL , 100H ; √

(4) (4)TEST [BP] , DL ; √

(5) (5)ADC 15H , CL ; × ADC是双操作数指令; 目的地址不能为立即数

(6) (6)SUB [DI] , DA_WORD ; × 源操作数和目的操作数不能同时为存储器操作数 (7) (7)OR CH , CL ; √

(8) (8)MOV AL , 1000H ; × 源操作数和目的操作数类型属性不一致 (9) (9)SAR 10H[DI] , 2 ; √ 移位次数大于1时, 应由CL指定移位次数 (10) NOT AL , BL ; × NOT 是单操作数指令

(11) (11)DEC CX , 1 ; × DEC是单操作数指令

(12) (12)LEA ES , TAB[BX] ; × LEA指令的目的地址必须是通用寄存器 14. 执行下面2条指令后,标志寄存器中CF,AF,ZF,SF和OF分别是多少? MOV AL , 91 ;91=01011011B

ADD AL , 0BAH ; 0BAH=10111010B

15. 假设(DS) = 091DH , (SS) = 1E4AH , (AX) = 1234H , (BX) = 0024H , (CX) = 5678H , (BP) = 0024H , (SI) = 0012H , (DI) = 0032H , (09226H) = 00F6H , (09228H) = 1E40H , (1E4F6H) = 091DH . 试给出下列各指令或程序段执行的分别执行的结果. (1) (1)MOV CL , 20H[BX][SI]

解 : 源操作数的物理地址: (DS)×10H + 20H+(BX)+(SI)

将09226H字节单元的内容送CL,结果(CL) = 00F6H (2) MOV [BP][DI] , CX

解 : 目的操作数的物理地址: (SS)×10H + (BP)+(DI)

将CX寄存器的内容传送到1E4F6H字单元 , 结果 (1E4F6H) = (CX) = 5678H (3) (3)LEA BX , 20H[BX][SI] MOV AX , 2[BX]

解 : 执行完第一句指令后,BX的内容为:

第二句指令中,源操作数的物理地址为 EA = (DS)×10H+2+(BX)

(4)LDS SI , [BX][DI]

将09228H字单元的内容送AX寄存器 , 结果 (AX) = 1E40H MOV [SI] , BX

解 : 第一句指令中源操作数的逻辑地址为 DS:(BX)+(DI) 其偏移量为 (BX)+(DI) = 0024H+0032H = 0056H, 执行完第一句指令后, (SI) = 0056H

第二句指令中,源操作数的物理地址为

(DS)×10H+(SI) = 091D0H+0056H = 09226H 将BX寄存器的内容送09226单元 , 结果 (09226H) = (BX) = 0024H (5)(5)XCHG CX , 32H[BX]

XCHG 20H[BX][SI] , AX

解 : 第一句指令中源操作数的物理地址为 (DS) × 10H+32H+(BX)= 09226H

09226H字单元和CX寄存器的内容交换,结果 (CX) = 00F6H ,(09226H) = 5678H 第二句指令中目的操作数的物理地址为 (DS) × 10H++20H+(BX)+(SI) = 09226H

09226H字单元和寄存器AX的内容交换, 结果 (09226H) = 1234H , (AX) = 5678H

16. 假设(SS)=0915H , (DS) = 0930H , (SI) = 0A0H , (DI) = 1C0H , (BX) = 80H , (BP) = 470H . 现有一指令―MOV AX , OPRD‖, 若源操作数的物理地址为095C0H , 试用4种不同寻址方式改写此指令,并要求至少使用上述条件一次.

解: 源操作数的物理地址与DS段基址的差为

095C0H – 09300H = 2C0H

① MOV AX , 100H[DI] ; 源操作数的物理地址为: (DS)×10H+100H+(DI) = 09300H + 100H + 1C0H =095C0H ② MOV AX , 220H[SI] ; 源操作数的物理地址为: (DS)×10H+220H+(SI) = 09300H + 220H + 0A0H =095C0H ③ MOV AX , 240H[BX] ; 源操作数的物理地址为:

(DS)×10H+240H+(BX) = 09300H + 240H + 080H =095C0H ④ MOV AX , 1A0H[SI][BX] ;源操作数的物理地址为:

(DS)×10H+0A0H+(SI)+(BX) = 09300H + 1A0H + 0A0H +080H = 095C0H

18. 假设(AX)=0A5C6H , (CX) = 0F03H , 则下列4条指令执行后 , (AX) = 81C6H , CF= 1 . STC ; CF = 1

RCL AX , CL ; AX= 0010 1110 0011 0110 , CF = 1 AND AH , CH ; AH = 0000 1110 , CF = 0

RCR AX , CL ; AX = 1000 0001 1100 0110, CF = 1

19. 假设(AX) = 0FC77H , (CX) = 504H , 则下列4条指令执行后 , (AX) = , CF = .

CLC ; CF = 0

SAR AX , CL ; (AX) = 1111 1111 1100 0111 , CF = 0 XCHG CH , CL ; (CX) = 405H

SHL AX , CL ; (AX) = 1111 1000 1110 0000 ,CF = 1

20. 假设(AX) = 1234H , (BX) = 0FFFFH , 则下述3条指令执行后 , (AX) = 1236H , (BX) = 0001H . INC AX ; (AX) = 1235H

NEG BX ; (BX) = 0000 0000 0000 0001B = 0001H ADD AX , BX ; (AX) = 1236H

21. 假设(AX) = 0FFFFH , 则下述程序段执行后 , (AX) = 0001H . INC AX ; (AX) = 0000H

NEG AX ; (AX) = 0000 0000 0000 0001B = 0000H DEC AX ; (AX) = 0FFFFH NEG AX ; (AX) = 0001H

22. 假设(BX) = 12FFH , 则下述程序段执行后 ,

(BX) = 0012H , ZF = 0 , CF = 0 . MOV CL , 8 ;(CL)=8

ROL BX , CL ;(BX) = 1111 1111 0001 0010B = 0FF12H AND BX , 0FFH ; (BX) = 0012H

CMP BX , 0FFH ; (BX) = 0012H CF=0 ,ZF=0 解: ① 第一句指令执行后 , (CL)=8

② 第二句指令执行后 , (BX) = 1111 1111 0001 0010B = 0FF12H

③ 第三句指令执行后 , (BX) = 0012H

④ 第四句指令执行后 , (BX) = 0012H CF=0 ,ZF=0

23. 假设(AX) = 0B55BH , (DX) = 0F0FH , 则下述程序段执行后 , (AX) = 0FBABH. AND AH , DL ; (AX) = 055BH

XOR AL , DH ;(AX) = 0554H

NEG AH ;(BX) = 1111 1011 0101 0100B = 0FD54H

NOT AL ; (AX) = 1111 1011 1010 1011H = 0FBABH

24. 假设(AX) = 0FF60H , 则下述程序段执行后 , (AX) = 0 0 .

, CF = STC ; CF = 1 MOV DX , 96 ; (DX) = 0060H

XOR DH , 0FFH ; (DX) = 1111 1111 0110 0000B = 0FF60H SBB AX , DX ; (AX) = 0

25. 假设(AL) = 08H , (BL) = 07H , 则下列程序段执行后 , (AH) = 01H , (AL) = 05H , CF = 1 . ADD AL , BL AAA

26. 假设DF=0 , (DS:0100H) = 01A5H , 则下述程序段执行后, (AL) = 0A5H , SI = MOV SI , 0100H LODSW 解: LODSW指令的功能: ① AX← (DS:(SI)) ② SI← (SI)±1或2

③ 对标志位无影响

执行后 , (AX) = 01A5H , 即(AL) = 0A5H , (SI) = 0102H

28. 试按下列要求分别编制程序段: (1) (1)把标志寄存器符号位置―1‖. 解: LAHF

OR 10000000B SAHF

(2) (2)寄存器AL中高低4位互换. 解: MOV CL , 4

ROL AL , CL 或 MOV CL , 4 ROR AL , CL

(3)假设有3个字存储单元A,B,C,Z在不使用ADD和ADC指令的情况下,实现

0102H . (A)+(B)→C. 解: MOV AX , A MOV BX , N NEG BX SUB AX , BX MOV C , AX

(5)

(4) 把DX , AX中的32位无符号数右移2位. 解:SHR DX , 1 RCR AX , 1 SHR DX , 1 RCR AX , 1

(5)用一条指令把CX只的整数转变为奇数. 解:OR CX , 1

(6) 把AX的第1,3位求反,其余各位保持不变. 解:XOR AX , 0000000000001010B

第5章 习题五

1. 设VAR1,VAR2是变量名,请指出下列语句的语法是否有错.如有错,指出是什么错误. (1)(1)MOV (2)(2)MOV (3)(3)MOV (4)(4)MOV

AX , VAR1+VAR2 ; 错误, 变量有段属性和偏移量属性,不能直接相加减. CX , VAR1 – VAR2 ; 同上 BL , AL SHR 3 ; 正确 DX , AX AND 0FFH ;正确

(5)(5)MOV [SI] , 4 ; 正确 (6)(6)NEG VAR1[DI] ; 正确

(7)(7)ADD BYTE PTR[BX] , 1000 ; 错误,操作数类型不一致. (8)(8)MOV AL , OFFSET VAR1 ; 错误,操作数类型不一致. 2. 在执行下列指令寻找操作数时,需要使用段寄存器DS的指令有哪些? (1(1)LODSB √ (2) STOSB (3) ADD BX , 34H (4) SHL [BP] , 1 (5) NEG [BX] √ (6) (6) SHR [SI] , 1 √ (7) (7) MOV AX , [SI] √ (8)(8) SBB BX , [DI] √

(9) (9) MOVSB √ (10) CMPSB √

3. DB1 DB 5 DUP[3 DUP(2) 2 DUP(3)] MOV AL , DB1+4

MOV BX , WORD PTR DB1[3] 上面2条指令执行后,(AX)=? (BX)=? 答: (AL) = 3 , (BX) = 0202H

ARY_W DW 10H DUP(1234H) ARY_B EQU BYTE PTR ARY_W ……

MOV AX , ARY_W+2 MOV BL , ARY_B+2

答:(AX) = 1234H, (BX) = 34H

4. 下面程序段执行后,寄存器AX , BX的内容是多少?

5. 下面指令执行后,寄存器DS 和SI的内容是多少? ADR DW 1234H,5678H,0ABCDH …

LDS SI , ADR+1

答:(DS) = ADR的段基址, (SI) = (ADR+1)的偏移量

6. 有下列数据段: DATA SEGMENT

ORG 30H CON EQU 10H

S1 DB ?IBM PC‘

DB 0AH,0DH CONT EQU $-S1

S2 DW ?IB‘,‘M‘,‘PC‘,0A0DH

DATA ENDS

上述数据段中S1,S2的偏移量分别是多少?CONT的值和S2+5字节单元的内容是多少? 答:S1的偏移量为30H, S2的偏移量为38H, CONT=8, (S2+5)=?P‘=50H 7. 下面各语句汇编后,变量CON1,CON2和CON3的内容是多少? N1 = 10 = (00001010)2 N2 = 5 = (00000101)2 N3 = 3 = (00000011)2

CON1 DB (N1 AND N2 OR N3) GE 0FH CON2 DW (N2 AND N1 XOR N3) LE 0FH CON3 DB (N1 MOD N3) LT (N2 SHR 1) 解:

(CON1) = 00H , (CON2) = 0FFFFH

(CON3) = 0FFH

8.设(DX) = 80 = 0000 0000 0101 0000B , CF=1

MOV AX , 0AA50H ; (AX) = 1010 1010 0101 0000B XOR AH , 0FFH ; (AX) = 0101 0101 0101 0000B

OR DH , 55H ; 55H=0101 0101B (DX) = 0101 0101 0101 0000B SBB AX , DX ; (AX) = 0FFFFH , (DX) = 5550H 上述指令序列执行后 , (AX) = ? (DX)=? 解:(AX) = 0FFFFH , (DX) = 5550H

9. 设AX,BX,DX中均有数据0AAH,下面3条指令执行后,AX,BX,CX中的内容分别是多少? AND AX , - 2 OR BX , - 2 XOR CX , - 2 解:

11. DATA1 EQU BYTE PTR DADA2 DATA2 DW 0A987H , 3456H

……

SAR DATA1+1,1 MOV AX , DATA2+1 SAL DATA2+1 , 1

MOV BX , DATA2=1 上述指令执行后,(AX)=? (BX)=? CF=? 以DATA2为首地址的两 个字单元内容是多少?

解:SAR DATA1+1,1;移位前10101001,移位后110100100,CF=1

MOV AX , DATA2+1; (AX) = 3456H SAL DATA2+1 , 1 ; 移位前0011 0100 0101 0110

移位后0110 1000 1010 1100,CF = 0 MOV BX , DATA2+1 ; (BX) = 68ACH

12. MOV AL , 0FH

XOR AL , 0FFH MOV CL , 7 SHR AL , CL

上述几条指令执行后,(AL)=? , 如将SHR指令换成ROR或RCR,那么AL的内容分别为多少? 解:执行XOR AL,0FFH后

执行 SHR AL , CL 后,

结果, (AL) = 00000000B=0

13. 以W1为首地址的各字节单元中分别存有数字0~9。下面程序运行后,以W2为首地址的各字节单元中的内容分别是什么? W1 DB 0,1,2,3,4,5,6,7,8, W2 DB $ - W1 DUP(0)

……

MOV CX , LENGTH W2 MOV SI , OFFSET W1 MOV DI , OFFSET W2 CLD

LOP: LODSB

ADD AL,‘A‘ STOSB

LOOP LOP

14. DATA SEGMENT

ORG $+10H DA1 DB ?ABCDEFEDCBA‘ DA2 DB ?E‘ DATA ENDS ……

LEA DI , DA1 MOV AL , DA2

MOV CX , DA2 – DA1 CLD

REPNE SCASB

上述程序段运行后,(DI)=? (CX)=? 答: (DI) = DA1+4 , (CX)=5

16. DATA SEGMENT

VAR1 DB ? , ?

VAR2 DB ? , ? ADR DW VAR1,VAR2

DATA ENDS

若要使ADR+2 字单元的内容为0022H, 上述空白处应填写什么语句? 解:上述空白处应填写 ORG 0020H

17.现有下列程序段:

MOV SI , OFFSET SOUR MOV DI , OFFSET DEST

MOV CX , 20H CLD

REP MOVSW

如果上述程序段不使用串操作指令(即取消REP MOVSW指令), 试修改程序段,完成原程序段功能. 解:

MOV SI , OFFSET SOUR

MOV DI , OFFSET DEST MOV CX , 20H LOP:MOV AX , [SI] MOV [DI] , AL INC SI INC SI INC DI INC DI

LOOP LOP

18. 下面是两个字符串的比较程序,比较结果存放在RESULT单元中.试问: (1) 程序运行后,结果单元(RESULT)存放的内容表示什么意义? (2) 如SJ1的字符串为?captial‘,SJ2的字符串为?captive‘时,(RESULT)=?

……

SJ1 DB ?…………‘ SJ2 DB ?…………‘ RESULT DB 0 ……

LEA BX , SJ1 LEA DI , SJ2 CLD LOP: MOV AL , [BX] SCASB JNE EXIT INC BX JMP LOP EXIT: SUB BX,OFFSET SJ1

MOV RESULT , BL

答:(1) (RESULT)存放的内容表示SJ1字串中第一个不同于SJ2字串的对应字符的偏移量(相对于SJ1).

(2) (RESULT) = 5

19. 仔细阅读下面程序,试给出程序运行结束后BUF2各字节存储单元的内容。 DATA SEGMENT

BUF1 DW 0102H,0304H,0708H COUNT EQU $ - BUF1

BUF2 DW 5 DUP(0) DATA ENDS COSEG SEGMENT

ASSUME CS:COSEG, DS,DATA BEING: MOV AX , DATA

MOV DS , AX MOV BX , 0 MOV SI , 0 MOV DL , 2

LOP1: MOV CX , COUNT/2

LOP2: MOV AL , BYTE PTR BUF1[SI] MOV BL , AL ADD AL , BL

MOV BYTE PTR BUF2[BX] ,AL INC SI

INC SI LOOP LOP2 MOV SI ,1 DEC DL JNE LOP1 MOV 4CH INT 21H COSEG ENDS

END BEING

20. TEST DX , 01H

JE L1

L1: ……

上述程序段运行后使DX中的数据形成偶数,如原来已是偶数,DX中内容不变;如DX中原来是奇数,试回答:

(1)用加1形成偶数,这时空白处应填一条什么指令? INC DX

(2)用减1形成偶数,这时空白处应填一条什么指令? DEC DX

21.DA1 DB 2,3,7,0AH,0FH,4,5,9,8,0CH XOR AX , AX ; AX=0 MOV CL , 0 ; CL-0

MOV BX , 0 ; BX=0

LOP: TEST DA1[BX] , 01H ;测试存储单元的数据是否偶数 JE NEST ; 是偶数,则跳转 ADD AL , DA1[BX] ;是奇数,将其累加

INC AH ; 计算奇数个数 NEXT:INC BX ;指向下一个存储单元 INC CL ;数据个数计数器

CMP CL , 10 ;运行后,(AL)=奇数之和=39=27H JNE LOP ;(AH)=10 上述程序运行后,AH和AL的内容分别是多少?

22. AA1 DB 10H DUP(2)

AA2 DW 10H DUP(0304H)

……

MOV BX , 0 ;设置数据指针

MOV AL , 0 ;设置累加器初值

MOV CX , 10 ;设置计数器初值

BB1: ADD AL , AA1[BX] ;累加

ADD AL , BYTE PTR AA2[BX] ;累加

INC BX ;修改数据指针

LOOP BB1 ;循环10次 上述程序段运行期间,当执行完 INC BX 且 (BX)=05H时,CX和AL中的内容分别是多少? 解:(AL)=2+4+2+3+2+4++2+3+2+4=28=1CH , (CX)=6 23.

DB1 DB 4 DUP(2,4,6,8) ……

LEA BX , DB1 MOV CX , 10H MOV AX , 0 LOP: ADD AL , [BX] AND AL , 0FH CMP AL , 8 JBE NEXT INC AH

SUB AL , 08H

NEXT:LOOP LOP

上述程序段执行后,(AX)=?如果LOOPNE指令替代LOOP指令,那么上述程序段执行后,(AX)=? (CX)=?

解:

由上表可知道,上述程序段执行后,(AX)=0600H,(CX)=0

如果LOOPNE指令替代LOOP指令,那么上述程序段执行后,(AX)=0300H (CX)=8

24. 下面程序段是判断寄存器AH和AL中第三位是否相同,如相同,AH置0,否则AH置非0。试在空白处填上适当的指令(一个空白处只填一条指令)。

AND AH , 08H

MOV AL , 0FFH JMP NEXT ZERO: MOV AH , 00 NEXT: ……

25. 试用两条指令完成对寄存器AH和AL分别加1,且AL中加1形成的进位加在AH最低位,AH中形成的进位加在AL的最低位.

解: INC AX , 0101H

ADC AL , 0

26. 在数据段中有一乘法表(TAB1~TAB9),乘数和被乘数分别在MUL1和MUL2的字节单元中.试编写一程序,用查表法求出(MUL1)*(MUL2)的乘积.数据段如下: DATA SEGMENT

TAB1 DB 1,2,3,4,5,6,7,8,9 TAB2 DB 2,4,6,8,10,12,14,16,18 TAB3 DB 3,6,9,12,15,18,21,24,27 TAB4 DB 4,8,12,16,20,24,28,32,36 TAB5 DB 5,10,15,20,25,30,35,40,45, TAB6 DB 6,12,18,24,30,36,42,48,54 TAB7 DB 7,14,21,28,35,42,49,56,63 TAB8 DB 8,16,24,32,40,48,56,64,72

TAB9 DB 9,18,27,36,45,54,63,72,81 MUL1 DB 3 MUL2 DB 6 PROD DB 0 DATA ENDS 解:

MOV BX,OFFSET DA1 MOV DL,MUL1 DEC DL MOV DH,00H ADD BX.DX MOV AL,MUL2 DEC AL MUL AL,9 ADD AL,DL ADD BX,AX MOV AL,[BX]

MOV PROD,AL

27. 试编写一程序,把DA_BY1字节存储单元的8位二进制数分解为3个八进制数,其中字高位八进制数存放在DA_BY2的字节单元中,最低位存放在DA_BY2+2单元中.例如数据单元定义如下: DA_BY1 DB 6BH

DA_BY2 DB 3 DUP(0) 解:

LEA DI , DA_BY+2

MOV AL , DA_BY1

XOR AH , AH MOV DL , 3 MOV CL , 3 SHL AX , 3 LOP: SHR AL , CL PUSH AX AND AL , 7 MOV [DI] , AL DEC DI DEC DL POP AX

JNZ LOP

29.试编制一程序,统计DA_WORD数据区中正数, 0 , 负数的个数.数据区为: DATA SEGMENT

DA_WORD DW - 1,3,5,0, - 5, -7, - 4,0, -7, …… COUT1 DB $ - DA_WORD

COUT2 DB 0 ; 存放正数的个数

DB 0 ; 存放0的个数

DB 0 ; 存放负数的个数 解:

MOV BX , OFFSET DA_WORD;BX指向数据区

MOV CX , COUT1 ;设置循环次数 LOP: MOV AX , [BX] ;取数

CMP AX , 0 ;比较

JE ZERO ;小于0,转ZERO JL LESS ;负数,转LESS INC COUT2 ;统计正数个数 ZERO: INC COUT2+1 ;统计0的个数

JMP NEXT

LESS: INC COUT2+2 ;统计负数个数

NEXT: INC BX ;BX指向下一个数据

LOOP LOP ;循环

30. 试编制一程序,完成在数据区内可任选下列两种数据之一,并显示排列结果.产生哪种数据排列,由键盘输入1或2来确定.

第一种排列:?0‘,?A‘,‘1‘,‘B‘,‘2‘,‘C‘, … ‘9‘,‘J‘ 第二种排列:?A‘,‘0‘,‘B‘,‘1‘,‘C‘,‘2‘, … ?J‘,‘9‘ 解:

DATA SEGMENT

DA1 DB ?0123456789‘ DA2 DB ?ABCDEFGHIJ‘ DATA ENDS ……

LEA SI , DA1

LEA DI , DA2 MOV CX , 10 MOV AH , 01H INT 21H

CMP AL , 1 JE NEXT1 CMP AL , 2 JE NEXT2 JMP EXIT NEXT1: MOV DL , [SI]

MOV AH , 02H INT 21H MOV DL , [DI] MOV AH , 02H INT 21H INC SI INC DI

LOOP NEXT1 JMP EXIT NEXT1: MOV DL , [DI]

MOV AH , 02H INT 21H MOV DL , [SI] MOV AH , 02H INT 21H INC SI INC DI LOOP NEXT1 EXIT: ……

31.仔细阅读下面程序段试回答:

(1)该程序段完成的功能是什么?

(2)如果(AL)=36H,程序运行用后,(AL)=? MOV BL , AL ; 暂存AL到BL AND AL , 0F0H ; 屏蔽AL的低4位

MOV CL , 04H ;

SHR AL , CL ; 将AL的高4位右移到低4位 SAL AL , 1 ; (AL)×2 MOV CL , AL ; (AL) ×2暂存CL SAL AL , 1 ; (AL) ×4 SAL AL , 1 ; (AL) ×8 ADD AL , CL ; (AL) ×10

AND BL , 0FH ; 屏蔽AL的高4位 ADD AL , BL ; (AL) ×10+低4位 (1) (1)将AL中的十进制数转换为二进制数. (2) (AL) = 24H

32. 下面程序用DOS的 号功能从键盘接收字符.试问:

(1)程序运行结束结束后,如(BL)=0,表示从键盘接收的字符范围是 什么:如(BL)=1,表示从键盘接收的字符是什么?

(2)程序在什么情况下结束? LOP : MOV AH , 1

INT 21H CMP AL , ?*‘ JE EXIT CMP AL , ?0‘ JB ONE CMP AL , ?9‘ JBE ZERO CMP AL , ?A‘ JB ONE CMP AL , ?Z‘ JBE ZERO ONE: MOV BL , 1

JMP LOP ZERO MOV BL , 0

JMP LOP

EXIT: MOV AH , 4CH INT 21H 答:(1)(BL)=0,表示键盘接收的字符是?0‘~?9‘或?A‘~‘Z‘,(BL)=1,表示键盘接收的字符是?0‘~?9‘或?A‘~‘Z‘之外的字符

(2)程序在键盘输入?*‘时结束.

第6章 习题六

1.在三级存储体系中,主存、外存和高速缓存各有什么作用?各有什么特点?

答:主存储器用来存放需CPU运行的程序和数据。外存用来存放暂不运行但需联机存放的程序和数据。Cache用来存放当前运行的程序和数据。

主存存储容量较大,速度较快,但价格较贵。外存容量可以很大,速度慢,价格便宜。Cache存储容量较小,速度最快,价格最贵。

2.主存容量可以用哪些指标来描述? 答;主存容量可以用字节数或单元数×位数来描述。 3.什么的随机存取方式?哪些存储器采用随机存取方式?

答:所谓随机存取方式,是指能按地址直接访问存储器中的任一单元,访问时间与地址无关。 Cache与主存采用随机存取方式。

4. 什么的顺序存取方式?哪些存储器采用顺序存取方式? 答:所谓顺序存取方式,,信息是以文件或数据块的形式顺序存放,信息在载体上没有唯一对应的地址。存取时按顺序地找到所需文件、数据块的位置。存取时间的长短与信息在载体上的位置有关。磁带采用顺序存取方式。

5. 什么的直接存取方式?哪些存储器采用顺序存取方式?

答:所谓直接存取方式,当要存取所需信息时,第一步直接指向整个存储器中的某一个小区域;第二步在小区域内顺序检索或等待,直到找到目的地再进读写。其存取时间与信息所在的位置有关。磁盘采用直接存取方式。

6. 什么是静态存储器?它采用什么原理存储信息?

答:静态存储器是在计算机的运行过程中不需要刷新的半导体存储器,一旦通电,就长期保存信息。它是依靠触发器的两个稳定状态来存储信息的。

7. 什么是静态存储器?它采用什么原理存储信息?

答:动态存储器是在计算机的运行过程在需要不断刷新的半导体存储器,计算机运行期间需定期地向存放―1‖的电容重新充电以补充沿泄露通路泄露掉的电荷。动态存储器是依靠电容是的电荷存储信息的。 8. 什么是刷新?刷新周期的安排有哪几种方式?

答:动态刷新是指定期地向存放―1‖的电容重新充电以补充沿泄露通路泄露掉的电荷。刷新周期的安排有三种方式:集中刷新方式、分散刷新方式、异步刷新方式。 9. 某半导体存储器容量为16K×8位,可选用RAM芯片(2K×4位/片)。地址总线A15~A0(低),双向数据总线D7~D0(低),读写控制信号R/W,片选低电平有效。请设计并画出该存储器逻辑图,给出芯片地址分配和片选逻辑式,注明地址线、数据线、读/写控制线及片选信号的连接。 解:

(1)计算芯片数 扩展位数:用两片2K×4位的芯片相连接,可扩展容量至2K×8位; 扩展单元数:用8组这样的芯片(2K×8位)可将容量最终扩展为16K×8位; 由此计算出需要16片2K×4位的芯片。

16K×8位的容量,需用8片2K×4位/片的芯片。 (2)地址分配

片选逻辑:

芯片容量 芯片地址 片选信号 片选逻辑 2K A10~A0 CS0 A13A12 A11 2K A10~A0 CS1 A13A12 A11 2K A10~A0 CS2 A13A12 A11 2K A10~A0 CS3 A13A12 A11

2K 2K 2K 2K

逻辑框图

A10~A0 A10~A0 A10~A0 A10~A0 CS4 CS5 CS6 CS7 A13A12 A11 A13A12 A11 A13A12 A11 A13A12 A11

10.某主存容量为7KB,其中ROM区4KB,选用EPROM芯片(4K×8位/片);RAM区3KB,选用两种SRAM芯片(2K×4位/片,1K×4位/片)。地址总线A15~A0(低),双向数据总线D7~D0(低),读写控制信号R/W,片选低电平有效。请设计并画出该存储器逻辑图,给出芯片地址分配和片选逻辑式,注明地址线、数据线、读/写控制线及片选信号的连接。 解:

(1)计算芯片数 选用1片4K×8位/片的EPROM;选用2片2K×4位/片的SRAM和2片1K×4位/片的SRAM。 (2)地址分配与片选逻辑

片选逻辑:

芯片容量 4K 2K 1K

逻辑框图

芯片地址 A11~A0 A10~A0 A9~A0 片选信号 CS0 CS1 CS2 片选逻辑 A12 A12 A11 A12 A11 A13

第7章 习题七

1. 什么是并行接口?什么是串行接口?

答:所谓并行接口是指,接口与系统总线之间,接口与外设之间均按并行方式传送数据。它需要多根传送线,同时传送若干位数据,传送速度快。

所谓串行接口是指,接口与外部设备之间采用串行方式传送数据,接口与系统总线之间仍按并行方式进行传送,接口与外设之间只需一根传送线,分时逐位地传送数据。传送速度慢。

2. 什么是总线?系统总线与外总线在功能、信号组成是有什么区别?

答:总线是一组能为多个部件分时共享的信息传送线路。它可以连接多个部件,某一时刻只能有一个部件可通过总线发送数据,但可将该数据传送至一个或同时传送至多个部件。 系统总线用来连接计算机系统内各大功能部件,如CPU、主存、I/O接口,或连接系统内的各个插件板。系统总线一般包括地址线、数据线和控制信号线。外总线用来连接多个计算机系统,或连接计算机系统与其它设备。系统总线大致包括下列类型的信号:电源与地、地址、数据,同步定时信号或异步应答信号,数据传送控制信号、中断请求与批准信号,总线请求与批准、系统复位等。 3. 同步总线、异步总线和扩展同步总线各有什么特点?分别用在哪些场合?

答:同步总线传送操作由统一的同步时序信号控制,它适用于系统内部各部件之间传送时间差异较小、传送时间确定、传送距离较短的场合,例如,CPU总线和局部总线往往采用同步总线。异步总线根据各部件的实际需要,以异步应答方式控制总线传送操作,常用于各部件传动速度差异较大、传送距离较长、传送时间不确定的场合,例如外总线多为异步总线。同步扩展总线采用以同步方式为基础的做法,使异步事件同步化,其总线长度周期不是确定的,而是根据需要灵活调整,故时间利用率高,系统总线常采用同步扩展总线。

4. 什么是程序中断方式?它有什么特点?应用在哪些场合?

答;程序中断方式是指:CPU在执行程序的过程中,若遇到中断请求则暂时停止现行程序的执行,转去执行中断服务程序,当处理完毕后返回原程序继续执行。

程序中断方式的特点是程序切换和随机性。 程序中断方式的运用场合:(1)处理中、低速I/O操作,实现主机与外设的并行工作;(2)处理故障;(3)进行实时处理;(4)使用软中断;(5)实现人机对话;(6)实现多机通信。 5. 什么是向量中断?什么是非向量中断?

答:向量中断是指:将各个中断服务程序的入口地址(中断向量)组织在中断向量表中。当CPU响应中断时,由硬件直接产生对应于中断源的向量地址,按该地址访问向量表,取得服务程序的入口地址,转入相应的中断服务程序。

非向量中断是指:将各个中断服务程序的入口地址编写在一个查询程序中。当CPU响应再时,按固定地址转入查询程序执行,查找并确定中断源,再由查询程序切换到相应的中断服务程序。 6. 什么是中断向量、中断向量表、向量地址?

答:中断向量是指中断服务程序的入口地址和服务程序的状态字。中断向量表是指集中存放中断向量的一张一维表。向量地址是指访问中断向量表的存储器地址。 7. 中断接口由哪几部分组成?各部分的功能是什么?

答:中断接口由以下几部分组成:

(1)寄存器选择逻辑。其功能是对接口中的寄存器寻址,选择逻辑对系统总线送来的地址译码后形成一组选择信号,选中某个寄存器供CPU访问。

(2)命令字寄存器。其功能是接收CPU送来的命令字,转换为一组操作命令后由接口送往设备。 (3)状态字寄存器。其功能是反映设备和接口的状态,及时将设备和接口的有关状态信息传送给CPU,以便CPU分析、判断后作出相应的处理。

(4)数据缓冲寄存器。其功能是暂时存放主机和外设需要交换的数据,起到数据缓冲的这样,使主机和外设能够实现速度匹配。

(5)控制逻辑。中断接口中的中断控制逻辑设置有中断请求信号产生逻辑,以实现设备对CPU 的中断请求。串行接口中的还需移位逻辑和控制时序,实现串-并转换及移位等功能。

(6)公用的中断控制器。其功能是接收各接口产生的中断请求信号,经过屏蔽和判优,形成公共的请求信号INT送往CPU。在收到CPU发来的中断响应信号INTA后,中断控制器又通过数据总线,向CPU送出获得响应的中断源的类型号。

8. 以向量中断为例,简述从申请中断到转入中断服务程序的过程。

答:当设备完成一次操作,便可通过接口中的中断请求触发器向CPU提出中断请求。CPU接到中断请求信号后时。如果处于开中断状态,并且也未出现更高级别的请求,便在当前指令结束时响应中断,进入中断响应周期,在中断响应周期发中断响应信号,查询中断源,CPU将中断请求响应信号INTA送往中断源,通知中断源送出相应的中断类型号;然后关中断;保存断点;CPU接收中断控制器送来的中断类型号,将它转换为对应的向量地址,再按向量地址访问中断向量表,读取相应的服务程序入口地址,转入中断服务程序。

9. 多重中断处理过程与单级中断处理过程有什么不同?

答:多重中断处理过程包括:保护现场→送新屏蔽字,开中断→具体服务→关中断→恢复现场→开中断,返回。单重中断包括:保护现场→具体服务→恢复现场→开中断,返回。单重中断没有送屏蔽字、开中断及关中断的过程。

10. 什么是DMA方式?它有什么特点?运用在哪些场合?

答:DMA方式是直接依靠硬件在主存与设备之间传送数据,在此期间不需要CPU干预。其特点是随机性、更高的并行性、传送速度快及操作简单。应用场合:(1)用于磁盘等高速外存的数据块传送;(2)用于高速通信设备的数据帧传送;(4)用于高速数据采集;(4)用于动态存储器刷新。 11. DMA过程包括哪三个阶段?各阶段分别完成哪些操作?

答:DMA过程包括以下三个阶段:初始化阶段、DMA传送阶段、善后处理阶段。

在初始化阶段,由程序解决传送方向、主存首址、交换量、外设寻址信息等初始化信息。在DMA传送阶段,由硬件完成DMA请求,DMA响应和DMA传送。在善后处理阶段,由接口提出中断请求,CPU响应中断后,执行中断服务程序,判断传送的数据是否正确。如有误,则作相应处理;或重新初始化,准

备下一次传送等等。

本文来源:https://www.bwwdw.com/article/h34w.html

Top