多位十进制数加法器实验-2014
实验二多位十进制数加法实验

实验二多位十进制数加法实验
一、实验目的
1.熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程。
2.掌握数据传送和算术运算指令的用法。
3.熟悉和掌握用DEBUG调试程序的方法。
二、实验内容
将两个多位十制数4678和2556相加,要求加数和被加数均以ASCII码形式各自顺序存放在以DATAl和DATA2为首的5个内存单元中(低位在前),结果送回DATAl处,并显示结果。
操作步骤:
打开MASM文件夹,检查我们要用到的四个文件EDIT ,MASM.EXE,LINK.EXE,DEBUG 。
1.进入EDIT编辑环境建立和修改汇编源程序文件(文件名要以.ASM结尾)
2.用MASM命令汇编源文件以产生相应的目标文件(OBJ文件)
3.用LINK命令连接目标文件以产生可执行文件(EXE文件)
4.用DEBUG调试,记录调试过程,
5. 运行可执行程序。
相关中断调用表
三、实验报告要求
1.整理运行正确的源程序,加上注释。
2.写出程序运行结果。
3.总结应用DEBUG调试程序的方法。
4.回答思考题。
多位十进制数加法器设计.

深圳大学实验报告课程名称:微机原理及应用实验实验项目名称:多位十进制数加法器设计学院:物理科学与技术学院专业:应用物理指导教师:报告人:学号:班级:应用物理班实验时间:2015-10-19实验报告提交时间:2015-11-02教务处制五、程序说明(预习)七、实验源程序清单(实验后以电子报告形式存储到指定位置)1.源程序路径及文件名:ADD2.ASM ADD1.ASM2.可执行程序路径及文件名:八、上机调试情况说明EMU8086:一:没有键盘录入1.结果显示如下:2.程序运行时的各段地址:3.两个子程序IP入口:4.改变两个加数数值5.子程序格式及其调用方法和宏汇编区别子程序格式:子程序名称PROC NEAR ; 子程序定义; …子程序内容RET ;子程序返回子程序名称ENDP ;子程序结束调用格式:CALL 子程序名称注意事项:1、子程序不能直接传递参数,需要自行定义变量。
2、注意保护现场和恢复现场。
宏汇编与子程序的区别:1、宏汇编有宏展开,子程序没有2、宏汇编可以传递参数。
二:键盘录入DOS:例如:250+250=500例如:62142+63123=125265九、实验结果与分析结果如下:十、实验总结(必备部分,评分重要依据之一)本次实验实则是对实验二的加强巩固基础上,进行更加友好的人机交互设计;通过本次实验不仅在程序中首先把两个加数固定,在实验二的基础上扩展位数,考虑到最高位进位的情况,并最终得出正确结果;后来又通过键盘录入两个加数,增加了人机交互的设计,如此一来,更加加深了对寄存器的使用,汇编语言宏定义,子程序调用以及DOS功能调用的学习。
同时,通过本次实验的学习,更加熟练了EMU8086工具的使用,也把理论课上学习到的汇编操作指令实际操作,对汇编语言的风格加深认识。
MOV DL,BLINT 21HCRLFJMP BEGINERROR:CRLFMOV AH,09H ;显示输入错误LEA DX,STRING3INT 21HCRLFJMP BEGINEXIT:CRLFMOV AH,09H ;显示成功退出LEA DX,STRING4INT 21HMOV AH,4CHINT 21HCODE ENDSEND START(2)请问你的程序能否处理加数和被加数都介于0~65535范围但计算结果超出该范围的情况?如何改进?可以,如图:主要考虑到最高位是否进位,可以设置一个进位变量加以判断。
十进制加法计数器

十进制加法器设计1课程设计的任务与要求 课程设计的任务1、综合应用数字电路知识设计一个十进制加法器。
了解各种元器件的原理及其应用。
2、了解十进制加法器的工作原理。
3、掌握multisim 软件的操作并对设计进行仿真。
4、锻炼自己的动手能力和实际解决问题的能力。
5、通过本设计熟悉中规模集成电路进行时序电路和组合电路设计的方法,掌握十进制加法器的设计方法。
课程设计的要求1、设计一个十进制并运行加法运算的电路。
2、0-9十个字符用于数据输入。
3、要求在数码显示管上显示结果。
2十进制加法器设计方案制定 加法电路设计原理图1加法运算原理框图如图1所示第一步置入两个四位二进制数。
例如(1001)2,(0011)2和(0101)2,(1000),同时在两个七段译码显示器上显示出对应的十进制数9,3和5,8。
2第二步将置入的数运用加法电路进行加法运算。
第三步前面所得结果通过另外两个七段译码器显示。
即:加法运算方式,则(1000)2+(0110)2=(1110)2 十进制8+6=14 并在七段译码显示出14。
运算方案通过开关S1——S8接不同的高低电平来控制输入端所置的两个一位十进制数,译码显示器U8和U9分别显示所置入的两个数。
数A直接置入四位超前进位加法器74LS283的A4——A1端,74LS283的B4——B1端接四个2输入异或门。
四个2输入异或门的一输入端同时接到开关S1上,另一输入端分别接开关S5——S8,通过开关S5——S8控制数B的输入,通过加法器74LS283完成两个数A和B的相加。
由于译码显示器只能显示0——9,所以当A+B>9时不能显示,我们在此用另一片芯片74LS283完成二进制码与8421BCD码的转换,即S>9(1001)2时加上3(0011)2,产生的进位信号送入译码器U10来显示结果的十位,U11显示结果的个位。
3十进制加法器电路设计加法电路的实现用两片4位全加器74LS283和门电路设计一位8421BCD码加法器。
十进制加法器

十进制加法器十进制加法器可由BCD码(二-十进制码)来设计,它可以在二进制加法器的基础上加上适当的“校正”逻辑来实现,该校正逻辑可将二进制的“和”改变成所要求的十进制格式。
n位BCD码行波式进位加法器的一般结构如图2.3(a)所示,它由n级组成,每一级将一对4位的BCD数字相加,并通过一位进位线与其相邻级连接。
而每一位十进制数字的BCD 加法器单元的逻辑结构示于图2.3(b)。
图2.3 十进制加法器在十进制运算时,当相加二数之和大于9时,便产生进位。
可是用BCD码完成十进制数运算时,当和数大于9时,必须对和数进行加6修正。
这是因为,采用BCD码后,在二数相加的和数小于等于9时,十进制运算的结果是正确的;而当相加的和数大于9时,结果不正确,必须加6修正后才能得出正确的结果。
因此,当第一次近似求值时,可将它看成每一级是一个4位二进制加法器来执行,就好像xi 和yi是普通4位二进制数一样。
设S'i代表这样得到的4位二进制数和,C'i+1为输出进位,而Si 代表正确的BCD和,Ci+1代表正确的进位,那么当xi+yi+Ci<10时,Si=S'i当Xi +Yi+Ci≥10时,Si=S'i+6显然,当C'i+1=1或S'i≥10时,输出进位C i+1=1。
因此,可利用C i+1的状态来产生所要求的校正因子:Ci+1=1时校正因子为6;Ci+1=0时校正因子为0。
在图2.3(b)中,4位行波式进位的二进制加法器计算出和S'i ,然后S'i经过第二级二进制加法器加上0或6,则产生最终结果Si。
十进制加法器

