简介:这份PDF是尹建华《微型计算机原理与接口技术》教材的配套习题答案,面向学习微机原理与接口技术的高校学生及备考读者,用于对照课后练习、梳理核心考点。内容覆盖数制转换与补码表示、8086寄存器与总线周期、各类寻址方式、存储器全译码与部分译码、I/O时序以及MOV、XOR、SAL、条件转移等常用指令,并给出芯片扩展与地址范围计算等典型题解。资源包共1个PDF文件,大小约23KB,轻量便携,适合随教材同步查阅。目前已有675人学习下载,可作为课堂作业核对与期末复习的参考。答案按章节组织,逐题给出结果与关键推导,便于读者定位薄弱环节、理解解题思路,而非简单抄录结论。
1. 从一张“数制—寻址—接口”地图说起
翻开这本习题答案,最先撞进眼里的不是概念,而是一串转换:156D = 10011100B = 9CH,0.675D = 0.1011B = 0.BH。很多人复习《微型计算机原理与接口技术》时,习惯从第一章顺着背,结果背到中断控制器就忘了前面补码怎么算。真正省力的路径是先立一张地图:整门课其实只有四条主线——数据怎么表示(数制与码制)、CPU 怎么取指执行(8086 结构与寻址)、程序怎么写(指令系统与汇编)、外设怎么接进来(存储器、I/O、中断、定时、并行与串行接口)。前两条是地基,后两条是接口技术的战场。这份答案的价值不在于给出某个数字,而在于它把每条主线上的典型题型都摆了出来,让你能对照检查自己卡在哪一层。适合已经过了一遍教材、正在刷题和查漏补缺的人,也适合考前想快速把零散知识串成体系的人。
2. 数制与码制:转换、补码与溢出判断的复习重点
这一章看似最简单,却是后面所有运算题的地基。答案里反复出现的十进制、二进制、八进制、十六进制互转,以及原码、反码、补码的对照,本质上是在训练一种“位感”:看到一个数,能立刻判断它占几个字节、符号位在哪、真值范围是多少。
2.1 进制转换的固定套路与小数处理
整数转换用除基取余、逆序排列,小数转换用乘基取整、顺序排列,这套方法人人会背,但答案里 0.675D = 0.1011B 这种结果提醒我们:小数转换往往不能精确终止,题目给的位数就是精度约定。复习时要养成两个习惯:一是整数和小数分开算,最后再拼;二是十六进制与二进制之间用“四位一组”直接对换,比先转十进制快得多。比如 111010.111B 转十六进制,整数部分从右往左补零成 0011 1010,得 3A,小数部分 111 补成 1110 得 E,结果 3A.EH。答案里 110010.11B = 62.6Q 也是同理,八进制是“三位一组”。这类题失分多半不是不会,而是分组方向搞反或补零位置错。
提示:十六进制转二进制时,每一位十六进制数固定展开成四位,包括前导零;八进制固定三位。别在最高位把零丢掉,否则地址类题目会直接错位。
2.2 原码、反码、补码:符号位与特殊值
答案给出的对照很典型:+1 的原码、反码、补码都是 00000001,-1 的原码 10000001、反码 11111110、补码 11111111。规律是正数三码相同,负数反码为原码除符号位外按位取反,补码为反码加一。真正容易翻车的是 -128 和 -36 这类值。答案里 -128 写成 10000000,这是 8 位补码能表示的最小负数,它没有对应的原码和反码表示,属于“补码独有”的边界值。复习时要把 8 位补码范围 -128 到 +127、16 位范围 -32768 到 +32767 记牢,答案第 8 题的填空正是在考这个范围。另一个高频点是符号扩展:8 位负数扩展成 16 位时,高位补符号位而不是补零,这一点在后面的乘除法和地址计算里会反复用到。
2.3 溢出判断:看符号位而不是看结果大小
答案第 11 题给了三组加法减法:34H + 89H、0AFH + 45H、76H - 0FEH,结论都是无溢出。判断溢出的正确姿势是看参与运算的两个数符号是否相同、结果符号是否与它们相反,而不是看有没有进位。34H 和 89H 作为有符号数一个是正一个是负,相加不可能溢出;0AFH 是负数、45H 是正数,也不会溢出。很多同学一看到最高位有进位就喊溢出,这是把无符号数的进位和有符号数的溢出混为一谈。复习时建议把“进位标志 CF 管无符号、溢出标志 OF 管有符号”这句话写在草稿纸角上,每做一道运算题都问自己:这题按有符号还是无符号处理?
3. 8086 结构与寻址:寄存器、段地址和总线周期的考点
第二章的题目集中在 CPU 内部结构和存储器寻址,是整门课从“数”过渡到“机”的转折。答案里出现的寄存器复位状态表、段基地址与偏移地址的合成、等待周期与空闲周期的定义,都是考试爱考、工作中也真会用到的底层常识。
3.1 寄存器复位状态与指令队列
答案第 5 题列出了一张复位状态表:FR、IP、CS、DS、SS、ES 以及指令队列在复位后的取值。核心记忆点是 CS = FFFFH、IP = 0000H,两者合成物理地址 FFFF0H,也就是 CPU 上电后执行的第一条指令所在位置。答案第 5 题填空的 0FFFF0H 正是这个地址。指令队列是 8086 的预取缓冲,BIU 在总线空闲时提前把指令取进队列,EU 从队列里取指令执行,两者并行工作。复习时要把“指令队列清空”这个复位状态记住,它解释了为什么复位后不会执行队列里的残留内容。这类题不要求你背整张表,但 CS、IP 和队列状态必须条件反射般写出来。
3.2 段地址与偏移地址:物理地址的合成
答案第 6 题给了 1230H:0045H 和 1000H:2345H 两组,物理地址的算法是段基地址左移四位再加偏移地址,即 1230H × 10H + 0045H = 12345H,1000H × 10H + 2345H = 12345H。两个不同的段偏移组合指向同一物理地址,这正是分段机制的特点,也是“地址重叠”概念的来源。第 7 题 90000H 到 9FFFFH 的地址范围,对应段地址 9000H、偏移 0000H 到 FFFFH,一个段最大 64KB。复习时要把“段基地址 16 位、偏移 16 位、物理地址 20 位”这三个位宽记清楚,很多计算题错就错在忘了左移四位,直接把段地址和偏移相加。
3.3 等待周期与空闲周期:总线时序的两个空档
答案第 11 题要求解释等待周期和空闲周期。等待周期出现在总线周期的 T3 和 T4 之间,当 CPU 与慢速存储器或 I/O 设备交换信息时,为了防止数据丢失而插入,期间总线信息和控制信号保持不变。空闲周期则是两个总线周期之间 BIU 不执行任何操作的时钟周期。这两个概念容易混,区别在于:等待周期是“主动等慢设备”,属于一个总线周期内部;空闲周期是“没事干”,属于总线周期之间。复习时可以用一句话区分:等待周期是总线周期里的补丁,空闲周期是总线周期之间的空白。
4. 指令系统与汇编:寻址方式、标志位与程序段的易错点
第三章和第四章的题目量最大,覆盖寻址方式判断、指令正误辨析、标志位判断和完整程序段。这一块是整门课最能拉开差距的地方,因为概念都懂,但一写就错。
4.1 寻址方式辨析:看操作数写在哪儿
答案第 1 题给出一串寻址方式判断,涉及寄存器寻址、立即数寻址、直接寻址、寄存器间接寻址、基址变址寻址、相对基址变址寻址。判断的关键是看指令中操作数的书写形式:操作数是寄存器名就是寄存器寻址;是常数就是立即数寻址;是方括号里的常数就是直接寻址;方括号里是寄存器就是寄存器间接寻址;方括号里是基址寄存器加变址寄存器就是基址变址;再加一个常数位移就是相对基址变址。复习时建议把每种寻址方式配一条自己的例子写在笔记边上,比背定义有效。答案第 2 题的指令正误辨析则集中在类型匹配上,比如源操作数和目的操作数位宽不一致、目的操作数类型无法判断,这些都是汇编器会直接报错的地方。
4.2 标志位与条件转移:JS、JZ、JGE 怎么选
答案第 4 题用 JS 判断负数后跳转,第 7 题用 JGE 比较大小,第 9 题用 JZ 配合 TEST 判断某位是否为零。条件转移指令的选择取决于你关心的是哪个标志位:JS 看符号标志 SF,JZ 看零标志 ZF,JGE 看符号标志和溢出标志的组合。最容易错的是把有符号比较和无符号比较的指令混用,比如该用 JB 的地方用了 JL。复习时把条件转移指令按“有符号一组、无符号一组”列成两列对照,做比较题前先确认数据是有符号还是无符号。
4.3 程序段阅读:从 MOV 到 INT 21H 的完整链路
答案第 9 题是一段把 369 拆成三位十进制数字输出的程序:用 DIV BL 反复除以 10,余数压栈,最后用 INT 21H 的 2 号功能逐位输出。这段程序把除法、堆栈、循环和 DOS 调用串在一起,是典型的综合题。答案第 10 题则是冒泡排序的汇编实现,用 CX 控制外层、DI 控制轮次、BX 做内层指针,CMP 加 XCHG 完成交换。读这类程序段的方法是先找循环边界,再找数据搬运路径,最后看出口条件。复习时不要只盯着单条指令,要能把一段程序翻译成“它在干什么”,这才是接口技术里写初始化程序的前提。
5. 存储器与接口芯片:译码、地址范围与初始化程序的易漏点
第五章往后进入接口技术,题目从“算”变成“接”。存储器扩展、8259A 中断控制器、8255A 并行接口、8253 定时器、串行通信,每一类芯片都有固定的初始化套路,但细节上的坑特别多。
5.1 全译码与部分译码:地址唯一性的代价
答案第 8 题要求区分全译码法和部分译码法。全译码把所有高位地址线都送进译码器,每片芯片的地址范围唯一且连续,便于扩展、不会重叠,代价是译码电路复杂。部分译码只取一部分高位地址线译码,电路简单,但会出现地址重叠和地址不连续,浪费地址空间。答案第 11、12 题算 6116、2716、2114 的芯片数量和地址范围,就是在练这套方法:先算容量需要多少片,再按数据线位宽分组,最后用片选信号划分地址区间。复习时要把“片内寻址线接芯片、片选线接译码器输出”这条接线原则记牢,地址范围算错多半是片内地址线位数搞错了。
5.2 8259A 与 8255A:控制字和初始化顺序
答案第 7 章第 12 题的 8259A 初始化程序是 MOV AL,13H 送 ICW1、MOV AL,80H 送 ICW2、MOV AL,01H 送 ICW4,顺序不能乱,因为 ICW1 决定后面要不要发 ICW2 和 ICW4。第 14 题判断 OCW2 的 D7 位为 0,说明采用优先级固定方式。第 10 章第 6 题的 8255A 程序先用 92H 写控制口设定工作方式,再通过 C 口发启动和转换信号,最后从 B 口读 EOC、从 A 口读数据。这类题的共同点是:控制字先写、方向再定、数据最后读写。复习时把每片芯片的控制字格式画成位图,比背十六进制值可靠。
5.3 8253 与串行接口:计数初值和方式字
答案第 9 章第 3 题的 8253 初始化程序依次写方式字 14H、计数初值 N、再写 9AH 和初值 M,体现的是“先控制字、后初值”的顺序。第 5 题指出计数器 0 工作在方式 1、16 位 BCD 计数、计数值 5080H,这里要注意方式 1 是可重触发单稳,和方式 2 的分频、方式 3 的方波要区分开。第 8 章第 18 题的串行发送和接收程序段,先写 5BH 设置线路控制寄存器,再写 11H 或 14H 到命令寄存器,然后轮询状态寄存器的最低位或次低位。串行部分的易错点是波特率除数和高位写顺序,答案里用 OUT DX, AL 分两次写,就是在处理 16 位除数的高低字节。
6. 易漏点清单:五处最容易翻车的地方
梳理下来会发现,这门课的失分点高度集中,不是知识太难,而是几个固定位置反复踩坑。
易漏点一:补码边界值 -128 的原码反码。为什么漏:教材例题多用 -1、-36 这类有原码的值,-128 一带而过。怎么补:单独记“8 位补码最小负数 10000000 没有原码反码表示”,遇到求 -128 三码的题直接写补码并注明。
易漏点二:物理地址合成忘记左移四位。为什么漏:段地址和偏移地址都是十六进制,看起来直接相加也像那么回事。怎么补:每次算物理地址先写“段地址 × 10H + 偏移”,把左移动作显式写出来,再代入数值。
易漏点三:有符号溢出和无符号进位混判。为什么漏:两者都表现为最高位变化,肉眼容易混。怎么补:做题前先标注“本题按有符号/无符号”,有符号看 OF、无符号看 CF,两个标志分开记。
易漏点四:8259A 初始化 ICW 顺序颠倒。为什么漏:四个 ICW 都是往同一端口写,看起来顺序无所谓。怎么补:记住 ICW1 必须最先写,它决定后续 ICW 的数量和格式,ICW2 设中断类型号,ICW4 设工作模式,顺序错了芯片根本不认。
易漏点五:存储器地址范围算错片内地址线位数。为什么漏:芯片容量和地址线位数的换算不熟,2K×8 的芯片片内地址是 11 位,容易和 10 位搞混。怎么补:把常用容量对应的地址线位数列成小表,2K 对应 11 位、4K 对应 12 位、8K 对应 13 位,做题前先查表再划分区间。
7. 复习清单:按题型回刷,把答案当检查表用
到了考前阶段,最有效的做法不是从头再读一遍教材,而是按题型把这份答案当检查表回刷。具体可以分三步走。第一步,按章节把题目分成“纯计算”“概念辨析”“程序阅读”“接口初始化”四类,每类挑三到五道典型题,限时做完后对照答案只标错因,不抄答案。第二步,把错因归到上面五条易漏点里,哪条错得多就回对应章节补那一个点,而不是整章重看。第三步,考前两天只看自己整理的错因清单和芯片控制字位图,不再碰新题。
下面这张表可以作为回刷时的进度对照,按题型而不是按页码组织,能避免“翻到哪算哪”的低效复习。
| 题型 | 对应章节 | 检查标准 | 常见错因 |
|---|---|---|---|
| 进制与补码转换 | 第 1 章 | 整数小数分开算,边界值不错 | 分组方向反、-128 三码 |
| 物理地址合成 | 第 2 章 | 段地址左移四位再加偏移 | 忘记左移、位宽混淆 |
| 寻址方式判断 | 第 3 章 | 看操作数书写形式对号入座 | 基址变址与相对基址变址混 |
| 标志位与跳转 | 第 4 章 | 有符号无符号分开选指令 | JS 与 JB 混用 |
| 存储器扩展 | 第 5 章 | 片内地址线位数算对 | 容量与位数换算错 |
| 接口芯片初始化 | 第 6 至 10 章 | 控制字先写、顺序不乱 | ICW 顺序、高低字节写反 |
回刷时还有一个技巧:程序阅读题不要一上来就逐行翻译,先看这段程序有没有循环、有没有压栈出栈、最后调用了哪个中断,三个问题答完,程序大意就出来了。接口初始化题则反过来,先看控制字写的是哪个端口,再判断是方式字还是命令字,最后才看数据口读写。这两种读法方向相反,但都能把题目拆成可验证的小步骤。
我自己的习惯是每次做接口题之前,先在草稿纸左上角写下“控制字→初值→数据”这个顺序,做完再对照答案检查有没有跳步。这个动作看起来多余,但正是它帮我避开了好几次 ICW 顺序写反的低级错误。从那以后我每次碰 8259A 和 8253 的初始化题,都强制走一遍这个顺序再动笔。希望这份梳理能帮到你,把答案从“对答案的工具”变成“查漏补缺的地图”。
本文还有配套的精品资源,点击获取