任务八BCD码相加.

合集下载

4位BCD码加法

4位BCD码加法

实验二 4位BCD码加法实验目的:1.掌握BCD码加法的编程方法。

2.掌握串操作指令的使用方法。

3.掌握简单循环结构编程方法。

实验设备:计算机一台。

预装Windows XP、宏汇编MASM5。

实验内容A:编写能够实现以下要求的汇编语言程序,并上机实现。

1.编写一个4位BCD码加法程序,并将结果输出到屏幕上。

2.给出两个4位BCD码加数,手工计算出结果,再用本程序获得结果,对照二者是否相同。

注意数的高、低位在内存中的放置规则。

实验内容B:编写能够实现以下要求的汇编语言程序,并上机实现。

1.将参考程序中输出到屏幕部分修改成循环结构。

预习要求:1.阅读实验内容A的参考源程序,对其结构以及实现方法进行分析,在理解的基础上掌握编程方法。

2.根据要求,编写实验内容B的源程序。

3.编辑建立实验内容A和实验内容B的源程序文件,存入U盘保存。

4.写出预习报告,报告中应有实验内容B的源程序清单。

实验步骤:1.编辑建立实验内容A的源程序,对其进行汇编、链接获得可执行文件。

运行可执行文件,实现实验内容A的要求。

2.参考实验内容A的源程序,编辑建立实验内容B的源程序,对其进行汇编、链接获得可执行文件。

如果在汇编、链接过程中有错误产生,则根据提示信息逐一修改错误,直到无错误产生。

运行可执行文件,实现实验内容B的要求。

重要提示:1.注意参加运算的数的高位~低位的放置规则。

2.参加运算的2个数的位数必须相同。

3.对于实验内容B,以[SI]为源操作数,每循环一次SI加1。

4.循环结构所用到的计数单元,不能与循环结构中所用到的单元冲突。

实验内容A参考程序:NAME demo2DATA SEGMENTSTRI1 DB 1,7,5,2 ;第1个加数,注意低位在前STRI2 DB 3,8,1,4 ;第2个加数,注意应与第1个加数位数相同COUNT EQU $-STRI2 ;加数的位数DATA ENDSSTACK SEGMENT PARA STACK 'STACK'DB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,SS:STACK,DS:DATA,ES:DATASTART PROC FARPUSH DSMOV AX,0PUSH AXGO: MOV AX,DATAMOV DS,AX ;设置源串段基址MOV ES,AX ;设置目的串段基址MOV SI,OFFSET STRI1 ;设置源串首地址MOV DI,OFFSET STRI2 ;设置目的串首地址MOV CX,COUNT ;设置串长度;CLC ;为多字节加法预清进位标志CYCLE: MOV AL,[SI]ADC AL,[DI]AAAMOV [DI],ALINC SIINC DILOOP CYCLEMOV SI,OFFSET STRI2MOV DL,[SI+3] ;输出千位ADD DL,30HMOV AH,2INT 21HMOV DL,[SI+2] ;输出百位ADD DL,30HMOV AH,2INT 21HMOV DL,[SI+1] ;输出十位ADD DL,30HMOV AH,2INT 21HMOV DL,[SI+0] ;输出个位ADD DL,30HMOV AH,2INT 21HRETSTART ENDPCODE ENDSEND START实验B参考程序DATA SEGMENTSTRI1 DB 1,7,5,2 ;第1个加数,注意低位在前STRI2 DB 3,8,1,4 ;第2个加数,注意应与第1个加数位数相同COUNT EQU $-STRI2 ;加数的位数DATA ENDSSTACK SEGMENT PARA STACK 'STACK'DB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,SS:STACK,DS:DATA,ES:DATASTART PROC FARPUSH DSMOV AX,0PUSH AXGO: MOV AX,DATAMOV DS,AX ;设置源串段基址MOV ES,AX ;设置目的串段基址MOV SI,OFFSET STRI1 ;设置源串首地址MOV DI,OFFSET STRI2 ;设置目的串首地址MOV CX,COUNT ;设置串长度;CLC ;为多字节加法预清进位标志CYCLE: MOV AL,[SI]ADC AL,[DI]AAAMOV [DI],ALINC SIINC DILOOP CYCLEMOV SI,OFFSET STRI2mov bx,4lp1: MOV DL,[SI+3] ADD DL,30HMOV AH,2INT 21Hdec SIdec bxjnz lp1RETSTART ENDPCODE ENDSEND START。

BCD 加法

BCD 加法

.CODE
初始化:
START: MOV AX,@DATA
MOV DS,AX
MOV ES,AX
NOP
MOV F1,0
;先清除显示,再接收键输入
输入加数和被加数,进行相加:
START1:
LEA DI,augend
MOV CX,4
;按键次数
CALL GetBCDKey ;得到双字节十进制数(被加数)
MOV F1,1 ;接收到第一个键,才清除显示
显示结果
双字节BCD码加法程序框图
源代码程序
定义:
.MODEL
TINY
EXTRN Display8:NEAR,GetBCDKey:NEAR
EXTRN F1:BYTE
.STACK 100 .DATA
BUFFER DB 8 DUP(?) augend DB 2 DUP(?) ;被加数 addend DB 2 DUP(?) ;加数
MOV ADC CLD LEA
BL,0 BL,0
DI,BUFFER
;进位 ;存放显示结果
相加的得数(4位)依次转为16进制保存
CALL B1toB2 ;低位 MOV AL,AH CALL B1toB2 ;高位 MOV AL,BL
STOSB
子程序
B1toB2 PROC
NEAR
PUSH AX
AND AL,0FH
LEA SI,BUFFER
CALL Display8
JMP START1
将高位0消隐
BlackDisplay PROC NEAR
STD
MOV DI,SI
BlackDisplay1:
LODSB
CMP AL,0

课题 BCD码加法器

课题  BCD码加法器

课题BCD码加法器
一、课题目的
1.熟练掌握用VHDL语言的行为描述及构造体描述设计组合电路。

2.初步掌握真值表的设计。

二、课题原理
BCD码是一种二进制代码表达的十进制数。

