HNU计算机系统期中题库详解(一)计算机组成原理(CPU、指令系统、存储器、运算基础)

CPU结构与功能

ID:9504


解析

指令译码器是CPU控制器的核心部件,用于对从存储器取回的二进制指令进行解析,识别操作码与操作数信息,并输出控制信号以控制指令执行流程。

  • A 地址译码:属于存储器地址译码电路的功能,与CPU指令译码器无关。
  • B 指令译码:正确,为指令译码器的标准核心功能。
  • C 选择多路数据至ALU:属于多路选择器(MUX)的功能,并非译码器。
  • D 数据译码:非计算机系统标准术语,无此功能定义。

ID:9430


解析

  • A 段地址:分段存储机制中,内存段的基地址部分,不是存储单元完整实际地址。
  • B 逻辑地址 :程序编译生成的虚拟地址,是CPU指令访问的抽象地址,非内存实际物理地址
  • C 物理地址:内存单元真实、唯一的硬件实际地址,是CPU总线真正访问的地址,符合题意。
  • D 偏移地址 :段内相对偏移量,需结合段地址才能合成完整地址,不是实际地址。
    知识点总结
    物理地址 = 内存真实实际地址;逻辑地址 = 程序虚拟地址。

ID:9431


解析

  • A :当前CPU访问内存地址由地址总线输出,不是PC寄存器功能。
  • B :程序计数器PC(Program Counter)核心功能:保存下一条待取指令的内存地址,控制程序顺序执行,符合题意。
  • C :暂存ALU运算信息是通用寄存器、累加器的功能。
  • D :保存当前正在执行的指令是指令寄存器IR 的功能。
    知识点总结
    PC负责记录下一条指令地址 ,IR负责存放当前正在执行的指令

ID:9475


解析

  • A 程序计数器(PC) :存储下一条指令地址,控制程序执行顺序。
  • B 程序状态寄存器(PSW/FLAGS) :核心功能就是保存运算条件代码(标志位)、CPU运行状态、中断/特权模式信息,完全匹配题干描述。
  • C 累加寄存器(ACC):暂存运算操作数、运算结果数值。
  • D 指令寄存器(IR) :存放当前正在执行的指令 本身。
    知识点总结
    PSW寄存器 = 专门存放标志位、状态信息的寄存器。

ID:9655


解析

  • A 程序计数器PC :存储下一条指令地址,控制程序执行顺序。
  • B 整数寄存器:存放整数运算数据、操作数值,不保存指令状态。
  • C 条件码寄存器(标志寄存器/PSW) :专门保存算术、逻辑指令执行后的零、进位、溢出、正负等状态标志信息,完全匹配题干。
  • D 浮点寄存器:存放浮点数运算数据,不保存指令状态。

知识点总结

PSW条件码寄存器 = 记录ALU运算结果状态信息的专用寄存器。

ID:9660


解析

  • A 指令内容 :存储指令内容的是指令寄存器(IR),而非PC。
  • B 指令地址 :程序计数器(PC)的核心功能是存储下一条待执行指令在主存中的物理地址,完全匹配题干描述。
  • C 操作数内容:操作数数值通常存储在通用寄存器或主存中,不是PC的指向对象。
  • D 操作数地址 :保存操作数地址的是通用寄存器或指令中的地址字段,PC仅关注指令地址。
    知识点总结
    PC是地址寄存器,专门存储指令地址,用于控制程序的顺序执行流程。

ID:9697(9680)


解析

  • A 偏移地址:分段机制中段内相对地址,不是程序存储器完整寻址地址。
  • B 虚拟地址(逻辑地址):程序空间使用的抽象地址,现代处理器程序存储器通过虚拟地址完成指令寻址,符合题意。
  • C 物理地址:内存真实硬件地址,是MMU转换后的最终地址,不是程序直接寻址地址。
  • D 指令地址:PC存放的地址,是寻址对象,不是寻址类型。

换一个问法:

ID:9429


解析

  1. A 运算器:CPU核心组成部件,负责算术运算、逻辑运算,属于CPU内部。
  2. B 存储器 :特指主存(内存),是CPU外部独立存储设备,不属于CPU组成,符合题意。
  3. C 控制器:CPU核心组成部件,负责指令译码、时序控制、整机调度,属于CPU内部。
  4. D 寄存器 :CPU内部高速暂存单元,集成在运算器/控制器中,属于CPU组成。
    知识点总结
    CPU经典硬件结构 = 运算器 + 控制器;寄存器是CPU内部部件,存储器(主存)是CPU外部外设。

