计算机组成原理实验

第一步:65H → AA7H → B

准备工作:初始化

为了确保一个干净的开始,请先按一下实验箱上的"CLR"键 。这将清空CPU内的所有寄存器(A, B, R0等),确保它们的值都为00H


第1.1步:将 65H 送入暂存器A (65H → A)

  1. 设置数据源:

    • 在实验系统的输入单元(IN单元) ,通过拨码开关或者其他输入方式,将数据设置为 65H (二进制为 0110 0101)。
  2. 设置控制信号:

    • 我们需要让输入单元的数据能放到总线(BUS)上。查阅PPT第8页的"外设、存储器读写控制"表,IN → BUS 操作需要设置:RD=1IOM=1
    • 同时,我们需要让暂存器A准备好接收总线上的数据。查阅PPT第6页的"运算器"控制信号表,BUS → A 操作需要设置:LDA=1
  3. 执行操作:

    • 在确认以上所有开关(数据和控制信号)都设置正确后,按一下单步执行键("ST"键)
    • 这个操作会把输入单元的65H通过总线,写入到暂存器A中。
  4. 验证:

    • 操作完成后,观察暂存器A的显示 ,它的值现在应该变成了 65H

第1.2步:将 A7H 送入暂存器B (A7H → B)

现在暂存器A已经有正确的值了,我们来操作暂存器B。

将LDA置0,LDB保持0,然后进行调数据。

  1. 设置数据源:

    • 回到输入单元(IN单元) ,将数据更改为 A7H (二进制为 1010 0111)。
  2. 设置控制信号:

    • 让输入单元的数据上总线,控制信号保持不变RD=1IOM=1
    • 这次,我们需要让暂存器B 接收数据。查阅PPT第6页的表格,BUS → B 操作需要设置:LDB=1 。(请确保 LDA 现在是0,否则会把A的内容也覆盖掉)。
  3. 执行操作:

    • 确认设置无误后,再次按一下单步执行键("ST"键)
    • 这个操作会把输入单元的A7H通过总线,写入到暂存器B中。
  4. 验证:

    • 观察暂存器B的显示 ,它的值现在应该变成了 A7H
    • 同时,再次确认一下暂存器A的显示 ,它应该仍然是 65H

第一步完成

当您完成以上所有操作后,第一步就成功了。此时的状态应该是:

  • 暂存器A = 65H
  • 暂存器B = A7H

现在,我们已经为第二步的加法运算做好了准备。您可以随时告诉我继续进行第二步。

好的,第一步顺利完成!现在我们的状态是:

  • 暂存器A = 65H
  • 暂存器B = A7H

第二步:A + B → A

这个指令的意思是:让ALU(算术逻辑单元)计算 A 和 B 的和,然后把结果再存放回暂存器A里面。

请按照下面的步骤进行操作:

第2.1步 设置ALU的运算功能

  • 首先,我们需要告诉ALU要做"加法"运算。
  • 请查阅PPT中的**"运算功能表"**(实验二的第7页)。
  • 在表中找到功能为 F=A加B 的那一行,它对应的功能选择码是 S3 S2 S1 S0 = 1001
  • 请在实验台的CON单元 找到对应的 S3, S2, S1, S0 控制开关,并将它们设置为 1001

第2.2步 设置数据的流向(数据通路)

  • ALU的输出: 运算结果需要从ALU出来,放到总线(BUS)上。这个操作的控制信号是 ALU_B = 0
  • 暂存器A的输入: 暂存器A需要准备好,从总线(BUS)上接收这个结果。这个操作的控制信号是 LDA = 1
  • 请在实验台上找到 ALU_BLDA 的控制开关,并分别将它们设置为 01

总结一下,在执行前,您需要确保以下控制信号设置正确:

  • S3 S2 S1 S0 = 1001
  • ALU_B = 0
  • LDA = 1
  • (其他不相关的控制信号如 LDB, RD, WR 等都应处于非激活状态,通常是0)。

