跳到正文
IGCSE·Tuition
计算机科学 · 练习

硬件与处理:原创综合练习与解析

每个错误都该告诉你要复习哪项技能,而不只是丢了分。

这套练习涵盖整个硬件与处理模块:指令周期、寄存器、内存与存储、输入与输出的选择,以及让说法停留在模型之内。题目由易到难。

每题先在纸上自己做。只有在写完自己的追踪之后,才用受限伪代码追踪训练器或安全的 Python 推理沙盒来核对。

题目

第 1 题(容易)

说明程序计数器(PC)存放什么,以及在简化周期中它的值何时改变。

查看答案

PC 存放下一条要取出的指令的地址。每次 fetch 时它加 1。跳转指令在 execute 阶段用新地址覆盖它。

第 2 题(容易)

为每个描述写出寄存器名称:(a) 存放正在读取的地址,(b) 存放正在解码的指令,(c) 存放加法的结果。

查看答案

(a) MAR。 (b) CIR。 (c) ACC。

第 3 题(容易)

RAM、ROM 和辅助存储中,哪一个 (a) 断电后丢失内容,(b) 存放启动指令,(c) 保存已保存的作业文件?

查看答案

(a) RAM,因为它是易失性的。 (b) ROM,它是非易失性的。 (c) 辅助存储,它没有电力也保存文件。

第 4 题(中等)

为下面的程序完成追踪表。LDA 90 加载地址 90 的值,SUB 91 从 ACC 中减去地址 91 的值,STO 92 存储 ACC,END 停止。PC 从 50 开始。

地址内容
50LDA 90
51SUB 91
52STO 92
53END
9015
916
920
查看答案
步骤PCMARMDRCIRACC
开始50----
Fetch 15150LDA 90LDA 90-
Execute 1519015LDA 9015
Fetch 25251SUB 91SUB 9115
Execute 252916SUB 919
Fetch 35352STO 92STO 929
Execute 353929STO 929

核对:15 − 6 = 9。地址 92 现在存着 9。

第 5 题(中等)

一台笔记本有 4 GB RAM。

同时打开三个程序,分别需要 1.2 GB、2.5 GB 和 0.8 GB。(a) 一共需要多少 RAM?

(b) 会发生什么?为什么这很重要?

查看答案

(a) 1.2 + 2.5 + 0.8 = 4.5 GB。

(b) 这比 4 GB RAM 多出 0.5 GB。电脑会把一部分辅助存储用作虚拟内存,在两者之间交换数据。这比 RAM 慢,所以电脑会变慢。

第 6 题(中等)

一名学生用手机拍下作业,在笔记本上编辑并保存。说明文件 (a) 在编辑时和 (b) 笔记本关机后分别在哪里。

查看答案

(a) 打开的文件被载入 RAM,让处理器能快速处理。 (b) 保存的文件留在辅助存储中。断电时 RAM 会丢失它。

第 7 题(中等)

图书馆让会员通过扫描会员卡和书本来借书。选择一个输入设备和一个输出设备,并各用一句话说明理由。

查看答案

输入:条形码扫描器,因为会员卡和书本各有条码,扫描能快速记录,没有打字错误。

输出:收据打印机(或屏幕信息),确认借书和归还日期,让会员有借了什么的凭证。

第 8 题(较难)

追踪下面的程序,并写出地址 32 最终的值。JMP 13 把 PC 设为 13。PC 从 10 开始。

地址内容
10LDA 30
11JMP 13
12ADD 31
13STO 32
14END
304
31100
320
查看答案
步骤PCMARMDRCIRACC
开始10----
Fetch 11110LDA 30LDA 30-
Execute 111304LDA 304
Fetch 21211JMP 13JMP 134
Execute 21311JMP 13JMP 134
Fetch 31413STO 32STO 324
Execute 314324STO 324
Fetch 41514ENDEND4

跳转覆盖了 PC(12 变成 13),所以地址 12 的 ADD 31 从未运行。地址 32 存的是 4,不是 104。