BCD码与四位二进制代码关系如下表所示,从表中可以看到从0-9时,BCD码与四位二进制码相同。

从10-15后,BCD码等于四位二进制码加“0110”。

这个关系构成了四位二进制码与BCD码的转换关系,同时也是用四位二进制加法器实现BCD码加法的算法基础。

设计BCD码加法器首先要将两个BCD码输入到二进制加法器相加,得到的和数是一个二进制数,然后通过下表将四位二进制码转换成BCD码。

BCD码与四位二进制代码关系
三、课题内容
1.用VHDL语言的行为描述方式设计BCD码加法器,并用仿真文件验证设计正确性。

2.选做题(提高部分)当两数相加大于19时,输出将显示00,并且会闪动(用64Hz 频率控制闪动),另外扬声器会报警。

四、设计提示
1.用VHDL语言的构造体描述方式设计时,加“6”校正电路实现真值表的设计。

2.用VHDL语言的行为描述方式设计时,要用条件语言判断两个BCD码数相加后是否大于9,当大于9时,采取加“6”教正。

五、课题报告要求
1.叙述所设计的BCD码加法器电路工作原理。

2.写出用VHDL语言的构造体描述方式设计BCD码加法器的各模块源文件。

3.写出用VHDL语言的行为描述方式设计BCD码加法器的源文件。

4.心得体会。

八位二进制码转化为BCD码及余三码、BCD码转化余三码

八位二进制码转化为BCD码及余三码、BCD码转化余三码

河南科技大学课程设计说明书课程名称 EDA技术题目八位二进制转化为BCD码及余三码、BCD码转化为余三码学院车辆与动力工程学院班级学生姓名指导教师日期2012年7月14号八位二进制码转化为BCD码及余三码、BCD码转化余三码摘要八位二进制数转化为BCD码和余三码的转换在计算机语言中起到了非常重要的作用,通过这次的课程设计让我们更好地掌握二进制数转化为BCD 码和余三码。

二进制转化为余三码不能直接转化,只能通过BCD码为中介进而转化成余三码。

余三码(余3码)是由8421BCD码加上0011形成的一种无权码,由于它的每个字符编码比相应的8421BCD码多3,故称为余三码。

BCD码的一种。

余三码是一种对9的自补代码,因而可给运算带来方便。

其次,在将两个余三码表示的十进制数相加时,能正确产生进位信号,但对“和”必须修正。

修正的方法是:如果有进位,则结果加3;如果无进位,则结果减3。

如,(526)10进制=(0101 0010 0110)8421BCD码=(1000 0101 1001)余3码EDA技术打破了软件和硬件间的壁垒,使计算机的软件技术与硬件实现、设计效率与产品性能合二为一,它代表了电子设计技术和应用技术的发展方向。

VHDL主要用于描述数字系统的接口,结构和功能,它的语法简单易懂,移植性好。

本设计采用VHDL,Altera公司的Quartus II软件仿真,来实现八位二进制到BCD和BCD到余三码的转换。

由于八位二进制的最大范围是0~255,而八位BCD码的范围是0~99,故在转换时输入信号只能取99以内的数。

关键词:八位二进制、BCD码、余三码、VHDL目录第一章绪论 (1)§1.1 课程设计题目 (1)§1.2 设计目的 (2)§1.3 课程设计要求 (2)第二章EDA、VHDL简介 (3)§2.1 EDA简介 (3)§2.2 VHDL简介 (3)第三章设计过程 (5)§3.1设计规划 (5)§3.2各个模块设计及原理图 (5)§3.2.1八位二进制码转化为八位BCD码 (5)§3.2.2八位BCD码转化为八位余三码 (6)§3.2.3八位二进制码转化为8位余三码 (7)第四章系统仿真 (9)§4.1八位二进制码转化为八位BCD码仿真及分析 (9)§4.2八位BCD码转化为八位余三码仿真及分析 (9)§4.3八位二进制码转化为八位余三码仿真及分析 (10)第五章总结 (11)参考文献 (12)第一章绪论随着计算机科学与技术突飞猛进地发展,用数字电路进行信号处理的优势也更加突出,自20世纪70年代开始,这种用数字电路处理模拟信号的所谓“数字化”浪潮已经席卷了电子技术几乎所有的应用领域EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。

BCD码加法器

BCD码加法器

优秀工程师班第一次大作业用四位全加器构成一位 BCD 码加法器班级: 001111作者: 00111116 江新远实现方式一:器件一、问题用四位二进制全加器74LS283构成一位 8421BCD码加法电路二、 74LS283介绍74LS283是 TTL双极型并行 4 位全加器,,特色是先行禁卫,所以运算速度4 位二进制数输入A1A2A3A4B1B2B3B4很快,其外形为双列直插。

它有两组S1S2S3S4,C1一位低位向本位的进位输入,有一组二进制输出,一个最高位的进位输出,改器件所达成的 4 位二进制加法如下图。

三、解决思路用四位全加器构成一位8421BCD码的加法电路。

两位 8421BCD码相加,其和仍应为 8421BCD码,如不是 8421BCD码则结果错误。

①若和小于等于 9 结果正确,如40100+3→+ 0011BCD码加法器70111 01118421BCD796(011) 60110+ 7→+ 011113101111018421BCD61101+ 01101,0011“0011”681000+9→+ 1001171,000161,0001+01101,0111产生错误的原由是 8421BCD码为十进制,逢十进一,而四位二进制数是逢十六进一,故两者进位关系不一样。

此中恰好相差 6,故需加 6 进行修正。

这样,构成两个一位8421BCD相加时,一定由三部分构成:一部分进行加数和被加数相加;第二部分是修正鉴别,鉴别能否要加以修正,即产生修正控制信号;第三部分达成加 6 修正。

第一部分和第三部分均由 4 位全加器实现。

第二部分修正鉴别电路应在8421BCD码相加有进位信号CO产生时,或许和数在10~15的状况下产生修正控制信号 F,所以 F 应为F CO m10,11,12,13,14,15利用图所示的卡诺图将和大于9 的部分化简得出F:F CO F3 F2F3 F1CO F3 F2F3 F1依据上述剖析及 F 信号产生的逻辑表达式可获得两个一位8421BCD码相加的电路。