第2.3步 执行单步操作

  • 确认以上所有设置都无误后,请按一下单步执行键("ST"键)

第2.4步 观察并记录结果

按下"ST"键后,加法操作就完成了。现在请观察实验台上的显示灯,验证结果:

  • 理论计算:
    65H + A7H = 10CH

  • 在8位系统中,这意味着:

    • 存入暂存器A的结果是低8位,即 0CH
    • 运算产生了一个进位(最高位的1),所以进位标志 FC 会被置1。
    • 结果0CH不是0,所以零标志 FZ 为0。
  • 您应该在实验台上观察到:

    • 暂存器A 的显示值变为 0C
    • FC (进位标志) 的状态灯 亮起 (表示 FC=1)。
    • FZ (零标志) 的状态灯 熄灭 (表示 FZ=0)。

请根据实验要求,将这两个标志位的结果 FC=1, FZ=0 记录下来。


第三步:A → MEM[10H]

这一步的目标是,将我们刚刚在第二步计算出来的、存放在暂存器A 中的结果 0CH ,写入到内存地址为 10H 的单元中。

这是一个经典的"内存写入"操作。由于我们的实验系统一次只能做一件事(比如送地址或送数据),所以这个任务需要分解为两个微操作步骤来完成。


第3.1步:把地址 10H 送入地址寄存器(AR)

首先,我们必须告诉存储器我们要操作的地址是哪一个。

  1. 设置地址源:

    • 在实验系统的输入单元(IN单元) ,请将数据开关设置为 10H
  2. 设置控制信号(送地址):

    • 我们需要让输入单元的 10H 放到总线上。控制信号是:RD=1 , IOM=1
    • 同时,我们需要让**地址寄存器(AR)**接收总线上的地址。这个控制信号是 LDAR=1
  3. 执行:

    • 确认上述设置无误后,按一下单步执行键("ST"键)
  4. 验证(可选):

    • 操作完成后,您可以观察一下实验台上地址寄存器(AR)的显示 ,它现在应该显示为 10H。这确认了地址已经成功送达。

第3.2步:把暂存器A的数据 0CH 写入内存

现在地址已经指定好了,我们可以把数据写入这个地址了。

  1. 设置数据源(让A的数据上总线):

    • 我们需要把暂存器A里的 0CH 送到总线上。我们通过ALU的**"直通"**功能来实现。
    • 查阅"运算功能表",功能 F=A(直通) 对应的控制码是 S3 S2 S1 S0 = 0000 。请将CON单元的功能开关设为 0000
    • 要让ALU的输出上总线,需要设置 ALU_B = 0
  2. 设置控制信号(写内存命令):

    • 查阅PPT第8页的表格,执行 BUS → MEM[AR] (总线内容送存储单元)操作,需要的控制信号是:WR=1 , RD=0 , IOM=0
    • 特别注意: 这里的 IOM 必须是 0 ,因为我们这次操作的是存储器(MEM),而不是输入输出设备(I/O)。
  3. 执行:

    • 确认上述所有控制信号(S=0000, ALU_B=0, WR=1, RD=0, IOM=0)都设置正确后,再次按一下单步执行键("ST"键)

第三步完成与最终验证

操作完成后,数据 0CH 就应该已经被成功写入到内存地址 10H 中了。现在是验证的关键时刻:

  1. 在实验系统的存储器查看 区域,输入您想查看的地址 10H
  2. 观察该地址对应的数据显示

MEM[10H] 的显示值已经从之前的旧数据(比如您看到的60H)变成了 0CH


第四步:A → OUT

这一步非常直接,目标是将暂存器A 中存放的内容(也就是我们算出来的 0CH ),发送到 OUT(输出)单元进行显示。这通常会点亮一组LED灯来表示这个数值。

这是一个单次的数据传输操作,我们可以在一个单步周期内完成。

