首页章节笔记习题解答PDF 下载

第2章 80X86微处理器 习题与解答

课件来源:《第二章 80X86微处理器.ppt》(91 页)。课件原题 6 道全部收录(含课件已给答案的例题,此处补全步骤);另按本章考点补充 10 道,共 16 道。页码均指课件 Slide 编号。

一、课件原题

题1(课件 p.18~19,例1)

若 AL = 3BH,AH = 7DH,指出 AL 和 AH 中的内容相加、相减后,CF、AF、PF、SF、OF 和 ZF 的状态。

解答: 先展开二进制:AL = 3BH = 0011 1011,AH = 7DH = 0111 1101。

(1)(AL)+(AH):

    0011 1011   (3BH = 59)
  + 0111 1101   (7DH = 125)
  -----------
    1011 1000   (B8H = 184)

(2)(AL)-(AH):

    0011 1011   (3BH)
  - 0111 1101   (7DH)
  -----------
    1011 1110   (BEH,最高位有借位)

结论:加法 CF=0、AF=1、PF=1、SF=1、OF=1、ZF=0;减法 CF=1、AF=1、PF=1、SF=1、OF=0、ZF=0。运算产生的标志由程序员按需选用:有符号数看 OF、无符号数看 CF(课件 p.19)。

题2(课件 p.20,例2)

设被减数 AL = 7,减数 BL = 8,执行 AL-BL 后,根据标志位判断 AL、BL 的大小。

解答: +7 补码 0000 0111,+8 补码 0000 1000,-8 补码 1111 1000。

    0000 0111          0000 0111
  - 0000 1000   或   + 1111 1000
  -----------        -----------
    1111 1111          1111 1111  (FFH)

题3(课件 p.21,例3)

设被减数 AL = -125,减数 BL = 50,执行 AL-BL 后,根据标志位判断 AL、BL 的大小。

解答: -125 补码 1000 0011(83H),+50 补码 0011 0010(32H)。

    1000 0011
  - 0011 0010
  -----------
    0101 0001   (51H = 81)

题4(课件 p.30,[例])

已知 CS=1055H,DS=250AH,ES=2EF0H,SS=8FF0H,画出各段在内存中的分布、段首地址。

解答: 段首地址 = 段基址×16(左移 4 位,末尾添 0H): - CS:1055H×16 = 10550H - DS:250AH×16 = 250A0H - ES:2EF0H×16 = 2EF00H - SS:8FF0H×16 = 8FF00H

按段首从低到高排列,取各逻辑段最大容量 64KB(段首 ~ 段首+FFFFH)画分布:

 地址        段分布
 00000H      ┆
 10550H      ┌──────────┐ CS 代码段首
             │  代码段   │
 2054FH      └──────────┘ (CS 段末,按64KB计)
 250A0H      ┌──────────┐ DS 数据段首
             │  数据段   │
 2EF00H      │┌─────────┐ ES 附加段首(与 DS 段部分重叠)
             ││ 附加段  ││
 3509FH      └│─────────┘│ DS 段末
 3EEFFH       └─────────┘ ES 段末
 8FF00H      ┌──────────┐ SS 堆栈段首
             │  堆栈段   │
 9FEFFH      └──────────┘ SS 段末
 FFFFFH      ┆

要点:① 各段首低 4 位均为 0(节边界,课件 p.24);② 段序为 CS < DS < ES < SS;③ DS 段(250A0H~3509FH)与 ES 段(2EF00H~3EEFFH)部分重叠,体现「段可重叠、物理地址可属多个逻辑段」(课件 p.25);④ 课件 p.30 原图只标出四个段首地址 10550H、250A0H、2EF00H、8FF00H,与此一致。

题5(课件 p.34,例)

求逻辑地址 2345H:1100H 对应的物理地址;反之,物理地址 24550H 对应的逻辑地址可以有哪些?

