第一章
1.1 微处理器、微型计算机和微型计算机系统三者之间有什么不同?
将运算器与控制器集成在一起,称为微处理器。微处理器是微处理器的核心。微型计算机是由微处理器、存储器、输入/输出接口电路和系统总线构成的裸机系统。微型计算机系统是以微型计算机为主机,配上系统软件和外设之后而构成的计算机系统。三者之间是有很大不同的,微处理器是微型计算机的一个组成部分,而微型计算机又是微型计算机系统的一个组成部分。 1.2 CPU在内部结构上由哪几部分组成?CPU应具备什么功能?
CPU在内部结构上由算术逻辑部件(ALU);累加器和通用寄存器组;程序计数(指令指针)、指令寄存器和译码器;时序和控制部件几部分组成。不同CPU的性能指标一般不相同,但一般CPU应具有下列功能:可以进行算术和逻辑运算;可保存少量数据;能对指令进行译码并执行规定的动作;能和存储器、外设交换数据;提供整个系统所需要的定时和控制;可以响应其它部件发来的中断请求。
1.3 累加器和其他通用寄存器相比有何不同?
累加器是比较特殊的通用寄存器。它在某些指令执行前,它可以保存一源操作数,还在执行后又用来保存运算结果,另外它一般也用来完成输入/输出指令。而通用寄存器则一般只用来保存参加运算的数据、运算的中间的结果以及用来保存地址。 1.3 微型计算机采用总线结构有什么优点?
微型计算机的总线结构是一个独特的结构。有了总线结构以后系统中各功能部件之间的相互关系变为了各功能部件面向总线的单一关系。一个部件只要符合总线标准,就可以连接到采用这种总路线标准的系统中,使系统功能得到扩展。 1.4 控制总线传输的信号大致有哪几类?
控制总线用来传输控制信号:其中包括CPU送往存储器和输入/输出接口电路的控制信号,如读信号、写信号和中断响应信号等;还包括其它部件送到CPU的信号,比如,时钟信号、中断请求和准备就绪信号。
1.5数据总线和地址总线在结构上有什么不同之处?如果一个系统的数据和地址合用一套总线或
者合用部分总线,那么要靠什么来区分地址和数据?
从结构上看数据总线是双向的,而地址总线从结构上看却是单向的。如果一个系统的数据总线和地址总线合用一套总线或者合用部分总线,一般可利用时钟,在总线上采用分时复用技术来区分地址和数据,例如可在总线周期的若干个时钟周期,约定某周期传输地址、在另一周期传输数据。
1.6 将下列十进制数转换成8421BCD码:
1049 =0001 0000 0100 1001 902=1001 0000 0010
851.37=1001 0101 0001 . 0011 0111 0.6259=0000. 0110 0010 0101 1001 1.7 将下列各组数用八位的补码相加:
(+75)+(-6)
[+75]补=0100 1011 [-6] 补=1000 0110 [+75]补+ [-6] 补=1000 0110+1000 0110=0100 0101
第二章
2.1 8086 CPU在内部结构上由哪几部分组成?其功能是什么? 【答】8086的内部结构-成两部分:总线接口部件BIU,负责控制存储器读写。执行部件EU,EU从指令队列中取出指令并执行。8086是16位微处理器,有16根数据线、20根地址线,内部寄存器、运算部件以及内部操作都是按16位设计的。 2.2 8086的总线接口部件有那几部分组成?
【答】8086的总线接口部件主要由下面几部分组成:4个段寄存器CS/DS/ES/SS, 一个16位的指令指针寄存器IP, 一个20位地址加法器, 6字节的指令队列,内部暂存器以及输入输出电路组成.
2.3 8086的执行部件有什么功能?由那几部分组成? 【答】8086的执行部件主要由下面几部分组成:(1)四个16位通用寄存器AX、BX、CX、DX, 通用四个16位专用寄存器,包括二个指针寄存器SP、BP, 二个变址寄存器SI、DI, 算术逻辑单元ALU,标志寄存器。
2.4 8086CPU状态标志和控制标志又何不同?程序中是怎样利用这两类标志的? 8086的状态
标志和控制标志分别有哪些? 【答】标志分两类:状态标志(6位):反映刚刚完成的操作结果情况。控制标志(3位):在某些指令操作中起控制作用。
2.5 8086/8088和传统的计算机相比在执行指令方面有什么不同?这样的设计思想有什么
优点? 8086CPU执行转移指令时,指令队列寄存器内容如何变化?
【答】传统的计算机一般按照取指令、指令译码/执行指令的步骤工作。在8086/8088中,
指令的提取与执行分别由总线接口部件BIU与执行部件EU完成,8086/8088可以在取指令同时又可以执行指令,这种并行工作方式有力的提高了CPU的工作效率。 2.6 将两数相加,即0100 1100加 0110 0101,CF、PF、AF、ZF、SF、OF各为何值? 【答】0100 1100+0110 0101=10110001
CF=0,PF=1,AF=1,ZF=0,SF=1,OF=1
2.7 存储器的逻辑地址由哪几部分组成?存储器的物理地址是怎样形成的?一个具有20
位地址线的CPU,其最大物理地址为多少?
【答】存储器的逻辑地址由段地址与段内偏移地址组成。存储器的物理地址:将16位段地
址左移4位后加上16位段内偏移地址,形成20位物理地址。一个具有20位地址线的CPU,其最大物理地址为=1MB。
2.8 现有6个字节的数据分别为11H,22H,33H,44H,55H,66H,已知它们在存储器中的
物理地址为400A5H~400AAH.若当前(DS)= 4002H,请说明它们的偏移地址值。如果要从存储器中读出这些数据,需要访问几次存储器,各读出哪些数据? 【答】由于:物理地址=400A5H=段地址*16+偏移地址=40020H+偏移地址 偏移地址=400A5-40020=85H
从奇地址400A5H中读出:11H;从偶地址400A6H读出一个字:22H,33H;从偶地
址400A8H读出一个字:44H,55H;从偶地址400AAH中读出:66H。共读4次。
2.9 已知当前数据段中存有如下图所示的数据,现要求将最后两个字节改成ODH,OAH,请
说明需给出的段基值和偏移地址值,并说明其写入过程。
数据段首地址 14800
……
150A1 150A2
150A3 150A4
150A5
【答】数据段段地址=150AH,偏移地址=0004H。CPU的总线接口部件根据数据段寄存器的
内容150AH,左移4位,在加上偏移地址0004H,形成20位物理地址150A4H,由总线接口送出,选中物理存储单元150A4H、150A5H,数据0DH通过数据总线送入150A4H,数据0AH通过数据总线送入150A4H。
2.10 在 8088/8086中,逻辑地址FFFF∶0001, 00A2∶37F和B800∶173F的物理地址分别
是多少?
2.11 在 8088/8086中,从物理地址388H开始顺序存放下列三个双字节的数据,651AH,
D761H和007BH,请问物理地址388H, 389H, 38AH, 38BH, 38CH和38DH 6个单元中分别是什么数据?
2.12 8086/8088内部有哪些通用寄存器?
2.13 8086/8088 内部有几个段寄存器,阐述各段寄存器的用途?
2.14 8086CPU的形成三大总线时,为什么要对部分地址线进行锁存?用什么信号控制锁存? 【答】 为了确保CPU对存储器和I/O端口的正常读/写操作,要求地址和数据同时出现在地址总
线和数据总线上。而在8086CPU中AD0--AD15总线是地址/数据复用的,因此需在总线周
期的前一部分传送出地址信息,并存于锁存器中,而用后一部分周期传送数据。8086CPU中是通过CPU送出的ALE高电平信号来控制锁存的。
2.15 段寄存器CS=1200H,指令指针寄存器IP=4000H,此时,指令的物理地址为多少?指向这一物
理地址的CS值和IP值是唯一的吗?
【答】 此时,指令的物理地址为16000H;这一物理地址的CS值和IP值不是唯一的,例如:
CS=1000H,IP=6000H。
习题三 8086指令系统与参考答案
主要内容: 8086指令系统。主要介绍8086的基本数据类型、寻址方式和指令系统,重点掌握8086指令系统的寻址方式、堆栈操作指令、算术运算指令及其对标志位的影响,串操作指令,控制传送指令。
3.1 下面这些指令哪些是正确的?哪些是错误的?如是错误的,请说明原因。
XCHG CS,AX (?)
MOV [BX],[1000] (?) PUSH CS (?) POP CS (?) IN BX,DX (?) 3.2 单选题:
(1)执行下面指令序列后,结果是( A )。 MOV AL,82H CBW A、 AX=0FF82H B、AX=8082H C、AX=0082H D、AX=0F82H
(2)与MOV BX,OFFSET VAR指令完全等效的指令是( D )。 A、MOV BX,VAR B、LDS BX,VAR C、LES BX,VAR D、LEA BX,VAR
(3)编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有
( D)。 A、 CMP B、SUB C、AND D、MOV (4)下面指令执行后,改变AL寄存器内容的指令是( D )。 A、TEST AL,02H B、OR AL,AL C、CMP AL,B D、AND AL,BL
(5)设DH=10H,执行NEG DH指令后,正确的结果是( D )。 A、DH=10H CF=1 B、DH=0F0H CF=0 C、DH=10H CF=0 D、DH=0F0H CF=1
(6)设DS=8225H,DI=3942H,指令NEG BYTE PTR[DI]操作数的物理地址是( A ) A、85B92H B、86192H C、BB690H D、12169H (7)检查BUF的内容是否为正偶数,如是正偶数,则0TAL。下面程序段正确的是( C )。 A、 MOV AL,BUF JS K1 SHR AL,1 JNC K1 MOV AL,0 K1: ?? B、 MOV AL,BUF AND AL,11 JNZ K2 MOV AL,0 K2:?? C、 MOV AL,BUF TEST AL,81H JNZ K3 MOV AL,0
K3:?? D、 MOV AL,BUF JNP K4 TEST AL,80H JNZ K4 MOV AL,0 K4:??
(8)下列指令中,执行速度最快的是( C ) A、 MOV AX,100 B、 MOV AX,[BX] C、 MOV AX,BX D、 MOV AX,[BX+BP] 3.3 已知(DS)= 091DH,(SS)= IE4AH,(AX)= 1234H,(BX)= 0024H,(CX)= 5678H, (BP)= 0024H,(SI)= 0012H,(DI)= 0032H,[09226] = 00F6H,[09228]=1E40H, [lEAF6]=091DH,试求单独执行下列指令后的结果? (l) MOV CL ,20H [BX][SI]; (CL)= F6H (2) MOV [BP][DI],CX; [1E4F6H]= 78H (3) LEA BX ,20H[BX][SI]; (BX)=0056H MOV AX ,2[BX]; (AX)=1E40H (4) LDS SI ,[BX][DI]; (SI)= 00F6H MOV [SI],BX; [SI]= 0024H (5) XCHG CX,32H[BX]; (CX)= 00F6H XCHG 20[BX][SI] ,AX; (AX)= 00F6H, [ 09226H]= 1234H 3.4 8086 CPU执行如下指令后 MOV AL,01100100B SUB AL,58H ;(AL)=0CH,AF=1,CF=0 DAS ;(AL)=06 ,AF=1,CF=0 首先用TD调试验证上面的结果;自己定义两个数据,重新验证,写出结果。 3.5 设(IP)= 3D8F H,(CS)= 4050H,(SP)= 0F17C H,当执行CALL 200O:0094H后,试
求出 IP、CS、SP、[SP]、[SP+1][SP+2] 和[SP+3]的内容? IP:0094H CS:2000H SP:F178H [SP]=8FH [SP+1]=3DH [SP+2]=50H [SP+3]=40H 3.6 设(DS)= 2000H,(BX)= 1256H,(SI)= 528FH,TABLE的偏移量= 20A1H,[232F7H]
=3280H,[ 264E5H] = 2450H,执行下述指令
(1)JMP BX ;IP= 1256H (2)JMP TABLE[BX] ;IP= 3280H (3)JMP [BX][SI] ;IP= 2450H 3.7 分别用一条语句实现下述指明的功能 (1)栈顶内容弹出送字变量DI。 ( POP DI )
(2)双字变量AYD存放的地址指针送ES和SI。 ( LES SI ,AYD ) (3)不允许中断即关中断。 ( CLI ) (4)子程序返回调用程序。 ( RET ) (5)AX的内容加1,要求不影响CF。 ( INC AX )
(6)BX的内容加1,要求影响所有标志位。 ( ADD BX, 1 ) (7)若操作结果为零转向标号GOON。 ( JZ GOON ) 3.8 8086/8088用什么途径来更新CS和IP的值?
控制转移指令:对于CALL、JMP指令,寻找的目的不是操作数地址而是程序存储器的地址,因此这类指令可以改变CS和IP中的值,即改变程序走向。
中断指令:对于INT指令,当CPU响应一次中断,也要把IP和CS保存入栈,然后改变其值。
3.9 字节扩展指令和字扩展指令用在什么场合?举例说明。
需要对带符号数字节扩展为字时,要预先执行CBW指令。需要对带符号数字扩展为双字时,要预先执行CWD。
例:求-503/267=?,将商存1000H单元.
MOV AX,-503 MOV BX,267
CWD IDIV
MOV [1000H],AX HLT
3.10 设DS=2100H,SS=5200H,BX=1400H,BP=6200H,说明下面两条指令所进行的具体操作: MOV BYTE PTR [BP], 2000 MOV WORD PTR [BX], 2000 3.11 以下是格雷码的编码表
0——0000 ,1——0001 ,2——0011, 3——0010, 4——0110 5——0111 ,6——0101, 7——0100, 8——1100, 9——1101
请用换码指令和其他指令设计一个程序段,实现格雷码往ASCII的转换。
格雷码 ASCII码 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 30 31 33 32 37 36 34 35 0 0 0 0 38 39 TABLE SEGMENT
TAB_DA DB 30H,31H,33H,32H,37H,36H,34H,35H,0,0 DB 0,0,38H,39H TABLE ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:TABLE START: MOV AX,TABLE MOV DS,AX
MOV BX,OFFSET TAB_DA MOV AL,00000101B XLAT CODE ENDS
END START
3.12 8086状态标志寄存器中,作为控制用的标志位有( 3 )个,其中,不可用指令操作的是(DF、 IF、 TF)
3.13 设当前的SP=1000H,执行PUSHF指令后,SP=(0FFE H),若改为执行INT 20H指令后,
则SP=( 0FFA H)。 3.14 设当前SS=2010H,SP=FE00H,BX=3457H,计算当前栈顶的地址为多少?当执行PUSH BX
指令后,栈顶地址和栈顶2个字节的内容分别是什么?
当前栈顶指针(SP)=2FF00H,物理地址=20100H+FE00H=2FF00H 当执行PUSH BX 指令后,栈顶指针(SP)=FE00-2=FDFEH,栈顶物理地址=2FDFEH,栈顶2个字节的内容分别57H,34H。
3.15 HLT指令用在什么场合?如CPU 在执行HLT 指令时遇到硬件中断并返回后,以下应执行
哪条指令?
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库微机原理习题答案在线全文阅读。
相关推荐: