BCD码的加法(DOC)_第1页
BCD码的加法(DOC)_第2页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、沈阳航空航天大学课程设计报课程设计报课程设计名称:计算机组成原理课程设计计算机组成原理课程设计课程设计题目:COP2000 实现 BCD 码的加法院(系):计算机学院专业:计算机科学与技术班级:3401010 x学号:20130401010 xx姓名:张伟指导教师:杨华完成日期:2016 年 1 月 15 日沈阳航空航天大学课程设计报告目录目录第第 1 章总体设计方案章总体设计方案 31.1 设计原理 31.2 设计思路 31.3 设计环境 3第第 2 2 章详细设计方案章详细设计方案 52.1算法与程序的设计与实现 53.3.程序核心部分流程图。如图程序核心部分流程图。如图 2.2.32.2

2、.3 所示所示 6图图 2.2.32.2.3 核心部分流程图核心部分流程图 7第第 3 3 章程序调试与结果测试章程序调试与结果测试 83.1 程序调试 83.2 程序测试及结果分析 8参考文献参考文献 10附录(源代码)附录(源代码)11沈阳航空航天大学课程设计报告错误!未指定书签。错误!未指定书签。第1章总体设计方案-3-第 1 章总体设计方案1.1 设计原理设计原理课程设计要求加数、 被加数以及和都采用压缩的 BCD 码, 都是 6 位十进制数,但是从 COP2000 上面只能输入两位十六进制数,即 8 位二进制数。所以在设计时将6 位十进制数分为 3 组,每组 2 位,进行相加,找 6

3、 个存储单元对 3 组数的低位运算和高位运算进行存储,最后两两求和,将最低两位、中间两位、最高两位结果分别放入 r3、r2、r1 中。设计时最核心的四个问题我认为分别是将最低位数据左移四位,将数据与 F0 相与,设计计数单元与进位位存储单元。1.2 设计思路设计思路COP2000 上面每次只能输入两个十六进制数,即 8 个二进制数,现在欲将 6位十进制数输入,只能分成 3 组,3 组分别相加。在进行加法时,要考虑到进位,但是 COP2000 只能判别最高位是否有进位,所以在进行加法时,将最低位数据左移4 次,放到最高位,便可以顺利解决判断进位问题。在进行每组数据最高位加法时,要将数据与 OFO

4、H 相与,使低四位清零。在进行加法时,由于考虑到进位问题,所以设计 f7 单元存储进位,进位存储单元初始时置 0,每当产生进位时,MOVA,#10HMOV0F0H,A 使进位单元置 1,所以每进行加法时,都要将进位单元数据相加。由于数据是分成三组进行,所以在进行运算时需要进行选择,初始时将计数单元置 0,进行最后两位运算时计数单元加 1,进行中间两位运算时,置数单元继续加 1,最高两位运算在加 1,当进行选择时,使计数单元数据减去 2,当为最低两位时,1 减 2 发生借位,进而执行 JC 所指向的地址。当计数单元数据为 2 减去 2 时,结果等于 0,进而执行 JZ 所指向单元,当计数单元数据

5、为 3 时,减去 2,结果为 1,不执行 JC 与 JZ 的指令,执行 JMP 所指向的地址。三组数据的低位高位结果分别放入 6 个存储空间中,最后 R0 存储最高位两位数据计算结果,R1 存储中间两位数据计算结果,R3 存储最低两位数据计算结果。1.3 设计环境设计环境COP2000 实验平台对应的模型机为 8 位机,数据总线和地址总线均为 8 位。包括一个标准 CPU 所具备所有部件,这些部件包括:运算器 ALU、累加器 A、工作寄存器 W、左移门 L、右移门 R、直通门 D、寄存器组 R0R3、程序计数器 PC、地址寄存器 MAR、堆栈寄存器 ST、中断向量寄存器 IA、输入端口 IN、

6、输出端口寄存器OUT、程序存储器 EM、指令寄存器 IR、微程序计数器 uPC、微程序存储器。在 COP2000 仿真软件上实现编程,所应用的编程语言为汇编语言。在伟福试验仪中有相关的模型机指令集分为几大类:算术运算指令、数据传输指令、移位指令、逻辑运算指令、跳转指令、中断返回指令、输入输出指令。本程序所用到的相应的指令集(1)算术逻辑运算指令ADDA,R?将寄存器 R?的值加入累加器 A 中沈阳航空航天大学课程设计报告错误!未指定书签。错误!未指定书签。第1章总体设计方案-4-ADDA,#II 立即数#II 加入累加器 A 中SUBA,#II 从累加器中减去立即数后加入累加器 A 中ANDA