解答: (1) 物理地址 = 段基址×16 + 偏移 = 23450H + 1100H = 24550H。 (2) 反向拆分:只要满足 段基址×16 + 偏移 = 24550H 且偏移 ≤ FFFFH 即可,例如: - 2455H:0000H → 24550H + 0000H = 24550H ✓ - 2400H:0550H → 24000H + 0550H = 24550H ✓ (还可 2450H:0050H 等,答案不唯一。) 结论:一个存储单元的物理地址唯一,而逻辑地址不唯一(课件 p.34)。

题6(课件 p.60,例)

说明 CS=2000H、IP=1000H 与 CS=2100H、IP=0000H 两种组合对应的物理地址,并解释其含义。

解答: - 组合1:2000H×16 + 1000H = 20000H + 1000H = 21000H - 组合2:2100H×16 + 0000H = 21000H + 0000H = 21000H 两者物理地址相同。含义:① 同一物理地址可以有不同的段地址和偏移地址表示(逻辑地址不唯一);② 段地址的引入为程序在内存中浮动创造条件——同一段代码/数据换个段基址与偏移组合仍可访问同一单元,段地址由操作系统在装入时分配,用户程序一般只涉及偏移地址(课件 p.60)。

二、考点补充题

题7【补充·考点:物理地址计算】

(1) 设 DS=3000H,BX=0500H,SI=0020H,某指令以 BX+SI 作偏移地址访问数据段操作数,求其物理地址。 (2) 写出物理地址 12345H 的两个不同逻辑地址。 (3) 段基址为 2000H 的逻辑段,其物理地址范围是多少?

解答: (1) 偏移地址 = BX+SI = 0500H+0020H = 0520H;默认段为 DS(BX 作基址,课件 p.9)。物理地址 = 3000H×16 + 0520H = 30000H + 0520H = 30520H。 (2) 拆分 12345H:取段基址 1234H → 偏移 = 12345H-12340H = 0005H,即 1234H:0005H;取段基址 1200H → 偏移 = 12345H-12000H = 0345H,即 1200H:0345H。(验证:12340H+0005H=12345H;12000H+0345H=12345H。) (3) 段首 = 2000H×16 = 20000H;偏移最大 FFFFH → 段末 = 20000H+FFFFH = 2FFFFH;范围 20000H~2FFFFH(恰 64KB)。

题8【补充·考点:寄存器用途与标志控制指令】

填空: (1) 循环指令和串操作中用作计数器、且内容自动修改的寄存器是____。 (2) 串操作中存放源操作数偏移地址的寄存器是____。 (3) 存放堆栈栈顶偏移地址的寄存器是____。 (4) I/O 指令中用作端口地址寄存器(间接寻址)的是____。 (5) 用 BP 作基址寄存器访问内存时,默认搭配的段寄存器是____。 (6) 使串操作由高地址向低地址进行(DF=1)的指令是____。 (7) 允许 CPU 响应可屏蔽中断(IF=1)的指令是____;禁止可屏蔽中断(IF=0)的指令是____。

解答: (1) CX(课件 p.7:循环和串操作计数器,执行后自动修改)。 (2) SI(课件 p.10:源变址,串操作源偏移)。 (3) SP(课件 p.9:栈顶偏移)。 (4) DX(课件 p.8:I/O 指令中作端口地址寄存器)。 (5) SS(课件 p.9:BP 表示数据在堆栈段;BX 才默认 DS)。 (6) STD(课件 p.16:DF 置位;CLD 复位)。 (7) STI;CLI(课件 p.16)。

题9【补充·考点:标志位判断】

设 AL=80H,BL=80H,执行 ADD AL, BL 后,求 CF、AF、PF、SF、ZF、OF,并分别从无符号数和有符号数角度解释结果。

解答: 80H = 1000 0000。

    1000 0000
  + 1000 0000
  -----------
  1 0000 0000   (进位1丢弃,AL = 00H)

题10【补充·考点:奇偶存储体访问】

8086 系统中要从物理地址 20051H 开始读出一个字(16 位)。 (1) 需要几个总线周期?(2) 每个周期的 BHE、A0 取值、访问的字节地址及有效数据线各是什么?(3) 若换成 8088 CPU,读同一个字需几个总线周期?(4) 若字地址改为 20050H,情况又如何?

