课 程 设 计 报 告
课程设计名称:计算机组成原理课程设计 课程设计题目:COP2000实现BCD码的加法
院(系):计算机学院 专 业:计算机科学与技术 班 级: 学 号: 姓 名: 指导教师:
完成日期:2013年1月11日
沈阳航空航天大学课程设计报告
目 录
第1章 总体设计方案 .................................................................................................. 2 1.1 设计原理 ............................................................................................................. 2 1.2 设计环境 .............................................................................................................. 2 第2章 详细设计方案 .................................................................................................. 3 2.1 算法与程序的设计与实现 .................................................................................. 3 2.2 流程图的设计与实现 ............................................................................................ 4
2.2.1 总流程图..................................................................................................................... 4 2.2.2 最低两位求和流程图 ................................................................................................. 5 2.2.3 中间两位求和流程图 ................................................................................................. 6 2.2.4 最高两位求和流程图 ................................................................................................. 7
第3章 程序调试与结果测试 ...................................................................................... 8 3.1 程序调试 ................................................................................................................ 8 3.2 程序测试及结果分析 ............................................................................................ 8 参考文献 .......................................................................................................................... 9 附录(源代码) ............................................................................................................ 10
1
沈阳航空航天大学课程设计报告
第1章 总体设计方案
1.1 设计原理
欲实现两个压缩BCD码的加法,且被加数,加数,和都为六位十进制
数,需将两个六位十进制数输入到内存中,再分别实现加数和被加数的最低两位,中间两位,最高两位的带进位加法,并且依次将其进行十六进制到十进制的转换,输入到内存中暂存,最后将六位十进制的和输出到寄存器中显示出来。
1.2 设计环境
伟福COP2000实验箱,用汇编语言编程实现BCD码的加法
COP2000 计算机组成原理实验系统由实验平台、开关电源、软件三大部分组成。
实验平台上有寄存器组R0-R3、运算单元、累加器A、暂存器W、直通/左移/右移单元、 地址寄存器、程序计数器、堆栈、中断源、输入/输出单元、存储器单元、微地址寄存器、指令寄存器、微程序控制器、组合逻辑控制器、扩展座、总线插孔区、微动开关/指示灯、逻辑笔、脉冲源、20 个按键、字符式LCD、RS232 口。
2
沈阳航空航天大学课程设计报告
第2章 详细设计方案
2.1 算法与程序的设计与实现
此程序的核心在于十六进制转换为十进制BCD码的部分,以最低两位的运算为例: 一.低位
1.若低位>9,正确的BCD码应该让低位变成对应的0~9,即减A(10),再把A进给高位,由于是高位,因此高位应该是加1,即+10H-0AH=+6H 2.若低位产生进位,但这个进位是“16进1”,即低位多进了6,因此应该给低位加上6,即+6H
3.由于低位BCD码对应的十进制为0~9,不可能既产生进位又低位>9 二.高位
1.若高位>9,同理,应该让高位变成对应的0~9,即给高位减A(10), 再把A进给更高位,由于是更高位,因此更高位应该是加1,即+100H-A0H=+60H
2.若高位产生进位,但这个进位是“16进1”,即高位多进了6,因此应该给高位加上6,即+60H
3.由于高位BCD码对应的十进制为0~A(可能是A是由于可能低位会进位,而高位和本来是9,则会变成A),不可能既产生进位又高位>9 三.由于COP2000中只能显示高位进位标志,而低位的进位显示不出来,所以需要把低位左移到高位,再进行运算,才能得出低位是否进位。
3
沈阳航空航天大学课程设计报告
2.2 流程图的设计与实现
2.2.1 总流程图
开始 输入加数和被加数,存入内存中 最低两位相加,存和到内存中 中间两位相加,存和到内存中 最高两位相加,存和到内存中 将六位和从内存取出并显示 结束 图2.1.1 总流程图
4
沈阳航空航天大学课程设计报告
2.2.2 最低两位求和流程图
开始
低位左移四位求和 进位 是 否 和大于90H 是 否 和的数值+06H 两位求和 进位 是 否 和大于90H 是 否 和输入到内和的数值存中 +60H,和输入到内存,中间两位加结束 数的值+1 图2.1.2 最低两位求和流程图
5
沈阳航空航天大学课程设计报告
2.2.3 中间两位求和流程图
开始
低位左移四
位求和 进位 是 否 和大于90H 是 否 和的数值+06H 两位求和 进位 是 否 和大于90H 是 否 和输入到内和的数值存中 +60H,和输入到内存,最高两位加结束 数的值+1 图2.2.3 中间两位求和流程图
6
沈阳航空航天大学课程设计报告
2.2.4 最高两位求和流程图
开始
低位左移四
位求和 进位 是 否 和大于90H 是 否 和的数值+06H 两位求和 进位 是 否 和大于90H 是 否 和输入到内存中 和的数值+60H,和输入到内存 结束 图2.2.4 最高两位求和流程图
7
沈阳航空航天大学课程设计报告
第3章 程序调试与结果测试
3.1 程序调试
(1)由于此程序的BCD码为压缩的BCD码,每个字节存两位十进制数,而进位标志位只能判断高位是否进位,所以在判断低位是否进位时产生了难度,此时便将两位十进制数和“0F”相与,将高位置零后,低位左移四位到高位,便可以判断低位是否有进位了。
(2)最初在设计程序时没有考虑输入的数值放在内存单元位置的问题,导致输入内存中的数据与程序代码占用的内存单元中的数据相冲突,而不能完整的实现程序的功能。解决办法就是将输入内存的数据存到一定不被事先占用过的内存单元中,避免冲突。
(3)代码中用到立即数时,忘记加“#”,或者写内存地址时忘记加“H”。诸如此类小问题,检查代码以后便可解决。
3.2 程序测试及结果分析
测试阶段,用两组数检验程序的功能,用X表示被加数,用Y表示加数。
(1)X=013579 Y=024689 输出结果为 038268
(2)X=987654 Y=123456 输出结果为 111110
(1)中,013579+024689=038268,结果正确。
(2)中,987654+123456=1111110,由于输出结果不考虑溢出,只能显示六位数,所以结果正确。
8
沈阳航空航天大学课程设计报告
参考文献
[1] 唐朔飞.计算机组成原理(第2版)[M]北京:高等教育出版社,2008 [2] 王爱英.计算机组成与结构(第4版)[M].北京:清华大学出版社,2006 [3] 白中英.计算机组成原理(第4版)[M]北京:科学出版社,2008
9
沈阳航空航天大学程设计报告
附录(源代码)
00 C0 IN
01 88E6 MOV 0E6H,A 03 C0 IN
04 88E1 MOV 0E1H,A 06 C0 07 88E2 09 C0 0A 88E3 0C C0 0D 88E4 0F C0 10 88E5 12 78E2 14 80 15 78E5 17 81 18 70 19 5C0F 1B D4 1C D4 1D D4 1E D4 1F 82 20 71 21 5C0F 23 D4 24 D4 25 D4 26 D4 27 83 28 72 29 13 2A A035 2C 82 2D 7C90 2F 32 30 A035 32 70 IN
MOV 0E2H,A IN
MOV 0E3H,A IN
MOV 0E4H,A IN
MOV 0E5H,A
MOV A,0E2H;取低八位 MOV R0,A MOV A,0E5H MOV R1,A
MOV A,R0;对低四位进行判断 AND A,#0FH RL A RL A RL A RL A
MOV R2,A MOV A,R1 AND A,#0FH RL A RL A RL A RL A
MOV R3,A MOV A,R2 ADD A,R3
JC T1;相加有进位跳转 MOV R2,A MOV A,#90H
SUB A,R2;相加大于9跳转 JC T1
MOV A,R0
10
沈阳航空航天大学程设计报告
33 AC38 JMP T4
T1: ;低四位之和有进位或大于9,和加6 35 70 MOV A,R0 36 1C06 ADD A,#06H T4: ; 38 11 ADD A,R1
39 A04D JC T2;低八位的高四位之和有进位跳转 3B 83 MOV R3,A 3C 7C90 3E 33 3F A04C 41 73 42 88F0 44 78E1 46 80 47 78E4 49 81 4A AC5C 4C 73 4D 1C60 4F 88F0 51 78E1 53 80 54 78E4 56 81 57 71 58 71 59 1C01 5B 81 5C 70 5D 5C0F 5F D4 60 D4 61 D4 62 D4 63 82 64 71 65 5C0F 67 D4 68 D4
MOV A,#90H
SUB A,R3;低八位的高四位之和大于9跳转 JC T3 MOV A,R3
MOV 0F0H,A;低八位之和存入内存 MOV A,0E1H;取中间八位 MOV R0,A MOV A,0E4H MOV R1,A JMP LOOP1 T3:
MOV A,R3 T2:
ADD A,#60H
MOV 0F0H,A;低八位之和存入内存 MOV A,0E1H;取中间八位 MOV R0,A MOV A,0E4H MOV R1,A MOV A,R1 MOV A,R1
ADD A,#01H;低八位有进位向中间八位进1 MOV R1,A;中间八位运算 LOOP1: MOV A,R0 AND A,#0FH RL A RL A RL A RL A
MOV R2,A MOV A,R1 AND A,#0FH RL A RL A
11
沈阳航空航天大学程设计报告
69 D4 RL A 6A D4 RL A
6B 83 MOV R3,A 6C 72 MOV A,R2 6D 13 ADD A,R3 6E A079 JC TT1 70 82 MOV R2,A 71 7C90 MOV A,#90H 73 32 74 A079 76 70 77 AC7C 79 70 7A 1C06 7C 11 7D A091 7F 83 80 7C90 82 33 83 A090 85 73 86 88F1 88 78E6 8A 80 8B 78E3 8D 81 8E AC9F 90 73 91 1C60 93 88F1 95 78E6 97 80 98 78E3 9A 81 9B 71 9C 1C01 9E 81 9F 70
SUB A,R2 JC TT1 MOV A,R0 JMP TT4 TT1:
MOV A,R0 ADD A,#06H TT4:
ADD A,R1 JC TT2 MOV R3,A MOV A,#90H SUB A,R3 JC TT3 MOV A,R3
MOV 0F1H,A;中间八位存入内存 MOV A,0E6H;取高八位 MOV R0,A MOV A,0E3H MOV R1,A JMP LOOP2 TT3:
MOV A,R3 TT2:
ADD A,#60H
MOV 0F1H,A;中间八位存入内存 MOV A,0E6H;取高八位 MOV R0,A MOV A,0E3H MOV R1,A MOV A,R1 ADD A,#01H MOV R1,A LOOP2: MOV A,R0
12
沈阳航空航天大学程设计报告
A0 5C0F AND A,#0FH A2 D4 RL A A3 D4 RL A A4 D4 RL A A5 D4 RL A
A6 82 MOV R2,A A7 71 MOV A,R1 A8 5C0F AND A,#0FH AA D4 AB D4 AC D4 AD D4 AE 83 AF 72 B0 13 B1 A0BC B3 82 B4 7C90 B6 32 B7 A0BC B9 70 BA ACBF BC 70 BD 1C06 BF 11 C0 A0D5 C2 83 C3 7C90 C5 33 C6 A0D4 C8 73 C9 88F2 CB 81 CC 78F1 CE 82 CF 78F0 D1 83 D2 ACD2 D4 73
RL A RL A RL A RL A
MOV R3,A MOV A,R2 ADD A,R3 JC TTT1 MOV R2,A MOV A,#90H SUB A,R2 JC TTT1 MOV A,R0 JMP TTT4 TTT1:
MOV A,R0 ADD A,#06H TTT4: ADD A,R1 JC TTT2 MOV R3,A MOV A,#90H SUB A,R3 JC TTT3 MOV A,R3 MOV 0F2H,A MOV R1,A MOV A,0F1H MOV R2,A MOV A,0F0H MOV R3,A T:
JMP T; TTT3:
MOV A,R3
13
沈阳航空航天大学程设计报告
TTT2:
D5 1C60 ADD A,#60H D7 88F2 MOV 0F2H,A D9 81 MOV R1,A DA 78F1 MOV A,0F1H DC 82 MOV R2,A DD 78F0 MOV A,0F0H DF 83 MOV R3,A
14
沈阳航空航天大学程设计报告
课程设计总结: 本次课程设计让我收获颇丰,起初拿到课程设计题目,不知道如何去实现设计要求,经过前几天查阅资料,老师帮助,我对这次课程设计要求有了更深的了解,知道了具体应该怎样操作,怎样去实现BCD码加法,怎样去操作COP2000实验箱。 我想说本次课程设计不但使我们复习了计算机组成原理课程的内容,还让我们复习并应用了算法设计与分析以及汇编语言课程的内容,我们加深了对计算机系统概念的理解。 最后,感谢老师对我们的悉心教导,以后我会把课堂学到的知识加以灵活运用,不辜负老师对我们的厚望。 指导教师评语: 指导教师(签字): 年 月 日 课程设计成绩
15
因篇幅问题不能全部显示,请点此查看更多更全内容