第 9 题(较难)

一名学生写道:“这部手机有 8 核 2.8 GHz 的处理器,所以它以 22.4 GHz 运行,一定比 3.0 GHz 的笔记本快。”指出两个错误并重写这个说法。

查看答案

错误 1:核心不会把时钟频率相加。8 × 2.8 = 22.4 不是有效的速度。时钟频率是 2.8 GHz,即每秒 28 亿个周期。

错误 2:“一定更快”没有依据。速度还取决于核心数、缓存,以及软件能否利用这些核心。

重写:“手机的处理器以 2.8 GHz 运行,有 8 个核心。笔记本的时钟频率更高(3.0 GHz),但核心数和任务类型也会影响性能,所以所给数据无法说明哪个更快。”

第 10 题(较难)

预测下面这段 Python 程序的完整输出,它使用与各课相同的模型。

memory = {50: "LDA 90", 51: "ADD 91", 52: "STO 92", 53: "END",
          90: 15, 91: 6, 92: 0}
pc = 50
acc = 0
while True:
    mar = pc
    pc = pc + 1
    mdr = memory[mar]
    cir = mdr
    parts = cir.split()
    op = parts[0]
    if op == "END":
        break
    addr = int(parts[1])
    if op == "LDA":
        acc = memory[addr]
    elif op == "ADD":
        acc = acc + memory[addr]
    elif op == "STO":
        memory[addr] = acc
    print(cir, "ACC =", acc, "PC =", pc)
print(memory[92])
查看答案

循环在每条指令之后打印,END 除外:

LDA 90 ACC = 15 PC = 51
ADD 91 ACC = 21 PC = 52
STO 92 ACC = 21 PC = 53
21

核对:15 + 6 = 21。PC 在 fetch 时已经加过 1,所以打印 51、52 和 53。最后一行打印地址 92 的值,即 21。取出 END 时循环停止,它没有任何打印。

如果你做错了

出了什么问题回头复习
PC 的值差一,或混淆了 PC 和 MAR(第 1、4、8、10 题)追踪简化的指令周期
寄存器名称写错(第 2、4 题)把寄存器与其作用对应起来
混淆 RAM、ROM 或存储,或漏掉虚拟内存(第 3、5、6 题)用具体任务比较内存与存储
写了设备名称,却没有来自任务的理由(第 7 题)解释输入与输出设备的选择
加入了题目没有给出的说法(第 9 题)不要从通用模型推断品牌规格

把每个反复出现的失误记在错题记录与重测队列里,几天后再做一道关于该技能的新题。

如果某种模式一再出现,我们的老师在线上一对一计算机科学补习中可以和你一起追踪,找出它从哪里开始。回到模块总览查看学习顺序。

常见问题

应该怎样使用这套练习题?

盖住答案,在纸上做题。追踪题要画追踪表,说明题要写完整的句子。然后打开每题的解答,对照你的步骤,而不只是最终数值。把出错之处记在指引表里,你就知道该重读哪一课。

这些题目来自历年试卷吗?

不是。它们是为本站原创的题目,用来练习同样的技能,并非抄自任何考试试卷,也不预测将会考什么。要查看当前考纲和历年试卷,请使用学校提供的资料或 Cambridge 官网。

如果我的追踪表格式不同怎么办?

只要每个寄存器都写出来、每一步都清楚,格式可以不同。你的数值仍然必须一致。请按你们班上使用的顺序,并查看题目是否对格式有要求。

资料来源

  1. Cambridge IGCSE Computer Science 0478 科目页面

更新于:

下一步

如果同一类失误反复出现在你的答案中,一对一的老师可以对着你的解题过程,找出它开始的那一步。

一小时付费试听课,按所安排老师确认的收费,RM80 起。

补习由家长或监护人安排。用 WhatsApp 把这页发给他们,他们就可以替你咨询。

家长:在这里咨询

  • 已通过我们的服务帮助 9,000+ 名学生
  • 9+ 年帮助 IGCSE 学生