解答: (1) 20051H 为奇地址,奇地址字访问占 2 个总线周期(课件 p.50、p.59)。 (2) 第一周期:BHE A0 = 01,访问奇体字节 20051H(字的低字节),有效数据线 AD15~AD8;第二周期:BHE A0 = 10,访问偶体字节 20052H(字的高字节),有效数据线 AD7~AD0(课件 p.59 图 d:先奇后偶、先低字节后高字节)。 (3) 8088 外部数据总线仅 8 位,任何 16 位数据都需两步操作,故也需 2 个总线周期(课件 p.2);但原因不同:8086 是因为字跨奇偶体边界,8088 是因为总线宽度只有 8 位。 (4) 20050H 为偶地址:BHE A0 = 00,AD15~AD0 同时有效,1 个总线周期完成(课件 p.50、p.59 图 b)。 结论:字变量尽量对齐偶地址可省一个总线周期。

题11【补充·考点:引脚功能与信号方向】

单选:下列各组 8086 引脚信号中,全部为输入信号的一组是( )。 A. ALE、DEN、DT/R B. READY、TEST、INTR、HOLD C. RD、WR、INTA D. AD15~AD0

解答:答案 B。 逐项排除:A 项 ALE(地址锁存允许)、DEN(数据允许)、DT/R(数据发送/接收)均为 CPU 输出的控制信号(课件 p.77),排除;C 项 RD、WR、INTA 均为输出(课件 p.76、p.78),排除;D 项 AD15~AD0 为地址/数据复用引脚,双向三态(课件 p.47),不是纯输入,排除;B 项 READY(设备准备好)、TEST(测试)、INTR(可屏蔽中断请求)、HOLD(总线请求)都由外部送入 CPU,全为输入(课件 p.51、p.54、p.55、p.79),正确。

题12【补充·考点:复位操作】

简答:8086 的 RESET 信号有效条件是什么?复位后各寄存器与指令队列处于什么状态?系统复位后执行的第一条指令物理地址是多少?为什么该地址处通常放一条转移指令?

解答(评分要点): ① 有效条件:RESET 为高电平且至少维持 4 个时钟周期(课件 p.53、p.82)。 ② 复位状态:标志寄存器 FR、IP、DS、SS、ES 清 0,指令队列清空,CS = FFFFH;复位期间所有三态输出总线呈高阻(课件 p.53、p.81)。 ③ 第一条指令物理地址 = CS×16+IP = FFFF0H+0000H = FFFF0H(课件 p.53)。 ④ FFFF0H 距 1MB 顶端仅 16 字节,放不下完整初始化程序,故系统在该处放一条无条件转移指令,转到引导/系统初始化程序入口(课件 p.53、p.62)。

题13【补充·考点:时钟周期与总线周期计算】

某 8086 系统主频 f = 5MHz。(1) 求时钟周期 T;(2) 一个基本总线读周期含几个 T、共多少 ns?(3) 若存储器较慢,需插入 2 个等待状态 Tw,该读周期共多少 ns?(4) Tw 插在什么位置、CPU 在何时采样 READY?

解答: (1) T = 1/f = 1/5MHz = 200ns(课件 p.41 同例)。 (2) 基本总线周期 = T1+T2+T3+T4 = 4T = 4×200ns = 800ns(课件 p.40、p.86)。 (3) 插 2 个 Tw 后 = (4+2)T = 6×200ns = 1200ns = 1.2μs。 (4) Tw 插在 T3 与 T4 之间;CPU 在 T3 前沿(下降沿)开始采样 READY,若为低则插 Tw,并在每个 Tw 前沿继续采样,直到 READY 变高才进入 T4(课件 p.43、p.54)。

题14【补充·考点:最小模式系统配置】

简答:(1) 画出/列出 8086 最小模式典型配置所需的芯片及数量,并说明各芯片作用;(2) 为什么地址锁存器 8282 需要 3 片?(3) 8282 的 STB、8286 的 OE 和 T 分别接 8086 的什么信号?(4) 什么情况下可以省去 8286?

