东北大学计算计组成原理课程设计报告 - 图文(5)

2019-03-15 13:11

无符号乘法程序的运行过程如下表所示:

汇 编 指 令 _FATCH_ 程序机器地址 码 00 00 指令说明 实验机占用,不可修改。复位后,所有寄存器清0,首先执行指令取指。 微程序 CBFFFF PC ?PC +1 运行时寄存器或存储器的值 写入 EM:24 MOV R0,#8A MOV R1,#16 MOV R2,#00 MOV R3,#00 MOV A,R2 PUSH A TEST R1,#FF 00 02 04 06 08 09 0A 248A 将立即数0AH存放到寄存器R0中。 2516 将立即数06H存放到寄存器R1中。 2600 将立即数00H存放到寄存器R2中。 2700 将立即数00H存放到寄存器R3中。 22 18 将R2的内容送入到A寄存器中。 将A寄存器中的值保存到堆栈寄存器中。 C7FBFF CBFFFF C7FBFF CBFFFF C7FBFF CBFFFF FFF7F7 CBFFFF C6FFFF CBFFFF FFEF9F CBFFFF C7FFEF FFF7F7 FFFE93 CBFFFF C6FFFF CBFFFF C7FFEF FFF7F7 FFFE93 CBFFFF C6FFFF CBFFFF FFF7F7 FFFADF CBFFFF FFF7F7 FFFBDF CBFFFF FFF7F7 FFF9BF CBFFFF C6FFFF CBFFFF +1 +1 +1 +1 +1 +1 +1 +1 EM:24 写入 EM:8A R0:8A +1 EM:25 写入 EM:16 R1:16 +1 写入 +1 写入 EM:26 EM:00 R2:00 EM:27 EM:00 R3:00 写入 +1 EM:22 +1 写入 EM:22 +1 +1 +1 +1 EM:18 写入 EM:18 ST:00 +1 +1 +1 写入 EM:15 EM:FF W:FF EM:FF A:16 EM:FF 15FF 测试R1的内容是否为0. JZ 1E TEST R1,#01 0C 0E 341E 如果Z标志位为0,则跳转到1E地址。 1501 测试R1的最低位是否为1。 写入 +1 EM:34 +1 写入 EM:1E +1 +1 +1 +1 +1 写入 EM:15 EM:01 W:01 EM:01 A:16 EM:01 JZ 19 SL R0 10 19 3419 如果Z标志位为0,则跳转到19地址。 48 将R0左移一位,并且将移出的最高位送入到CF中。 将R2带进位左移一位。 写入 +1 EM:34 +1 写入 EM:19 +1 +1 +1 +1 EM:48 +1 EM:48 A:8A 写入 EM:48 R0:14 +1 EM:46 +1 EM:46 A:00 写入 EM:46 R2:01 +1 EM:2D +1 EM:2D A:16 写入 EM:2D R1:0B SLL R2 1A 46 SHR R1 1B 2D 对R1中的值右移一位,不涉及进位。 GOTO 0A 1C 380A 跳转到0A地址。 写入 +1 EM:38 +1 写入 EM:0A TEST R1,#FF 0A 15FF 测试R1寄存器值是否为0。 C7FFEF FFF7F7 FFFE93 CBFFFF C6FFFF CBFFFF C7FFEF FFF7F7 FFFE93 CBFFFF C6FFFF CBFFFF FFF7F7 CBFFFF FFF7EF FFFA98 CBFFFF FFFF57 CBFFFF C7FFEF FFFE94 CBFFFF FFF7EF FFFE90 CBFFFF FFEF9F CBFFFF FFF7F7 FFFADF CBFFFF FFF7F7 FFFBDF CBFFFF FFF7F7 FFF9BF CBFFFF C6FFFF CBFFFF C7FFEF FFF7F7 FFFE93 CBFFFF +1 +1 +1 +1 +1 写入 EM:15 EM:FF W:FF EM:FF A:0B EM:FF JZ 1E TEST R1,#01 0C 0E 341E 如果Z标志位为0,则跳转到1E地址。 1501 测试R1的最低位是否为1。 写入 +1 EM:34 +1 写入 EM:1E +1 +1 +1 +1 +1 写入 EM:15 EM:01 W:01 EM:01 A:16 EM:01 JZ 19 MOV A,R0 ADD R3,A 10 12 13 3419 如果Z标志位为0,则跳转到19地址。 20 07 将R0的值送入到A累加寄存器中。 R3的值与A寄存器的值相加,结果送入R3寄存器。 从堆栈中弹出栈顶内容,放入累加寄存器A中。 写入 +1 EM:34 +1 写入 EM:19 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 EM:20 写入 EM:20 A:14 +1 EM:07 +1 EM:07 W:00 写入 EM:07 R3:14 +1 EM:1C 写入 EM:1C A:00 +1 EM:40 +1 EM:40 W:00 写入 EM:40 A:00 +1 EM:4E +1 EM:4E W:01 写入 EM:4E A:01 +1 EM:18 写入 EM:18 ST:01 +1 EM:48 +1 EM:48 A:8A 写入 EM:48 R0:14 +1 EM:46 +1 EM:46 A:00 写入 EM:46 R2:01 +1 EM:2D +1 EM:2D A:16 写入 EM:2D R1:0B POP A ADC A,#00 14 15 1C 4000 将进位加到A寄存器中。 AD A,R2 17 4E 将A寄存器的值与R2的内容进行加法操作,运算结果送入A寄存器。 将运算后的A寄存器的结果保存在堆栈中。 将R0左移一位,并且将移出的最高位送入到CF中。 将R2带进位左移一位。 PUSH A SL R0 18 19 18 48 SLL R2 1A 46 SHR R1 1B 2D 对R1中的值右移一位,不涉及进位。 GOTO 0A TEST R1,#FF 1C 0A 380A 跳转到0A地址。 15FF 测试R1寄存器值是否为0。 写入 +1 EM:38 +1 写入 EM:0A +1 +1 +1 +1 +1 写入 EM:15 EM:FF W:FF EM:FF A:0B EM:FF JZ 1E TEST R1,#01 0C 0E 341E 如果Z标志位为0,则跳转到1E地址。 1501 测试R1的最低位是否为1。 C6FFFF CBFFFF C7FFEF FFF7F7 FFFE93 CBFFFF C6FFFF CBFFFF FFF7F7 CBFFFF FFF7EF FFFA98 CBFFFF FFFF57 CBFFFF C7FFEF FFFE94 CBFFFF FFF7EF FFFE90 CBFFFF FFEF9F CBFFFF FFF7F7 FFFADF CBFFFF FFF7F7 FFFBDF CBFFFF FFF7F7 FFF9BF CBFFFF C6FFFF CBFFFF C7FFEF FFF7F7 FFFE93 CBFFFF C6FFFF CBFFFF C7FFEF FFF7F7 FFFE93 写入 +1 EM:34 +1 写入 EM:1E +1 +1 +1 +1 +1 写入 EM:15 EM:01 W:01 EM:01 A:16 EM:01 JZ 19 MOV A,R0 ADD R3,A 10 12 13 3419 如果Z标志位为0,则跳转到19地址。 20 07 将R0的值送入到A累加寄存器中。 R3的值与A寄存器的值相加,结果送入R3寄存器。 从堆栈中弹出栈顶内容,放入累加寄存器A中。 写入 +1 EM:34 +1 写入 EM:19 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 EM:20 写入 EM:20 A:14 +1 EM:07 +1 EM:07 W:00 写入 EM:07 R3:14 +1 EM:1C 写入 EM:1C A:00 +1 EM:40 +1 EM:40 W:00 写入 EM:40 A:00 +1 EM:4E +1 EM:4E W:01 写入 EM:4E A:01 +1 EM:18 写入 EM:18 ST:01 +1 EM:48 +1 EM:48 A:8A 写入 EM:48 R0:14 +1 EM:46 +1 EM:46 A:00 写入 EM:46 R2:01 +1 EM:2D +1 EM:2D A:16 写入 EM:2D R1:0B POP A ADC A,#00 14 15 1C 4000 将进位加到A寄存器中。 AD A,R2 17 4E 将A寄存器的值与R2的内容进行加法操作,运算结果送入A寄存器。 将运算后的A寄存器的结果保存在堆栈中。 将R0左移一位,并且将移出的最高位送入到CF中。 将R2带进位左移一位。 PUSH A SL R0 18 19 18 48 SLL R2 1A 46 SHR R1 1B 2D 对R1中的值右移一位,不涉及进位。 GOTO 0A TEST R1,#FF 1C 0A 380A 跳转到0A地址。 15FF 测试R1寄存器值是否为0。 写入 +1 EM:38 +1 写入 EM:0A +1 +1 +1 +1 +1 写入 EM:15 EM:FF W:FF EM:FF A:0B EM:FF JZ 1E TEST R1,#01 0C 0E 341E 如果Z标志位为0,则跳转到1E地址。 1501 测试R1的最低位是否为1。 写入 +1 EM:34 +1 写入 EM:1E +1 +1 +1 +1 EM:15 EM:01 W:01 EM:01 A:16 CBFFFF JZ 19 MOV A,R0 ADD R3,A 10 12 13 3419 如果Z标志位为0,则跳转到19地址。 20 07 将R0的值送入到A累加寄存器中。 R3的值与A寄存器的值相加,结果送入R3寄存器。 从堆栈中弹出栈顶内容,放入累加寄存器A中。 C6FFFF CBFFFF FFF7F7 CBFFFF FFF7EF FFFA98 CBFFFF FFFF57 CBFFFF C7FFEF FFFE94 CBFFFF FFF7EF FFFE90 CBFFFF FFEF9F CBFFFF FFF7F7 FFFADF CBFFFF FFF7F7 FFFBDF CBFFFF FFF7F7 FFF9BF CBFFFF C6FFFF CBFFFF C7FFEF FFF7F7 FFFE93 CBFFFF C6FFFF CBFFFF C7FFEF FFF7F7 FFFE93 CBFFFF C6FFFF CBFFFF +1 写入 EM:01 写入 +1 EM:34 +1 写入 EM:19 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 EM:20 写入 EM:20 A:14 +1 EM:07 +1 EM:07 W:00 写入 EM:07 R3:14 +1 EM:1C 写入 EM:1C A:00 +1 EM:40 +1 EM:40 W:00 写入 EM:40 A:00 +1 EM:4E +1 EM:4E W:01 写入 EM:4E A:01 +1 EM:18 写入 EM:18 ST:01 +1 EM:48 +1 EM:48 A:8A 写入 EM:48 R0:14 +1 EM:46 +1 EM:46 A:00 写入 EM:46 R2:01 +1 EM:2D +1 EM:2D A:16 写入 EM:2D R1:0B POP A ADC A,#00 14 15 1C 4000 将进位加到A寄存器中。 AD A,R2 17 4E 将A寄存器的值与R2的内容进行加法操作,运算结果送入A寄存器。 将运算后的A寄存器的结果保存在堆栈中。 将R0左移一位,并且将移出的最高位送入到CF中。 将R2带进位左移一位。 PUSH A SL R0 18 19 18 48 SLL R2 1A 46 SHR R1 1B 2D 对R1中的值右移一位,不涉及进位。 GOTO 0A TEST R1,#FF 1C 0A 380A 跳转到0A地址。 15FF 测试R1寄存器值是否为0。 写入 +1 EM:38 +1 写入 EM:0A +1 +1 +1 +1 +1 写入 EM:15 EM:FF W:FF EM:FF A:0B EM:FF JZ 1E TEST R1,#01 0C 0E 341E 如果Z标志位为0,则跳转到1E地址。 1501 测试R1的最低位是否为1。 写入 +1 EM:34 +1 写入 EM:1E +1 +1 +1 +1 +1 写入 EM:15 EM:01 W:01 EM:01 A:16 EM:01 JZ 19 10 3419 如果Z标志位为0,则跳转到19地址。 写入 +1 EM:34 +1 写入 EM:19 MOV A,R0 ADD R3,A 12 13 20 07 将R0的值送入到A累加寄存器中。 R3的值与A寄存器的值相加,结果送入R3寄存器。 从堆栈中弹出栈顶内容,放入累加寄存器A中。 FFF7F7 CBFFFF FFF7EF FFFA98 CBFFFF FFFF57 CBFFFF C7FFEF FFFE94 CBFFFF FFF7EF FFFE90 CBFFFF FFEF9F CBFFFF FFF7F7 FFFADF CBFFFF FFF7F7 FFFBDF CBFFFF FFF7F7 FFF9BF CBFFFF C6FFFF CBFFFF C7FFEF FFF7F7 FFFE93 CBFFFF C6FFFF CBFFFF FFFF57 CBFFFF C7FBFF CBFFFF FFF7EF FFFA98 CBFFFF CBFFFF +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 EM:20 写入 EM:20 A:14 +1 EM:07 +1 EM:07 W:00 写入 EM:07 R3:14 +1 EM:1C 写入 EM:1C A:00 +1 EM:40 +1 EM:40 W:00 写入 EM:40 A:00 +1 EM:4E +1 EM:4E W:01 写入 EM:4E A:01 +1 EM:18 写入 EM:18 ST:01 +1 EM:48 +1 EM:48 A:8A 写入 EM:48 R0:14 +1 EM:46 +1 EM:46 A:00 写入 EM:46 R2:01 +1 EM:2D +1 EM:2D A:16 写入 EM:2D R1:0B POP A ADC A,#00 14 15 1C 4000 将进位加到A寄存器中。 AD A,R2 17 4E 将A寄存器的值与R2的内容进行加法操作,运算结果送入A寄存器。 将运算后的A寄存器的结果保存在堆栈中。 将R0左移一位,并且将移出的最高位送入到CF中。 将R2带进位左移一位。 PUSH A SL R0 18 19 18 48 SLL R2 1A 46 SHR R1 1B 2D 对R1中的值右移一位,不涉及进位。 GOTO 0A TEST R1,#FF 1C 0A 380A 跳转到0A地址。 15FF 测试R1寄存器值是否为0。 写入 +1 EM:38 +1 写入 EM:0A +1 +1 +1 +1 +1 写入 EM:15 EM:FF W:FF EM:FF A:0B EM:FF JZ 1E POP A MOV R2,#00 ADD R2,A 0C 14 1F 21 341E 如果Z标志位为0,则跳转到1E地址。 1C 从堆栈中弹出栈顶内容,放入累加寄存器A中。 写入 +1 EM:34 +1 写入 EM:1E +1 +1 +1 +1 +1 +1 EM:1C 写入 EM:1C A:00 +1 EM:26 写入 EM:26 R2:00 +1 EM:06 +1 EM:06 W:00 写入 EM:06 R2:0B 写入 EM:3C 2600 把立即数0送入R2寄存器中。 06 将R2寄存器和A寄存器的内容进行加法运算,运算结果送入R2中。 程序结束。 ENDP

14 3C


东北大学计算计组成原理课程设计报告 - 图文(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:1万头生猪养殖及年产6万吨有机肥项目可行性研究报告 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: