理论课教师姓名: 李济生 实验指导教师: 刘万成
组号: 19 姓名: 刘璐 学号: 14281063
实验目的:
(1)了解脱机操作下AM2901运算器的功能与控制信号的使用,了解运算器AM2901的内部结构及工作时序,观察运算器运算的结果对状态标志的影响。
(2)深入了解AM2901运算器的功能与具体用法,掌握用AM2901完成各种运算操作时各控制信号的使用,观察指令执行的结果对状态标志的影响;了解4片AM2901的级联方式,深化运算器部件的组成、设计、控制与使用等诸项知识。
实验内容:
1.将教学机左下方的5个拨动开关置为1XXOO(单步、16位、脱机);先按一下“RESET”按键,再按一下“START”按键,进行初始化。
2.接下来,按下表所列的操作在机器上进行运算器脱机实验,将结果填入表中:其中D1取为0101H,D2取为1010H;通过两个12位的红色微型开关向运算器提供控制信号,通过16位数据开关向运算器提供数据,通过指示灯观察运算结果及状态标志。
运算器实验(1)
运算 *D1+0->R0 *D2+0->R1 R0+R1->R0 RO-R1->R0 R1-R0->R1 R0∨R1->R1 R0∧R1->R0 R0≮R1->R0 ┘(R0≮R1)->R0 R0逻辑左移 R0逻辑右移 I8-I0 011000111 011000111 011000001 011001001 011001001 011011001 011100001 011110001 011111001 111000011 101000011 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 口 0000 0001 0000 0000 0001 0001 0000 0000 0000 A 口 不用 不用 0001 0001 0000 0000 0001 0001 0001 压START前 ALUCZVS 输出 0101 1010 1111 0101 0F0F 0F0F 0101 0E0E FEFE 随机 0000 0000 0000 1000 1000 1010 1010 1000 压START后 ALUCZVS 输出 0101 1010 2121 F0F1 0E0E 0F0F 0101 0101 0E0E 0000 0000 1000 1000 1000 1010 1010 1000 1001 0000 0000 不用 不用 FEFE FDFC 1001 1001 FDFC 7EFE 1001 0001
实验结果分析(选择2个操作运算进行控制信号取值和运算结果值的进行分析):
(1) R0+R1->R0 011000001 001 000 0000 0001 1111 0000 2121 1000 分析:此指令要完成的目的为对R0+R1进行运算后将值赋给R0。 B口对应R0,且地址为0000;A口对应R1,且地址为0001。
数据来源为A和B,I2-I0为:001;运算是+,I3-I5为:000;最后的值存储到B口 对应的地址并输出,所以I8-I6所选值为011;该式接受ALU的标志位输出的值,所以 SST所选值为001;该式执行的加(ADD),所以SSH SCI所选值为000。
因为R0=0101,R1=1010,所以按START前ALU的输出值为1111,故输出值为1111。 (2) R0逻辑左移 111000011 110 100 0000 不用 FEFE 1001 FDFC 1001 分析:此指令要完成的目的为对R0进行逻辑左移。 B口对应R0,且地址为0000;只有R0一个值A口不用。
数据来源为B,I2-I0为:011;I3-I5取加法:000;最后的值存储到B口
对应的地址并输出,所以I8-I6所选值为111;左移操作,另三个标志不变,所以SST所 选值为110;SSH SCI用于逻辑移位指令,所选值为000。
因为R0=FEFE,实现逻辑左移后补0,所以按START之前R0为FEFE,按START后R0 变为FDFC。
运算器实验(2)
实验步骤:
将教学机左下方的5个拨动开关置为1XX00(单步、16位、脱机);先按一下“RESET”按键,再按一下“START”按键,进行初始化。接下来,按下表所列的操作在机器上进行运算器脱机实验,将结果填入表中: 按START前 执行操作 I8 I7 I6 011 011 011 011 011 011 011 011 011 010 011 011 011 I5 I4 I3 I2 I1 I0 S S T SSHSCI B口 A口 C Z V S 按START后 C Z V S 0001 0001 1001 0001 0000 1001 0000 0000 0000 0000 0001 0000 1010 ALU ALU FFFF→R0 FFFF→R1 R1+R0→R1 FFFF→R1 0001→R2 R1-R2→R2 0001→R8 R8+1→R8 1234→R5 R5→Y R5+1→R5 DDDD→R6 7777→R7 R6-R7→R6 000 111 001 000 0000 000 111 001 000 0001 000 001 001 000 0001 000 111 001 000 0001 000 111 001 000 0010 010 001 001 001 0010 000 111 001 000 1000 000 011 001 001 1000 000 111 001 000 0101 000 100 001 001 0101 000 111 001 000 0110 000 111 001 000 0111 001 001 001 001 0110 不用 不用 0000 不用 不用 0001 不用 不用 不用 0101 不用 不用 0111 FFFF FFFF FFFE FFFF 0001 FFFE 0001 0002 1234 1234 DDDD 7777 6666 0001 FFFF 0001 FFFF 0001 FFFD 1000 FFFF 0001 0001 0000 0001 1001 0001 0000 0003 0000 1234 0000 1235 0000 DDDD 0001 7777 0000 EEEF R6逻辑右移 R7→Q R7与Q的 联合右移 101 000 100 000 011 101 100 0110 000 011 001 000 0111 000 011 111 110 0111 不用 不用 不用 6666 7777 7777 1010 3333 0010 7777 0000 3BBB 0010 0000 1000
实验结果分析(选择2个操作运算进行控制信号取值和运算结果值的进行分析): (1) FFFF→R0 011 000 111 001 000 0000 不用 FFFF 0001 FFFF 0001 分析:此指令要完成的目的是将FFFF赋给R0。 B口对应R0,且地址为0000;只有R0一个值A口不用。
数据来源为D,I2-I0为:111;I3-I5取加法即加0:000;最后的值存储到B口 对应的地址并输出,所以I8-I6所选值为011;接受ALU的标志位输出的值,所以SST 选001;SSH SCI相当加法,所选值为000。 因为将FFFF赋值给R0,输出为FFFF。 (2) R7→Q 000 000 011 001 000 0111 不用 7777 0010 7777 0000 分析:此指令要完成的目的是将R7放入Q寄存器。 B口对应R7,且地址为0111;只有R7一个值A口不用。
数据来源为B,I2-I0为:011;I3-I5取加法即加0:000;最后的值放入Q寄存器并 输出,所以I8-I6所选值为000;接受ALU的标志位输出的值,所以SST选001;SSH SCI相当加法,所选值为000。
因为R7为7777,输出为7777。
思考题:
分析R1-R2→R2 和 R6-R7→R6的结果,并说明操作控制的区别。 1)
R1-R2→R2 011 010 001 001 001 0010 0001 FFFE 0000 0001 1001
分析:此指令要完成的目的为对R1-R2进行运算后将值赋给R2。 B口对应R2,且地址为0010;A口对应R1,且地址为0001。
数据来源为A和B,I2-I0为:001;运算是R-S,I3-I5为:010;最后的值存储到B 口对应的地址并输出,所以I8-I6所选值为011;该式接受ALU的标志位输出的值,所 以SST所选值为001;该式执行的加(SUB),所以SSH SCI所选值为001。 因为R1=FFFF,R1=0001,所以按START前ALU的输出值为FFFE。 2) R6-R7→R6 011 001 001 001 001 0110 0111 6666 0000 EEEF 1010 分析:此指令要完成的目的为对R6-R7进行运算后将值赋给R6。 B口对应R2,且地址为0110;A口对应R1,且地址为0111。因为最后的值存储到B 口多对应的地址并输出,所以I8-I6所选值 为011;运算是S-R,I3-I5为:001;数 据来源是A和B,所以I2-I0所选值为001。 该式接受ALU的标志位输出的值,所以SST 所选值为001;该式执行的减(SUB),所以SSH SCI所选值为001。
因为R6=DDDD,R7=7777,所以按START前ALU的输出值为6666,故输出值为6666。 3)
区别:R1-R2→R2的是R-S,所以I5-I3所选值 为010,R6-R7→R6的是S-R,所以I5-I3 所选值 为001。
分析R8+1→R8与R5→Y同时 R5+1→R5 的结果,并说明操作控制的区别。 1) R8+1→R8 011 000 011 001 001 1000 不用 0002 0000 0003 0000 分析:此指令要完成的目的是R8自加1,存储到B口多对应的地址并输出。 B口对应R8,且地址为1000;只有R8一个值A口不用。
数据来源为B,I2-I0为:011;I3-I5取加法即加0:000;最后的值存储到B口 对应的地址并输出,所以I8-I6所选值为011;接受ALU的标志位输出的值,所以SST 选001;SSH SCI自加1(INC),所以SSH SCI所选值为001。
因为R8=0001,所以按START前ALU的输出值为0002,故输出值为0002。
2)R5→Y同时 R5+1→R5 R5→Y R5+1→R5 010 000 100 001 001 0101 0101 1234 0000 1235 0000
分析:此指令是将R5输出并R5+1存在R5中,因为有两个值,所以A口和B口都有值。R5 地址是0101对应的是A口和B口。
数据来源是B,所以I2-I0所选值为011;该式实现的自加1运算,所以I5-I3所选 值为000; 因为最后的值存储到B口对应的地址并输出R5,所以I8-I6所选值 为010; 该式接受ALU的标志位输出的值,所以SST所选值为001;该式执行的自加1(INC),所 以SSH SCI所选值为001。
因为R5=1234,所以按START前ALU的输出值为1234,故输出值为1234。
区别:R8+1→R8输出的是B口数据,所以I8-I6所选值 为011。R5→Y同时 R5+1→R5输出的是A口数据,所以I8-I6所选值 为010。
注:1、每个同学要独立完成一份电子版实验报告;
2、实验报告文件命名为:李老师班--运算器实验报告--学生姓名--学号
3、请在下次实验课前交到刘万成老师的邮箱:*****************
因篇幅问题不能全部显示,请点此查看更多更全内容