十进制加法器引言十进制加法器是一种用于实现十进制数字相加的电路或程序。
在计算机科学和数字电路设计中,十进制加法器是一项重要的基础技术。
本文将介绍十进制加法器的原理、实现方法以及应用领域。
原理十进制加法器的原理是根据十进制加法规则,将两个十进制数的各位依次相加,并将进位传递到下一位上。
具体步骤如下:1.从个位开始,将两个加数的个位相加,得到个位的和以及进位;2.将两个加数的十位和上一步的进位相加,得到十位的和以及进位;3.重复上述步骤,直到所有位上的数字相加完成。
实现方法1. 数字电路实现十进制加法器可以通过数字电路来实现。
常用的实现方法有传统的加法器和带有进位预测(Carry Look Ahead)的加法器。
传统的十进制加法器由10个全加器(Full Adder)组成,其中每个全加器用于相加两位数的一个位以及传递进位。
全加器的输入包括两个加数和上一位的进位,输出包括该位的和以及进位。
带有进位预测的十进制加法器通过预测进位的方式,减少了计算过程中需要的级数和门延时,从而提高了运算速度。
这种加法器通过先计算进位的状态,然后再求和,实现了进位和求和两个部分的并行计算。
2. 数字模拟实现除了数字电路外,十进制加法器还可以通过计算机程序来实现。
使用编程语言如C、C++、Python等编写程序,可以模拟实现十进制加法器的功能。
在程序中,加数和被加数通常被表示为数组形式,每个元素代表一位数字。
通过循环迭代相加各位,并考虑进位的情况,可以得到相加的结果。
3. 软硬件结合实现在实际应用中,十进制加法器常常通过软硬件结合的方式来实现。
利用FPGA(Field Programmable Gate Array)等可编程硬件,可以灵活地设计和实现十进制加法器的功能。
通过编写硬件描述语言(HDL)如Verilog或VHDL来描述加法器的原理和功能,然后通过FPGA编程工具进行编译和实现。
这种方法可以同时发挥硬件的并行计算能力和软件的灵活性。
十进制加法计数器

在数字系统中,常需要对时钟脉冲的个数进行计数,以实现测量、运算和控制等功能。
具有计数功能的电路,称为计数器。
计数器是一种非常典型、应用很广的时序电路,计数器不仅能统计输入时钟脉冲的个数,还能用于分频、定时、产生节拍脉冲等。
计数器的类型很多,按计数器时钟脉冲引入方式和触发器翻转时序的异同,可分为同步计数器和异步计数器;按计数体制的异同,可分为二进制计数器、二—十进制计数器和任意进制计数器;按计数器中的变化规律的异同,可分为加法计数器、减法计数器和可逆计数器。
二进制加法计数器运用起来比较简洁方便,结构图和原理图也比其它进制的简单明了,但二进制表示一个数时,位数一般比较长。
十进制是我们日常生活中经常用到的,不用转换,所以设计十进制加法计数器比设计二进制加法计数器应用广泛,加法器是以数据的累加过程,日常生活中,数据的累加普遍存在,有时候需要一种计数器对累加过程进行运算处理,所以设计十进制加法计数器应广大人们生活的需要,对我们的生活有一个积极地促进作用,解决了生活中许多问题,所以会设计十进制加法计数器使我们对数字电路的理论和实践知识的充分结合,也使我们对电子技术基础有了深刻的了解,而且增强了我们对电子技术基础产生了浓厚的兴趣,这次课程设计使我受益匪浅!一、设计题目 (3)二、设计目的 (3)三、设计依据 (3)四、设计内容 (3)五、设计思路 (4)六、设计方案 (7)七、改进意见 (10)八、设计总结 (11)九、参考文献 (12)一、设计题目十进制加法计数器二、设计目的1.学习电子电路设计任务。
2.通过课程设计培养学生自学能力和分析问题、解决问题的能力。
3.通过设计使学生具有一定的计算能力、制图能力以及查阅手册、使用国家技术标准的能力和一定的文字表达能力。
三、设计依据1.用JK触发器组成。
2.实现同步或异步加法计数。
四、设计内容1.复习课本,收集查阅资料,选定设计方案;2.绘制电气框图、电气原理图;3.对主要元器件进行计算选择,列写元器件的规格及明细表;4.设计总结及改进意见;5.参考资料;6.编写说明书。
总结用74ls192集成计数器组成n位十进制加减法器方法

