基于8位模型机的定点原码一位乘法的实现

时间:2022-08-10 09:36:12

摘要:该文描述了一套在八位微程序控制的模型计算机上通过编程实现定点原码一位乘法的设计方案。通过对定点原码一位乘法的算法分析,绘制出了原码一位乘法操作流程控制图,利用模型计算机现有指令系统设计机器操作步骤并编写相应汇编语言程序,达到了在八位模型计算机中实现定点原码一位乘法的预期目的。通过本实验,加深了读者对模型机工作原理的理解,开拓了读者的思维。

关键词:计算机组成原理;模型机;原码一位乘法;微程序

中图分类号:TP313文献标识码:A文章编号:1009-3044(2012)22-5347-04

The Implementation of Point-Original Multiplication Based on 8-Bit Model Computer

SUN Xiao-li, FU Kun, GENG Heng-shan, WANG Xiao-dong, MI Hai-xiao

(School of Computer Science and Engineering, Hebei University of Technology, Tianjin 300401, China)

Abstract: This article describes a design to achieve a point-original multiplication by programming in 8-bit model computer of the micro program control. Through its algorithm analysis, the operation process control charts of the point-original multiplication can be mapped out. In this paper, the purpose of achieving point-original multiplication is realized by taking advantage of existing model computer instruction set as well as programming corresponding assembly language programs. By the experiment, it is probable to help readers understand the working principle of the model machine easily and expand their thinking.

Key words: computer organization; model computer; point-original multiplication; micro program

计算机组成原理课程是大学本科计算机科学与技术专业的主干课程,而计算机组成原理课程设计是学习这门课程的关键实践环节。在目前,大部分高校开设的实验课程以验证型实验为主,这样的实验缺乏综合性、设计性,不利于对学生的动手能力、设计能力的和创新意识的培养。该文针对传统实验的不足,设计了一套基于8位微程序控制的模型计算机实验平台的设计方案。通过实验环节,进一步融合贯通所学内容,明确计算机内部各个模块的工作流程及其原理,并利用简单指令系统实现在8位模型计算机上的定点原码一位乘法运算,使读者有了更大的想象空间、发挥空间,开拓了思维。

1定点原码一位乘法算法简介

原码一位乘法是从手算演变而来的:即用两个操作数的绝对值相乘,乘积的符号为两操作数符号的异或值(同号为正,异号为负)。以小数为例:设X= Xs.X1X2X3X4X5X6,Y= Ys.Y1Y2Y3Y4Y5Y6,则X*=|X|=00. X1X2X3X4X5X6,Y*=|Y|= 00.Y1Y2Y3Y4 Y5Y6。

乘积R=|X|×|Y|

符号Rs=XsYs

式中:Rs为乘积的符号,Xs和Ys为被乘数和乘数的符号。

原码一位乘的运算规则如下:

乘积的符号位由两原码符号位异或运算结果决定。

参加运算的操作数取其绝对值。

令乘数的最低位作为判定位,若为“1”,加被乘数;若为“0”,则加0。

累加后的部分积和乘数均右移一位。

重复n次③和④。

2实验平台介绍

本实验采用的硬件平台为8位单总线结构模型机,其分为四大模块:存储模块,运算模块,微程序控制模块和时序模块。存储模块主要功能是实现存储器的读写操作;运算器模块实现操作码和运算结果的输入输出,数据和地址信息采用分时复用的原则对总线实现共享;时序脉冲模块主要作用就是实现微程序的时序控制;微程序控制部分的主要作用是将指令译码成控制信息,并按操作次序将这些信息连接到有关部件,执行指令规定的操作。本模型机有24位控制位,用以控制寄存器的输入、输出,选择运算器的运算功能,存储器的读写。

3原码一位乘法运算的实现

在八位的原码一位乘运算中需用多个寄存器,除了被乘数存放的寄存器以外,还需要三个寄存器,分别存放乘数及部分积的低位、部分积的高位和计数器,再配上加法器及其他相应电路来完成乘法运算。当前应用于教学实验的8位微程序控制的模型计算机组成实验平台只包括三个通用寄存器组,因此本实验的运算需要借助存储器6116芯片来完成。乘数、被乘数以及部分积均存入存储器,用670芯片的C寄存器作计数器。将乘数调入寄存器,判断其最低位并右移一位写回存储器。根据乘法最后一位确定部分积是加被乘数还是加0(乘数最低位是1,则部分积加上被乘数绝对值,否则部分积加0),若加被乘数,则将其调入寄存器进行运算,然后判断部分积的最后一位,确定部分积右移后,移入乘数的是0还是1,逐位运算后加入符号位即可。8位微程序控制的模型计算机组成实验平台上原码一位乘运算基本配置框图如图1所示。

图1 8位微程序控制的模型计算机组成实验平台上原码一位乘运算基本配置

3.1原码一位乘法操作流程

乘法运算前,670芯片的A寄存器被清0,作为初始部分积,被乘数原码存放在6116芯片的X单元中,乘数原码存放在Q单元,计数器C中存放乘数的位数n(该文运算采用双符号8位数)。乘法开始后,首先确定乘积的符号,由于本实验采用的实验平台是针对本科教学的,其简化了指令系统,使其更利于学生从整体上把握计算机的工作流程,因此该平台的指令系统中不存在异或指令,故该文采用加法来实现符号位的判定,求出乘积的符号并存于S处,接着将被乘数和乘数从原码形式转换为绝对值形式。然后再根据乘法末位是1还是0来决定部分积是否加上被乘数,并逻辑右移一位,重复n次,最后加上符号位,即得运算结果。