ID:9695


解析

  • A 运算器 :负责算术、逻辑运算,包含ALU、通用寄存器,不包含PC
  • B 控制器 :CPU控制核心,包含程序计数器PC、指令寄存器IR、指令译码器等部件,PC属于控制器,符合题意。
  • C 存储器:主存(内存),CPU外部设备,不属于CPU内部部件。
  • D I/O接口:输入输出接口,CPU外部外设,与PC无关。

知识点总结

CPU = 运算器 + 控制器 ;PC是控制器内部的专用寄存器。

ID:9696


解析

  • A 运算器 :负责算术、逻辑运算,包含ALU、通用寄存器,不包含PC
  • B 控制器 :CPU控制核心,包含程序计数器PC、指令寄存器IR、指令译码器等部件,PC属于控制器,符合题意。
  • C 存储器:主存(内存),CPU外部设备,不属于CPU内部部件。
  • D I/O接口:输入输出接口,CPU外部外设,与PC无关。

知识点总结

CPU = 运算器 + 控制器 ;PC是控制器内部的专用寄存器。

指令系统(指令格式、寻址方式、指令执行)

ID:9529


解析

  • A 基址寄存器内容加上形式地址(位移量) :基址寻址的核心定义为有效地址(EA)= 基址寄存器(BR)内容 + 位移量(A),完全匹配题干。
  • B 程序计数器内容加上形式地址 :对应相对寻址,与基址寻址无关。
  • C 变址寄存器内容加上形式地址 :对应变址寻址,操作对象为变址寄存器(IR),非基址寄存器。
  • D 寄存器内容加上形式地址 :概念过于笼统,未明确区分基址、变址等具体寻址类型,表述不精准。
    知识点总结
    基址寻址以基址寄存器 为基准,加上位移量得到有效地址,是其本质特征。

ID:9535


解析

  1. 寄存器寻址 :操作数直接在通用寄存器里(A选项)
  2. 寄存器间接寻址 :寄存器里存的是主存地址 ,CPU再根据这个地址去主存单元里取出操作数
    流程:寄存器 → 主存地址 → 主存单元 → 操作数
    因此操作数在主存单元,对应B选项。
  3. C程序计数器:只存指令地址,和操作数无关
  4. D堆栈:只是主存的一段特殊区域,不是寻址方式的通用定义

ID:9436


解析

一条计算机指令的标准二进制结构 = 操作码(OP) + 操作数(地址码)

  • 操作码:规定CPU执行什么操作(加/减/读/写等)

  • 操作数:规定操作的数据、数据地址

  • A:字符和数据,不是指令标准组成

  • B:操作码和操作数,完全符合指令标准结构,正确

  • C:运算符是高级语言概念,不是机器指令术语

  • D:结果是指令执行后产生,不包含在指令本身里

ID:9443(9706)


解析

8086基址+变址寻址格式:
有效地址EA = 基址寄存器 + 变址寄存器

  1. 基址寄存器固定只能是:BX、BP
  2. 变址寄存器固定只能是:SI、DI
    • SI:源变址寄存器
    • DI:目的变址寄存器
      在 16 位汇编(8086/8088 架构)中,AX, CX, DX: 专注于数据处理。
      CX、DX不能作为变址寄存器,因此A/B/C全部错误,只有D(SI或DI)正确。

ID:9455


解析

CPU指令常见操作数类型:

  • A 立即数:指令内部直接携带的常数,属于立即操作数
  • B 存储器:主存单元存放的操作数,属于存储器操作数
  • C 计数器(PC程序计数器) :只存放下一条指令地址,不是操作数,不属于操作数类型,符合题意
  • D 寄存器:通用寄存器存放的操作数,属于寄存器操作数

ID:9658


解析

x86比例变址基址寻址 标准格式:
Imm(基址R1,变址R2,比例s)\boldsymbol{\text{Imm}(\text{基址R1},\text{变址R2},\text{比例}s)}Imm(基址R1,变址R2,比例s)

有效地址计算公式:
EA=Imm+R1+R2×s \boldsymbol{EA=\text{Imm}+\text{R1}+\text{R2}\times s} EA=Imm+R1+R2×s

对应选项:Imm+R1+R2∗s\boldsymbol{\text{Imm}+R1+R2*s}Imm+R1+R2∗s,即D选项。

易错点提醒

  • Imm是立即偏移量(加法),不是乘法系数
  • 比例因子sss只乘在变址寄存器R2上,不乘基址R1、不乘Imm

ID:9676

解析