总结用74ls192集成计数器组成n位十进制加减法器
方法
74ls192集成计数器是一种常用的数字电路元件,可以用来组成n位
十进制加减法器。
其原理是通过将多个74ls192集成计数器连接起来,实现对数字的计数和加减运算。
具体实现方法如下:
1. 对于n位十进制加法器,需要使用n个74ls192集成计数器。
每个74ls192集成计数器都可以实现对一个十进制数位的计数,因此需要
将它们连接起来,形成一个n位的计数器。
2. 对于加法运算,需要将两个n位的十进制数相加。
可以将它们分别
输入到两个n位十进制加法器中,然后将它们的输出相加,得到最终
的和。
3. 对于减法运算,需要将两个n位的十进制数相减。
可以将它们分别
输入到两个n位十进制加法器中,然后将其中一个数取反,再将它们
的输出相加,得到最终的差。
4. 在实现加减法运算时,需要考虑进位和借位的问题。
可以使用
74ls192集成计数器的进位和借位输出来实现。
5. 在连接多个74ls192集成计数器时,需要注意它们的时钟信号和复位信号的连接方式。
可以使用串行连接或并行连接的方式。
总之,使用74ls192集成计数器组成n位十进制加减法器是一种简单而有效的方法,可以实现对数字的计数和加减运算。
在实际应用中,需要根据具体的需求和电路设计来选择合适的连接方式和电路元件,以实现最佳的性能和可靠性。
第4组 3位串行加法器