原码一位乘法控制流程如图2所示。

3.2机器操作步骤设计

本实验以X=+0.110101,Y=-0.101010为例,则[X]原=00.110101,[Y]原=11.101010,根据机器完成的功能,可以分成以下几种操作过程:

1)预置地址操作

将开关K8置于输入位置,合上开关K6(单指运行状态),按A3键进行总清;将初始地址00000001置于数据开关上,按A2键输入初始地址。

2)输入程序操作

若地址没有置好,则重新做第1)步中操作,若地址已置好,K8、K6保持原来状态;输入初始地址后,将要输入的程序置于数据开关上,按A1键,这时输入的内容和单元的地址分别由数据灯和地址灯同时显示;如果下一个字节紧接上一个单元存放,则回到第2)步,将输入的下一条程序置于数据开关处,直至程序全部输入完毕。

第一步:输入被乘数、乘数、部分积以及辅助运算数据。根据实验平台的特点,本实验将被乘数、乘数、部分积均存入存储器6116芯片中,同时利用精简后指令集系统(只包含30条指令和3条面板控制指令),指令系统中不存在“异或”以及“右移多位”指令,根据该模型指令系统情况本实验采用“加法”和“与”指令结合完成。在输入乘数、被乘数时,利用与0011 1111进行“与指令”操作,取得乘数及被乘数的绝对值并存入存储器中,内存存储结构如图3所示。

第二步:利用“与”指令取得乘数、被乘数的符号,并根据乘数与被乘数的符号位判断积的符号,然后将符号写入1000 1111地址单元内,如表1存储符号位所示。

本示例中走分支1,将乘积符号0011 0000写入1000 1111地址单元内。

第三步,除两位符号位外,两个6位数相乘,总共需要进行6次加法运算和6次移位运算(移位操作通过与辅助数据进行加法运算)。进行运算时,由乘数的末位数值确定被乘数是否与原部分积相加,然后右移一位,形成新的部分积,同时乘数也右移一位,由次低位作新的末位,空出最高位放置部分积的最低位。每次做加法时,被乘数仅仅与原部分积的高位相加,其低位被移至乘数所空出的高位位置。本实验平台中寄存器不是级联的,因此无法直接实现将部分积的低位移至乘数的高位。本实验通过判断部分积的最低位是0还是1来确定乘数是直接右移一位还是与0011 1111做与运算。运算过程如表2所示。

图2原码一位乘法控制流程

图3内存存储结构

表1存储符号位

表2原码一位乘法运算过程

第四步,调整输出结果。在存储器中,部分积的高6位、低6位和乘积的符号位分别存储在6116芯片的不同内存里,为了方便结果的输出显示,需对其进行调整。首先判断部分积的第7位是否为1,若为1则溢出停机,否则将部分积的高6位(00100010)右移两位至低6位(00110010)部分积的存储单元的高两位(001000)和(10110010),然后将符号位加上部分积高位单元的第5位和第6位,再进行存储(00111000)。

3)检查内存

用第1)步中的方法,将要检查的单元地址0000 0001预置好;将开关K8置于检查处,合上开关K6;按A1,这时被查单元地址和内容均分别由地址灯和数据灯显示;若顺序检查下一个单元内容,则再按A1键,否则重新预置要检查的地址,重复上面操作直到检查完毕。

4)运行操作

用第1)步中的方法,把要执行的程序入口地址预置好;根据需要可合上单微指开关K7或单指令开关K6(当这两个开关均打开,机器自动连续运行),并置K8于运行处;按A1键后,机器开始执行程序。

4结束语

以上遵循分析、设计、实现的思路,设计了一套基于NJS-1的八位原码一位乘法的方案,该方案是对组成原理课程的加深和延续。通过对原码一位乘法运算的设计,使读者进一步理解机器中乘法是如何进行运算的,加深其对计算机工作原理的理解,尤其是指令系统的工作原理,以及各部件间的协调和配合;同时提供读者一种如何在现有实验平台上利用简单指令系统实现复杂机器指令的设计方案,从而开拓读者的思维,对全面提高教学质量具有长足意义。

参考文献:

[1]耿恒山.计算机组成原理[M].北京:机械工业出版社,2009.

[2]刘永铎.手工模拟计算机进行原码一位乘法的实现方案[J].甘肃广播电视大学学报,2008,18(4):84-86.

[3]王晓兰. JZYL-II型计算机组成原理实验平台研制与开发[J]].实验室研究与探索,2009,28(9):80-82.

[4]张宇华,周莹.《计算机组成原理》综合性、设计性实验的开发与实现[J].现代计算机,2004(9):98-100.

[5]张宇华.《计算机组成原理》实验的开发与提高[J].现代计算机,2010(4):93-95.

[6]戚梅,程勇.计算机组成原理实验教程[M].北京:北京航空航天大学出版社,2008.

[7]任益夫,从艳,刘喜梅.一种定点原码一位乘法器的设计与实现[J].开发研究与设计技术,2007(8):443-447.

[8]唐朔飞,刘旭东,包健,熊桂喜.“计算机组成原理”课程教学实施方案[J].中国大学教学,2010(11):42-45.

上一篇:城市园林绿化工程建设的全程管理问题分析 下一篇:市政园林项目质量控制措施