操作步骤

  1. 设置数据源(让A的数据上总线):

    • 和上一步的3.2节一样,我们需要将暂存器A中的 0CH 送到总线上。
    • 我们将再次使用ALU的**"直通"**功能。请将CON单元的ALU功能选择开关设置为 S3 S2 S1 S0 = 0000 (代表 F=A)。
    • 同时,为了让ALU的输出能到达总线,请设置 ALU_B = 0
  2. 设置数据目的地(向OUT单元写入):

    • 现在我们的数据 0CH 已经在总线上了,我们需要命令OUT单元来接收它。
    • 请查阅PPT第8页的"外设、存储器读写控制"表。
    • 找到 BUS → OUT (总线内容送输出单元)这一行,它需要的控制信号是:WR=1 , RD=0 , IOM=1
    • 关键点: 这里的 IOM=1 非常重要,它告诉系统我们正在和I/O设备(输入/输出单元)通信,而不是和存储器(MEM)通信。

总结与执行

在执行之前,请您确认在实验台上设置了以下所有控制信号:

  • 功能选择: S3 S2 S1 S0 = 0000
  • ALU输出使能: ALU_B = 0
  • I/O设备写命令: WR = 1, RD = 0, IOM = 1

设置无误后,按一下单步执行键("ST"键)

验证结果

操作完成后,请观察实验台上的 OUT单元(通常是一排LED灯)。

  • 它的显示值现在应该变成了 0CH

同时,这个操作不会改变暂存器A的内容,所以A的显示应该仍然是0CH


第五步:B → MEM[11H]

这一步的目标和第三步非常相似,但有两个关键不同:

  • 数据来源: 这次的数据来自暂存器B (里面的值应该是 A7H)。
  • 目标地址: 我们要写入的内存地址是 11H

和第三步一样,这个操作也需要分解为两个微操作步骤来完成:先送地址,再送数据。


第5.1步:把地址 11H 送入地址寄存器(AR)

我们首先要指定写入操作的目标地址。

  1. 设置地址源:

    • 在实验系统的输入单元(IN单元) ,请将数据开关设置为 11H
  2. 设置控制信号(送地址):

    • 让输入单元的数据上总线:RD=1 , IOM=1
    • 让地址寄存器(AR)接收总线上的地址:LDAR=1
  3. 执行:

    • 确认设置无误后,按一下单步执行键("ST"键)
    • 操作完成后,地址寄存器AR的内容就变成了11H

第5.2步:把暂存器B的数据 A7H 写入内存

现在地址已经就位,我们可以把暂存器B的数据写入了。

  1. 设置数据源(让B的数据上总线):

    • 我们需要把暂存器B里的 A7H 送到总线上。这次我们使用ALU的 B通道"直通" 功能。
    • 查阅"运算功能表",功能 F=B(直通) 对应的控制码是 S3 S2 S1 S0 = 0001 。请将CON单元的功能开关设为 0001
    • 要让ALU的输出上总线,需要设置 ALU_B = 0
  2. 设置控制信号(写内存命令):

    • 这个命令和第三步完全一样。执行 BUS → MEM[AR] 操作,需要的控制信号是:WR=1 , RD=0 , IOM=0
    • (再次提醒,IOM=0 表示我们正在操作的是存储器)。
  3. 执行:

    • 确认上述所有控制信号(S=0001, ALU_B=0, WR=1, RD=0, IOM=0)都设置正确后,再次按一下单步执行键("ST"键)

第五步完成与验证

操作完成后,暂存器B的内容 A7H 就应该被成功写入到内存地址 11H 中了。

请进行验证:

  1. 在实验系统的存储器查看 区域,输入您想查看的地址 11H
  2. 观察该地址对应的数据显示

您应该会看到,MEM[11H] 的显示值现在是 A7H

同时,您可以再检查一下地址 10H,它的值应该仍然是 0CH,没有受到影响。


第六步 MEM[11H] - 1 → B

这一步的指令非常关键,它包含了读-修改-写的完整流程:

  1. 读 (Read): 从内存地址 11H 读取数据(这个数据应该是我们上一步存入的 A7H)。
  2. 修改 (Modify): 对这个数据执行减1 (-1) 操作。
  3. 写 (Write): 将计算后的新结果存入暂存器B