第4组3位串行加法器_课程报告项目名称:可数字显示的3位串行进位加法器组员:邵捷(1111122217)罗洪强(1111122216)姜帅(1111122204)指导教师:张凡上课时间:2013/9/16 ~2013/9/27项目摘要:将三个一位全加器串联,实现0到7的十进制加法运算,加数以二进制的形式从两端口输入。
并分别对两个加数与和数进行译码,输出到三个数码管上,以十进制的形式分别显示出两个加数的输入值与和数的输出值。
关键字:全加器FPGA 数字显示一、实验目的实现0到7的十进制加法运算,加数以二进制的形式从两端口输入。
并给出三个数码管,以十进制的形式分别显示出两个加数的输入值与和数的输出值。
二、实验设备FPGA器件、USB JTAG调试工具、Quarts9.0软件、VHDL硬件设计语言。
三、硬件设计3.1 框图数据显示器1 数据显示器2 数据显示器3A0 A1 A2 B0 B1 B2 S0 S1 S2 CO求和输出值S0 CO S1 CO S2 CO1位全加器1位全加器1位全加器A0 B0 A1 B1 A2 B2A0 A1 A2 B0 B1 B2输入端口1 输入端口23.2 原理阐述取3只全加器,依次将低位全加器的进位输出端接到高位全加器的进位输入端,便可得到3位串行进位加法器,此时有六个输入端口A0、B0、A1、B1、A2、B2和四个输出端口S0、S1、S2、CO 。
分别将六个端口通过6只开关与5V 直流电源连接起来当相应输入端口所对应的开关闭合,该端口就被输入二进制数1;开关断开,该端口就被输入二进制数0。
再将A0、A1、A2端口从低位到高位依次接到DCD_HEX_ORANGE 上,B0、B1、B2端口从低位到高位依次接到另一只DCD_HEX_ORANGE 上。
这样当两个相加的数A2A1A0、B2B1B0被以二进制的形式输入时,其对应的DCD_HEX_ORANGE 上就会以十进制的形式显示出其数值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三多位十进制数加法器设计
1、实验目的
(1)继续熟练掌握在PC机上建立、汇编、链接、调试和运行8088汇编语言程序的过程;
(2)学习数据传送和算术运算指令的用法;
(3)掌握子程序设计方法;
(4)掌握宏汇编设计方法;
(5)掌握键盘输出的DOS功能调用方法。
2、实验内容
(1)将两个多位十进制数相加。
要求被加数、加数均以ASCII码形式各自按高位高地址的规律分别顺序存放在以DATAl和DATA2为首的5个内存单元中(低位在前),结果送回结果变量DATA3处,并屏幕显示结果。
(2)在以上程序基础上,设计一个多位十进制数加法器,键盘输入十进制加数和被加数,将输入和输出结果以竖式形式显示在屏幕。
3、提示:
(1)算法说明:以42136与12547相加为例,首先将两个数中的每一位都以ASCII码存入相应的内存单元,然后将每一位数都减去30H,并将被加数DATA1和加数DATA2相对应位相加(BCD码加法及其十进制调整,要考虑低位向高位的进位),存入相应的结果DATA3存储单元中,最后将该单元中的每一位数转换成相应的ASCII码,调用DOS系统功能调用的显示字符指令,显示两数相加的结果。
(2)部分程序代码:
DATA SEGMENT ;数据段
…;补充必要的代码,定义被加数、加数和结果变量
DATA ENDS
STACK SEGMENT STACK ;堆栈段
STA DB 64 DUP(0)
SP_TOP DB 0
STACK ENDS
CODE SEGMENT ; 代码段
…;补充必要的代码
;显示回车换行功能用宏定义CRLF实现,放在代码段最前面
CRLF MACRO
MOV DL,0DH ;回车(0DH为回车的ASCII 码)
MOV AH,02H ; 送DOS 的中断调用功能号
INT 21H ; DOS 的中断调用
...;补充必要的代码:用DOS功能调用实现换行,0AH为换行的ASCII 码
ENDM
START:
...; 补充必要的代码:程序开头必须要有的五条指令
; 显示被加数,并回车换行
MOV BX, OFFSET DATA1
MOV SI, 05
CALL DISPL ; 显示被加数,DISPL为显示子程序
CRLF ; 回车、换行宏调用
…; 补充必要的代码,显示加数
CALL ADDA ;调用加法运算子程序
…; 补充必要的代码,显示结果
…; 补充必要的代码:回车、换行
...; 补充必要代码:主程序结束,返回DOS
;DISPL为字符串显示子程序
DISPL PROC NEAR ; 子程序定义
DSL: MOV AH,02 ; 送显示功能号
MOV DL,[BX+SI-1] ; 显示字符串中一字符
INT 21H ; DOS INT 21 功能调用
DEC SI ;修改偏移量
JNZ DSL
RET
DISPL ENDP
; 多位数加法子程序
ADDA PROC NEAR
...;需要自编的求和核心程序
RET
ADDA ENDP
;代码段与程序结束
CODE ENDS
END START
(3)加法器的设计:需要用到字符串输入和字符串输出的DOS功能调用。
回撤换行的ASCII码分别是0DH,0AH
i.0AH功能输入:
……
STR1 DB 6, ?, 6 DUP(20H)
;存放键盘输入的被加数,最多5位数+1位结束符回车符0DH
STR2 DB 6, ?, 6 DUP(20H);存放键盘输入的加数
STR3 DB 10, DUP(20H), ‘$’
……
LEA DX, STR1
MOV AH, OAH
INT 21H
CRLF
LEA DX, STR1
MOV AH, OAH
INT 21H
ii.09H功能输出:
把加数与被加数从低位到高位按位相加后,若结果的由高位到低位的ASCII存入了STR3,则
LEA DX, STR3
MOV AH, O9H
INT 21H
执行后,结果可显示在当前光标出。
注意竖式显示的时候,要对齐。
4.实验及报告要求:
1)要求画出完整的程序流程图。
2)根据流程图和部分提示代码,编写完整的汇编代码源文件(特别是以上红字部分),并存入合适目录,要求补充写出所有未注释的伪指令和指令的注释; 3)编译、连接生成可执行文件,分别在debug和Emu8086下调试该可执行文件,给出程序运行时的各段地址(CS=?,DS=?SS=?ES=?)及两个子程序入口的IP; 试改变加数和被加数,如何从内存中观察结果的变化?总结子程序格式及其调用方法;结合本程序说明宏调用与子程序的区别。
4)写出完整的实验报告,特别是“实验结果”与“实验总结体会”部分,是评分的主要依据。
5)实验总结中要求结合实验中的经验、教训或体会对汇编语言格式、调试方法、汇编指令及汇编语言编程方法、微机原理学习方法作出总结。
5.思考题
1)在键盘上输入一个字符或数字,要求:对十六进制数字(由0-9,A~F 或a~f组成),显示该数字的十进制值;当输入值为Q时结束程序,对其他输入提示输入不合法。
画出程序流程图并请写出完整程序代码。
(必做)
2)请问你的程序能否处理加数和被加数都介于0~65535范围但计算结果超出该范围的情况?如何改进?
3)加数或被加数为负数,结果是否正确,输出格式上作何处理?。