COP实现补码两位乘Word格式文档下载.docx

上传人:b****6 文档编号:18909089 上传时间:2023-01-02 格式:DOCX 页数:13 大小:217.92KB
下载 相关 举报
COP实现补码两位乘Word格式文档下载.docx_第1页
第1页 / 共13页
COP实现补码两位乘Word格式文档下载.docx_第2页
第2页 / 共13页
COP实现补码两位乘Word格式文档下载.docx_第3页
第3页 / 共13页
COP实现补码两位乘Word格式文档下载.docx_第4页
第4页 / 共13页
COP实现补码两位乘Word格式文档下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

COP实现补码两位乘Word格式文档下载.docx

《COP实现补码两位乘Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《COP实现补码两位乘Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。

COP实现补码两位乘Word格式文档下载.docx

部分积+[X]补,右移两位

011

-1

部分积+[-X]补,右移两位

100

101

110

2

部分积+2[X]补,右移两位

111

部分积+0,右移两位

1.2设计思路

(1)被乘数X,乘数Y均以补码形式参加运算,乘法的每一步对乘数的两位进行,即右移两位。

(2)乘数[Y]在计算时采用两位符号位,初始附加位添一个0。

(3)被乘数[X]在计算时采用三位符号位。

(4)部分积初始为0,计算过程中采用三位符号位。

(5)每一步计算,按照乘数的最低三位的值查找操作规则表1,根据上一步的部分积和规则表的操作,计算本步的部分积。

(6)每步操作后,将部分积和乘数右移两位,乘数右移后,原来的最低两位被移除出舍弃,其余各位位权依次下降。

重复(4),但最后一步操作不右移。

1.3设计环境

利用伟福COP2000型计算机组成原理实验仪软件和计算机,在COP2000实验仪软件上编程实现补码两位乘。

伟福COP2000实验仪软件的指令集分为如下大类:

算术运算指令、逻辑运算指令、移位指令、数据传输指令、跳转指令、中断返回指令、输入输出指令。

本程序所用到的相应的指令集如下:

(1)算术逻辑运算指令

ADDA,R?

将寄存器R?

的值加入到累加器A中

ADDA,#II立即数#II加入到累加器A中

SUBA,#II从累加器中减去立即数后加入到累加器A中

ANDA,R?

累加器A与寄存器R?

的值

ORA,R?

累加器A或寄存器R?

(2)数据传送指令

MOVA,R?

将寄存器R?

的值送到累加器A中

MOVA,MM将存储器MM地址中的值送到累加器A中

MOVMM,A将累加器A中的值送到存储器MM地址中

MOVR?

A将累加器A中的值送到寄存器A中

#II将立即数II送到寄存器R?

RRA累加器右移指令

RLA累加器左移指令

(3)跳转指令

JCMM若进位标志置1,跳转到MM地址

JZMM若零标志位置1,跳转到MM地址

JMPMM跳转到MM

如下为COP2000计算机组成原理实验软件截图:

图2COP2000运行环境

第2章详细设计方案

2.1算法与程序的设计与实现

本课设采用伟福COP2000实验仪软件和计算机实现补码两位乘功能,利用伟福COP2000的指令集编程实现。

算法具体描述:

(1)计算复杂性包括:

+[X]补,+2[X]补,+[-X]补,+2[-X]补;

(2)进行初始化,并且设置计数单元与建立特殊表。

因为每次计算需要进行三次移位,所以用MOVA,#03H与MOV9AH,A来将循环次数存入内存单元。

然后再进行初始化操作,将存储部分积的R1置零,再将用来存储特殊表的90H,97H内存单元置零。

接下来再通过输入的被乘数判断其正负,如果被乘数是负,在前面两位加上1,如果是整数则无需操作,直接构造特殊表。

(3)输入乘数后,将乘数移至最前端,执行LOOP2,首先设置移位次数,取出成熟后,判断乘数的后两位及附加位的值,根据所查的值访问特殊表,进而确定加数,之后将部分积与加数相加得到新的部分积,得到结果后,判断总循环是否结束,之后进行判断移位的操作,部分积的最高位如果是1,移位后仍然置1。

部分积最低位如果是1,乘数右移之后最高位置1.

(4)根据乘数后两位及附加位来确定R3,并通过R3间接访问特殊表。

将访问的数据作为加数与部分积相加,然后判断两次循环是否结束,如果两次运算循环结束,则结束运算,否则将部分积与乘数同时右移两位再根据有效位来通过R3访问特殊表。

相加移位运算结束后再将部分积与乘数同时右移一位,将数据位置有效,输出数据。

2.2流程图的设计与实现

本部分包含实现中主要部分的流程图

1.构造规则表:

图2.2.1构造规则表流程图

2.乘数处理操作:

图2.2.2乘数处理操作流程图

3.运算

图2.2.3运算流程图

4.输出

图2.2.4输出流程图

第3章程序调试与结果测试

3.1程序调试

调试过程中存在的问题:

(1)在输入以字母开头的十六进制数时,没有在字母前加上0,导致语法错误。

(2)在执行带进位右移操作是RRCA,因为之前没对指令集充分了解,导致用了错误的指令RRA。

(3)在对部分积移位操作时,如果最高位是1时,移位最高位仍然置1,当时考虑不够充分,没有置1,导致程序出错。

3.2程序测试及结果分析

结果展示:

输入:

2B23

输出:

1308

参考文献

[1]唐朔飞计算机组成原理(第2版).北京.高等教育出版社.2008

[2]白中英计算机组成原理(第4版).北京.科学出版社.2008

附录(源代码)

MOVA,#03H

MOV9AH,A

MOVA,#00H

MOVR1,A

MOV90H,A

MOV97H,A

LOOP:

IN

MOVR0,A

ANDA,#20H

JZM0

MOVA,R0

ORA,#0C0H

MOVR0,A

M0:

MOV91H,A

MOV92H,A

RLA

MOV93H,A

CPLA

ADDA,#01H

MOV95H,A

MOV96H,A

MOV94H,A

LOOP1:

MOVR2,A

LOOP2:

MOVA,#02H

MOV9BH,A

MOVA,R2

RRA

ANDA,#07H

ADDA,#90H

MOVR3,A

MOVA,R1

ADDA,@R3

MOVA,9AH

SUBA,#01H

JZLAST

MARK1:

ANDA,#80H

JZLOOP3

RRCA

JCLOOP4

ORA,#80H

MARK2:

MOVA,9BH

JZLOOP2

JMPMARK1

LOOP3:

JCLOOP5

JMPMARK2

LOOP4:

LOOP5:

LAST:

JCLOOP6

ANDA,#3FH

OUT

ANDA,#0F8H

JMPED

LOOP6:

ED:

END

课程设计总结:

课设本身的目的便是为了考察学生的个人学习和动手能力,本次课程设计对我来说是个很大的挑战,因为我个人认为我的计算机组成原理这门课程学的并不是很好,好在查阅了很多资料,也让我充分了解了补码两位乘的原理。

此次课程设计我也学到了很多基本理论,对我充分认识计算机的运算过程也有很大帮助。

同时,我对COP2000实验仪器及软件也有了充分的了解。

对我今后的实践也会有很大的帮助,同时也感谢老师课前的答疑,消除了我部分疑问。

通过本次课设,我认识到了只要努力去学,总能学到点东西。

但我个人认为本次课设还是不够完美,没有完全的符合课设的所有要求,只能在今后的学习中,更加努力,不断去完善,争取有更高的超越。

指导教师评语:

指导教师(签字):

      年月日

课程设计成绩

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 思想汇报心得体会

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1