BCD码加减法

BCD码加减法

BCD码加减法3、BCD码的加减运算由于编码是将每个十进制数用一组4位二进制数来表示,因此,若将这种BCD码直接交计算机去运算,由于计算机总是把数当作二进制数来运算,所以结果可能会出错。

例:用BCD码求38+49。

解决的办法是对二进制加法运算的结果采用"加6修正,这种修正称为BCD调整。

即将二进制加法运算的结果修正为BCD码加法运算的结果,两个两位BCD数相加时,对二进制加法运算结果采用修正规则进行修正。

修正规则:(1)如果任何两个对应位BCD数相加的结果向高一位无进位,若得到的结果小于或等于9,则该不需修正;若得到的结果大于9且小于16时,该位进行加6修正。

(2)如果任何两个对应位BCD数相加的结果向高一位有进位时(即结果大于或等于16),该位进行加6修正.(3)低位修正结果使高位大于9时,高位进行加6修正。

下面通过例题验证上述规则的正确性。

用BCD码求35+21 BCD码求25+37 用BCD码求38+49 用BCD码求42+95用BCD码求91+83 用BCD码求94+7 用BCD码求76+45两个组合BCD码进行减法运算时,当低位向高位有借位时,由于"借一作十六"与"借一作十"的差别,将比正确的结果多6,所以有借位时,可采用"减6修正法"来修正.两个BCD码进行加减时,先按二进制加减指令进行运算,再对结果用BCD调整指令进行调整,就可得到正确的十进制运算结果。

实际上,计算机中既有组合BCD数的调整指令,也有分离BCD数的调整指令。

另外,BCD码的加减运算,也可以在运算前由程序先变换成二进制数,然后由计算机对二进制数运算处理,运算以后再将二进制数结果由程序转换为BCD码。

4、8421BCD码、余3码、格雷码用四位二进制代码来表示一位十进制数,称为二--十进制编码,简称BCD(Binary Coded Decimal)码。

实验四 8421BCD码加法乘法运算概要

实验四 8421BCD码加法乘法运算概要

Quartus Ⅱ基本应用8421BCD码加法乘法运算一、实验目的1. 用原理图输入法实现2个8421BCD的和,用数码管显示被加数、加数和加的结果。

每个8421BCD码由4个拨码开关作为输入,总共需要8个拨码开关。

输出要求在开发板数码管上显示输入的2个8421BCD 码和加的结果。

2. 用VHDL或Verilog HDL实现2个8421BCD的乘积,用数码管显示被乘数、乘数和乘的结果。

每个8421BCD码由4个拨码开关作为输入,总共需要8个拨码开关。

输出要求在开发板数码管上显示输入的2个8421BCD码和乘的结果。

二、实验设备1、计算机(Quartus Ⅱ)2、DE0开发板三、实验原理BCD代码。

Binary-Coded Decimal,简称BCD,称BCD码或二转十进制代码,亦称二进码十进数。

是一种二进制的数字编码形式,用二进制编码的十进制代码。

这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。

这种编码技巧,最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。

相对于一般的浮点式记数法,采用BCD码,既可保存数值的精确度,又可免却使电脑作浮点运算时所耗费的时间。

此外,对于其他需要高精确度的计算,BCD编码亦很常用。

8421码是BCD代码中最常用的一种。

在这种编码方式中每一位二值代码的1都是代表一个固定数值,把每一位的1代表的十进制数加起来,得到的结果就是它所代表的十进制数码。

由于代码中从左到右每一位的1分别表示8,4,2,1,所以把这种代码叫做8421代码。

每一位的1代表的十进制数称为这一位的权。

8421码中的每一位的权是固定不变的,它属于恒权代码。

8421BCD码乘法运算把二进制数中的“0”和“1”全部当成是十进制数中的“0”和“1”即可。

根据十进制数中的乘法运算知道,任何数与“0”相乘所得的积均为“0”,这一点同样适用于二进制数的乘法运算。

八位二进制加法器

八位二进制加法器
选择74LS283超前进位并行加法器的组合形成8421BCD码加法器
编码器与74LS283加法器相接,通过8421BCD码加法器串接可以计算三位十进制数的加法运算,输出结果通过数码管显示
2、总体设计方案论证及选择
加法器方案设计
方案一:
当有多位数相加,则可采用并行相加串行进位的方式来完成。例如,有两个4位二进制数A3A2A1A0和B3B2B1B0相加,可以采用两片内含两个全加器或1片内含4个全加器的集成电路组成,其原理图如下图所示:
综合各个方面的,我们可以选择超前进位加法器来设计电路。
3、系统框图
输入十进制数输出四位二进制数
输出和数
输入二进制数串接
输出十进制数
4、工作原理
当输入十进制数的时候,8421BCD码编码器先开始工作,编码器先将十进制数转换成四位二进制数,输出的四位二进制数直接到达8421BCD码加法器的输入端,我们可以使用
2、总电路图:
2.1三位十进制数相加总电路图
2.2八位二进制数加法总电路图
第四章结束语
此次电子系统设计中,我们投入了最大的热情和精力,从参照资料,设计电路图,选择元器件到设计电路,每一个过程都经过了大家的共同探讨,其过程中出现了不少的问题,我们没有气馁,没有退缩,我们积极向同学和老师请教,并且一遍又一遍的重复实践,直到我们期望的结果实现。事实也证明我们的努力没有白费,认真严谨的实习态度给我们带来了成功的喜悦!通过这次电子系统设计,我们掌握了设计一个数字电路的基本方法和基本步骤,实际解决了设计中出现的问题,增强了寻找问题,解决问题的能力。此次电子设计的成功不仅帮助我们更好地掌握书本知识,尤其重要的是增强了我们的自信,培养了我们独立思考的能力。通过这次课程设计,我学到了很多,学习知识不只是一个记忆的过程,也是消化吸收的过程,只有通过实验才能检验所学知识的是否扎实牢靠。原本以为已经把课本吃的挺透的了,没想到在实际操作过程中还是出现了很多问题。最开始的时候一直没有头绪,不知道如何下手,不能把所学到的知识应用到实际的电路设计中去。在经过认真思考、仔细分析后,完成了电路,较为完整的实现了课程设计的要求。在这个过程中,最感谢的是老师和同学们的帮助,我们得以解决问题,使实验顺利进行下去。唯一美中不足的就是对比其他同学的实验,感觉我们的实验内容有一点少,涉及的知识并不是很多,不能从课程设计中学到更多的知识,颇为遗憾。

