logo资料库

计算机组成原理_运算器实验报告.doc

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
脱机运算器实验报告 理论课教师: 尹辉 实验指导教师: 刘万成 组号: 28 实验目的: 姓名: 贡乐天 学号: 17281033 了解脱机状态下 AM2901 运算器的功能与控制信号的使用,了解运算器 AM2901 的内 部结构与工作时序,观察运算器结果对状态标志的影响。 深入了解 AM2901 运算器的功能与具体用法,掌握 AM2901 完成各种运算操作时各控 制信号的使用,观察指令执行的结果对状态标志的影响;了解 4 片 AM2901 的级联方式, 深化运算器部件的组成、设计、控制与使用等诸多知识。 实验内容: 运算器实验(1) SST 001 001 001 001 001 001 001 001 001 110 101 SSH SCI 000 000 000 001 001 000 000 000 000 100 100 B 口 A 口 0000 不用 0001 不用 0000 0000 0001 0001 0000 0000 0000 0001 0001 0000 0000 0001 0001 0001 0000 不用 0000 不用 压 START 前 压 START 后 ALU 输出 CZVS ALU 输出 CZVS 0101 1010 1111 0101 0F0F 0F0F 0101 0E0E FEFE FEFE FDFC 随机 0000 0000 0000 1000 1000 1010 1010 1000 1001 0001 0101 1010 2121 F0F1 0E0E 0F0F 0101 0101 0E0E FDFC 7EFE 01000 0000 0000 1000 1000 1010 1010 1000 1001 0001 0001 运算 I8-I0 *D1+0->R0 011000111 *D2+0->R1 011000111 R0+R1->R0 011000001 RO-R1->R0 011001001 R1-R0->R1 011001001 R0∨R1->R1 011011001 R0∧R1->R0 011100001 R0⊕R1->R0 011110001 R0 R1->R0 011111001 R0 逻辑左移 111000011 R0 逻辑右移 101000011 实验结果分析: 控制信号表如下所示: 编码 L4 L3 L L L H L H H H L L H L H L L5 L L L L H H H 运算功能 R+S R S R˅S R˄S ˄S R⊕S
H L2 L L L L H H H H H H 编码 L1 L0 L L H L L H H H L L H L H L H H 编码 I7 L L H H L L H H I8 L L L L H H H H I6 L H L H L H L H 3 位选择码 SSH SCI 编码 0 0 0 0 0 1 0 1 0 R⊙S 数据来源 R A A 0 0 0 D D D 结果处理 Q 寄存器 F→Q Q/2→Q 2Q→Q S Q B Q B A A Q 0 Y 输出 F F A F F F F F 通用寄存器组 F→B F→B F/2→B F/2→B 2F→B 2F→B 指令举例 ADD DEC SUB INC ADC SBB Cin 取值 0 1 C 3 位控制码 SSH SCI 编码 1 0 0 1 0 1 1 1 0 1 1 1 左移 RAM0 Q0 X C Q15 X X /F15 X 右移 RAM15 Q15 X C Cy F15 X RAM0 RAM0 说明 用于逻辑移位指令 用于和与 C 循环移位指令 原码除(左移)乘(右移) 用于算术右移指令 3 位选择码 SST 编码 0 0 0 0 0 1 状态位输入 说明 Z Z S C S C CY F=0 OVR F15 V V 四个标志位的值保持不变 接收 ALU 的标志位输出的值
0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 内部总线对应的一位 恢复标志位原来的现场值 0 1 Z Z V V S S RAM0 RAM15 Z Z V V S S Q0 Z V S 置“0”C,另三个标志位不变 置“1”C,另三个标志位不变 右移操作,另三位标志位不变 左移操作,另三位标志位不变 联合右移,另三位标志位不变 由上表可知,所做的实验则是对数据的存放,加减,移位等操作。 实验中,各个数据的均为 16 进制显示,有 4 个 4 位 LED 灯显示信号。 现选择数据如下: 1.加法数据 *D2+0->R1 011000111 001 000 0001 不用 1010 0000 1010 0000 此指令完成将 D2 中数据赋值给 R1 的操作,具体操作为将 D2 中数据加 0 后再存到 R1 的地址中去。 由于只有 B 口地址可以进行数据的写入,所以将 B 口作为存储数据的地址,A 口不用输 入地址。所以 B 口为 0000,A 口为不用。 由于是将 F 输出的结果输入到 B 口对应的地址中去,所以 I8-I6 的值为 011,对应相应 指令功能。运算功能执行 R+S 功能,所以 I5-I3 取值为 000,对应将两个数据相加。数据来 源是 D 和 0,所以 I2-I0 取值为 111。所以 I8-I0 取值为 011000111。 由于是加法运算,所以 SST 取值为 001.SSH 取值为 000。 按 START 之前,输出 D 口值加 0,且 D 值为 1010,所以输出为 1010。CZVS 值为 0000。 按 START 之后,将值存入 B 口对应地址中,输出仍为 D 口值加 0,且 D 值为 1010,所以 输出为 1010。由于无溢出等情况,所以 CZVS 值为 0000。 2. 逻辑数据 R0∧R1->R0 011100001 001 000 0000 0001 0101 1010 0101 1010 此指令完成将 R0、R1 中数据取与运算后的值赋给 R0 的操作,具体操作为将 R0、R1 中 数据取至寄存器中后进行运算再存到 R0 的地址中去。 由于只有 B 口地址可以进行数据的写入,所以将 B 口作为存储数据的地址,A 口输入另 一个地址。所以 B 口为 0000,A 口为 0001。 由于是将 F 输出的结果输入到 B 口对应的地址中去,所以 I8-I6 的值为 011,对应相应 指令功能。运算功能执行 R∧S 功能,所以 I5-I3 取值为 100,对应将两个数据取与运算。 数据来源是 R0 和 R1,所以 I2-I0 取值为 001。所以 I8-I0 取值为 011100001. 由于是加法运算,所以 SST 取值为 001。SSH 取值为 000。 按 START 之前,输出 R0 与 R1 与运算后的值,所以值为 0101,所以输出为 0101。CZVS 值为 1010。 按 START 之后,将值存入 B 口对应地址中,R0 口值变为 0101,但 R1 值不变,所以输出 R0 与 R1 与运算后的值,所以值为 0101,所以输出为 0101。CZVS 值为 1010。
运算器实验(2) 实验步骤: 将教学机左下方的 5 个拨动开关置为 1XX00(单步、16 位、脱机);先按一下“RESET” 按键,再按一下“START”按键,进行初始化。接下来,按下表所列的操作在机器上进行运 算器脱机实验,将结果填入表中: SSHS CI B 口 A 口 0000 0000 不用 FFFF 0001 不用 FFFF 0001 FFFE 0010 不用 FFFF 0011 不用 0001 0010 FFFE 1000 不用 0001 1000 0002 0101 不用 1234 1000 0011 执行操作 I8 I7 I6 011 011 011 011 011 011 011 011 011 FFFF→R0 FFFF→R1 R1+R0→R1 FFFF→R2 0001→R3 R2-R3→R2 0001→R8 R8+1→R8 1234→R5 R5→Y R5+1→R5 011 AAAA→R6 011 9999→R7 011 R6-R7→R7 R7 逻辑左移 111 R6→Q 000 R6 与 Q 的 联合右移 010 100 I5 I4 I3 000 000 000 000 000 001 000 000 000 000 000 000 010 000 000 000 I2 I1 I0 111 111 001 111 111 001 111 101 111 101 111 111 001 011 011 011 S S T 001 001 001 001 001 001 001 001 001 001 001 001 001 110 001 111 000 000 000 000 000 001 000 000 000 000 000 000 001 100 000 110 ALU ALU 按 START 前 C Z V S 随机 FFFF 0001 FFFF FFFD 0001 FFFF 1001 0001 0001 FFFD 0000 0001 1001 0000 0003 1234 0000 按 START 后 C Z V S 0001 0001 1001 0001 0000 1001 0000 0000 0000 0101 0101 1234 0000 1235 0110 不用 AAAA 0000 AAAA 0111 不用 9999 0111 1111 0111 不用 1111 0110 不用 AAAA 0000 AAAA 0001 0001 1000 9999 9999 2222 0110 0110 不用 AAAA 0001 5555 0000 0001 0001 1000 0000 0001 0001 实验结果分析: R1+R0→R1 1.加法数据 011 000 001 001 000 0001 0000 FFFE 0001 FFFD 1001 此指令完成将 R0、R1 中数据取加运算后的值赋给 R1 的操作,具体操作为将 R0、R1 中 数据取至寄存器中后进行运算再存到 R1 的地址中去。 由于只有 B 口地址可以进行数据的写入,所以将 B 口作为存储数据的地址,A 口输入另 一个地址。所以 B 口为 0001,A 口为 0000。 由于是将 F 输出的结果输入到 B 口对应的地址中去,所以 I8-I6 的值为 011,对应相应 指令功能。运算功能执行 R+S 功能,所以 I5-I3 取值为 000,对应将两个数据取加运算。数 据来源是 R0 和 R1,所以 I2-I0 取值为 001。以 I8-I0 取值为 011000001。 由于是加法运算,所以 SST 取值为 001。SSH 取值为 000。 按 START 之前,输出 R0 与 R1 加运算后的值,所以值为 FFFE,所以输出为 FFFE。CZVS 值为 0001。
按 START 之后,将值存入 B 口对应地址中,R1 口值变为 FFFE,但 R0 值不变,所以输出 R0 与 R1 加运算后的值,所以值为 FFFD,所以输出为 FFFD。CZVS 值为 1001。 2. 存储数据 9999→R7 011 000 111 001 000 0111 不用 9999 0001 9999 0001 此指令完成将 D 中数据赋值给 R7 的操作,具体操作为将 D 中数据加 0 后再存到 R7 的地 址中去。 由于只有 B 口地址可以进行数据的写入,所以将 B 口作为存储数据的地址,A 口不用输 入地址。所以 B 口为 0111,A 口为不用。 由于是将 F 输出的结果输入到 B 口对应的地址中去,所以 I8-I6 的值为 011,对应相应 指令功能。运算功能执行 R+S 功能,所以 I5-I3 取值为 000,对应将两个数据相加。数据来 源是 D 和 0,所以 I2-I0 取值为 111.所以 I8-I0 取值为 011000111。 由于是加法运算,所以 SST 取值为 001。SSH 取值为 000。 按 START 之前,输出 D 口值加 0,且 D 值为 9999,所以输出为 9999。CZVS 值为 0001。 按 START 之后,将值存入 B 口对应地址中,输出仍为 D 口值加 0,且 D 值为 9999,所以 输出为 9999。CZVS 值为 0001。 思考题:  分析 R2-R3→R2 和 R6-R7→R7 的结果,并说明操作控制的区别。 1. R2-R3→R2 减法数据 R2-R3→R2 011 001 001 001 001 0010 0011 FFFE 0000 FFFD 1001 此指令完成将 R2、R3 中数据取减运算后的值赋给 R2 的操作,具体操作为将 R2、R3 中 数据取至寄存器中后进行运算再存到 R2 的地址中去。 由于只有 B 口地址可以进行数据的写入,所以将 B 口作为存储数据的地址,A 口输入另 一个地址。所以 B 口为 0010,A 口为 0011。 由于是将 F 输出的结果输入到 B 口对应的地址中去,所以 I8-I6 的值为 011,对应相应 指令功能。运算功能执行 S-R 功能,所以 I5-I3 取值为 001,对应将两个数据取减运算。数 据来源是 R2(S)和 R3(R),所以 I2-I0 取值为 001。以 I8-I0 取值为 011001001。 由于是减法运算,所以 SST 取值为 001。SSH 取值为 001。 按 START 之前,输出 R2 与 R3 减运算后的值,所以值为 FFFE,所以输出为 FFFE。CZVS 值为 0000。 按 START 之后,将值存入 B 口对应地址中,R2 口值变为 FFFE,但 R3 值不变,所以输出 R2 与 R3 减运算后的值,所以值为 FFFD,所以输出为 FFFD。CZVS 值为 1001。 R6-R7→R7 011 010 001 001 001 0111 0110 1111 0001 9999 1000 2. R6-R7→R7 减法数据 此指令完成将 R6、R7 中数据取减运算后的值赋给 R7 的操作,具体操作为将 R6、R7 中
数据取至寄存器中后进行运算再存到 R7 的地址中去。 由于只有 B 口地址可以进行数据的写入,所以将 B 口作为存储数据的地址,A 口输入另 一个地址。所以 B 口为 0111,A 口为 0110。 由于是将 F 输出的结果输入到 B 口对应的地址中去,所以 I8-I6 的值为 011,对应相应 指令功能。运算功能执行 R-S 功能,所以 I5-I3 取值为 010,对应将两个数据取减运算。数 据来源是 R6(R)和 R7(S),所以 I2-I0 取值为 001。以 I8-I0 取值为 011010001。 由于是减法运算,所以 SST 取值为 001。SSH 取值为 001。 按 START 之前,输出 R6 与 R7 减运算后的值,所以值为 1111,所以输出为 1111。CZVS 值为 0001。 按 START 之后,将值存入 B 口对应地址中,R7 口值变为 1111,但 R6 值不变,所以输出 R6 与 R7 减运算后的值,所以值为 9999,所以输出为 9999。CZVS 值为 1000。 3.区别: 第一个运算 I5-I3 为 001(S-R),第二个为 010(R-S),两个运算地址顺序正相反,一 个以被减数作为 B 口地址,,一个以减数作为 B 口地址。 由于写入数据只能由 B 口地址完成,所以在做减法时,R 与 S 的选择便显得比较重要。 在两个运算中,由于计算结果的存储位置不同,指令的选择也不尽相同。主要在于第一个运 算中,由于 B 口只对应数据 S,所以要写入数据应为 S 数据,所以 R2(被减数)应为 S 数 据,而第二个运算正相反,要将 R7(减数)作为 S 数据。这便造成了减法顺序的不同,一 个要 R-S,另一个要 S-R。所以 I5-I3 的指令不同。同时也造成了地址顺序的不同,一个将 减数作为 B 口地址(S 数据),一个将被减数作为 B 口地址(S 数据)。所以造成了 A 口与 B 口地址顺序的不同。  分析 R8+1→R8 与 R5→Y 同时 R5+1→R5 的结果,并说明操作控制的区别。 1. R8+1→R8 减法数据 R8+1→R8 011 000 101 001 000 1000 1000 0002 0000 0003 0000 此指令完成将 R8 中数据取加 1 运算后的值赋给 R8 的操作,具体操作为将 R8 中数据取 至寄存器中后进行运算再存到 R8 的地址中去。 由于只有 B 口地址可以进行数据的写入,所以将 B 口作为存储数据的地址,A 口输入操 作数地址。所以 B 口为 1000,A 口为 1000。 由于是将 F 输出的结果输入到 B 口对应的地址中去,所以 I8-I6 的值为 011,对应相应 指令功能。运算功能执行 R+S 功能,所以 I5-I3 取值为 000,对应将两个数据取加运算。数 据来源是 D(R)和 R8(S),所以 I2-I0 取值为 101。以 I8-I0 取值为 011000101。 由于是加法运算,所以 SST 取值为 001。SSH 取值为 000。 按 START 之前,输出 R8 与 D 加运算后的值,所以值为 0002,所以输出为 0002。CZVS 值为 0000。 按 START 之后,将值存入 B 口对应地址中,R8 口值变为 0002,但 D 值不变,所以输出 R8 与 D 加运算后的值,所以值为 0003,所以输出为 0003。CZVS 值为 0000。 2. R5→Y 同时 R5+1→R5 R5→Y R5+1→R5 010 000 101 001 000 0101 0101 1234 0000 1235 0000 此指令完成将 R5 中数据先送到 Y,再取加 1 运算后的值赋给 R5 的操作,具体操作为将
R5 中数据取至寄存器中后进行输出到 Y,再运算再存到 R5 的地址中去。 由于只有 B 口地址可以进行数据的写入,所以将 B 口作为存储数据的地址,A 口输入操 作数地址。所以 B 口为 0101,A 口为 0101。 由于是将 F 输出的结果输入到 B 口对应的地址中去,并且 Y 输出为 A(R5),所以 I8-I6 的值为 010,对应相应指令功能。运算功能执行 R+S 功能,所以 I5-I3 取值为 000,对应将 两个数据取加运算。数据来源是 D(R)和 R8(S),所以 I2-I0 取值为 101。以 I8-I0 取值 为 010000101。 由于是加法运算,所以 SST 取值为 001。SSH 取值为 000。 按 START 之前,Y 输出 A 地址的值即 R5 的值,所以值为 1234,所以输出为 1234。CZVS 值为 0000。 按 START 之后,将值存入 B 口对应地址中,R5 口值变为 1235,Y 仍输出 A 地址的值即 R5 的值,所以值为 1235,所以输出为 1235。CZVS 值为 0000。 3.区别: 两个操作唯一的区别在于 Y 输出的不同,第一个输出运算后的 F 值,另一个输出 A 地 址的值。 所以两个操作的 I8-I6 的值不同,第一个为 011,第二个为 010,造成 Y 输出结果的不同。
分享到:
收藏