解答(评分要点): (1) 配置:8086 CPU ×1、时钟发生器 8284 ×1、地址锁存器 8282 ×3、总线驱动器 8286 ×2(课件 p.66)。8284:晶振 3 分频产生占空比 1/3 的 CLK,并同步外部 RESET、READY(课件 p.69);8282:锁存分时复用引脚上的地址,形成稳定系统地址总线(课件 p.70~71);8286:双向驱动/收发数据,增强数据总线驱动能力(课件 p.72)。 (2) 需锁存 20 位地址 A19~A0 加 BHE 共 21 位,每片 8282 锁 8 位,2 片只有 16 位不够,故需 3 片(第三片锁 A19~A16 与 BHE,课件 p.70 图、p.71)。 (3) ALE → 8282 的 STB(下降沿锁存);DEN → 8286 的 OE(低电平开放);DT/R → 8286 的 T(高写低读)(课件 p.71、p.74)。 (4) 系统规模不大且不使用 DMA(总线永远由 8086 独自控制)时,可不用 8286,AD15~AD0 直接作系统数据总线(课件 p.74)。

题15【补充·考点:EU/BIU 并行工作与指令队列】

简答:(1) 8086 指令队列多长?BIU 何时自动预取指令?(2) 遇到转移类指令时队列如何处理?(3) EU 执行中要访问存储器而 BIU 正在取指令时怎么办?(4) EU/BIU 并行工作有什么好处?

解答(评分要点): (1) 队列 6 字节;一旦队列空出 2 个字节,BIU 自动读指令填满队列(课件 p.36)。 (2) 遇转移类指令,BIU 将队列中剩余指令作废,从转移目标新地址重新取指送队列(课件 p.36、p.38)。 (3) EU 向 BIU 申请总线周期;若 BIU 正在取指令,则待取指完成后再响应 EU 的总线请求(课件 p.38)。 (4) 取指与执行重叠进行:EU 执行当前指令时 BIU 预取后续指令,EU 一般无需等待取指,提高 CPU 与总线利用率、加快程序执行;二者既非同步也非完全独立,而是互相配合(课件 p.38)。

题16【补充·考点:中断与 DMA 控制信号】

简答:(1) 比较 NMI 与 INTR 的触发方式、可否屏蔽、响应条件与中断类型号;(2) INTA 信号有几个脉冲、各起什么作用?(3) 叙述 HOLD/HLDA 总线保持握手过程,并列出 CPU 让出总线时进入高阻的信号。

解答(评分要点): (1) 对比(课件 p.51):

项目 NMI INTR
触发方式 边沿触发,上升沿(正跳沿)有效 电平触发,高电平有效
可否屏蔽 不受 IF 影响,软件不可屏蔽 受 IF 控制,IF=1 才响应
采样/响应 检测到有效后当前指令执行完即响应 每条指令最后一个时钟周期采样,IF=1 时结束当前指令后响应
类型号 固定为 2 由外设经数据总线提供(INTA 第二脉冲索取)
优先级 高于 INTR 低于 NMI

(2) INTA 含两个负脉冲(两个连续中断响应周期):第一个通知外设 CPU 已收到并响应 INTR(主要用于中断优先权排队);第二个要求申请中断的设备向 CPU 发送中断类型号(课件 p.78)。 (3) 握手过程(课件 p.79、p.88):外部设备(如 DMA 控制器)拉高 HOLD → CPU 每个时钟周期检测 HOLD,若允许让出,则在当前总线周期的 T4(或空闲 Ti) 发出 HLDA → CPU 的三态总线进入高阻,申请部件接管总线进行 DMA 传送 → 传送完成撤销 HOLD → HLDA 随之撤销,CPU 重新接管总线。让出时进入高阻的信号:A19/S6~A16/S3、AD15~AD0、RD、WR、INTA、M/IO、DEN、DT/R(课件 p.88 图;DEN 在 DMA 期间置高阻见 p.77)。