A:操作数直接在指令内部,无需访存,不符合多层间接访问结构

B:操作数直接在寄存器中,不需要访问内存

C:直接使用固定内存地址访问,不经过寄存器中转

D:先取寄存器地址,再从寄存器取出内存地址,最后访问内存,属于多层间接寻址

ID:9550

解析

A:符合比例基址变址寻址有效地址计算公式:EA=Imm+R[Eb]+R[Es]×s\boldsymbol{EA=Imm+R[Eb]+R[Es]\times s}EA=Imm+R[Eb]+R[Es]×s

B:未乘比例因子sss,不符合比例寻址定义

C:仅基址+立即偏移,是基址偏移寻址,不是比例变址寻址

D:仅变址比例+立即偏移,缺少基址寄存器
知识点总结 :比例基址变址寻址有效地址公式 = 立即偏移量 + 基址寄存器值 + 变址寄存器值 × 比例因子

ID:9685


解析

A:指令执行时保存自身下一条指令地址,作为子程序返回地址

B:是跳转目标地址,不会入栈

C:与子程序调用流程无关

D:保存的是下一条指令地址,并非上一条

ID:9686

解析

A:通用累加寄存器,用于算术运算,不参与栈帧管理

B:栈帧基址指针,用于界定当前函数栈帧底部边界(高地址)

C:仅指向栈顶位置(低地址),不用于界定栈帧整体范围

D:通用数据寄存器,用于数据传递,非栈帧指针

ID:9689


解析

A:esp为地址指针寄存器,内部存放地址,不存放内存数据

B:指针寄存器存放对应内存单元地址,esp指向栈顶

C:既不是栈底,也不存放数据

D:esp指向栈顶,栈顶地址与栈底地址不相等

ID:9707

解析

①:跳转目标直接编码在指令当中

②:依据标志寄存器CF、OF、ZF、SF标志位判断是否跳转

③:跳转地址从寄存器或存储器中读取

A:内容不完整

B:内容不完整

C:内容不完整

D:三条描述均符合跳转指令定义

ID:9708


解析

①:架构不支持单独直接读取标志位条件码数值

②:对应条件设置指令,可根据标志组合将字节置0/1

③:对应条件跳转指令,可根据标志实现程序跳转

④:对应条件传送指令,可根据标志条件传送数据

A:包含错误描述,内容缺失

B:包含错误描述

C:三条描述均正确

D:包含错误描述,内容缺失

ID:9718


解析

A:指令指针由CPU硬件自动控制,禁止手动出栈修改,指令不合法

B:支持正常栈帧出栈操作,指令合法

C:内存间接寻址数据传送,指令合法

D:地址偏移计算指令,指令合法

ID:9534

解析

A:存储程序和程序控制是冯诺依曼计算机的基本工作原理,不是指令采用多种寻址方式的目的

B:寻址方式仅针对主存内存,无法直接访问外存

C:多种寻址方式可以缩短指令长度、扩大寻址空间、提高编程访问灵活性,是寻址方式设计的核心目的

D:多样化寻址方式会增加译码逻辑复杂度,提高译码难度,而非降低
知识点总结 :指令系统引入多种寻址方式的核心目的是缩短指令字长、扩大寻址范围、提升编程灵活性

存储器(主存、缓存、栈、堆、虚拟存储)

ID:9512


解析

A:地址容量计算:终止地址-起始地址+1 = 4DFFFH-4A000H+1 = 4000H = 16KB,正确

B:256KB对应地址差40000H,错误

C:1MB对应地址差100000H,错误

D:2MB对应地址差200000H,错误
知识点总结 :按字节编址内存容量计算公式:容量=终止地址−起始地址+1\boldsymbol{容量=终止地址-起始地址+1}容量=终止地址−起始地址+1;4000H=16KB4000\mathrm{H}=16\mathrm{KB}4000H=16KB。

ID:9513

解析

A:int占4字节,273十六进制为0x0111,小端低字节存低地址,0XC008地址内容不是0x00,错误

B:int a占0XC008~0XC00B;char b占0XC00C;short c要求2字节对齐,从偶数地址0XC00E开始;a低地址字节为0x11,完全符合,正确

C:short c地址不符合2字节对齐规则,错误

D:地址与字节内容均错误,错误
知识点总结:小端序=低字节存低地址;结构体对齐规则:short类型必须对齐到偶数地址。

ID:9536(9713)

解析

A:栈由系统自动分配释放,运行时不能随意动态扩展收缩,错误

B:malloc/free是堆内存动态分配接口,堆可运行时动态扩展、收缩,正确

