ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

计算机组成原理第四章精讲:指令格式、寻址方式与CISC/RISC对比

计算机组成原理第四章精讲:指令格式、寻址方式与CISC/RISC对比 1. 章节定位第四章到底在讲什么1.1 为什么把指令系统比作计算机的“菜谱”计算机组成原理这门课前几章往往还在讲进制转换、运算器、存储器很多同学会觉得“是不是在学数学和电路”。到了第四章画风突然一变开始讲指令、寻址、操作码、地址码一股“背词典”的味道扑面而来。其实这一章才是整门课的灵魂所在。如果把计算机运行过程比作下厨菜谱是程序食材是数据锅碗瓢盆是处理器和内存而菜谱上每一行操作步骤就是一条指令。计算机硬件真正能直接识别和执行的全部机器指令合在一起叫指令系统也叫指令集。为什么第四条笔记重要因为它是软硬件之间唯一的“翻译标准”。操作系统、编译器最终都要把高级语言变成机器指令CPU靠指令系统告诉它“下一步做什么”。没有指令系统这个总纲后面学CPU设计、存储器扩展、I/O系统都会像听天书。我看到很多人在网上搜“计算机组成原理知识点”“王道计算机组成原理笔记”八成就是卡在这一章东西多、概念杂、计算题还喜欢绕弯子。这篇笔记我把第四章的骨架拆给你看哪些要背、哪些要算、哪些是期末的大坑一次说清楚。1.2 指令系统在课程体系里的位置先看课程的整体脉络你才能知道第四章处在哪一个关节上。一类教材把章节排成概论、运算方法和运算器、存储系统、指令系统、CPU、总线、I/O另一类教材会先讲数据表示再讲指令系统。无论顺序怎么调指令系统都处于“承上启下”的位置。承上是因为它建立在运算器和存储器的基础之上。你只有知道数据在寄存器、内存里怎么存放才看得懂一条指令凭什么能把操作数取出来。启下是因为第五章开始讲CPU工作原理时频繁出现“取指”“译码”“执行”这些词——取的根本不是高级语言而是第四章定义好的指令。所以第四章没学好第五章的控制器设计会学得相当痛苦。不少自学同学有个误区觉得第四章就是背诵题考试前背两天就行。实际上这一章既有记忆性内容也有很强的计算性内容。比如操作码扩展设计与地址码位数的匹配计算不同寻址方式下操作数的有效地址计算指令字长和指令条数之间的逻辑关系每一类都是期末卷子里的“硬通货”。真正学通第四章靠的是理解CPU“取一条指令、解释一条指令、执行一条指令”的全过程而不是死记硬背几十个名词。1.3 学完这一章必须拿下的硬指标我给自己带的学生定过四个硬指标你也可以对照检查能根据指令字长和地址码位数设计一套合法的扩展操作码方案并说明每类指令各有多少条能写出至少七八种寻址方式的访存过程尤其是间接寻址和寄存器间接寻址的区别能计算不同寻址方式下操作数的有效地址以及一条指令的周期内访问了几次存储器能说出CISC与RISC的核心差异并解释为什么RISC适合流水线。这四个指标覆盖了第四章绝大多数考点。如果一个都不沾说明你还在“看热闹”阶段如果全都能答出来那期末这一章基本白给你送分。2. 指令格式一条指令到底长什么样2.1 操作码与地址码的基本划分机器指令在硬件眼里就是一串二进制但为了让人好理解我们把它拆成两段操作码和地址码。操作码告诉CPU“干什么”地址码告诉CPU“对谁干”。举个例子ADD R1, R2这条汇编指令操作码是ADD地址码是R1和R2。翻译成机器指令后前面若干位是操作码后面若干位是地址码或者地址码的编码。操作码字段的设计有两种思路。固定长度操作码所有指令的操作码位数都一样这种方案结构规整、译码速度快但指令条数不能太多否则操作码位得加宽指令太长。可变长度操作码根据指令功能稀疏程度分配位数能用一条短操作码解决的就短一点复杂指令再拉长但译码电路会复杂一些。主流计算机更多是二者结合也就是后面要讲的扩展操作码技术。地址码字段就有意思了。不同指令需要操作数的数量不同有的指令不需要操作数比如空操作NOP有的只需要一个操作数比如累加器清零有的需要两个操作数比如把两个数相加极端情况需要三个操作数比如ADD DEST, SRC1, SRC2既有源操作数又有目的操作数。地址码字段怎么安排直接决定了指令字长和指令能访问的存储空间范围。2.2 零地址、一地址、二地址、三地址指令的取舍这部分是期末单选题的重灾区我建议你直接记一张对比表指令类型地址码数量典型例子优点缺点零地址0NOP、栈顶运算指令最短、硬件简单操作数位置受限依赖栈一地址1INC AX、NEG A长度适中只能对单个操作数操作二地址2ADD R1, R2直观、最常见需要两个地址字段长度增加三地址3ADD A, B, C不破坏源操作数指令最长、译码复杂零地址指令最容易误解。初学者觉得“没有地址码怎么干活”实际上零地址运算常用于堆栈计算机中操作数不在指令里显式给出而是默认从栈顶取。比如POP、PUSH这类指令操作数在哪是隐含规定的不需要在指令里写地址。一地址指令还有一个变体隐含寻址。它可能只有一个显式地址码另一个操作数默认放在累加器ACC里。比如单地址减法指令SUB A通常意味着ACC ← ACC - [A]。这种设计的本质是用隐含硬件资源换指令长度代价是累加器成了瓶颈所有运算都得经过它。二地址指令是最常用的形态。ADD R1, R2可以表示R1 ← R1 R2。注意有些教材会强调二地址指令里既有源也有目的执行完后目的地址的内容会被覆盖。三地址指令ADD R1, R2, R3则更宽容通常是R1 ← R2 R3这样源操作数得以保留但指令字长更长、寄存器端口需求更多。2.3 扩展操作码在有限字长里“抠”出更多指令扩展操作码是第四章里少数几个容易出计算题的硬核知识点。它的核心思想是在指令总字长固定的前提下不让操作码字段占满所有高位而是在需要时“借用”地址码的位数来扩大操作码长度。这么说太抽象我举个例子。假设指令字长16位地址码字段固定为4位一位那么一条指令最多可包含4个地址码字段操作码占剩下的位数。如果所有指令的操作码都固定占4位那最多只能设计16条指令。可一台计算机往往需要几十条指令怎么办扩展操作码的玩法是前4位操作码不够用的时候就把地址码字段“借”过来继续当操作码。一个经典设计题是这样的指令字长16位固定用4位表示地址码最多4个地址字段。设计者希望指令数量分布为三地址指令15条、二地址指令15条、一地址指令15条、零地址指令16条。怎么分配方案如下三地址指令前4位操作码从0000到1110共15条剩下1111作为扩展标志占用掉第一个4位地址码字段变成8位操作码。二地址指令在这8位操作码里再利用前4位从0000到1110共15条剩下11111111作为二级扩展。以此类推最后零地址指令在前12位操作码都固定时最后4位从0000到1111共16条。你会发现扩展操作码并不是每条指令的操作码都越长越好而是逐级“让渡”地址码空间像套娃一样一层一层展开。这类题考试时最常见的坑有二一是忘记检查是否有操作码重叠二是没有算清楚每级扩展后剩多少地址码空间。做题时一定要画一个“分配表”把每一级的操作码取值范围和剩余保留码写清楚既防止疏漏也方便检查。2.4 动手算一道经典设计题我们完整算一遍。假设某机指令字长32位具有二地址指令、一地址指令和零地址指令三种格式每个地址码字段长度8位操作码长度可变。若二地址指令有M条一地址指令有N条问最多能有多少条零地址指令先看二地址指令操作码占32 - 8 - 8 16位最多能表达2^16种组合。已经用了M条还剩2^16 - M个组合。对于一地址指令它需要从这“剩下的操作码”里取一个顶级前缀。具体做法是当二地址指令用某种操作码无法单独表达时就把这些操作码当作扩展前缀后面再借8位地址码作为操作码的一部分。设用了K种前缀作为扩展入口来设计一地址指令则一地址指令最多能有 K × 2^8 种。但你设计要求一地址指令是N条于是 K × 256 ≥ N且K × 256 - N 个组合可以继续作为零地址指令的前缀。零地址指令最多条数就是 (K × 256 - N) × 256 再加上K种前缀中未被用作一地址指令的零头所带来的扩展空间。严谨的算式是最多零地址指令条数 ( (2^16 - M) × 256 - N ) × 256当然前提是这些空间足够。这类题很多同学被绕晕是因为分不清“哪个字段被借走”。记住一个口诀扩展一定是从高地址码字段往低地址码字段借越靠后的格式它的真实操作码越长。做题时把每条指令的二进制位段画出来逐段标注是操作码还是地址码基本就不会错。3. 寻址方式让CPU按图索骥找操作数3.1 常见寻址方式横向对比表寻址方式解决的是“操作数在哪、怎么找到它”的问题。考试最喜欢把各种寻址方式放在一起让你判断有效地址、访存次数、寻址范围。我先把九种常见寻址方式整理成一张表后面再逐个展开。寻址方式有效地址或操作数的获取方式访存次数取指令除外特点立即寻址操作数直接在指令中0快但操作数大小受地址码字段限制直接寻址操作数的地址就是地址码字段1简单但地址范围有限间接寻址指令给出的是操作数地址的地址2多次间接更多灵活但慢寄存器寻址操作数在寄存器中0最快适合频繁使用的数据寄存器间接寻址寄存器存放操作数的地址1结合寄存器速度和间接灵活性基址寻址基址寄存器 形式地址1适合程序重定位变址寻址变址寄存器 形式地址1适合数组遍历相对寻址PC值 形式地址1适合跳转指令堆栈寻址栈顶或栈指针指示的位置0或1隐含寻址适合表达式计算3.2 立即数、直接与间接简单但容易踩坑的三个立即寻址最简单——操作数直接放在指令的地址码字段里比如MOV AX, 100100就是立即数。它的优势是取指时顺便把操作数也取到了不需要再访问存储器缺点是立即数位数有限太大就得拆成多条指令。考题喜欢问立即寻址的“访存次数”是不是0注意这里说的是“取操作数”的访存次数取指令本身不算所以答案确实为0。直接寻址里指令的地址码字段直接给出操作数在主存中的地址。CPU先用地址码去主存取数据所以访问操作数要访存1次。这种方式地址范围受地址码位数限制如果指令字段只有8位地址码那最多只能访问256个主存单元在现代计算机里显然不够用。这也是为什么出现了间接寻址。间接寻址是本章最容易上当的点。它是指令地址码字段给出的不是操作数地址而是“存放操作数地址的主存单元的地址”。CPU拿到地址码后先访存一次取出真正的操作数地址再访存一次才取得操作数。于是取一次操作数要访存2次。如果支持多次间接还要在取出地址的最高位设置间接标志位判断是否继续间接访存次数可能更多。3.3 寄存器与寄存器间接高速缓存之外的另一个快路径寄存器寻址的意思是操作数本身就在某个寄存器里指令的地址码字段给出寄存器编号。比如MOV AX, BX是把BX的内容送到AX。因为寄存器在CPU内部访问速度远快于主存而且寄存器数量少、编号字段短所以指令可以更短。但代价是寄存器数量有限数据多了不能全放寄存器需要频繁在寄存器和主存之间倒腾。寄存器间接寻址变量指令里给出寄存器编号该寄存器存放的是操作数在主存的地址。比如MOV AX, [BX]意思是把BX寄存器所指向的主存单元里的数据送到AX。寄存器间接寻址只需要访存1次就能取到操作数但它的地址空间取决于寄存器的位数而不是指令中的地址码位数所以能覆盖很大的主存空间。这一点和直接寻址之间有本质区别期末填空和选择题常在这里挖坑。3.4 基址、变址、相对寻址三种“地址计算型”寻址基址寻址、变址寻址、相对寻址都涉及“一个寄存器里的值加上一个偏移量”但用途完全不同。基址寻址面向的是“程序重定位”。CPU用一个基址寄存器存储程序在内存中的起始地址指令中的形式地址作为偏移量有效地址 基址寄存器内容 形式地址。程序要整体搬到内存另一个位置时只需要把基址寄存器改成新地址程序本身不用改动。这个机制在操作系统装载运行程序时非常有用考卷上常见的问法是基址寄存器到底是面向操作系统还是面向用户的答案基本都是面向操作系统。变址寻址面向的是“数组遍历”。变址寄存器内容 形式地址 有效地址。每访问完一个数组元素变址寄存器自动加1就能指向下一个元素。形式上它跟基址寻址的运算一样但变址寄存器是面向用户、可以自动变化甚至程序修改的。考试最常见考题是给定数组首地址和下标让你算下一个元素的地址。相对寻址面向的是“程序跳转”。有效地址 程序计数器PC当前值 形式地址带符号偏移量。它不依赖某个通用寄存器而是跟当前执行位置绑定所以代码搬到哪里都能正确跳转特别适合条件转移类指令。相对寻址的偏移量通常用补码表示——注意是补码所以它能向前跳也能向后跳考题里如果给的是十六进制偏移你第一件事是判断它是正数还是负数。3.5 寻址相关的期末必考计算题思路寻址章节的计算题主要围绕两条线索展开。第一条是访存次数题干给出某条指令用了什么寻址方式让你回答取该操作数需要访问主存几次。应对方法是画“地址流”指令→寄存器/主存→操作数每次从指令寄存器之外的部件取数据就算一次访存。第二条是有效地址计算题干给寄存器初值和偏移量让你算EA。难点往往在于偏移量是补码表示以及寄存器长度只有16位时相加溢出怎么处理。我建议你把每一种寻址方式都画一张“谁指向谁”的箭头图。直接寻址是地址码→主存间接寻址是地址码→主存存放地址→主存取数寄存器间接是寄存器→主存基址变址相对寻址是“寄存器±偏移”→主存。这些箭头图画清楚入门级的寻址题基本就能全部拿下。4. 指令类型一台计算机到底会“干什么活”4.1 数据传送类指令从功能上分指令系统一般包括四大类数据传送、算术逻辑运算、程序控制、输入输出。其中数据传送指令使用频率最高常见的有MOV、LOAD、STORE、PUSH、POP、XCHG等。数据传送类指令的核心语义是“把数据从源搬到目的地”搬完之后源数据通常保留。它又分为几种情况寄存器↔主存比如LOAD R1, [A]寄存器↔寄存器比如MOV R2, R1寄存器↔堆栈比如PUSH、POP。这里要注意“传送”并不意味着物理位置的移动本质是复制这一句常被期末简答题拿出来考。数据传送指令对寻址方式的要求特别严格。因为一个数据可能来自寄存器、主存、堆栈也可能来自立即数所以同一类指令在不同教材里会有多个“变体”。如果某条指令的两个操作数都在主存现代CPU往往不允许这么做因为一次内存到内存的复制会浪费太多总线带宽硬件实现也复杂。所以RISC设计里明确限制运算指令的两个源操作数只能来自寄存器主存和寄存器之间的桥梁由单独的LOAD/STORE指令负责。4.2 算术逻辑运算类指令算术逻辑运算指令包括加、减、乘、除、取反、取补、与、或、异或、移位等。这一部分看起来简单但和教材前面“运算器”“补码运算”的知识联系最紧。比如算术右移和逻辑右移的区别算术右移最高位补符号位逻辑右移最高位补0。SAR和SHR这两个指令就差一个字母运行结果则完全不同考试很喜欢用它们搭配标志位出题。状态标志位也藏在算术逻辑指令里。CPU的PSW或FLAGS寄存器里有零标志ZF、符号标志SF、进位/借位标志CF、溢出标志OF。执行完一条ADD指令如果结果最高位有进位CF会置1如果结果超出数据范围OF会置1。很多同学只背标志位名字不知道它们和第四章的关系一条指令被译码后运算器的结果会同时写入目标寄存器和标志寄存器控制器再根据标志位决定后续操作——这正好体现了第四章指令系统和第三章运算器之间的衔接。乘法除法指令在不同体系下格式不同Intel的MUL指令隐含使用累加器操作数指定一个结果自动放到AX、DX或EDXRISC的乘法指令则更规整源操作数和目的操作数都写在指令里。考卷上让你“判断乘法指令是几地址指令”时本质上就是在考察你对隐含寻址和二地址、三地址指令的理解是否透彻。4.3 程序控制类指令程序控制类指令是让计算机“跳出”顺序执行的关键。常见的有无条件转移JMP、条件转移如JZ/JE、JNZ/JNE、子程序调用CALL、返回指令RET。这类指令的执行会改变程序计数器PC的值而不是简单在原有PC上加1。无条件转移最简单执行JMP后PC直接变成目标地址程序跳到目标地址继续执行。条件转移则多一道关卡先根据标志位判断条件是否成立比如JZ只有当ZF1时跳转。这个过程在流水线CPU里会引发“分支预测”问题第五章讲CPU时会展开你在这里只需要理解逻辑语义。子程序调用CALL和转移指令的区别是CALL除了要修改PC还需保存返回地址。保存返回地址的方式通常是压入堆栈RET再从栈中弹出返回地址送回PC。这也是为什么凡是讲到CALL必经堆栈的原因。期末问答题里让你画CALL指令的执行流程步骤就是保存断点、跳转子程序、执行子程序、RET恢复断点。程序控制类指令常跟相对寻址一起考。比如一条条件转移指令的操作数不是绝对目标地址而是一个相对偏移量CPU实际跳转的目标 当前PC 偏移量。此时要注意当前PC值是取完该指令后的地址而不是指令自身所在地址很多同学会在这个“PC到底加没加1”的问题上栽跟头。4.4 输入输出类指令输入输出指令负责CPU与外设之间的数据交换。典型形式是IN和OUT。比如IN AL, 60H表示从端口60H读一个字节到ALOUT 60H, AL则是把AL内容写到端口60H。另一种思路是内存映射I/O把外设寄存器映射到主存地址空间CPU不需要专用I/O指令直接用MOV指令就能访问外设。考试选择题喜欢问内存映射I/O的优点是什么答案通常是指令系统不需要单独设计I/O指令访问外设和访问内存一样方便缺点则是会占用主存地址空间而且无法利用地址总线宽度区分内存和外设。这一节内容不多但很容易被人忽略。近几年部分学校的实验课会让学生用计数器或简易外设芯片做I/O实验比如在FPGA上布置一个可编程计数器用IN/OUT指令或者内存映射方式读写计数器寄存器。如果你在搜“计算机组成原理实验计数器”大概率会碰到这种题目给定计数器的地址端口和数据端口让你写出初始化计数初值和读取计数值的指令序列。理解了I/O指令格式和端口地址这类实验题其实就是套模板。4.5 从“指令类型”反推CPU能做多少事一条指令能做什么很大程度上决定了CPU能做什么。第四章节末常有一类综合题给你一张包含几十条指令的指令系统表让你按要求写一段简单程序比如求最大值、求和、交换两个数或者判断一个数是正数还是负数。这类题不考具体语法考的是你对指令类型的理解传送类负责搬运运算类负责处理控制类负责选择I/O类负责进出。我的建议是复习时别只看指令名字而是按“功能家族”给它们分类。每个家族挑两三条代表指令手写它的执行过程包括操作数来源、目标去向、标志位变化、访存次数。一套流程走下来你会发现第四章的知识点全部串在了一条条具体指令上而不是散落的名词解释。5. CISC与RISC两种设计哲学的对碰5.1 复不复杂这是个哲学问题你有没有好奇过为什么X86架构的程序能直接跑在老旧的个人电脑上而手机里的ARM芯片很少听说“兼容所有安卓老机”这跟指令系统的设计哲学密不可分。CISC复杂指令系统计算机的思路是“尽量让一条指令完成更多工作”。早期内存昂贵、编译器不发达程序设计者更希望用一条复杂的指令搞定一串操作。于是X86这类架构积累了上百条指令、几十种寻址方式指令长度不统一译码电路非常复杂。RISC精简指令系统计算机则主张“指令越简单越快”。它的核心思想是用大量简单指令组合完成复杂操作每条指令都尽量在一个时钟周期内完成指令长度固定、格式规整寻址方式少只保留LOAD/STORE访问内存运算大多数在寄存器之间进行。这种设计极大简化了硬件也让CPU可以做到更高的主频或把多出来的电路面积留给更多寄存器与缓存。5.2 CISC与RISC全维度对比表对比项CISCRISC指令数量多且复杂少而精简指令长度可变固定寻址方式多少访存方式指令可直接读写内存只有LOAD/STORE访问内存寄存器数量相对较少较多控制器实现微程序控制为主硬布线控制为主利于流水线指令周期长短不一绝大多数单周期编译器负担较轻硬件承担的翻译工作多较重需要编译器优化指令序列典型代表x86、PDP-11MIPS、ARM、RISC-V这张表几乎每年都出简答题。很多学校期末会让你“简述RISC的特点”“CISC与RISC的主要区别”答案就是把这几个维度列清楚。不要只背一句“一个复杂一个精简”要给分点指令长度、寻址方式、访存限制、寄存器数量、控制器实现。5.3 为什么现代CPU都是“混血儿”真正深入研究后你会发现X86虽然从指令集角度看是典型的CISC但它内部的微架构早已不是纯CISC了。现代X86 CPU会先把复杂指令翻译成内部更简单的微操作再像RISC那样流水线化执行。这种“外CISC、内RISC”的做法既保持了软件兼容性又获得了RISC的高流水线效率。同样ARM虽然是RISC但近几代架构也增加了部分复杂指令和特殊扩展比如数字信号处理指令、向量计算指令。所以纯粹问“谁好谁坏”没有意义。机器的优劣要结合应用场景桌面和服务器需要强大的单条指令处理能力历史包袱又重CISC兼容性不可或缺移动端和嵌入式对功耗、芯片面积极敏感RISC天然占优。期末考试如果出讨论题比如“RISC能否完全取代CISC”正确打开方式是先罗列两者特点再点出现代融合趋势最后下结论不是取代而是互相借鉴。这种答案既有技术依据又有层次感拿分更容易。6. 期末复习避坑指南6.1 第四章最容易被绕晕的几个点第一个坑PC到底加不加1。取指完成后PC会自动指向下一条指令但很多同学算相对转移的地址时会把PC和指令地址混为一谈。建议统一记PC值代表当前正要执行指令的地址执行完该指令后PC已经指向下一条。相对转移的“基址”一定是下一条指令地址不是当前指令地址。第二个坑间接寻址的访存次数。问“间接寻址取一个操作数要访问几次主存”时答案常写2次前提是取指过程不算。可有些人把取指令的访存也加进去答成3次。解题时先看清题干问的是“取操作数”还是“一条指令总共访存”次数。前者2次后者3次。第三个坑扩展操作码的空间重叠。设计好了方案结果三条指令的操作码二进制前缀互相冲突这在考试中属于严重错误。做完设计题一定要从“短指令会不会被长指令吃掉”这个角度反向验证。第四个坑补码偏移量的正负。相对寻址里的偏移量往往用补码存储看到0F00H这种“高位为0”的直接按正数算看到FF00H这种“高位是1”的别忘记它其实是负数。期末卷子有不少同学挂在这上面。6.2 高频考点与易错题速查我把第四章常见的考点和对应易错点整理成速查表考点常考角度易错点指令格式固定操作码与扩展操作码忘记地址码字段被借位零/一/二/三地址判断指令字长和寻址能力混淆源操作数与目的操作数立即寻址求指令长度、访存次数误以为立即数也要访存直接寻址求有效地址形式地址和实际地址不分间接寻址访存次数、多级间接漏算第二次访存基址寻址程序重定位把基址寄存器当变址寄存器变址寻址数组下标的地址变化忘记变址值自动增减相对寻址转移目标计算PC当前值到底是哪条指令后的值CISC/RISC特点对比只给结论不给分点指令类型分类与执行流程把控制指令和传送指令混为一谈6.3 跨章节联动串行进位、程序计数器与指令周期很多同学搜“组间串行进位”“计算机组成原理实验计数器”其实它们往往和第四章不是孤立知识。组间串行进位属于加法器的进位方式但它会影响运算指令对标志位的设置程序计数器PC则是取指阶段的核心部件每次取完一条指令PC要加一个“指令字长对应的字节数”计数器实验如果放在课程实验环节往往就是让你用可编程计数器模拟PC或定时器写几条读写指令来控制它。第四章要学透不能只在章节内部打转。看到一条加法指令你要能想到操作码被控制器译成一系列微操作数据从寄存器或主存取出后进入运算器运算器内部的加法器可能采用组间串行进位或并行进位逻辑产生的结果和进位标志会写回寄存器和PSW同时PC被更新下一条指令的取指随即开始。这一条链路把第二章的补码、第三章的运算器、第四章的指令格式、第五章的CPU时序全部串起来了。期末综合题特别喜欢这样跨章节出题一道题考半本书。至于实验课里的计数器其实是把“PC1”“指令周期”和“定时/计数外设”混在一起考察。你写一段程序去初始化计数器、读取计数结果看起来是I/O操作本质上还是要用到指令系统中的传送类指令和立即数寻址。所以第四章的I/O指令知识点并不孤立实验前最好先把指令分类和寻址方式捋一遍写控制代码时会顺手很多。6.4 复习节奏和笔记整理建议如果你正在备考期末我建议第四章别放在最后一周突击。它是CPU章节的基础至少提前两周开始。第一遍先通读教材把每节后的名词解释题做一遍第二遍重点练计算题尤其是扩展操作码设计和有效地址计算第三遍把错题背后的知识点回填到笔记里形成“错题→知识点→口诀”的闭环。笔记整理有个小技巧用表格代替大段文字。寻址方式对比表、指令类型表、CISC/RISC对比表、考点易错表这些表格本身就是最好的考前速查资料。每学完一类寻址方式就手动画一张访存路径图考前再只看图回忆效率远高于反复翻书。我个人体会最深的一点是第四章不需要死背它需要你经常“演算”。把每条指令当成一个小程序在草稿纸上一步步写出指令取出、操作数寻找、运算执行和结果写回的过程。你亲手画过十遍之后考场上再看到长串的指令设计题脑子里会自动浮现出那张路径图而不是靠猜答案。
返回列表