
简介这份资源是《微机原理与接口技术》教材的课后答案PDF由张凡、盛珣华、戴胜华合著面向学习微机硬件系统与接口技术的高校学生及自学者用于检验对微处理器结构、指令系统、存储系统、I/O系统等核心知识的掌握程度。压缩包内共1个PDF文件大小约1.19MB内容涵盖微处理器架构、寻址方式、RAM与Cache、中断与DMA、总线标准、串行与并行通信、8253/8254定时器、8259A中断控制器、显示与键盘接口、磁盘与打印机接口等章节习题解答可帮助读者对照教材逐章核对答案、梳理知识脉络并通过习题巩固接口电路设计与问题分析方法。目前已有334人学习下载适合作为课程复习、考前自测与嵌入式、操作系统等后续方向打基础的辅助材料。1. 从一份课后答案说起微机原理到底在考什么很多人第一次翻开《微机原理与接口技术》张凡、盛珣华、戴胜华版教材时都会有一种割裂感前面几章讲 8086 的寄存器、寻址方式、指令系统后面突然跳到 8255、8253、8259 这些接口芯片中间还夹着存储器和总线。课后习题做不出来往往不是不会算而是没搞清楚这些知识点在硬件上是怎么串起来的。这份课后答案的价值不在于给你一个数字而在于它把「CPU 怎么发出地址、怎么读写数据、外设怎么被选中」这条链路拆成了可验证的小题。适合正在准备期末、考研复试或者补硬件基础的后端、嵌入式方向从业者。下面按「先立概念、再动手算、最后落到芯片编程」的顺序把这类题目的通用解法讲清楚。2. 8086 寻址方式与物理地址计算课后题最高频的失分点2.1 逻辑地址到物理地址的换算规则8086 是 20 位地址总线但内部寄存器只有 16 位所以用「段基址:偏移地址」拼出物理地址。公式是固定的物理地址 段基址 × 16 偏移地址等价于段基址左移 4 位再和偏移相加。课后题里常见的坑是给出CS2000H, IP0100H问物理地址。直接算2000H × 10H 0100H 20100H。注意这里的×16是十六进制的×10H不是十进制乘 16 后转十六进制两者结果一样但写法容易混。提示段基址左移 4 位后低 4 位一定是 0所以物理地址的低 4 位完全由偏移地址决定这个规律可以用来快速验算。2.2 七种寻址方式的判别方法教材里列了立即、直接、寄存器、寄存器间接、寄存器相对、基址变址、相对基址变址七种。做题时看操作数里有没有方括号、方括号里是单个寄存器还是寄存器加位移寻址方式典型写法判别特征立即寻址MOV AX, 1234H源操作数是常数无方括号直接寻址MOV AX, [2000H]方括号内是纯地址常数寄存器间接MOV AX, [BX]方括号内只有 BX/BP/SI/DI寄存器相对MOV AX, [BX10H]寄存器加位移基址变址MOV AX, [BXSI]两个寄存器其中一个必须是基址寄存器相对基址变址MOV AX, [BXSI10H]两个寄存器加位移判别顺序建议先看有没有方括号没有就是立即或寄存器寻址有方括号再看里面是常数、单寄存器还是多寄存器。这套顺序能覆盖课后 90% 以上的寻址判断题。2.3 用一段汇编验证地址计算光看公式容易记混写一段能在 emu8086 或 DOSBox 里跑的代码把计算结果打印出来更直观; 验证物理地址 段基址*16 偏移 MOV AX, 2000H MOV DS, AX ; DS 2000H MOV BX, 0100H ; 偏移 0100H MOV AL, [BX] ; 实际访问物理地址 20100H ; 若想手动验证可把 DS 和 BX 分别打印 MOV AX, DS CALL PRINT_HEX ; 自定义子程序输出 AX 的十六进制 MOV AX, BX CALL PRINT_HEX逻辑说明MOV DS, AX把段基址装入数据段寄存器[BX]默认使用 DS 作为段寄存器所以最终访问的物理地址就是DS×16BX。参数说明PRINT_HEX是自定义子程序教材实验里通常要求自己实现核心是把 AX 的高 4 位和低 4 位分别转成 ASCII 输出。如果手头没有汇编环境用 Python 模拟一遍也能验证def phys_addr(seg, off): # 段基址左移4位加偏移结果对 2^20 取模 return ((seg 4) off) 0xFFFFF print(hex(phys_addr(0x2000, 0x0100))) # 0x20100参数说明seg和off都是 16 位整数 0xFFFFF保证结果落在 20 位地址空间内防止溢出到 21 位。这个函数可以直接用来批量验算课后题里的地址换算。3. 8255、8253、8259 三大接口芯片的初始化编程3.1 8255 方式控制字的位定义与端口分配8255 有三个端口 A、B、C控制字写到控制端口。方式 0 基本输入输出是最常考的。控制字格式D7 固定为 1D6D5 选 A 组方式D4 控制 A 口方向D3 控制 C 口高 4 位D2 选 B 组方式D1 控制 B 口D0 控制 C 口低 4 位。方向位 1 表示输入0 表示输出。假设端口地址为60H~63H要让 A 口输出、B 口输入、C 口全部输出控制字是10000000B 80HMOV AL, 80H ; 控制字A输出 B输入 C输出 OUT 63H, AL ; 63H 是控制端口 MOV AL, 0FFH OUT 60H, AL ; A 口输出全 1 IN AL, 61H ; 从 B 口读入逻辑说明OUT 63H, AL把控制字写入控制寄存器之后 A 口和 B 口的方向才生效。参数说明80H的二进制是1000 0000D71 是标志位D40 表示 A 口输出D11 表示 B 口输入D3D0 都为 0 表示 C 口输出。课后题经常改一两个位让你重算控制字按位对照就不会错。3.2 8253 计数初值的计算与写入顺序8253 有三个独立计数器每个 16 位。计数初值 输入时钟频率 ÷ 输出频率。比如 1MHz 时钟要产生 1kHz 方波初值就是 1000。写入时必须先写低 8 位再写高 8 位顺序反了芯片会按错误的值计数。; 8253 端口 40H~43H计数器0工作在方式3 MOV AL, 36H ; 0011 0110B计数器0先低后高方式3二进制 OUT 43H, AL ; 写控制字 MOV AX, 1000 ; 初值 1000 OUT 40H, AL ; 先写低字节 MOV AL, AH OUT 40H, AL ; 再写高字节逻辑说明控制字36H中 D7D600 选计数器 0D5D411 表示先读写低字节再读写高字节D3D2D1011 是方式 3 方波D00 表示二进制计数。参数说明初值 1000 对应03E8H低字节E8H高字节03H。如果题目要求十进制计数BCDD0 要置 1初值写成1000H而不是03E8H这是课后题里最容易错的地方。3.3 8259 初始化命令字 ICW 的填写顺序8259 的初始化必须按 ICW1 到 ICW4 的顺序写顺序错了芯片不工作。ICW1 写到偶地址端口ICW2 到 ICW4 写到奇地址端口。以主片端口20H/21H为例MOV AL, 13H ; ICW1边沿触发单片需要ICW4 OUT 20H, AL MOV AL, 08H ; ICW2中断类型号基值 08H OUT 21H, AL MOV AL, 01H ; ICW48086模式非缓冲正常EOI OUT 21H, AL逻辑说明ICW1 的 D41 是特征位D30 表示边沿触发D10 表示单片。ICW2 的高 5 位是中断向量号基值低 3 位由 IR 线号填充。ICW4 的 D01 表示 8086/8088 模式。参数说明如果题目改成级联ICW1 的 D1 要置 1并且要额外写 ICW3 指明主从连接关系。课后答案里经常只给最终值自己按位推一遍才能应付变体题。4. 存储器扩展与地址译码从芯片连线到地址范围4.1 用 74LS138 做片选译码的地址计算存储器扩展题通常给一片 74LS138 和若干 2764/6264 芯片让你写出每片的地址范围。74LS138 有三个选择输入端 A、B、C 和三个使能端 G1、G2A、G2B。先确定哪几根地址线接选择端再看使能端接了什么。假设 CPU 地址线 A15~A0138 的 CBA 接 A15A14A13G2A 接 A12 的反相G1 接高电平。那么 Y0 有效的条件是A15A14A13000且A120对应地址范围0000H~0FFFH4KB。Y1 对应2000H~2FFFH注意 A13 变化导致地址跳了 2000H 而不是 1000H。输出端A15 A14 A13地址范围A120Y00000000H~0FFFHY10012000H~2FFFHY20104000H~4FFFHY30116000H~6FFFH注意地址范围不连续是因为 A13 参与译码后A12 被用作片内地址或第二级译码中间会留下空洞。课后题里如果问「有没有地址重叠」就是看这些空洞有没有被其他片选覆盖。4.2 用 Python 批量生成地址范围手工算容易漏写个小脚本把译码逻辑固化下来def decode_range(sel_bits, fixed_bits, width12): sel_bits: 选择端对应的地址位如 [15,14,13] fixed_bits: 固定电平的位如 {12: 0} width: 片内地址位数决定范围大小 base 0 for i, bit in enumerate(sel_bits): base | (i 1) bit # 简化示例实际按选择端编码 for bit, val in fixed_bits.items(): base | val bit return hex(base), hex(base (1 width) - 1) print(decode_range([15,14,13], {12:0}, 12))逻辑说明sel_bits决定哪几根地址线参与片选fixed_bits是使能端固定的电平width是片内地址线数量。参数说明输出是十六进制的起止地址。实际做题时把选择端的编码值代进去就能快速列出所有片选对应的范围比手算快且不容易错。4.3 地址重叠与全译码、部分译码的差别全译码是所有高位地址线都参与译码每个存储单元地址唯一。部分译码会留下未用的地址线导致同一物理单元有多个地址这就是地址重叠。课后题常问「该译码方式是否存在地址重叠」判断方法看有没有地址线既没接译码器也没接片内如果有就存在重叠。全译码的地址范围是连续的部分译码会出现镜像区。做题时先画地址线分配表再判断比直接背结论可靠。5. 中断与 DMA 的答题套路从向量表到传输流程5.1 中断向量表的填写与计算8086 中断向量表在内存00000H~003FFH每个中断占 4 字节低 2 字节是偏移高 2 字节是段基址。中断类型号 n 对应的向量地址是n × 4。比如类型号08H向量地址是20H如果该处存放IP1000H, CS2000H中断服务程序入口物理地址就是21000H。; 手动填写类型号 08H 的中断向量 MOV AX, 0 MOV ES, AX MOV BX, 08H*4 ; 向量偏移 MOV AX, 1000H MOV ES:[BX], AX ; 写 IP MOV AX, 2000H MOV ES:[BX2], AX ; 写 CS逻辑说明ES指向 0 段BX定位到类型号 08H 的向量位置先写偏移再写段基址。参数说明08H*420H这是向量表中的字节偏移。课后题经常给一个中断类型号和一个入口地址让你写出向量表四个字节的内容按低字节在前、高字节在后的顺序写即可。5.2 DMA 传输的三个阶段与 8237 寄存器配置DMA 传输分请求、响应、传输三阶段。8237 配置时重点看基地址寄存器、基字节计数器和模式寄存器。以通道 0 从内存10000H传 1KB 到外设为例; 8237 端口 00H~0FH通道0 MOV AL, 00H OUT 0BH, AL ; 模式寄存器通道0读传输单次地址递增 MOV AL, 00H OUT 00H, AL ; 基地址低8位 MOV AL, 00H OUT 00H, AL ; 基地址高8位实际地址 10000H 需配合页寄存器 MOV AL, 0FFH OUT 01H, AL ; 字节计数低8位 MOV AL, 03H OUT 01H, AL ; 字节计数高8位1024-103FFH逻辑说明模式寄存器00H表示通道 0、读传输外设到内存、单次传输、地址递增。参数说明字节计数器写的是传输字节数-1所以 1KB 写03FFH。地址10000H超过 16 位需要配合页寄存器课后题如果只给 16 位地址就不用管页寄存器。DMA 题最容易错的是计数初值忘了减 1以及模式寄存器的方向位搞反。5.3 中断与 DMA 的对比答题模板课后简答题常问两者区别按四个维度答触发方式上中断是程序请求、DMA 是硬件请求响应时间上 DMA 优先级通常高于中断传输单位上中断以字节或字为单位由 CPU 搬运DMA 以数据块为单位由硬件直接搬运对 CPU 的占用上中断需要 CPU 执行服务程序DMA 只在传输前后占用总线。答题时把「谁搬数据、搬多少、占不占 CPU」这三点说清楚基本就能拿满分。6. 用仿真工具验证课后答案emu8086 与 Proteus 联调技巧6.1 emu8086 单步调试观察寄存器变化emu8086 适合验证指令级题目。把课后题的汇编片段贴进去用单步执行看 AX、BX、DS 的变化。重点观察MOV和OUT指令执行后端口寄存器的值。如果题目涉及地址计算可以在MOV AL, [BX]之后看 emu8086 显示的物理地址和手算结果对照。常见问题是段寄存器初值没设导致访问到错误地址单步时看 DS 的值就能发现。6.2 Proteus 中 8255 与 8253 的连线验证Proteus 里放一片 8086、一片 8255、一片 8253按课后题的端口地址连线。8255 的 A0A1 接地址总线低两位CS 接译码输出。运行后用虚拟终端或 LED 观察输出。如果 8255 不响应先查 CS 是否有效、控制字是否写对、A0A1 有没有接反。8253 验证时用示波器看 OUT 引脚波形频率不对就回去查计数初值和方式字。6.3 常见仿真报错的排查顺序仿真跑不起来时按这个顺序查先看时钟和复位信号有没有接再看地址译码输出有没有连到片选然后确认控制字写入的端口地址和芯片数据手册一致最后检查读写信号 RD/WR 有没有接反。Proteus 里 8086 的最小模式需要 8288 总线控制器如果直接连存储器可能读不到数据这是新手最容易卡住的地方。把这几步走一遍大部分课后题的硬件部分都能在仿真里复现出来。本文还有配套的精品资源点击获取