运算器实验报告-北京交通大学
- 格式:pdf
- 大小:245.13 KB
- 文档页数:6
脱机运算器实验报告 北京交通大学 实验目的: (1)了解脱机操作下AM2901运算器的功能与控制信号的使用,了解运算器AM2901的内部结构及工作时序,观察运算器运算的结果对状态标志的影响。 (2)深入了解AM2901运算器的功能与具体用法,掌握用AM2901完成各种运算操作时各控制信号的使用,观察指令执行的结果对状态标志的影响;了解4片AM2901的级联方式,深化运算器部件的组成、设计、控制与使用等诸项知识。
实验内容: (1)将教学机左下方的5个拨动开关置为1XXOO(单步、16位、脱机);先按“RESET”键,再按“START”键,进行初始化。 (2)通过两个12位的红色微型开关向运算器提供控制信号,通过16位数据开关向运算器提供数据,通过指示灯观察运算结果及状态标志。 (3)按下表所列的操作在机器上进行运算器脱机实验,将结果填入表中:其中D1取为0101H,D2取为1010H。
运算器实验(1) 运算 I8-I0 SST SSH SCI B口 A口 压START前 压START后 ALU输出 CZVS ALU输出 CZVS *D1+0->R0 011000111 001 000 0000 不用 0101 随机 0101 0000 *D2+0->R1 011000111 001 000 0001 不用 1010 0000 1010 0000 R0+R1->R0 011000001 001 000 0000 0001 1111 0000 2121 0000 RO-R1->R0 011001001 001 001 0000 0001 0101 0000 F0F1 1000 R1-R0->R1 011001001 001 001 0001 0000 0F0F 1000 0E0E 1000 R0∨R1->R1 011011001 001 000 0001 0000 0F0F 1000 0F0F 1010 R0∧R1->R0 011100001 001 000 0000 0001 0101 1010 0101 1010 R0≮R1->R0 011110001 001 000 0000 0001 0E0E 1010 0101 1000 ┘(R0≮R1)->R0 011111001 001 000 0000 0001 FEFE 1000 0E0E 1001 R0逻辑左移 111000011 110 000 0000 不用 FEFE 0001 FDFC 0001 R0逻辑右移 101000011 101 000 0000 不用 FDFC 0001 7EFE 0001
实验结果分析(选择2个操作运算进行控制信号取值和运算结果值的进行分析): (1)R0∧R1->R0 R0∧R1->R0 011100001 001 000 0000 0001 0101 1010 0101 1010 此指令是要执行R0∧R1运算,并将值赋给R0。 故数据来源为A和B,I2-I0为001; 执行∧运算,I5-I3为100; 运算结果存储到B口对应的地址并输出,I8-I6为011; 接收ALU的标志位输出的值,SST为001; 执行∧运算,SSH SCI为000; B口对应R0,地址为0000;A口对应R1,地址为0001。 因为R0=0101,R1=0F0F,所以按START前ALU的输出值为0101,故输出值为0101。
(2)R0逻辑右移 R0逻辑右移 101000011 101 000 0000 不用 FDFC 0001 7EFE 0001 此指令要对R0进行逻辑右移。 故数据来源为0和B,I2-I0为011; 执行+运算,I5-I3为000; 运算结果存储到B口对应的地址并输出,I8-I6为101; 右移操作,另三个标志不变,SST为101; 执行逻辑移位指令,SSH SCI为000; B口对应R0,地址为0000;A口不用。 因为R0=FDFC,实现逻辑右移后补0,所以按START之前R0为FDFC,按START后R0变为7EFE。 运算器实验(2) 实验步骤 (1)将教学机左下方的5个拨动开关置为1XX00(单步、16位、脱机);先按一下“RESET”按键,再按一下“START”按键,进行初始化。 (2)按下表所列的操作在机器上进行运算器脱机实验,将结果填入表中:
执行操作 I8-I6 I5-I3 I2-I0 SST SSH SCI B口 A口 按START前 按START后
ALU CZVS ALU CZVS FFFF→R0 011 000 111 001 000 0000 不用 FFFF 随机 FFFF 0001 FFFF→R1 011 000 111 001 000 0001 不用 FFFF 随机 FFFF 0001 R1+R0→R1 011 000 001 001 000 0001 0000 FFFE 0001 FFFD 1001 0001→R0 011 000 111 001 000 0000 不用 0001 随机 0001 0000 FFFF→R2 011 000 111 001 000 0010 不用 FFFF 随机 FFFF 0001 R2-R0→R0 011 010 001 001 001 0000 0010 FFFE 0000 0001 1001 0001→R3 011 000 111 001 000 0011 不用 0001 随机 0001 0000 R3+1→R3 011 000 011 001 001 0011 不用 0002 0000 0003 0000 1234→R5 011 000 111 001 000 0101 不用 1234 随机 1234 0000 R5→Y R5+1→R5 010 000 100 001 001 0101 0101 1234 0000 1235 0000
AAAA→R6 011 000 111 001 000 0110 不用 AAAA 随机 AAAA 0001 9999→R7 011 000 111 001 000 0111 不用 9999 随机 9999 0001 R6-R7→R6 011 001 001 001 001 0110 0111 1111 0001 7778 1000 R6左移 111 000 011 110 100 0110 不用 1111 1000 2222 0000 R7→Q 000 000 100 001 000 0111 不用 9999 0000 9999 0001 R7与Q的 联合右移 100 000 011 001 000 0111 不用 9999 0001 4CCC 0001 实验结果分析(选择2个操作运算进行控制信号取值和运算结果值的进行分析): (1)9999→R7 9999→R7 011 000 111 001 000 0111 不用 9999 随机 9999 0001 此指令将9999赋值给R7。 故数据来源为0和D(9999),I2-I0为111; 执行+运算,I5-I3为000; 运算结果存储到B口对应的地址并输出,I8-I6为011; 接受ALU的标志位输出的值,SST为001; 执行ADD运算,SSH SCI为000; B口对应R7,地址为0111;A口不用。 因为将9999赋值给R7,输出为FFFF。
(2)R3+1→R3 R3+1→R3 011 000 011 001 001 0011 不用 0002 0000 0003 0000 此指令使R3执行自增1运算。 故数据来源为0和B,I2-I0为011; 执行+运算,I5-I3为000; 运算结果存储到B口对应的地址并输出,I8-I6为011; 接受ALU的标志位输出的值,SST为001; 执行自增1运算,SSH SCI为001; B口对应R3,地址为0011;A口不用。 因为R3=0001,所以按START前ALU的输出值为0002,故输出值为0002。 思考题: 1. 分析R2-R0→R0 和 R6-R7→R6的结果,并说明操作控制的区别。 R2-R0→R0 011 010 001 001 001 0000 0010 FFFE 0000 0001 1001 此指令是要执行R2-R0运算,并将值赋给R0。 数据来源为A和B,I2-I0为001; 执行R-S运算,I5-I3为010; 运算结果存储到B口对应的地址并输出,I8-I6为011; 接受ALU的标志位输出的值,SST为001; 执行SUB运算,SSH SCI为001; B口对应R0,地址为0000;A口对应R2,地址为0010。 因为R2=FFFF,R0=0001,所以按START前ALU的输出值为FFFE,即输出值为FFFE。
R6-R7→R6 011 001 001 001 001 0110 0111 1111 0001 7778 1000 此指令是执行R6-R7运算,并将值赋给R6。 数据来源为A和B,I2-I0为001; 运算是S-R,I5-I3为001; 运算结果存储到B口对应的地址并输出,I8-I6为011; 接受ALU的标志位输出的值,SST为001; 执行SUB运算,SSH SCI为001; B口对应R6,地址为0110;A口对应R7,地址为0111。 因为R6=AAAA,R7=9999,所以按START前ALU的输出值为1111,即输出值为1111。
区别: R2-R0→R0中的减法运算是R-S,所以I5-I3为010;而R6-R7→R6中的减法运算是S-R,所以I5-I3为001。