bcd码加法.

bcd码加法.

二.BCD码基本知识

BCD码有很多种表示方法,我们通常用 的BCD码是8421BCD码,我们单片机课 程当中的BCD码如不特别说明就是指 8421BCD码,8421BCD码实际就是用 0000—1001这样十个四位二进制数表示 0—9十个十进制数,但我们是以字节为 单位的,一个字节是八位二进制数,如 果高四位和第四位各存一个BCD码,这 样叫做压缩BCD码。
任务八BCD码相加
在单片机应用系统中,通常都要求进行 BCD码的运算,特别是在十进制运算的系 统中,很多的系统在人机界面的输出部分 往往都要用十进制显示,所以BCD码是很件来观看BCD码的相加过程。
在单片机应用系统中,通常都要求进行BCD码的运算, 特别是在十进制运算的系统中,很多的系统在人机界 面的输出部分往往都要用十进制显示,所以BCD码是 很重要的一部分。本任务通过WAVE6000软件来观看 BCD码的相加过程。 【任务目的】 1、理解什么是BCD码。 2、理解BCD码相加的过程。 【任务描述】 1、通过不同数据区的数据改变观察 BCD码的情况。 2、通过WAVE6000的窗口观察BCD码相加的情
MOV 50H , A
MOV A , 41H ADDC A , 31H DA A MOV 51H , A MOV A , #0
ADDC A , #0
MOV 52H , A END
;将加完并转化完的十进制数存至和值寄 存器的低位 ; ;将两个加数的高位相加 ;将高位相加后调整 ;将处理后的数据存至和值高位 ;如果有进位的话,将进位放至万位, 即将进位位Cy加至ACC ;既可。 ;ACC与0带进位位相加,就把Cy加至 ACC了 ;将万位存至52H ;结束伪指令
参考程序如下: ORG 0000H ;定位伪指令,指定下一条指令的地址,第一条指 令必须放在0000H MOV 30H , #78H ;第一个加数的高位。具体数值可以自己修改! MOV 31H , #34H ;第一个加数的低位。具体数值可以自己修改! MOV 40H , #56H ;第二个加数的高位。具体数值可以自己修改! MOV 41H , #12H ;第二个加数的低位。具体数值可以自己修改! MOV 50H , #0 ;将和值所要存储的数据区先清零。 MOV 51H , #0 MOV 52H , #0 MOV A , 40H ;因为加减指令必有一个为ACC暂存器,所以先将 一个加数的低 ;位送至ACC中,用于和另一个加数的低位相加。

8421BCD码加法器

8421BCD码加法器

电子线路课程设计(报告)题目8421BCD码加法器系别物理与电子科学系专业电子科学与技术班级08电科(4)班学号*********学生姓名吴迪指导教师徐竞日期2010.7.10~2010.7.15目录一题目要求与方案论证 (2)1.1设计题目 (2)1.1.1题目要求 (2)1.1.2 方案论证 (2)二电子线路设计与实现 (4)2.18421BCD加法器的设计 (4)2.28421BCD加法器的构成 (5)三结果与分析 (9)3.1两个四位8421BCD码加法的实现 (9)3.2调试注意事项 (10)四总结与体会 (11)参考文献 (12)附录 (13)一题目要求与方案论证1.1设计题目8421BCD码加法器1.1.1题目要求通过开关J1~J8分别设置2个4位8421BCD码输入,通过全加器,实现相加后的输出,结果采用数码管观察。

主要芯片:2个全加器(4008BD)、开关、数码管(2个),其他元件、门电路任选1.1.2 方案论证表1.1 4008BD功能表表1.2 74HC4511功能表有真值表可知:两个四位8421BCD码相加后得到的是一个四位或五位的二进制数,不好直接通过两个数码管来显示运算结果,所以要考虑用两个4008BD全加器来把计算结果转换为8421BCD码来输入显示译码器,从而实现把运算结果用数码管显示出来。

如下表所示:表1.3 数制转换二电子线路设计与实现2.1 8421BCD加法器的设计一、根据题目要求得到其功能表如下:二、由表我们可以算出Y的表达式由前16项有(1)3210321032103210321032103231Y S S S S S S S S S S S S S S S S S S S S S S S S S S S S =+++++=+(2)由后10项有1O Y C ==由(1)(2)有Y=C O +S 3S 2+S 3S 1三、理论图图2.1 逻辑电路图2.2 8421BCD 加法器的构成一、数据的产生与输入通过J1~J8八个单刀双掷开关在+5V 和GND 之间的切换来产生两个4位8421BCD 码作为输入的数据,当开关打到+5V 时输入数据1,打到GND 时输入数据0。

实验BCD码加法器

实验BCD码加法器

实验二 文本输入方式设计数字逻辑电路一、实验目的:1、 掌握VHDL 语言的基本语法和设计文件的基本结构。

2、 掌握组合逻辑电路的特性及设计和调试方法。

3、 掌握时序逻辑电路的特性及设计和调试方法。

4、 掌握常用的组合逻辑电路和时序逻辑电路的设计方法。

二、实验的硬件要求:1、 EDA/SOPC 实验箱。

2、 计算机。

三、实验原理数字逻辑电路可分为两类:组合逻辑电路和时序逻辑电路。

组合逻辑电路中不包含记忆单元(触发器、锁存器等),主要由逻辑门电路构成,电路在任何时刻的输出只和当前时刻的输入有关,而与以前的输入无关。

