课后习题yu资料.docx
《课后习题yu资料.docx》由会员分享,可在线阅读,更多相关《课后习题yu资料.docx(21页珍藏版)》请在冰豆网上搜索。
课后习题yu资料
第1章习题
1.1将下列二进制数转换为十进制数和十六进制。
(1)1101
(2)=13=D(H)
(2)11010
(2)=26=1A(H)
(3)110100
(2)=52=34(H)
(4)10101001
(2)=169=A9(H)
要点:
从低位起,按每4位将对应二进制转换成十六进制。
而不是通过十进制转换。
1.2见上。
1.3简述3个门电路的基本元素在电路中对电平高低的作用。
答:
与、或、非。
1.4布尔代数有哪两个特点?
答:
(1)值只有两个;
(2)只有与、或、反3种运算。
1.5布尔代数的“或运算”结果可用哪两句话来归纳?
其“与运算”又可归纳成哪两句话“
答:
(1)“或运算”运算结果为有一真必为真,两者皆假才为假。
(2)“与运算”有一假即为假,两者皆真才为真。
1.6什么叫原码、反码及补码?
答:
原码就是一个数的机器数。
反码:
将原码每位取反,即为反码。
更准确的是:
正数的反码就等于它的原码;
负数的反码就是它的原码除符号位外,各位取反。
补码:
反码加1就是补码。
更准确的是:
正数的补码就等于它的原码;
负数的补码就是它的反码加1。
例:
X1=+1001001X2=-1001001
则:
[X1]原=01001001
[X1]反=01001001
[X1]补=01001001
[X2]原=11001001
[X2]反=10110110
[X2]补=[X2]反+1=10110111
1.7为什么需要半加器和全加器,它们之间的主要区别是什么?
答:
(1)因为加法的第一位没有进位,所以用半加器即可;而第二位起可能有进位,故需要考虑全加器;
(2)两者的区别是半加器为双入双出,全加器为三入双出。
1.8用补码法写出下列减法的步骤:
(1)1111
(2)-1010
(2)=?
(2)=?
(10)
答:
(2)1100
(2)-0011
(2)=?
(2)=?
(2)
答:
按上述所讲的正规方法做。
第一个数的补码=原码=01100;第二个数的原码(即机器码)为10011,其反码为11100,
其补码为11101;
两个数的补码相加,即为:
01100
+11101
=101001
将最高位的进位1删去,得结果为01001,即为9(10)
1.9做出101011
(2)+011110
(2)的门电路图并求其相加的结果。
答:
相加结果为:
101011
+011110
=1001001
得结果为1001001
(2)。
(注:
相加时不去掉最高位的进位)
门电路图略去。
1.10做出第1.9题中两数相减的门电路图并求其相减的结果。
答:
若为101011-011110
则第一个数为正数,其补码=原码=0101011;
第二个数为负数,其原码为1011110,反码为1100001,补码=反码+1=1100001+1=1100010
两个数的补码相加为:
0101011
+1100010
=10001101
去掉最高位的进位1,得结果为0001101,即为13(10)。
例2:
[+0]反=00000000
[-0]反=11111111
即:
数0的反码也不是唯一的。
第2章习题
2.2触发器、寄存器及存储器之间有什么关系?
请画出这几种器件的符号。
答:
触发器是存放一位二进制数字信号的基本单元。
触发器是计算机的记忆装置的基本单元,也可以说是记忆细胞。
触发器可以组成寄存器,寄存器又可以组成存储器。
寄存器和存储器统称为计算机的记忆装置。
(2)其符号分别表示如下:
2.4累加器有何用处?
画出其符号。
答:
累加器作为ALU运算过程的代数和的临时存储处。
2.5三态输出电路有何意义?
其符号如何画?
答:
三态输出电路使得一条信号传输线既能与一个触发器接通,也可以与其断开而与另外一个触发器接通,从而使得一条信号线可以传输多个触发器的信息。
2.6何谓L门及E门?
它们在总线结构中有何用处?
答:
(1)L门:
高电平时使数据装入、低电平时数据自锁其中的电路;
E门:
E门即三态门,当选通端E门为高电平时,可将信息从A端送到B端。
(2)L门专管对寄存器的装入数据的控制,而E门志管由寄存器输出数据的控制。
2.7控制字是什么意义?
试举个例子说明。
答:
(1)控制字CON将各个寄存器的L门和E门的按次序排成一列,并且为了避免住处在公共总线中乱窜,规定在某一时钟节拍,只有一个寄存器的L门为高电平,一个寄存器的E门为高电平,从而保证了E门为高电平的寄存器的数据流入到L门为高电平的寄存器中去。
(2)略去,详见教材P31的表2-3
2.8ROM和RAM各有何特点与用处?
答:
ROM是只读存储器,是用以存放固定程序的存储器,一旦程序放进去之后,就不能再改变。
也不能再写入新的字节,而只能读出其中所存储的内容;
RAM是随机存储器(又称读/写存储器),它与ROM的区别在于它不但能读出存放在其中各个存储单元的数据,而且能够随时写进新的数据,或者改变原有数据。
2.9为什么要建立“地址”这个概念?
答:
因为一个存储器可以包含数以千计的存储单元,可以存储很多数据,为了便于存入和取出,需要对每个存储单元确定一个固定地址。
2.11译码器有何用处?
答:
译码器用来确定存储单元的地址。
地址译码器常用于计算机中对存储单元地址的译码,即将一个地址代码转换成一个有效信号,从而选中对应的单元。
2.12存储地址寄存器(MAR)和存储数据寄存器(MDR)各有何用处?
答:
MAR将所要寻找的存储单元的地址暂存下来,以备下一条指令之用。
MDR是将要写入RAM中去的数据暂存起来,以等待控制器发出指令再将数据写入RAM中去。
P332,4,5,6,7,8,9,11,12
第3章习题
3.1略去
3.2程序计数器PC的内容是什么意义?
答:
程序计数器PC存储的内容是指令的地址码。
每次运行指令前,先复位到0,每取出执行一条指令,PC加1.
3.3指令寄存器IR从PROM接收到指令字(8位)后的运行过程如何?
起什么作用?
答:
(1)指令寄存器IR从PROM接收到指令字后,就立即将其高4位送到控制部件。
(2)控制部件经过分析后就发出控制指令,将IR的低4位数送到存储地址寄存器MAR,MAR将此低4位数作为地址并用于访问PROM。
故第1次访问PROM的是其指令区,第2次访问的是其数据区。
3.4略
3.5环形计数器有何用处?
什么叫环形字?
答:
(1)环形计数器用来发出顺序控制信号(即用来发出环形字),从而产生机器节拍。
(2)环形字是其6位输出端依次轮流为高电平,并且是在最位一位(左边第1位)置1后又回到右边第1位,从而形成环形置位。
3.6什么叫例行程序?
什么叫机器周期、取指周期和执行周期?
本章简化式计算机的机器周期包括几个时钟周期(机器节拍)?
机器周期是否一定是固定不变的?
答:
(1)例行程序:
由厂家编好的执行每个程序(在本章中即为每条指令)所需要的机器节拍(3个,见P49)
(2)机器周期:
执行一条指令的时间。
(3)取指周期:
取一条指令所需的3个机器节拍。
(4)执行周期:
执行一条指令所需的机器节拍(一般也为3个机器节拍)
(5)本章简化式计算机的机器周期包括6个机器节拍。
补充:
机器节拍:
即一个时钟周期(时钟一个高电平+一个低电平)
(6)不一定。
只不过固定了在6个节拍完成一个机器周期的计算机被称为固定周期的计算机。
3.7控制部件包括哪些主要环节?
各有何用处?
答:
(1)控制部件包括环形计数器、指令译码器、控制矩阵和其他控制电路。
(2)环形计数器用来产生环形字,从而产生机器节拍;
指令译码器:
将高四位组成的编码信息译成某一控制线为高电位。
控制矩阵:
用来产生控制字CON,即产生所有控制信号。
其他控制电路包含时钟脉冲发生器、运行/停车触发器、“启动”和“清除”按钮。
其作用见P54.
3.8子程序计数器有何用处?
答:
也是用来作为一个程序计数器的。
3.9-3.11
略去
3.12指令寄存器IR是如何将其指令字段和地址字段分送出去的?
这两个字段的位数是否保持不变?
答:
(1)指令寄存器IR将8位指令字的高4位作为指令字段送到控制部件,而将低4位做为地址字段通过总线送到存储地址寄存器MAR中去。
(2)对,保持不变。
这由制造厂家确定。
第4章习题
4.18086CPU与8088CPU有哪些相同之处?
又有哪些区别?
答:
两者的内部结构基本相同,内部都采用16位字进行操作及存储器寻址,两者的软件完全兼容,程序的执行也完全相同,两种处理器都封装在相同的40脚双列直插组件(DIP)中。
但它们的外部性能有区别。
8086是16位数据总线,而8088是8位数据总线,在处理一个16位数据字时,8088需要两步操作而8086只需要一步。
4.28086CPU从功能上分为几部分?
各部分由什么组成?
各部分的功能是什么?
答:
8086CPU从功能上分为总线接口部分BIU和执行部件EU两部分。
其中总线接口部分的功能是负责与存储器、I/O端口传送数据,即BIU管理在存储器中存取程序和数据的实际处理过程。
执行部件EU的功能负责指令的执行。
将指令译码并利用内部的寄存器和ALU对数据进行所需的处理。
BIU由4个段寄存器(CS、ES、DS、SS)、16位指令指针寄存器IP、20位的地址加法器和6字节的指令队列组成。
EU由4个通过寄存器(AX、BX、CX、DX)、4个专用寄存器(SI、DI、SP、BP)、标志寄存器FR、算术逻辑部件ALU组成。
4.38086CPU有哪些寄存器组成?
各有什么用途?
标志寄存器的各标志位在什么情况下置位?
答:
8086CPU由4个通用寄存器(AX、BX、CX、DX)、4个专用寄存器(SI、DI、SP、BP)、标志寄存器FR组成,共9个寄存器。
4个通用寄存器既可作为16位寄存器用,也可作为8位寄存器使用。
其中AX寄存器也常称为累加器。
其它寄存器的用途见教材。
标志寄存器有6个状态标志(SF、ZF、PF、CF、AF、OF)和3个控制标志位(DF、IF、TF)。
其具体置位见P75的表4-1.
4.48086系统中的物理地址是如何得到的?
假如CS=2000H,IP=2100H其物理地址应是多少?
答:
8086系统中的物理地址是通过BIU中的20位地址加法器得到的。
物理地址计算公式为CS段地址*16(即二进制左移4位,或者十六进制左移1位)+IP偏移地址。
按计算公式,本题中的物理地址为20000H+2100H=22100H。
4.5什么叫总线周期?
8086CPU的一个总线周期包括多少时钟周期,什么情况下要插入TW等待周期?
插入多少个TW取决于什么因素?
答:
总线周期是CPU或其他总线控制设备访问一次存储器或I/O端口所需的时间。
在总线周期中需要利用总路线。
补充:
指令周期:
指令周期是机器执行一条指令所需的时间。
8086CPU的一个标准总线周期包括4个时钟周期。
当4个时钟周期不能完成所规定的操作时,可以插入一个或多个等待时钟周期TW。
插入多少个TW取决于所访问的存储器或者I/O设备是否准备就绪,此信号由引脚READY发出。
4.6什么是最大模式?
什么是最小模式?
用什么方法将8086/8088置为最大模式和最小模式?
答:
所谓最小模式,就是在系统中只有8086/8088一个微处理器。
最大模式中,饮包含两个或多个微处理器,其中主处理器是8086/8088,其他处理器是协处理器(如数值运算协处理器8087,输入/输出协处理器8089)。
用硬件方法来决定8086/8088的工作模式,具体是通过引脚
控制信号引脚来决定,其接+5伏,则为最小模式,接地为最大模式。
4.7什么是地址锁存器?
8086/8088系统中为什么要用地址锁存器?
锁存的是什么信息?
答:
(1)地址锁存器就是一个寄存器,它根据控制信号的状态,将总线上的地址代码暂存起来,即用于“锁定”一个(系列)数字状态的电路。
简答:
地址锁存器是用来锁存/保存地址的一个寄存器(即一个普通的时序电路),是触发器的原始形式。
目的是某次传送数据并不能一次完成所以锁存地址以免CPU重复的传送一个地址。
原理:
CPU送地址到锁存器8282/8283之后,内存在地址锁存器中找地址,而不是向CPU要地址。
(2)因为8060/8088系统采用的是地址/数据分时复用总线,即用同一总线传输数据又传输地址,当微处理器与存储器或IO交换信号时,首先由CPU发出存储器地址,同时发出允许锁存ALE给锁存器,当锁存器接到该信号后将地址/数据总线上的地址锁存在总线上,随后才能传输数据。
个人理解:
因为在总线周期的前半部分,CPU总是送出地址信号和BHE(总线高允许)信号,为了通知地址已经准备好了,可以被所锁存,CPU会送出高电平允许锁存信号ALE。
此时地址信号和BHE信号被锁存。
由于有了锁存器对地址信号和BHE信号的锁存,CPU在总线周期的后半部分,地址和数据都在总线上,确保了CPU对锁存器和I/O接口的读/写操作。
(3)锁存的是复用总线上的地址信息。
4.88086/8088系统中的8286是什么器件?
起什么作用?
答:
(1)8286是总线驱动器(又称总线收发器,双向数据缓冲器)。
(2)在一个系统所含的外设接口较多时,它用来增加数据总线的驱动能力。
4.98086/8088系统中用时钟发生器8284A产生哪些信号?
答:
8284A产生恒定的时钟信号、准备信号(READY)及复位信号(RESET)。
4.108086最基本的操作是什么?
答:
是总线操作
4.118086/8088系统中引入了哪些中断?
是如何引入的?
答:
8086共有256种类型的中断。
从产生中断的方法,可以将其分为硬件中断和软件中断两大类,硬件中断中的非屏蔽中断是通过CPU的NMI引脚进入的,可屏蔽中断是通过CPU的INTR引脚进入的,并且只有当中断允许标志IF为1时,非屏蔽中断才能进入。
软件中断是CPU根据软件中的某条指令或者软件对标志寄存器中某个标志的设置而产生的。
4.12什么是可屏蔽中断?
什么是非屏蔽中断?
可屏蔽中断是指受中断标志IF屏蔽的中断,由INTR引脚进入。
非屏蔽中断是不受中断标志IF屏蔽的中断,由NMI引脚进入。
4.13什么是中断向量?
中断向量表指的是什么?
中断向量表放在什么地方?
答:
(1)中断向量是中断处理子程序的入口地址,每个中断类型对应一个中断向量。
(2)中断向量表是指在8086/8088微机系统的内存中,专门留出的0段的0000~03FH区域,用于存放所有的256个中断向量。
(3)中断向量表放在0段的0000~03FH区域。
4.14假如中断类型为8,它的中断服务入口地址是多少?
答:
中断类型8*4=32,即十六进制20H,所以其中断服务入口地址为20H.
第5章习题
5.1分别指出下列指令中的源操作数和目的操作数的寻址方式:
(1)MOVSI,200;源操作数为立即数寻址
(2)MOVCX,DATA[SI];源操作数为
(3)ADDAX,[BX][DI];源操作数为基址加变址的寄存器间接寻址
(4)ANDAX,BX源操作数为寄存器寻址
(5)MOV[SI],AX;源操作数为寄存器寻址
(6)PUSHF;为寄存器寻址
对于目的操作数,前4小题均为寄存器寻址,(5)题为寄存器间接寻址。
5.2试述指令MOVAX,2010H和MOVAX,DS:
[2010H]的区别中。
答:
前者为将十六进制数2010H送到寄存器AX中去;
后者为将数据段DS中偏移地址为2010H、2011H两单元中的内容送到AX中去。
5.3写出以下指令中内存操作数的所在地址。
(1)MOVAL,[BX+5]
答:
源操作数的地址为[BX+5],默认段寄存器为数据段寄存器DS,又因BX为基址寄存器,所以寻址方式为数据段相对基址寻址;
(2)MOV[BP+5],AX
答:
目的操作数的地址为[BP+5],默认段寄存器为堆栈段寄存器SS,又因BP为基址寄存器,所以寻址方式为堆栈段相对基址寻址;
(3)INCBYTEPTR[SI+3]
答:
此句意思为将SI+3所指的存储单元的内容加1;PTR的意义是定义其后的内容变量的新类型为字节属性,具体用法见第7章P159.
内存操作数的地址为[SI+3],属于相对变址寻址;
(4)MOVDL,ES:
[BX+DI]
答:
源操作数为附加段基址加变址的寻址方式;
(5)MOVBX,[BX+SI+2]
答:
源操作数的内存地址为[BX+SI+2],属于数据段相对基址加变址寻址。
5.4判断下列指令书写是否正确:
(1)MOVAL,BX
答:
不对,一个8位,一个16位;
(2)MOVAL,CL
答:
正确
(3)INC[BX]
答:
正确
(4)MOV5,AL
答:
不对,目的操作数不能是立即数。
(5)MOV[BX],[SI]
答:
不对,两个存储单元之间不能直接传送数据;
(6)MOVBL,F5H
答:
正确
(7)MOVDX,2000H
答:
正确
(8)POPCS
答:
不对,段寄存器CS和立即数都不能作目的操作数
(9)PUSHCS
答:
正确。
注:
本部分可以用DEBUG中的-a指令进行调试以确认指令是否正确
5.5设堆栈指针SP的初值为2000H,AX=3000H,BX=5000H,试问:
(1)执行指令PUSHAX后SP=?
答:
执行PUSH指令时,栈顶指针SP自动减2,所以SP=2000H-2=1FFEH;
(2)再执行PUSHBX及POPAX后SP=?
AX=?
BX=?
答:
执行PUSHBX后SP=1FFEH-2;再执行POPAX后SP=(1FEEH-2)+2=1FFEH;
此时AX中的内容为原BX中的内容,故AX=5000H;
而BX中的内容没有改动,即还是5000H.
5.6要想完成把[2000H]送[1000H]中,用指令:
MOV[1000H],[2000H]是否正确?
如果不正确,应用什么方法?
答:
不正确,因为两个存储单元之间不能直接传送数据。
可以改为:
MOVAX,[2000H]
MOV[1000H],AX
5.7假如想从100中减去AL中的内容,用SUB100,AL是否正确?
如果不正确,应用什么方法?
答:
不正确,因为立即数不能做为目的操作数。
可以改为:
MOVBL,5AH;100的16进制数表达式为5AH
SUBBL,AL
5.8用两种方法写出从88H端口读入信息的指令。
再用两种方法写出从42H口输出100H的指令。
答:
法一:
INAL,88H;
法二:
MOVDL,88H
INAL,DL
(2)法一:
MOVAX,0100H
OUT42H,AX;将AX中的内容输出到42H、43H两端口中,其中00H送42H端口中,01H送到43H端口中
法二:
MOVAX,0100H
MOVDX,42H
OUTDX,AX
5.9假如AL=20H,BL=10H,当执行CMPAL,BL后,问:
(1)若AL、BL中内容是两个无符号数,比较结果如何?
影响哪几个标志位?
答:
对无符号数,执行CMP后影响CF、ZF位。
故执行后标志为分别为ZF=0;CF=0;
(2)若AL、BL中内容是两个有符号数,结果又如何?
影响哪几个标志位?
答:
对有符号数,执行CMP指令后影响ZF和OF标志位,不影响CF位。
执行后标志位分别为ZF=0;OF=0
第6章习题
6.1.读下面程序段,请问:
在什么情况下,本段程序的执行结果是AH=0?
BEGIN:
INAL,5FH
TESTAL,80H
JZBRCHl
MOVAH,0
JMPSTOP
BRCHl:
MOVAH,0FFH
STOP:
HLT
解答:
AL中的最高位为1时。
6.2.读程序:
START:
INAL,20H
MOVBL,AL
INAL,30H
MOVCL,AL
MOVAX,0
ADLOP:
ADDAL,BL
ADCAH,0
DECCL
JNZADLOP
HLT
请问:
(1)本程序实现什么功能?
(2)结果在哪里?
解答:
完成20H*30H,结果在AX中。
6.3请编一程序段完成AX*10的任务(要求不准用乘法指令做)
答:
MOVBX,AX
MOVCL2
SHLAX,CL;此句实现了AX=AX*4
ADDAX,BX;此句使得AX=5AX
SHLAX,1;此句实现了5AX*2=10AX
法二:
MOVBX,AX
MOVCL,4
SHLAX,CL
SHLBX,1
ADDAX,BX
6.4.编程序使:
(1)AX寄存器低4位清零。
(2)BX寄存器低4位置“1”。
(3)CX寄存器低4位变反。
(4)用TEST指令测试DL寄存器位3、位6是否同时为0,若是,将0送DL;否则l送DH。
解答:
(1)ANDAX,0FFF0H
(2)ORBX,000FH
(3)XORCX,000FH或者NOTCX(但这样CX的高4位也会变反)
(4)TESTDL,48H
JZLOOP
MOVDH,1
HLT
LOOP:
MOVDL,0
HLT
6.5.编一程序段,完成符号函数(-128≤x≤127):
1(x>0)
y=0(x=0)
-1(x<0)
假设x的值存放在DATAl中,y的值存放在DATA2中。
解答:
START:
MOVAL,DATA1
ANDAL,AL
JGEBIGR
MOVAL,81H;即将-1给AL
MOVDATA2,AL
HLT
BIGR:
JEEQUL;结果为0,转EQUL
MOVAL,1
MOVDATA2,AL
HLT
EQUL:
MOVAL,O
MOVDATA2,AL
HLT
6.6.设AX寄存器中有一个16位二进制数,编一程序,统计AX中“l”的个数,统计结果送CX中。
解答:
START:
MOVCX,0;CX清零也可用XORCX,CX实现
LOOP1:
CLC;CF清零
SUBAX,0;此句也可用CMPAX,O替代
JZSTP
SALAX,1;此句也可用SHLAX,1替代
JNCNOD
INCCX
NOD:
JMPLOOP1
STP:
HLT
6.7.编一子程序利用XLAT指令把十六进制数转换成ASCII码。
假设ASCII码存放在以DAT1为首地址的数据区中,对应的16进制数放在以DAT2为首地址的数据区中,转换结果送以DAT3为首地址的数据区中。
解答:
SUBPROCPROC
SUBPROC:
PUSHBX
PUSHSI
PUSHDI
PUSHCX
PUSHAL