7、,#II 累加器 A“与”立即数 II2)数据传送指令MOVA,R?将寄存器 R?的值送到累加器 A 中MOVA,MM 将存储器 MM 的地址的值送到累加器 A 中MOVMM,A 将累加器 A 的值送到存储器 MM 的地址中MOVR?,#II 将立即数 II 存放到寄存器 R?中MOVR?,A 将累加器 A 中的值送到寄存器 A 中3)移位指令RRA 累加器 A 右移RLA 累加器 A 左移4)跳转指令JZMM 若零标志位置 1,跳转到 MM 地址JMPMM 跳转到 MMJCMM 若借位标志置 1,跳转到 MM 地址5)位运算ANDA,R?累加器 A“与”寄存器 R?的值如下为 COP2000

8、 实验软件截图:图图 1.3.1COP20001.3.1COP2000 计算机组成原理集成调试软件计算机组成原理集成调试软件第第 2 2 章详细设计方案章详细设计方案沈阳航空航天大学课程设计报告错误!未指定书签。错误!未指定书签。第2章详细设计方案-5-2.12.1 算法与程序的设计与实现算法与程序的设计与实现本课设采用伟福 COP2OOO 实验仪软件和计算机实现 6 位十进制 BCD 码相加功能,利用伟福 COP2000 的指令集编程实现。(a)存数:将两个数据分为三组共 6 部分存储到内存单元中。存入的内存单元分别是 0f0h、0f1h、0f2h、0f3h、0f4h、0f5h。(b)设计进

9、位位单元与计数单元。并且分别置 0,存储到 0f6h 与 0f7h 中。(c)这一部分为程序的核心部分。 首先将内存单元 0f2h 与 0f5h 数据取出来放到内存 R0 与 R1 中,然后将计数单元加 1,此时 COP2000 中要想判断进位只能判断最高位进位,所以需要将两个最低位数据左移四位,在两个数相加之前,需要加上进位位,此时进位位为 0,两个左移四位的数据相加后,相加结果有进位,则跳转到 tttl,将两个最低位相加结果加上 60H,进位位置 1,然后右移四位,将最低位运算结果放到 R2 中,将计数器中的数与 2 相减,此时计数单元数据为 1,1 减 2 发生借位,所以执行 JC11,

10、跳到 tl,将最低两位结果放到 0e0h 单元保存。 然后程序跳转到 tt2,最后将最低两位数与 f0 相与,最低两位数后四位清零,得到高四位,然后加上进位数,再将两个高四位数相加,判断是否有进位,若高四位相加有进位,跳转到 ttt4 中,将结果加上 60,进位位置 1,然后在进行判断,现在计数器中存储 1,1 减 2 发生借位,跳转到 12,将最低两位数的高位运算结果放到 e0 单元,然后取出中间两位数。如果相加结果不发生进位则判断结果是否大于 90,若结果大于 90,则跳转到 1115,将结果减 10 存储到内存中, 同时进位位置 1,然后跳转到 1116,将计数单元里面存储的 1减 2,

11、发生借位,跳转到 12,将最低两位数高位运算结果放入 e1 单元,然后将中间两位存储到 R0 与 R1 中。如果相加结果小于 9,跳转到 1113,若结果小于 90,将进位位置 0 跳转到 1116,将计数单元里面存储的 1 减 2,发生借位,跳转到 12,执行同上。(d)中间数与最高两位数据运算结果同(c)。(e) 将最低两位数运算的结果存储到 R2 中, 将中间两位运算的结果存到 R1 中,将最高两位运算结果存储到 R0 中。2.22.2流程图的设计与实现流程图的设计与实现1. 存数过程。如图 2.2.1 所示图图 2.2.12.2.1 存数据过程流程图存数据过程流程图2.设计进位位单元与

12、计数单元。如图 2.2.2 所示开始沈阳航空航天大学课程设计报告错误!未指定书签。错误!未指定书签。第2章详细设计方案-6-将 0f6h 与 0f7h 分别用来作为计数器和进位位单元, 并且置零结束图图 2.2.22.2.2 设计进位位单元与置数单元流程图设计进位位单元与置数单元流程图3程序核心部分流程图。如图 2.2.3 所示开始把数据从内存单元 0f2h 与数据单元0f5h 中取出来存到存储器 R0 与 R1 中*计数器单元数据加 1,将 R0 与 R1 中的数据分别左移四位,结果放到 R2 与 R3 中将 R3 中的数据加上进位,然后与 R2 相加沈阳航空航天大学课程设计报告错误!未指定

13、书签。错误!未指定书签。第2章详细设计方案-7-将最高两位数高位运算结果存入 e5 单元, 最低两位数运算结果存入 R2 中间两位数运算结果存入 R1 最高两位数运算结果存入R0图图 2.2.32.2.3 核心部分流程图核心部分流程图将中间两位运算结果放到 0e2 单元取最高两位数,运算过程威从本图开始执行将计数器中1减去2将最低两位数运算结果放到0e1 单元, 然后去中间两位数,运算过程从本图开始执行沈阳航空航天大学课程设计报告第3章程序调试与结果测试-8-第第 3 3 章程序调试与结果测试章程序调试与结果测试3.13.1 程序调试程序调试1.写指令时忘记在十六进制以字母开头的数前面加上 0