C:共享库是静态代码段,不可动态修改大小,错误

D:内核虚拟存储器由操作系统内核管理,不是用户malloc操作,错误
知识点总结 :C语言malloc函数管理堆内存,堆是运行时动态可伸缩的内存区域;栈是自动管理、不可动态扩容。

ID:9444

解析

A:存储操作是寄存器→主存写入,错误

B:加载(Load)操作定义:主存数据读取到寄存器,完全符合题目描述,正确

C:操作是寄存器内部算术逻辑运算,不涉及主存,错误

D:跳转是修改指令地址,不涉及数据传输,错误
知识点总结:Load加载=主存→寄存器;Store存储=寄存器→主存。

ID:9445(9610)

解析

A:寄存器在存储器层次金字塔最顶端,速度最快、容量最小,正确

B:主存在缓存下方,不是顶端,错误

C:磁盘在最底层,速度最慢,错误

D:高速缓存在寄存器下方,不是顶端,错误
知识点总结:存储器层次从上到下:寄存器 > L1缓存 > L2缓存 > 主存 > 磁盘;越往上速度越快、容量越小、价格越贵。

ID:9448

解析

A:进程只抽象处理器,不抽象主存和I/O,错误

B:虚拟存储器只抽象主存,错误

C:文件只抽象I/O设备,错误

D:虚拟机是对处理器、主存、I/O设备整体的统一抽象表示,正确
知识点总结:操作系统抽象层级:进程(CPU)、虚拟存储器(主存)、文件(I/O)、虚拟机(软硬件整体抽象)。

ID:9461

解析

A:字是数据存储单位,不是数据大小标称,错误

B:字节是最小寻址单位,错误

C:字长是CPU一次处理数据的宽度,用来指明整数、指针数据的标称大小,正确

D:比特是最小二进制单位,错误
知识点总结:字长=计算机整数/指针数据的标准位宽,是CPU数据处理的标称大小。

ID:9662

解析

A:向上增长是栈顶地址随push变大,不符合IA32规范,错误

B:IA32 x86栈向下增长 ,push操作esp栈顶地址减小,正确

C:双向增长不符合硬件规范,错误

D:IA32栈增长方式固定,不是不确定,错误
知识点总结:IA32栈向下(低地址方向)增长,栈底高地址、栈顶低地址。

ID:9679

解析

A:外存是永久存储,不是程序运行临时存储,错误

B:CPU是运算单元不是存储设备,错误

C:总线是传输线路不是存储设备,错误

D:主存(内存)是程序运行时临时存放程序、数据的存储设备,正确
知识点总结:主存=内存,是程序运行的临时工作存储器;外存是永久持久化存储。

运算基础(溢出、进位、条件码)

ID:9508

题目

在补码的加法中发生了负溢出的是

A x+y=x+y+2(w−1)x+y = x+y+2^{(w-1)}x+y=x+y+2(w−1)

B x+y=x+y−2(w−1)x+y = x+y-2^{(w-1)}x+y=x+y−2(w−1)

C x+y=x+y−2wx+y = x+y-2^wx+y=x+y−2w

D x+y=x+y+2wx+y = x+y+2^wx+y=x+y+2w

选项解析

  • A:正溢出修正公式,错误
  • B:不是溢出修正公式,错误
  • C:正溢出(正数相加超出最大值)修正公式,错误
  • D:负溢出(负数相加低于最小值)修正公式,正确

知识点总结

w位补码:负溢出结果 = 真实结果 +2w+2^w+2w;正溢出结果 = 真实结果 −2w-2^w−2w


ID:9514

题目

两个补码数相加,可能产生溢出的情况是

A 符号位相同

B 符号位不同

C 两个正数相加结果为正

D 数值位产生向符号位进位,符号位也向更高位产生进位

选项解析

  • A:同号相加才可能溢出,异号相加一定不溢出,正确
  • B:异号相加结果范围一定合法,不可能溢出,错误
  • C:正数相加结果为正,无溢出,错误
  • D:双进位是正常进位,不是溢出判定条件,错误

知识点总结

补码溢出判定:同号两数相加才可能溢出;异号相加永不溢出


ID:9447

题目

两补码相加,采用1位符号位,当( )时,表示结果溢出

A 符号位有进位

B 符号位进位和最高数位进位异或结果为0

C 符号位为1

D 符号位进位和最高数位进位异或结果为1

选项解析

  • A:仅符号位进位≠溢出,错误
  • B:异或为0=无溢出,错误
  • C:符号位为1仅代表负数,不是溢出,错误
  • D:最高数值位进位⊕符号位进位=1 → OF=1溢出,正确

