组原课设加减交替法的原码一位除.docx

上传人:b****1 文档编号:374141 上传时间:2022-10-09 格式:DOCX 页数:16 大小:99.03KB
下载 相关 举报
组原课设加减交替法的原码一位除.docx_第1页
第1页 / 共16页
组原课设加减交替法的原码一位除.docx_第2页
第2页 / 共16页
组原课设加减交替法的原码一位除.docx_第3页
第3页 / 共16页
组原课设加减交替法的原码一位除.docx_第4页
第4页 / 共16页
组原课设加减交替法的原码一位除.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

组原课设加减交替法的原码一位除.docx

《组原课设加减交替法的原码一位除.docx》由会员分享,可在线阅读,更多相关《组原课设加减交替法的原码一位除.docx(16页珍藏版)》请在冰豆网上搜索。

组原课设加减交替法的原码一位除.docx

组原课设加减交替法的原码一位除

航空航天大学

 

课程设计报告

课程设计名称:

计算机组成原理课程设计

课程设计题目:

加减交替法的原码一位除

说明:

结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要求;数据不实,不予通过。

报告和电子数据必须作为实验现象重复的关键依据。

学术诚信声明

本人声明:

所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果。

尽我所知,除了文中特别加以标注或致中所罗列的容以外,报告中不包含其他人己经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料。

与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了意。

报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果。

 

本人签名:

日期:

年月日

 

第1章总体设计方案1

1.1设计原理1

1.2设计思路1

1.3设计环境2

第2章详细设计方案5

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

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

3.1程序调试8

3.2程序测试及结果分析8

参考文献11

附录(关键部分程序清单)12

第1章总体设计方案

1.1设计原理

原码一位除,即两个原码数相除,商的符号为除数和被除数的符号异或值。

采用汇编语言实现定点原码一位除法器,定点除法运算有两种不同的实现方法,一种是恢复余数法,即在运算过程中,必须先算减法,若余数为正,才知道够减,若余数为负,则知道不够减,不够减时必须恢复原来的余数,以便再继续往下运算。

另一种是不恢复余数法,又称加减交替法,此次设计即是采用加减交替法来实现四位二进制数的定点原码一位除法。

定点原码的除法要求小数除以大数才能这么算。

1.2设计思路

实验开始时将实验数据从实验箱的开关输入到R0,R1,R2三个寄存器中,R2为被除数,R1为除数,R0为商。

最后结果在OUT寄存器中显示。

加减交替法的实现是对恢复余数法的一种修正,当某一次求得的余数差值为负时,不恢复它,继续求下一位的商,但用加上除数加上[—Y]补(即相当于减去Y的绝对值)的办法来取代(-Y)的操作,其他操作依然不变。

开始第一步即加上[—Y]补,在开始判断余数正负:

(1)当余数为正时,商上“1”,求下一位商的办法是余数左移一位,再减去除数;

(2)当余数为负数时,商上“0”,求下一位商的办法是余数左移一位,再加上除数。

(3)这种方法不用恢复余数,但若最后一次上商

为“0”,而又需要得到正确的余数,则在这最后一次仍需恢复余数

 

例如:

X的值为0.1011,Y的值为0.1101,求

被除数操作说明

00101100000

+110011+[-Y]补

11111000000不够减,商上0

11110000000左移

+001101+Y

00100100001够减,商上1

01001000010左移

+110011+[-Y]补

00010100011够减,商上1

00101000110左移

+110011+[-Y]补

11110100110不够减,商上0

11101001100左移

+001101+Y

00011101101够减,商上1

余数商

 

1.3设计环境

伟福COP2000实验环境介绍

COP2000计算机组成原理实验系统由实验平台、开关电源、软件三大部分组成。

COP2000模型机包括了一个标准CPU所具备所有部件,这些部件包括:

运算器ALU、累加器A、工作寄存器W、左移门L、直通门D、右移门R、寄存器组R0-R3、程序计数器PC、地址寄存器MAR、堆栈寄存器ST、中断向量寄存器IA、输入端口IN、输出端口寄存器OUT、程序存储器EM、指令寄存器IR、微程序计数器uPC、微程序存储器uM,以及中断控制电路、跳转控制电路。

其中运算器和中断控制电路以及跳转控制电路用CPLD来实现,其它电路都是用离散的数字电路组成。

硬件图如图1.3cop2000硬件图所示:

图1.3cop2000硬件图

 

微程序控制部分也可以用组合逻辑控制来代替COP2000集成调试软件(即仿真测试软件)共分为6部分:

1、主菜单区实现实验仪的各项功能的菜单,包括[文件][编辑][汇编][运行][帮助]五大项,各项线面做详细介绍。

快捷图标区快速实现各项功能按键

2、源程序/机器码区在此区域有源程序窗口,反汇编窗口,EM程序代码窗口。

源程序用于输入,显示,编辑汇编源程序:

反汇编窗口显示程序编译后的机器码及反汇编的程序;EM程序代码窗口用数据方式机器码。

3、机构图/逻辑波形区结构图能结构化显示模型机的各部件,以及运行时数据走向寄存器值;逻辑波形图能显示模型机运行时所有信号的程序。

4、微程序/跟踪区微程序表格用来显示程序运行时微程序的时序,及每个时钟脉冲各控制位的状态,跟踪表用来记录显示程序及微程序执行的轨迹,指令系统可以帮助你设计新的指令系统。

5、寄存器状态区用来显示程序执行时各部寄存器的值。

模型机的指令码为8位,根据指令类型的不同,可以有0到2个操作数。

指令码的最低两位用来选择R0-R3寄存器,在微程序控制方式中,用指令码做为微地址来寻址微程序存储器,找到执行该指令的微程序。