时序电路则是指包含了记忆单元的逻辑电路,其输出不仅跟当前电路的输入有关,还和输入信号作用前电路的状态有关。

1、组合逻辑电路①组合逻辑电路的定义通常组合逻辑电路可以用图1.1所示结构来描述。

其中,X0、X1、…、Xn 为输入信号, L0、L1、…、Lm 为输出信号。

输入和输出之间的逻辑函数关系可用式1.1表示: ②组合逻辑电路的设计方法组合逻辑电路的设计任务是根据给定的逻辑功能,求出可实现该逻辑功能的最合理组 合电路。

理解组合逻辑电路的设计概念应该分两个层次:(1)设计的电路在功能上是完整的,能够满足所有设计要求;(2)考虑到成本和设计复杂度,设计的电路应该是最简单的,设计最优化是设计人员必须努力达到的目标。

在设计组合逻辑电路时,首先需要对实际问题进行逻辑抽象,列出真值表,建立起逻辑模型;然后利用代数法或卡诺图法简化逻辑函数,找到最简或最合理的函数表达式;根据简化的逻辑函数画出逻辑图,并验证电路的功能完整性。

设计过程中还应该考虑到一些实际的工程问题,如被选门电路的驱动能力、扇出系数是否足够,信号传递延时是否合乎要求等。

组合电路的基本设计步骤可用图1.2来表示。

③组合逻辑电路的特点及设计时的注意事项a)组合逻辑电路的输出具有立即性,即输入发生变化时,输出立即变化。

(实际电路中图 2.1 组合逻辑电路框图L0=F0(X0,X1,···Xn) · · ·Lm=F0(X0,X1,···Xn)(1.1)图 2.2 组合电路设计步骤示意图图还要考虑器件和导线产生的延时)。

BCD码加法器

BCD码加法器
6 0110
+ 7 → + 0111
………… …………
13 1011
1101在8421BCD码中是非法码,结果错误,如果加6修正后,则产生了进位信号,且本位
1101
+ 0110
…………
1,0011
“0011”也是正确的。
③若和产生进位,则结果错误,也需加6修正。如
8 1000
+ 9 → + 1001
卓越工程师班第一次大作业
用四位全加器构成
一位BCD码加法器
班级:001111
作者:00111116 江新远
实现方式一:器件
一、问题
用四位二进制全加器74LS283构成一位8421BCD码加法电路
二、74LS283介绍
74LS283是TTL双极型并行4位全加器,,特点是先行禁卫,因此运算速度很快,其外形为双列直插。它有两组4位二进制数输入 ,一位低位向本位的进位输入 ,有一组二进制输出 ,一个最高位的进位输出,改器件所完成的4位二进制加法如图所示。
由于S是二进制的,所以最后取S的后四位加6就好。但是为防止S的后四位加6,仍然大于10,故先用S1等于S的后四位加6,然后再取S1的后四位。
附代码:
library ieee;
use fhomework1 is
port(a,b:in std_logic_vector(3 downto 0);
c:outbit;
………… …………
17 1,0001
虽产生了进位,但本位和不正确,若加6修正
1,0001
+ 0110
…生错误的原因是8421BCD码为十进制,逢十进一,而四位二进制数是逢十六进一,故二者进位关系不同。其中刚好相差6,故需加6进行修正。

BCD码的加法(DOC)

BCD码的加法(DOC)

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

如图2.2.3所示 (6)图2.2.3 核心部分流程图 (7)第3章程序调试与结果测试 (8)3.1程序调试 (8)3.2程序测试及结果分析 (8)参考文献 (10)附录(源代码) (11)第1章总体设计方案1.1设计原理课程设计要求加数、被加数以及和都采用压缩的BCD码,都是6位十进制数,但是从COP2000上面只能输入两位十六进制数,即8位二进制数。

所以在设计时将6位十进制数分为3组,每组2位,进行相加,找6个存储单元对3组数的低位运算和高位运算进行存储,最后两两求和,将最低两位、中间两位、最高两位结果分别放入r3、r2、r1中。

设计时最核心的四个问题我认为分别是将最低位数据左移四位,将数据与F0相与,设计计数单元与进位位存储单元。

1.2设计思路COP2000上面每次只能输入两个十六进制数,即8个二进制数,现在欲将6位十进制数输入,只能分成3组,3组分别相加。

在进行加法时,要考虑到进位,但是COP2000只能判别最高位是否有进位,所以在进行加法时,将最低位数据左移4次,放到最高位,便可以顺利解决判断进位问题。

在进行每组数据最高位加法时,要将数据与0F0H相与,使低四位清零。

在进行加法时,由于考虑到进位问题,所以设计f7单元存储进位,进位存储单元初始时置0,每当产生进位时,MOV A,#10H MOV 0F0H,A 使进位单元置1,所以每进行加法时,都要将进位单元数据相加。

补码BCD码微机原理

补码BCD码微机原理
第2章 计算机中的数制和编码
2.2.4 补码的加减运算 1. 补码加法 在计算机中,凡是带符号数一律用补码表示,运算结果自
然也是补码。其运算特点是:符号位和数值位一起参加运算, 并且自动获得结果(包括符号位与数值位)。
补码加法的运算规则为:
[x]补 [ y]补 [x y]补
(2.2.5)
即:两数补码的和等于两数和的补码。
+129
结论:两个整数相加,结果应该为+129,结果确为负数-127, 发生错误的原因是运算中产生了溢出。
第2章 计算机中的数制和编码
2. 溢出的判断方法
判断溢出的方法很多,常见的有:① 通过参加运算的两个数
的符号及运算结果的符号进行判断。② 单符号位法。该方法通
过符号位和数值部分最高位的进位状态来判断结果是否溢出。
实现加法和减法运算,简化了电路。
第2章 计算机中的数制和编码 ② 无符号数和带符号数的加法运算可以用同一个加法器实 现,结果都是正确的。例如:
11100001 +) 00001101
11101110
无符号数
225 +) 13
238
带符号数
[-31]补 +) [+13]补
[-18]补
若两操作数为无符号数时,计算结果为无符号数11101110B, 其真值为238,结果正确;若两操作数为补码形式,计算结果也 为补码形式,11101110B为–18的补码,结果也是正确的。
第2章 计算机中的数制和编码
例2.11 已知 [+51]补=0011 0011B,[+66]补=0100 0010B,
[-51]补=1100 1101B,
[-66]补=1011 1110B