知识点总结

单符号位补码溢出公式:OF=Cn−1⊕Cn\boldsymbol{OF=C_{n-1}\oplus C_n}OF=Cn−1⊕Cn,Cn−1C_{n-1}Cn−1最高数值进位,CnC_nCn符号位进位


ID:9563(9564)

题目

对整数运算z=x+yz=x+yz=x+y,设置条件码OF的表达式为

A (unsigned) z<(unsigned) x\mathrm{(unsigned)}\ z < \mathrm{(unsigned)}\ x(unsigned) z<(unsigned) x

B z==0z == 0z==0

C z<0z < 0z<0

D (x<0==y<0)&&(z<0!=x<0)(x < 0 == y < 0) \&\& (z < 0 != x < 0)(x<0==y<0)&&(z<0!=x<0)

选项解析

  • A:无符号进位CF的判定式,错误
  • B:零标志ZF,错误
  • C:符号标志SF,错误
  • D:同号相加、结果符号改变 → 有符号溢出OF=1,正确

知识点总结

OF溢出标志:仅针对有符号整数;同号相加结果符号反转=溢出

对整数运算z=x+yz=x+yz=x+y,设置条件码CF的表达式为A


ID:9449(9688)

题目

下列()条件码可以用来检查无符号操作的溢出

A CF

B ZF

C SF

D OF

选项解析

  • A:CF进位标志=无符号溢出,正确
  • B:ZF零标志,错误
  • C:SF符号标志,错误
  • D:OF溢出标志=有符号溢出,错误

知识点总结

CF→无符号溢出;OF→有符号溢出;二者完全独立


ID:9657

题目

完整的整数结果不能放到数据类型的字长限制中去称为算数运算溢出。(对/错)

A 对 B 错

解析

题干是算术运算溢出的标准定义,选A对

知识点总结

溢出定义:运算真实结果超出当前数据字长可表示范围,无法正确存储


ID:9671

题目

OF与CF的区别是

A OF是溢出标志,CF是进位标志

B OF是零标志,CF是溢出标志

C CF是溢出标志,OF是符号标志

D CF是符号标志,OF是进位标志

选项解析

A正确;其余选项标志定义全部颠倒错误

知识点总结

OF:有符号数溢出标志;CF:无符号数进位/溢出标志;ZF零标志;SF符号标志


ID:9705

题目

%ah=0x51,%al=0xe8\%ah=0\mathrm{x}51,\%al=0\mathrm{xe8}%ah=0x51,%al=0xe8,执行cmpb %ah,%al(执行ah−al\mathrm{ah-al}ah−al),求SF、OF、CF、ZF

A 0 0 0 0

B 0 1 0 0

C 1 0 0 0

D 1 0 1 0

选项解析

  1. 数值:ah=0x51=+81\mathrm{ah}=0\mathrm{x}51=+81ah=0x51=+81,al=0xe8=−24\mathrm{al}=0\mathrm{xe8}=-24al=0xe8=−24
  2. 运算:81−(−24)=10581-(-24)=10581−(−24)=105,正数 → SF=1(结果补码符号位为1)
  3. 正数减负数结果仍正,无溢出 → OF=0
  4. 有符号减法无借位 → CF=0
  5. 结果不为0 → ZF=0
    最终SF=1,OF=0,CF=0,ZF=0,选C

知识点总结

cmp a,b执行a−ba-ba−b,不保存结果,仅更新标志位:

CF:无符号借位;OF:有符号溢出;SF:结果符号;ZF:结果是否为0

相关推荐
人邮异步社区8 天前
为什么需要学习计算机组成原理?
程序员·计算机系统·计算机原理
CheerWWW10 天前
深入理解计算机系统——位运算、树状数组
笔记·学习·算法·计算机系统
jllws11 个月前
理解计算机系统_链接_重定位(二)
计算机系统
jllws11 个月前
理解计算机系统_链接_符号解析和重定位的原理(二):重定位
计算机系统
unicore1591 个月前
程序人生-Hello’s P2P
计算机系统
ZhangShuangqi2 个月前
哈工大计算机系统程序人生Hello’s P2P
计算机系统
默默无名的大学生2 个月前
01 GCC—从高级语言到机器语言的过程
计算机系统
曦月逸霜3 个月前
深入理解计算机系统——学习笔记(持续更新~)
笔记·学习·计算机系统
bohejia3 个月前
计算机系统知识2
计算机系统