而在组合逻辑控制方式中,按时序用指令码产生相应的控制位。

在本模型机中,一条指令最多分四个状态周期,一个状态周期为一个时钟脉冲,每个状态周期产生不同的控制逻辑,实现模型机的各种功能。

可以在.ASM中输入要编写的程序,写完之后保存成.ASM文件,就可以正常执行了。

汇编之后点反汇编能找到反汇编之后的代码便于查找错误以及检查地址是否正确。

用到的核心指令介绍:

ADDA,R?

------------将寄存器R?

的值加入累加器A中

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

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

ANDA,#II-----------累加器A“与”立即数II

(2)数据传送指令

MOVA,R?

------------将寄存器R?

的值送到累加器A中

MOVR?

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

MOVR?

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

(3)移位指令

RRA----------------累加器A右移

RLA----------------累加器A左移

(4)跳转指令

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

JMPMM---------------跳转到MM

(5)位运算

ANDA,R?

------------累加器A“与”寄存器R?

的值

第2章详细设计方案

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

本次课程设计采用伟福COP2000实验仪软件,利用伟福COP2000的指令集编程实现。

定点原码一位除,算法为加减交替法,当余数为负时,需加上除数,将其恢复城原来的余数。

商值的确定是通过比较被除数和除数的绝对值的大小,即x”-y”实现的,而计算机只设加法器,所以需要将x”-y”操作变为|x|补+|y|补得操作。

开始第一步即加上[—Y]补,在开始判断余数正负,当余数为正时,商上“1”,求下一位商的办法是余数左移一位,再减去除数;当余数为负数时,商上“0”,求下一位商的办法是余数左移一位,再加上除数。

这种方法不用恢复余数,但若最后一次上商

为“0”,而又需要得到正确的余数,则在这最后一次仍需恢复余数。

上边所说的是我们在课堂上学习的定点原码一位除加减交替法,课程设计的要用Cop2000编程实现定点原码除法,就是将上述的过程转化成程序通过汇编来实现。

编写程序区域如图2.1所示:

图2.1程序区

2.2流程图的设计与实现

图2.2总流程图

R0、R1、R2均是8位的寄存器。

R0是商,R1是除数,R2为被除数。

商的结果在OUT中输出。

商的符号由寄存器r3表示,R3是00则表示商的结果是正数,若为01则为负数,流程图如图2.2所示。

除法开始前,R0寄存器被清0,准备接收商,被除数的原码放在R2寄存器中,除数的原码放在R1寄存器中,计数器R3中存放需要移位的次数。

除法开始后,用被除数减去除数即是加上[—Y]补,若运算结果大于0,商上1。

若结果小于0,商上0。

然后被除数左移一位,计数器减1。

当计数器R3容为0时,结束运算。

跳出循环。

最后在判断一次余数正负只上商不移位。

 

对应的硬件图:

图2.2硬件图

 

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

3.1程序调试

编写程序的时候遇到了不少的问题,因为每一条指令所占据的地址是不同的,有的指令占绝两个地址,有的占据一个地址,在编写指令的时候会并不知道要指令要跳转的地址,所以要一条条写,写完后反汇编,看地址是否正确。

将程序写完输入到cop2000当中,保存。

运行提示无法读取,后来经过上网查找资料发现保存的格式不正确文件的后缀名需要改成需要改成.ASM。

在刚开始也发现了程序中不少的小错误,进行单步调试的时候一一的都检查出来了。

有一次运行会提示第几行错误,发现是jz跳转的地址不对,查看反汇编,逐一进行地址的核对,最终找到了错误,改正后,程序可以正常运行。

图3.1反汇编程序

3.2程序测试及结果分析

程序能正常运行了,下面要进行的是对程序进行测试,看程序的算法是否会出现问题以及算出来的数是否会错误。

测试的时候我用了两组数进行测试需要注意的是定点原码一位除的时候要要用小数除以大数即R2中的被除数要小于R1中的除数。

测试一:

被除数R2=0BH除数R1=0DH

图3.2测试结果一

商的结果为0D,正数;余数07;结果正确

 

测试二:

被除数R2=19H除数R1=0bH

图3.3测试结果二

商的结果为0D,负数(因为R3是01为负);余数01;结果正确

经过测试该程序正确。

 

测试三:

被除数R2=09H除数R1=0bH

图3.4测试结果三

商的结果为0D,正数(因为R3是00为负);余数01;结果正确

经过测试该程序正确。

 

测试四:

被除数R2=0BH除数R1=1DH

图3.5测试结果四

商的结果为0D,负数(因为R3是01为负);余数07;结果正确

经过测试该程序正确。

参考文献

[1]周大海.计算机组成原理实验与课程设计[M].航空航天大学,2015

[2]王爱英.计算机组成与结构(第四版)[M].:

清华大学2006

[3]唐朔飞.计算机组成原理(第二版)[M].:

高等教育,2008

[4]昕燕.EDA技术实验与课程设计[M].:

清华大学,2006

[5]江国强.EAD技术习题与实验[M].:

电子工业,2005

[6]景华.可编程程逻辑器件与EDA技术[M].:

东北大学,2001

[7]延滨.微型计算机系统原理、接口与EDA设计技术[M].:

邮电大学,2006

 

附录

序号

代码

机器码

注释

00

MovR2#?

H

8E19

初始化被除数放r2

02

MovR1#?

H

8D0B

初始化除数放r1

04

MovA,R2

72

R2放A中

05

MOV9FH,A

889F

将A中的被除数

存到9F

07

MOVA,R1

71

R1放A中

08

MOV9EH,A

889E

将A中的除数

存到9E

0A

MOVR0,#

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

当前位置:首页 > 考试认证 > 从业资格考试

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

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