这个复杂操作无法在一个单步周期内完成,我们需要将其分解为三个微操作步骤


第6.1步:指定要读取的内存地址

和之前一样,第一件事总是先确定地址。

  1. 设置地址源:输入单元(IN单元) ,将数据开关设置为 11H
  2. 设置控制信号: RD=1, IOM=1, LDAR=1
  3. 执行: 按一下单步执行键("ST"键)
    • 结果: 地址寄存器AR的内容变为 11H

第6.2步:从内存读取数据到ALU的输入端

现在地址已经指定,我们要把 MEM[11H] 的内容 (A7H) 读出来,并送到ALU准备进行运算。最直接的方式是先把它存入暂存器A。

  1. 设置数据源(读内存):

    • 查阅控制信号表,MEM[AR] → BUS 的命令是:RD=1 , WR=0 , IOM=0
  2. 设置数据目的地(写入暂存器A):

    • 为了让暂存器A接收总线上的数据,设置 LDA=1
  3. 执行:

    • 确认上述控制信号(RD=1, WR=0, IOM=0, LDA=1)设置正确后,再次按一下单步执行键("ST"键)
  4. 中间验证:

    • 操作完成后,请观察暂存器A的显示 ,它的值现在应该变成了 A7H。这说明我们成功地把内存里的数据取出来了。

第6.3步:执行减1运算,并将结果存入暂存器B

现在,A7H 已经位于暂存器A中,我们可以让ALU对它进行减1操作了。

  1. 设置ALU功能(A-1):

    • 查阅"运算功能表",功能 F=A减1 对应的控制码是 S3 S2 S1 S0 = 1100 。请将CON单元的功能开关设为 1100
  2. 设置数据通路(结果送入B):

    • 让ALU的运算结果上总线:ALU_B = 0
    • 暂存器B 接收总线上的结果:LDB=1 。(请务必确保此时 LDA=0,否则A的值也会被覆盖)。
  3. 执行:

    • 确认上述所有控制信号(S=1100, ALU_B=0, LDB=1)都设置正确后,再次按一下单步执行键("ST"键)

第六步完成与最终验证

操作完成后,整个实验就结束了!现在是检验最后一步成果的时候。

  • 理论计算: A7H - 1 = A6H
  • 请观察实验台:
    • 暂存器B 的显示值现在应该变成了 A6H
    • 暂存器A 的值应该没变 ,仍然是 A7H
    • MEM[11H] 的值也应该没变 ,仍然是 A7H(因为我们只对它进行了读取,没有写入)。

如果暂存器B的显示为A6H,那么恭喜您,已经成功完成了整个总线传输综合实验的所有步骤!

相关推荐
守城小轩4 小时前
轻量级HTTP&Socks代理GOST: Win编译安装
网络·网络协议·代理网络
七七七七074 小时前
【计算机网络】深入理解ARP协议:工作原理、报文格式与安全防护
linux·服务器·网络·计算机网络·安全
守城小轩4 小时前
轻量级HTTP&Socks代理GOST: Linux编译安装
运维·网络·网络协议
奋斗的蛋黄5 小时前
网络卡顿运维排查方案:从客户端到服务器的全链路处理
运维·服务器·网络
进击的圆儿7 小时前
TCP可靠传输的秘密:从滑动窗口到拥塞控制
网络·网络协议·tcp/ip
图图图图爱睡觉7 小时前
主机跟虚拟机ip一直Ping不通,并且虚拟机使用ifconfig命令时,ens33没有ipv4地址,只有ipv6地址
服务器·网络·tcp/ip
lhxcc_fly7 小时前
Linux网络--8、NAT,代理,网络穿透
linux·服务器·网络·nat
开开心心就好7 小时前
电子报纸离线保存:一键下载多报PDF工具
网络·笔记·macos·pdf·word·音视频·phpstorm
是Yu欸9 小时前
【博资考5】网安2025
网络·人工智能·经验分享·笔记·网络安全·ai·博资考