评语:课中检查完成的题号及题数:课后完成的题号与题数:成绩:自评分:92实验报告实验名称:基于复杂模型机两个8位二进制数乘法的实现日期:2012/1/9班级:学号:姓名:班级:学号:姓名:一、实验目的:,,、实验内容:,,、项目要求及分析:实验内容1、2按照实验指导书进行,略。实验内容3 分析:要求利用复杂模型机现有的指令系统以及硬件电路设计一段实现八位二进制数相乘的程序。因为乘法在计算机中有多种算法实现,包括整数乘、小数乘、原码乘、补码乘等等,因为此次实验并不要求给出一个完整的实用乘法程序段,故实验程序只实现两个八位二进制整数无符号相乘运算。采用算法如下:乘数A A7A6A5A4A3A2A1A0 被乘数B 乘积C=B·A0+2(B·A1+2(B·A2+……2·B·A7)))))) 其中Ai为0或者1,在机器中使用原码表示2*X是使X左移1位。若不采用循环模式而是直接使用指令将该算法的乘积等式直接表示出来,需要A,B,RL(结果低位),RH(结果高位)四个通用寄存器;而若使用循环模式,则需要除A、B、RL、RH外的CX(控制循环次数以及高低位相与寄存器)和AD(取中间结果高低位)的辅助。此次实验为了充分的接触指令系统,采用循环模式。由于复杂模型机中只有R0、R1、R2、R3四个通用寄存器,故一些原来计划使用的寄存器改为使用主存。另外,因为低位结果相加可能进位,所以修改原微指令ADD为带进位加法。四、具体实现:画出算法流程图说明:该流程图使用了以下6个寄存器CX,AD,A,B,RL,RH;其中CX作为计数以及辅助生成AD的,CX变化为10000000 初始值0000000100000010……10000000 程序结束AD作为被乘数的高低位划分数据,其中被乘数B中高位对应的AD的位置1,低位置0:00000000 初始值00000001 CXORAD->AD00000011……11111111另流程图中所用6个寄存器在实现中使用MEM代替,CX,AD,A,B使用R2作RL,R3作RH。,若需修改指令系统,画出修改后的微程序流程图 需修改一条微指令即A+B->RD修改为进位加法,:;机器指令$P0020;INPUTTOR0$P0100$P0222;INPUTTOR2$P0300$P0461;SETR1TO00$P0500$P0663;SETR3TO00$P0700$P0863;SETR3TOF8$P09F8$P0AD3;STORER3TO80ASATAG$P0B80;循环主体$P0C63;SETR3TO01$P0D01$P0E1B;ANDR2,R3$P0FF0;BZCTO12$P1012$P1101;ADDR0,R1$P1263;SETR3TO01$P1301$P14AD;RRR3,R1$P15AE;RRR3,R2$P1663;SETR3TO7F$P1
复杂模型机实验报告 来自淘豆网m.daumloan.com转载请标明出处.