CH01微型计算机概述
习题与思考题
1.微型计算机由哪些部件组成?各部件的主要功能是什么?
解答:
算术逻辑部件 (ALU)
微处理器
( CPU)
累加器、寄存器
控制器
微型计算机
系统总线: AB、 CB、 DB
(功能:为 CPU和其他部件之间提供数据、地址
和控制信息的传输通道)
微机系统
输入 / 输出( I/O )接口:串 / 并行接口等
(功能:使外部设备和微型机相连)
存储器:只读存储器( ROM)、随机存储器( RAM)
(功能:用来存储信息)
操作系统( OS)
系统软件
系统实用程序:汇编、编译、编辑、调试程序等
外围设备:打印机、键盘、 CRT、磁盘控制器等
(注: CPU的功能--①可以进行算术和逻辑运算;
②可保存少量数据;
③能对指令进行译码并执行规定的动作;
④能和存储器、外设交换数据;
⑤提供整修系统所需要的定时和控制;
⑥可以响应其他部件发来的中断请示。)
2.8086/8088 CPU 由哪两部分组成?它们的主要功能各是什么?是如何协调工
作的?
解答:
微处理器
( CPU)
总线接口部件 (BIU ):负责与存储器、 I/O 端口传送数据
执行部件( EU):负责指令的执行
协调工作过程:
总线接口部件和执行部件并不是同步工作的,它们按以下流水线技术原则
来协调管理:
① 每当 8086 的指令队列中有两个空字节,或者 8088 的指令队列中有一个
空字节时,总线接口部件就会自动把指令取到指令队列中。
② 每当执行部件准备执行一条指令时,它会从总线接口部件的指令队列前
部取出指令的代码,然后用几个时钟周期去执行指令。在执行指令的过程中,
如果必须访问存储器或者输入 / 输出设备,那么,执行部件就会请求总线接口部
件进入总线周期,完成访问内存或者输入 / 输出端口的操作;如果此时总线接口
部件正好处于空闲状态,那么,会立即响应执行部件的总线请求。但有时会遇
到这样的情况,执行部件请求总线接口部件访问总线时,总线接口部件正在将
某个指令字节取到指令队列中,此时总线接口部件将首先完成这个取指令的操
作,然后再去响应执行部件发出的访问总线的请求。
③ 当指令队列已满,而且执行部件又没有总线访问请求时,总线接口部件
便进入空闲状态。
④ 在执行转移指令、调用指令和返回指令时,由于程序执行的顺序发生了
改变,不再是顺序执行下面一条指令,这时,指令队列中已经按顺序装入的字
节就没用了。遇到这种情况,指令队列中的原有内容将被自动消除,总线接口
部件会按转移位置往指令队列装入另一个程序段中的指令。
3.8086/8088 CPU 中有哪些寄存器?各有什么用途?标志寄存器 F 有哪些标志
位?各在什么情况下置位?
能
功
AX 字乘法,字除法,字 I/O
BX 查表转换
CX 串操作,循环次数
DX 字节相乘,字节相除,间接 I/O
SI
DI
SP 堆栈指针寄存器,与 SS一起来确定堆栈在内存中的位置
源变址寄存器,用于指令的变址寻址
目的变址寄存器,用于指令的变址寻址
8086/8088 寻址
解答:
寄存器
数 据
寄存器
变 址
寄存器
指 针
寄存器
控 制
寄存器
段寄存
器
BP
基数指针寄存器,用于存放基地址,以使
更加灵活
控制 CPU的指令执行顺序
IP
PSW 用来存放 8086/8088CPU在工作过程中的状态
CS 控制程序区
DS 控制数据区
SS 控制堆栈区
ES 控制数据区
标志寄存器 F 的标志位:①控制标志: OF、DF、IF 、 TF;②状态标志:
SF、ZF、AF、PF、CF。
标志寄存器 F的各标志位置位情况:
· CF:进位标志位。做加法时出现进位或做减法时出现借位,该标志位置
1;否则清 0。
·PF:奇偶标志位。当结果的低 8 位中 l 的个数为偶数时,该标志位置 1;
否则清 0。
·AF:半进位标志位。在加法时,当位 3 需向位 4 进位,或在减法时位 3 需
向位 4 借位时,该标志位就置 1;否则清 0。该标志位通常用于对 BCD
算术运算结果的调整。
·ZF:零标志位。运算结果各位都为 0 时,该标志位置 1,否则清 0。
·SF:符号标志位。当运算结果的最高位为 1 时,该标志位置 1,否则清 0。
·TF:陷阱标志位 ( 单步标志位 ) 。当该位置 1 时,将使 8086/8088 进入单步
指令工作方式。在每条指令开始执行以前, CPU总是先测试 TF 位是否为
1,如果为 1,则在本指令执行后将产生陷阱中断,从而执行陷阱中断处理
程序。该程序的首地址由内存的 00004H~00007H 4 个单元提供。该标志通
常用于程序的调试。例如,在系统调试软件 DEBUG中的 T 命令,就是利用
它来进行程序的单步跟踪的。
·IF :中断允许标志位。如果该位置 1,则处理器可以响应可屏蔽中断,否
则就不能响应可屏蔽中断。
·DF:方向标志位。当该位置 1 时,串操作指令为自动减量指令,即从高地
址到低地址处理字符串;否则串操作指令为自动增量指令。
·OF:溢出标志位。在算术运算中,带符号的数的运算结果超出了
位带符号数所能表达的范围时,即字节运算大于十
时,字运算大于十 32767 或小于- 32768 时,该标志位置位。
8 位或 16
127 或小于- 128
4.8086/8088 系统中存储器的逻辑地址和物理地址之间有什么关系?表示的范
围各为多少?
解答:
逻辑地址:段地址:偏移地址
物理地址:也称为绝对地址,由段基址和偏移量两部分构成。物理地址与
系统中的存储空间是一一对应的。
逻辑地址与物理地址两者之间的关系为:物理地址=段地址× 16+偏移地址
每 个 逻 辑 段 的 地 址 范 围 : 0000 : 0000H~ FFFFH; 0001 : 0000H~
FFFFH;, ; FFFF:0000H~FFFFH;共有 232 个地址,但其中有许多地址是重叠
的(体现出逻辑地址的优势,可根据需要方便地写出逻辑地址,又不影响其准
确的物理地址,逻辑地址与物理地址的关系为多对一的关系) 。
物理地址的地址范围: 00000H~FFFFFH。
5.已知当前数据段位于存储器的 A1000H到 B0FFFH范围内,问 DS=?
解答:
A1000H→A100:0000
移地址为 0000H~FFFFH,即 A100:0000H~ A100:FFFFH→ A1000H+0000H~
A1000H+0FFFFH=A1000H~B0FFFH,∴ DS=A100H。
以 A100H为段地址的 64K 物理地址的范围是:偏
6.某程序数据段中存有两个字数据 1234H和 5A6BH,若已知 DS=5AA0H,它们的
偏移地址分别为 245AH和 3245H,试画出它们在存储器中的存放情况
解答:
存放情况如图所示 ( 左右两侧的写法均可 ) :
5AA0 : 0000H
5AA00H
·
·
·
5AA0 : 245AH
5AA0 : 245BH
·
·
·
5AA0 : 3245H
5AA0 : 3246H
·
·
·
·
·
·
34H
12H
·
·
·
6BH
5AH
·
·
·
5CE5AH
5CE5BH
5DC45H
5DC46H
7.8086/8088CPU有哪两种工作模式,它们各有什么特点?
解答:为了适应各种不同的应用场合, 8086/8088CPU芯片可工作在两种不同的
工作模式下,即最小模式与最大模式。
所谓最小模式,就是系统中只有一个
8086/8088 微处理器,在这种情况
下,所有的总线控制信号,都是直接由这片 8086/8088CPU产生的,系统中的总
线控制逻辑电路被减到最少。该模式适用于规模较小的微机应用系统。
最大模式是相对于最小模式而言的,最大模式用在中、大规模的微机应用
系统中。在最大模式下,系统中至少包含两个微处理器,其中一个为主处理
器,即 8086/8088CPU,其它的微处理器称之为协处理器,它们是协助主处理器
工作的。
8.若 8086CPU工作于最小模式,试指出当 CPU完成将 AH的内容送到物理地址
M/ IO 、 RD 、
为 91001H 的存储单元操作时,以下哪些信号应为低电平:
WR 、 BHE /S7、DT/ R 。若 CPU完成的是将物理地址 91000H单元的内容送到
AL中,则上述哪些信号应为低电平。若 CPU为 8088 呢?(略)
9.什么是指令周期?什么是总线周期?什么是时钟周期?它们之间的关系如
何?
解 答 : 指 令 周 期 ----CPU 执 行 一 条 指 令 所 需 要 的 时 间 称 为 一 个 指 令 周 期
(Instruction Cycle)
。
总线周期 ---- 每当 CPU要从存储器或 I/O 端口存取一个字节称为一次总
线操作,相应于某个总线操作的时间即为一个总线周期 (BUS Cycle) 。
时钟周期 ---- 时钟周期是 CPU处理动作的最小时间单位,其值等于系统
时钟频率的倒数,时钟周期又称为 T 状态。
它们之间的关系:若干个总线周期构成一个指令周期,一个基本的总线周
期由 4 个 T 组成,我们分别称为 T1~T4,在每个 T 状态下, CPU完成不同的动
作。
10. 8086/8088 CPU 有哪些基本操作?基本的读 / 写总线周期各包含多少个时
钟周期?什么情况下需要插入 Tw周期?应插入多少个 Tw取决于什么因素?
解答:① 8086/8088CPU最小模式下的典型时序有:存储器读写;输入输出;中
断响应;系统复位及总线占用操作。
②一个基本的 CPU总线周期一般包含四个状态
周期;
T
、、、
1
T
T
3
2
T
4
,即四个时钟
③在存储器和外设速度较慢时,要在 3T 之后插入 1 个或几个等待状态 wT ;
④应插入多少个 wT 取决于 READY信号的状态, CPU没有在 3T 状态的一开始采
样到 READY信号为低电平,就会在 3T 和 4T 之间插入等待状态 wT ,直到采样到
READY信号为高电平。
11. 试说明 8086/8088 工作在最大和最小模式下系统基本配置的差异。
8086/8088 微机系统中为什么一定要有地址锁存器?需要锁存哪些信息?
(略,见书)
12.试简述 8086/8088 微机系统最小模式下从存器储读数据时的时序过程。
(略,见书)
CH02 8086/8088 指令系统
习题与思考题
1.假定 DS=2000H,ES=2100H,SS=1500H, SI=00A0H,BX=0100H,BP=0010H,
数据变量 VAL 的偏移地址为 0050H,请指出下列指令源操作数是什么寻址方
式?源操作数在哪里?如在存储器中请写出其物理地址是多少?
(1)MOV AX,0ABH
(3)MOV AX,VAL
(5)MOV AL,VAL[BX]
(7)MOV VAL[SI],BX
(2)MOV AX,[100H]
(4)MOV BX,[SI]
(6)MOV CL,[BX][SI]
[BP][SI] ,100
(8)MOV
解答:
(1)MOV AX,0ABH
寻址方式:立即寻址;物理地址:无
(2)MOV AX,[100H]
寻址方式:直接寻址;源操作数在存储器中;物理地址: DS*16+100H
=2000H*16+100H=20100H
(3)MOV AX,VAL
寻址方式:直接寻址;源操作数在存储器中;物理地址:
DS* 16+VAL
=2000H*16+0050H=20050H
(4)MOV BX,[SI]
寻址方式:寄存器间接寻址;源操作数在存储器中;物理地址:
DS*
16+SI=2000H*16+00A0H=200A0H
(5)MOV AL,VAL[BX]
寻 址 方 式 : 变 址 寻 址 ; 源 操 作 数 在 存 储 器 中 ; 物 理 地 址 : DS*
16+VAL+BX=2000H*16+0050H+0100
=20150H
(6)MOV CL,[BX][SI]
寻址方式:基址加变址寻址;源操作数在存储器中;物理地址:
DS*
16+BX+SI=2000H*16+0100H+00A0H
=201A0H
(7)MOV VAL[SI],BX
寻址方式:寄存器寻址;源操作数在寄存器中;物理地址:无
(8)MOV [BP][SI] ,100
寻址方式:立即寻址;物理地址:无
2.设有关寄存器及存储单元的内容如下:
DS=2000H , BX=0100H , AX=1200H , SI=0002H , [20100H]=12H ,
[20101H]=34H , [20102H]=56H , [20103]=78H , [21200]=2AH ,
[21201H]=4CH,[21202H]=0B7H,[21203H]=65H。
试说明下列各条指令单独执行后相关寄存器或存储单元的内容。
(1)MOV AX,1800H
(3)MOV BX,[1200H]
(2)MOV
(4)MOV
AX,BX
DX
,
1100[BX]
(5)MOV
[BX][SI] ,AL
(6)MOV
AX,1100[BX][SI]
解答:
令
指
题号
(1) MOV AX,1800H
(2) MOV AX,BX
(3) MOV BX,[1200H]
(4) MOV DX,1100[BX]
(5) MOV
[BX][SI] ,AL
AX
1100[BX][SI]
(6) MOV
执
行
结
果
AX=1800H
AX=0100H
BX=4C2AH
DX=4C2AH
[20102H] =00H
,
AX=65B7H
3.假定 BX=0E3H,变量 VALUE=79H,确定下列指令执行后的结果 ( 操作数均为无
符号数。对 3、6,写出相应标志位的状态 ) 。
(1)ADD VALUE,BX (2)AND
(3)CMP BX,VALUE
(5)DEC BX
(6)TEST
BX,01H
BX,VALUE
(4)XOR BX,0FFH
解答:
令
指
题号
(1) ADD VALUE,BX
(2) AND BX,VALUE
(3) CMP BX,VALUE
(4) XOR BX,0FFH
(5) DEC BX
(6) TEST BX,01H
执
行
结
果
BX=015CH
BX=0061H
BX=00E3H(CF=ZF=OF=SF=0,AF=PF=1)
BX=001CH
BX=00E2H
BX=00E3H(CF=ZF=OF=SF=AF=PF=0)
4.已知 SS=0FFA0H,SP=00B0H,先执行两条把 8057H和 0F79H分别进栈的 PUSH
指令,再执行一条 POP指令,试画出堆栈区和 SP 内容变化的过程示意图。
(标出存储单元的地址)
解答:
堆栈段 SS= 0FFA0H
堆栈段 SS= 0FFA0H
00ACH
00ADH
00AEH
00AFH
0FFA0 : 00B0H
·
·
·
X
·
·
·
FFAABH
FFAACH
FFAADH
FFAAEH
FFAAFH
FFAB0H
00ACH
00ADH
00AEH
00AFH
0FFA0 : 00B0H
·
·
·
57H
80H
X
·
·
·
FFAABH
FFAACH
FFAADH
FFAAEH
FFAAFH
FFAB0H
①初始状态; SP= 00B0H
② PUSH AX ; ( AX =8057H) SP= 00AEH
堆栈段 SS= 0FFA0H
堆栈段 SS= 0FFA0H
00ACH
00ADH
00AEH
00AFH
0FFA0 : 00B0H
·
·
·
79H
0FH
57H
80H
X
·
·
·
FFAABH
FFAACH
FFAADH
FFAAEH
FFAAFH
FFAB0H
00ACH
00ADH
00AEH
00AFH
0FFA0 : 00B0H
·
·
·
57H
80H
X
·
·
·
FFAABH
FFAACH
FFAADH
FFAAEH
FFAAFH
FFAB0H
③ PUSH BX; ( BX= 0F79H) SP= 00ACH
④ POP BX;SP= 00AEH
5.已知程序段如下:
MOV AX,1234H
MOV CL,4
ROL AX,CL
DEC AX
MOV CX,4
MUL CX
试问:(1)每条指令执行后, AX 寄存器的内容是什么?( 2)每条指令执行
后, CF,SF及 ZF 的值分别是什么?( 3)程序运行结束时, AX及 DX寄存器的
值为多少?