14、。2.累加器 A 中的数据忘了及时保存在寄存器或者内存单元中, 导致数据丢失,发生错误。3.在写指令时犯了非常低级的错误,把 ADD 指令与 AND 指令弄混淆了,写 AND 指令时写成 ADD 指令,发现单步调试结果不对,仔细观察,发现马虎写错了。4.在刚刚编写指令,还不是十分熟练的时候,有时候直接把内存单元的值直接写到寄存器里面,没有通过累加器 A,全是马虎造成的。3.23.2程序测试及结果分析程序测试及结果分析给出的数据:296579 与 324856 运行结果为:621435 如图 3.3.1 所示图图 3.3.13.3.1 测试结果显示测试结果显示沈阳航空航天大学课程设计报告第3章程

15、序调试与结果测试-9-测试数据为:258579 与 364936运行结果为:623515 如图 3.3.2 所示图图 3.3.23.3.2 测试结果显示测试结果显示沈阳航空航天大学课程设计报告-10-参考文献参考文献1 唐硕飞.计算机组成原理(第 2 版)M.北京:高等教育出版社,20082 王爱英计算机组成与结构(第 4 版)M.北京:高等教育出版社,20063 COP2000 实验指导书沈阳航空航天大学课程设计报告-11-录(源代码)录(源代码)movmovmovmovmovmovmovmovmovmovmovmovmovmovmovmovmovmovmovmovjmpt1:jmpt2:a

16、,#29h;输入被加数0f0h,aa,#65h0f1h,aa,#79h0f2h,aa,#32h;输入加数0f3h,aa,#48h0f4h,aa,#56h0f5h,aa,#00h;计数器置零0f6h,aa,#00h;进位位初始化0f7h,aa,0f2h;取低位字节数r0,aa,0f5hr1,att1jmpt3:mova,r2;将最低两位数低位运算结果放入 e0 单元mov0e0h,att2mova,r2;将最低两位数高位运算结果放入 e1 单元mov0e1h,amova,0f1h;取中间两位数分别放入 r0 与 r1 中 movr0,amova,0f4hmovr1,att1jmpt4:mova,

17、r2;将中间两位数低位运算结果放入 e2 单元mov0e2h,att2沈阳航空航天大学课程设计报告-12-沈阳航空航天大学课程设计报告-13-mova,r2;将中间两位数高位运算结果放入 e3 单元mov0e3h,amova,0f0h;取最高两位数movr0,amova,0f3hmovr1,ajmptt1t5:mova,r2;将最高两位数低位运算结果放入 e4 单元mov0e4h,ajmptt2t6:mova,r2;将最高两位数高位运算结果存入 e5 单元mov0e5h,amova,0e0h;将最低两位数运算结果存入 r2adda,0e1hmovr2,amova,0e2h;将中间两位数运算结果

18、存入 r1adda,0e3hmovr1,amova,0e4h;将最高两位数运算结果存入 r0adda,0e5hmovr0,aloop:jmplooptt1:mova,0f6h;计数器加 1adda,#01hmov0f6h,amova,r0;r0 左移四位rlarlarlarlamovr2,amova,r1;r1 左移四位rlarlarla沈阳航空航天大学课程设计报告-14-rlamovr3,aadda,0f7h;加上进位adda,r2;r2 加上 r3 结果放入累加器沈阳航空航天大学课程设计报告-15-jcttt1;若相加结果有进位跳转 ttt1;若相加结果无进位判断结果是否大于9movr2,

19、amova,#90hsuba,r2jcttt2;若相加结果大于 9 跳转 ttt2mova,#00hmov0f7h,a;将计数器置零jmpttt3ttt1:;若相加结果小于 9 跳转 ttt3adda,#60hmovr2,a;将累加器中数据加上 60 放入 r2 中mova,#10hmov0f7h,a;进位位加 1jmpttt3;跳转 ttt3ttt2:mova,r2suba,#0a0hmovr2,a;将结果减 10 放入 r2 中mova,#10hmov0f7h,attt3:;进位位置 1mova,r2rrarrarrarramovr2,a;右移四次低位结果将结果放入 r2 中mova,0f6hsuba,#02h;将计数器中的数与 2 相减jct1;若计数器中的数为 1 则借位跳转 t1jzt3;若计数器中的数为 2 则跳转 t3jmpt5tt2:;否则跳转 t5mova,r1anda,#0f0hmovr3,amova,r0anda,#0f0hmovr2,a;将最低 8 位数与 f0 相与, 得到高四位adda,0f7h;加上进位adda,r3;高四位相加jcttt4;若高四位相加发生进位跳转 ttt4 中movr2,a;若无进位判断结结果是否大于 90沈阳航空航天大学课程设计报告-16-mova,#90hsuba,r2jcttt5;若结果大于 90 跳转 ttt5mov

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论