8421bcd码十进制加法计数 -回复

8421bcd码十进制加法计数 -回复

8421bcd码十进制加法计数-回复8421BCD码是一种二进制编码方法,用于表示十进制数字。

它是一种权重码,其中每个数字的权重是对应位置上的二进制位的权重。

本文将详细介绍8421BCD码的原理,以及如何进行十进制加法计算。

一、8421BCD码的原理8421BCD码是将十进制数字的每个数字转换为4位的二进制数。

它的名称由这4位二进制数的权重而来,即8、4、2和1。

这四个权重按照从左到右的顺序依次降低。

以十进制数字7为例,它的8421BCD码表示为0111。

其中,最高位的0对应权重8,次高位的1对应权重4,次低位的1对应权重2,最低位的1对应权重1。

我们可以看到,8421BCD码不仅可以表示十进制数字,也可以表示多位数。

二、8421BCD码的十进制加法计算8421BCD码的十进制加法计算与一般的十进制加法计算类似,只不过在进位时需要进行特殊的处理。

下面,我们将一步一步介绍如何进行8421BCD码的十进制加法计算。

1. 准备两个要相加的8421BCD码数假设我们要计算的两个8421BCD码数分别为A和B。

2. 从最低位开始逐位相加从右向左,按照位数依次相加。

如果相加结果超过9(8421BCD码中最大的数是9),则需要进位。

3. 进位处理当某一位相加结果超过9时,需要向左进位。

进位的规则是,将当前位的值加上10。

若超过9,则将结果除以10,保存个位数并进位。

4. 继续相加对于没有进位的位数,继续按照步骤2相加。

对于进位的位数,将进位值与下一位相加。

如果最高位有进位,则需要增加一位。

5. 检查结果最终得到的结果是以8421BCD码表示的。

需要检查结果是否超过了8421BCD码的范围,如果超过了,说明计算错误。

三、示例为了更好地理解8421BCD码的十进制加法计算过程,我们来看一个具体的示例。

假设我们要计算的两个8421BCD码数分别为A=0110和B=1011。

1. 从最低位开始逐位相加我们从最低位开始,相加后得到1。

十进制数+99的8位bcd码

十进制数+99的8位bcd码

十进制数+99的8位bcd码十进制数是我们日常生活中最常见的数字表示方式,它采用基数为10的数值系统。

在计算机领域,我们常常需要将十进制数转换成其他进制的数,如二进制、八进制、十六进制等,以方便计算和存储。

其中,BCD码是一种用二进制形式表示十进制数的编码方式。

在BCD码中,每个十进制数用4位二进制数表示,即每个十进制数占用一个字节,这样就可以将十进制数编码为二进制表示,方便计算机进行处理。

现在,我们来考虑一个问题:如何将一个十进制数和99相加,并将结果表示为8位BCD码?首先,我们需要了解BCD码的表示规则。

在BCD码中,0到9的十进制数分别用0000到1001的四位二进制数来表示。

例如,十进制数5用BCD码表示为0000 0101。

这样,我们就可以通过将两个十进制数的BCD码进行相加,来得到它们的和的BCD码。

假设要将一个十进制数x和99相加,并将结果表示为8位BCD码。

我们可以将x转换为二进制表示,然后将99转换为二进制表示,并进行相加操作。

最后,将相加的结果转换成BCD码。

具体步骤如下:1.将十进制数x转换为二进制表示。

这可以通过除2取余的方法来实现,即不断将x除以2,取余数并记录,直到商为0为止。

例如,假设x=73,我们可以进行如下计算:73 ÷ 2 = 36余136 ÷ 2 = 18余018 ÷ 2 = 9余09 ÷ 2 = 4余14 ÷ 2 = 2余02 ÷ 2 = 1余01 ÷2 = 0余1从上述计算中,我们可以得到二进制数x=1001001。

2.将数字99转换为二进制表示。

同样的方法,我们可以得到99的二进制表示为1100011。

3.将x和99的二进制数进行相加。

相加的规则与二进制数的相加规则相同,从低位开始相加,并记录每一位的进位。

具体计算如下:1001001+ 1100011__________10101000从上述计算中,我们可以得到相加结果为10101000。

BCD码算术运算指令

BCD码算术运算指令

表5.76所示梯形图程序及指令表的功能是: 5.76所示梯形图程序及指令表的功能是: 所示梯形图程序及指令表的功能是 当触发信号X0接通时,数据寄存器DT11 DT10中 X0接通时 DT11和 当触发信号X0接通时,数据寄存器DT11和DT10中 的内容和数据寄存器DT3 DT2中的内容相加 DT3和 中的内容相加, 的内容和数据寄存器DT3和DT2中的内容相加,相加的 结果存放在外部输出继电器WY2 WY1中 WY2和 结果存放在外部输出继电器WY2和WY1中。
8位BCD数据相加指令 二、F41(DB+) 8位BCD数据相加指令
当触发信号接通时, 当触发信号接通时,由S指定的8位BCD常 指定的8 BCD常 数或8 BCD数据与由 指定的8 BCD数据相加 数据与由D 数据相加, 数或8位BCD数据与由D指定的8位BCD数据相加, 相加结果存放在(D+1,D) (D+1,D)中 相加结果存放在(D+1,D)中。 (D+1,D)+(S+1,S) D+1,D) (D+1,D)
表5.73所示梯形图程序及指令表的功能是: 5.73所示梯形图程序及指令表的功能是: 所示梯形图程序及指令表的功能是 当触发信号X0接通时,内部字继电器WR0 X0接通时 WR0和数据寄 当触发信号X0接通时,内部字继电器WR0和数据寄 存器DT1中的内容相加, DT1中的内容相加 存器DT1中的内容相加,相加的结果存放在内部字继电 WR0中 器WR0中。
表5.77所示梯形图程序及指令表的功能是: 5.77所示梯形图程序及指令表的功能是: 所示梯形图程序及指令表的功能是 当触发信号X0接通时,内部字继电器WR0 X0接通时 WR0的内容 当触发信号X0接通时,内部字继电器WR0的内容 减去数据寄存器DT1中的内容,内部字继电器WR0 DT1中的内容 WR0中 减去数据寄存器DT1中的内容,内部字继电器WR0中。

bcd码的运算

bcd码的运算

bcd码的运算BCD码是一种常用的二进制编码形式,它采用4位二进制数来表示一个十进制数的每一位数字。

在计算机科学中,BCD码的运算是一项重要的技术,它在计算机系统中的数据处理和数值计算中起着重要的作用。

BCD码的运算涉及到加法、减法、乘法和除法等基本运算。

下面将分别介绍这些运算的原理和方法。

一、BCD码的加法运算BCD码的加法运算与二进制码的加法运算类似,但需要考虑到进位的情况。

具体步骤如下:1. 将两个BCD码的相应位数进行相加,得到一个4位的二进制数。

2. 如果相加结果大于9,则需要进位,进位的值为6。

3. 将进位与下一位的相加结果相加,重复上述步骤,直到所有位数相加完毕。

例如,将BCD码1010和0110相加:1 0 1 0+ 0 1 1 0-----------1 0 0 0二、BCD码的减法运算BCD码的减法运算与二进制码的减法运算类似,需要考虑到借位的情况。

具体步骤如下:1. 将被减数与减数的BCD码相应位数进行相减,得到一个4位的二进制数。

2. 如果相减结果小于0,则需要借位,借位的值为6。

3. 将借位与下一位的相减结果相减,重复上述步骤,直到所有位数相减完毕。

例如,将BCD码1010减去0110:1 0 1 0- 0 1 1 0-----------1 0 0 0三、BCD码的乘法运算BCD码的乘法运算是通过多次的加法运算实现的。

具体步骤如下:1. 将被乘数与乘数的BCD码的各位进行相乘,得到一个4位的二进制数。

2. 将相乘结果进行累加,得到最终的乘积。

例如,将BCD码1010乘以0011:1 0 1 0x 0 0 1 1-----------1 0 1 00 0 0 0 +-----------1 1 0 1四、BCD码的除法运算BCD码的除法运算是通过多次的减法运算实现的。

具体步骤如下:1. 将被除数与除数的BCD码进行相减,得到一个4位的二进制数。

2. 如果相减结果小于0,则继续向后一位借位,再进行相减。

BCD码

BCD码

dot百科名片BCD码(Binary-Coded Decimal‎)亦称二进码十进数或二-十进制代码。

用4位二进制数来表示1位十进制数中的0~9这10个数码。

是一种二进制的数字编码形式,用二进制编码的十进制代码。

BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。

这种编码技巧最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。

相对于一般的浮点式记数法,采用BCD码,既可保存数值的精确度,又可免却使电脑作浮点运算时所耗费的时间。

此外,对于其他需要高精确度的计算,BCD编码亦很常用。

BCD码编码器BCD码编码器dot简介由于十进制数共有0、1、2、……、9十个数码,因此,至少需要4位二进制码来表示1位十进制数。

4位二进制码共有2^4=16种码组,在这16种代码中,可以任选10种来表示10个十进制数码,共有N=16!/[10!*(16-10)!]等于8008方种方案。

常用的BCD代码列于末。

BCD码可分为有权码和无权码两类:有权BCD码有8421码、2421码、5421码,其中8421码是最常用的;无权BCD码有余3码、格雷码(注意:格雷码并不是BCD码)等。

84218421 BCD码是最基本和最常用的BCD码,它和四位自然二进制码相似,各位的权值为8、4、2、1,故称为有权BCD码。

和四位自然二进制码不同的是,它只选用了四位二进制码中前10组代码,即用0000~1001分别代表它所对应的十进制数,余下的六组代码不用。

5421和24215421 BCD码和2421 BCD码为有权BCD码,它们从高位到低位的权值分别为5、4、2、1和2、4、2、1。

这两种有权BCD码中,有的十进制数码存在两种加权方法,例如,5421 BCD码中的数码5,既可以用1000表示,也可以用0101表示;2421 BCD码中的数码6,既可以用1100表示,也可以用0110表示。

BCD码相加的程序段

BCD码相加的程序段

1.下面是一个实现16位非组合BCD码相加的程序段,阅读这一程序段后再设计一个实现16位非组合BCD码减法的程序:(减法)ANBCD MOV CH,AH 进入程序段时,AX中为第二个操作数(STASUB)(保存高8位)ADD AL,BL BX中为被加数,实现低8位相加(SUB) (低8位相减)AAA(DAS) (十进制调整)XCHG AL,CHADC AL,BH 实现高8位相加(SBB) (高8位相减)AAA(DAS)MOV AH,AC 和保存在AX中(AL) (结果保存在AX中)MOV AL,CHRET2.8259A的IMR寄存器和CPU的IF的区别:IF是标志寄存器中的一个控制标志位,只有一位,如果IF为0,则CPU不能响应任何可屏蔽中断,8259A的IMR为8位,对应OCW1,用来管理8259A的8个中断请求端,如果IMR的某一位为1,则对应的IRQ被禁止,但其他可屏蔽中断仍可通过8259A 到达CPU的INTR端而得到响应。

3.8253的6种工作模式:a.模式0——计数结束产生中断b.模式1——可编程的单稳态触发器c.模式2——分频器d.模式3——方波发生器e.模式4——软件触发的选通信号发生器f.模式5——硬件触发的选通信号发生器4.PCI的特点:a.高传输率b.高效率c.即插即用功能d.独立于CPUe.负载能力强且易于扩展f.兼容各类总线5.8255A三种工作方式:方式0——基本的输入\输出方式;方式1——选通的输入\输出方式;方式2——双向传输方式。

6.Pentium的工作方式:a.实地址方式b.保护方式c.虚拟8086方式d.系统管理方式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
任务八BCD码相加
在单片机应用系统中,通常都要求进行 BCD码的运算,特别是在十进制运算的系 统中,很多的系统在人机界面的输出部分 往往都要用十进制显示,所以BCD码是很 重要的一部分。本任务通过WAVE6000软 件来观看BCD码的相加过程。
在单片机应用系统中,通常都要求进行BCD码的运算, 特别是在十进制运算的系统中,很多的系统在人机界 面的输出部分往往都要用十进制显示,所以BCD码是 很重要的一部分。本任务通过WAVE6000软件来观看 BCD码的相加过程。 【任务目的】 1、理解什么是BCD码。 2、理解BCD码相加的过程。 【任务描述】 1、通过不同数据区的数据改变观察 BCD码的情况。 2、通过WAVE6000的窗口观察BCD码相加的情
2、两个四位十进制数相加
程序中,31H与30H储存的是一个加 数,41H与40H存储的是另一个加数,都 以压缩BCD码形式存储,其中31H高四位 是千位,低四位是百位,30H高四位是十 位,低四位是个位。41H和40H同样。两 个加数相加后存储在52H、51H、50H。 其中如有进位,则万位存储在52H的低四 位,51H存千位与百位,50H存十位与个 位。
二.BCD码基本知识

BCD码有很多种表示方法,我们通常用 的BCD码是8421BCD码,我们单片机课 程当中的BCD码如不特别说明就是指 8421BCD码,8421BCD码实际就是用 0000—1001这样十个四位二进制数表示 0—9十个十进制数,但我们是以字节为 单位的,一个字节是八位二进制数,如 果高四位和第四位各存一个BCD码,这 样叫做压缩BCD码。
ADD A , 30H
;将一个加数的低位和另一个加数的低位 相加
MOV 50H , A ;将和值存至和值寄存器的低位 MOV A , 41H ; ADDC A , 31H ;将两个加数的高位相加 MOV 51H , A ;将和值的数据存至和值高位 MOV A , #0 ;如果有进位的话,将进位放至万位,即 将进位位Cy加至ACC ;既可。 ADDC A , #0 ;ACC与0带进位位相加,就把Cy加至ACC 了 MOV 52H , A ;将进位位存至52H END ;结束伪指令
四.总结

把这段程序在WAV6000中编辑、汇编, 用软件仿真运行,我们通过按F8单步执 行,来观察SFR中的累加器ACC、状态寄 存器PSW的内容(进位标志位Cy)的变 化,与DATA窗口中30H、31H、40H、 41H、50H、51H、52H几个单元中的数 据变化,来感受十六进制与十进制的数 据变化情况。
MOV 50H , A
MOV A , 41H ADDC A , 31H DA A MOV 51H , A MOV A , #0
ADDC A , #0
MOV 52H , A END
;将加完并转化完的十进制数存至和值寄 存器的低位 ; ;将两个加数的高位相加 ;将高位相加后调整 ;将处理后的数据存至和值高位 ;如果有进位的话,将进位放至万位, 即将进位位Cy加至ACC ;既可。 ;ACC与0带进位位相加,就把Cy加至 ACC了 ;将万位存至52H ;结束伪指令
参考程序如下:
ORG 0000H
;定位伪指令,指定下一条指令的地址,第一条指令必须放在 0000H MOV 30H , #78H ;第一个加数的十位与个位。具体数值可以自己修改! MOV 31H , #34H ;第一个加数的千位与百位。具体数值可以自己修改! MOV 40H , #56H ;第二个加数的十位与个位。具体数值可以自己修改! MOV 41H , #12H ;第二个加数的千位与百位。具体数值可以自己修改! MOV 50H , #0 ;将和值所要存储的数据区先清零。 MOV 51H , #0 MOV 52H , #0 MOV A , 40H ;因为加减指令必有一个为ACC暂存器,所以先将一个加数的 低 ;位送至ACC中,用于和另一个加数的低位相加。 ADD A , 30H ;将一个加数的低位和另一个加数的低位相加 DA A ;因为相加是按十六进制相加的,所以加完后要将十六进制的 数 ;转化为十进制的
一.用于加法运算的指令和状态寄存器PSW
MOV A,direct 把RAM单元的内容传送到累加器ACC中 ADD A, direct 不带进位加法 ADDC A, direct 带进位加法 DA A 十进制调整 Cy:进位标志位。在加法或减法时,当和值大于255或差值小于0 时,Cy为1否则为0。 AC:辅助进位标志位。在加法或减法时,D3向D4有进位或借位, AC为1,否则为0。 F0:用户标志位,用户可以自行定义 RS1、RS0:当前寄存器组的选择位 OV:溢出标志位。D6、D7进位或借位不同时则发生溢出,即OV 为1,否则为0. P: 奇偶标志位。当累加器ACC中1的个数为奇数时,P为1,否则 为0。
ቤተ መጻሕፍቲ ባይዱ
三.实训内容与步骤
1、两个四位十六进制数相加 程序中,31H与30H储存的是一个加 数,41H与40H存储的是另一个加数,都 以十六进制(即四位2进制)形式存储, 其中31H是高位,30H是低位。41H和40H 同样。两个加数相加后存储在52H、51H、 50H。其中如有进位,则进位位存储在 52H中,51H存高位,50H存低位。
参考程序如下: ORG 0000H ;定位伪指令,指定下一条指令的地址,第一条指 令必须放在0000H MOV 30H , #78H ;第一个加数的高位。具体数值可以自己修改! MOV 31H , #34H ;第一个加数的低位。具体数值可以自己修改! MOV 40H , #56H ;第二个加数的高位。具体数值可以自己修改! MOV 41H , #12H ;第二个加数的低位。具体数值可以自己修改! MOV 50H , #0 ;将和值所要存储的数据区先清零。 MOV 51H , #0 MOV 52H , #0 MOV A , 40H ;因为加减指令必有一个为ACC暂存器,所以先将 一个加数的低 ;位送至ACC中,用于和另一个加数的低位相加。
相关文档
最新文档