实验一 两个多位十进制数相加的实验
组合逻辑电路实验分析

实验四组合逻辑电路实验分析一、实验目的1.掌握组合逻辑电路的分析方法与测试方法;2.了解组合电路的冒险现象及消除方法;3.验证半加器、全加器的逻辑功能。
二、预习要求1.复习组合逻辑电路的分析方法;2.复习用与非门和异或门等构成的半加器、全加器的工作原理;3.复习组合电路冒险现象(险象)的种类、产生原因,如何消除?三、实验原理1.组合逻辑电路由很多常用的门电路组合在一起,实现某种功能的电路,它在任意时刻的输出,仅取决于该时刻输入信号的逻辑取值,而与信号作用前电路原来的状态无关。
2.组合逻辑电路的分析是指根据所给的逻辑电路,写出其输入与输出之间的逻辑函数表达式或真值表,从而确定该电路的逻辑功能。
其分析步骤为:3.组合电路的冒险现象(1)实际情况下,由于器件的延时效应,在一个组合电路中,输入信号发生变化时,输出出现瞬时错误的现象,把这现象叫做组合电路中的冒险现象,简称险象。
这里研究静态险象,即电路达到稳定时,出现的险象。
可分为0型静态险象(如图4-1)和1型静态险象(如图4-2):图4-1 0型静态险象其输出函数Y=A+A,在电路达到稳定时,即静态时,输出Y总是1。
然而在输入A变化时,输出Y的某些瞬间会出现0,Y出现窄脉冲,存在有静态0型险象。
图4-2 1型静态险象其输出函数Y=A+A,在电路达到稳定时,即静态时,输出Y总是O。
然而在输入A变化时,在输出Y的某些瞬间会出现1,Y出现窄脉冲,存在有静态1型险象。
(2)进一步研究得知,对于任何复杂的组合逻辑电路,只要能成为A+A或A A的形式,必然存在险象。
为了消除险象,通常用增加校正项的方法,如果表达式中出现A+A形式的电路,校正项为被赋值各变量的“乘积项”;表达式中出现A A形式的电路,校正项为被赋值各变量的“和项”。
例如:逻辑电路的表达式为Y=A B+AC;当B=C=1时,Y=A+A,Y正常情况下,稳定后应输出1,但实际中出现了0型静态险象。
这时可以添加校正项BC,则Y A B+AC+ BC=A+A+1=1,从而消除了险象。
多位十进制数加法实验报告

多位十进制数加法实验报告实验一两个多位十进制数相加的实验实验一两个多位十进制数相加的实验一、实验目的1、学习数据传送和算术运算指令的用法。
2、熟悉在PC机上建立、汇编、链接、调试和运行8088汇编语言程序的过程。
二、实验内容将两个多位十进制数相加。
要求被加数均以ASCII码形式各自顺序存放在以DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。
三、程序框图四、程序清单CRLF MACROMOV DL,0DHMOV AH,02HINT21HMOV DL,0AHMOV AH,02HINT21HENDMDATA SEGMENTDATA1DB 33H,39H,31H,37H,34HDATA2DB 36H,35H,30H,38H,32HDATA ENDSSTACKSEGMENTSTA DB20 DUP(?)TOP EQU LENGTH STASTACKENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START:MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV SI,OFFSET DATA2MOV BX,05CALL DISPLCRLFMOV SI,OFFSET DATA1MOV BX,05CALL DISPLCRLFMOV DI,OFFSET DATA2CALL ADDAMOV SI,OFFSET DATA1MOV BX,05CALL DISPLCRLFMOV AX,4C00HINT21HDISPLPROC NEARDS1: MOV AH,02MOV DL,[SI+BX-1]INT21HDEC BXJNZ DS1RETDISPLENDPADDA PROC NEARMOV DX,SIMOV BP,DIMOV BX,05AD1: SUBBYTE PTR [SI+BX-1],30HSUBBYTE PTR [DI+BX-1],30HDECBXJNZAD1MOV SI,DXMOV DI,BPMOV CX,05CLCAD2: MOV AL,[SI]MOV BL,[DI]ADC AL,BLAAAMOV [SI],ALINCSIINCDILOOP AD2MOV SI,DXMOV DI,BPMOV BX,05AD3: ADDBYTE PTR [SI+BX-1],30H ADDBYTE PTR [DI+BX-1],30HDECBXJNZ AD3RETADDA ENDPCODE ENDSEND START五、实验要求1.读懂源程序,写出源程序注释。
十进制加法计数器

十进制加法器设计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码加法器。
多位十进制数加法器设计.

深圳大学实验报告课程名称:微机原理及应用实验实验项目名称:多位十进制数加法器设计学院:物理科学与技术学院专业:应用物理指导教师:报告人:学号:班级:应用物理班实验时间: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范围但计算结果超出该范围的情况?如何改进?可以,如图:主要考虑到最高位是否进位,可以设置一个进位变量加以判断。
微机原理及实验指导

实验一、I/O程序设计一.实验内容:I/O程序设计(一)实验内容:1.编程由键盘输入任意一个字符,将该字符的ASCII码值显示在屏幕上。
2.从键盘输入两个1位十进制数,计算二者之和,并将结果显示在屏幕上。
3.编程由键盘输入任意一位数,将该数以二进制数形式显示在屏幕上,例:5=00000101B (二)实验步骤: 1. 画出实验流程图。
2. 运行Tddebug软件,选择Edit菜单编写实验程序 3. 使用Compile菜单中的Compile和Link对实验程序进行汇编、连接,生成执行文件。
4. 使用Rmrun菜单中的Run运行程序,观察运行结果。
5. 使用Rmrun菜单中的Debug调试程序。
单步执行指令,观察各寄存器及数据区的内容。
6. 更改数据区中的数据,考察程序的正确性。
二.分析设计思想。
设计思路:首先将该数以十六进制数形式分解,然后将每一位分别转换为ASCII码送屏幕显示。
其中0H~9H之间的数加30H,即可得0H~9H的ASCII码,而AH~FH的ASCII码,则需再加7H,参见表5-1。
参考程序流程如图2-1所示。
示例程序参见参考程序清单。
三.程序清单及流程DATA SEGMENTMES DB 'Show a as hex:',0AH,0DH,'$'SD DB 'a'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MES ;显示提示信息MOV AH,09H INT 21HMOV SI,OFFSET SD 4MOV AL,DS:[SI]AND AL,0F0H ;取高4位MOV CL,4SHR AL,CLCMP AL,0AH ;是否是A以上的数JB C2ADD AL,07HC2: ADD AL,30HMOV DL,AL ;显示字符MOV AH,02HINT 21HMOV AL,DS:[SI]AND AL,0FH ;取低4位CMP AL,0AHJB C3ADD AL,07HC3: ADD AL,30HMOV DL,AL ;显示字符MOV AH,02HINT 21HMOV AH,4CH ;返回DOSINT 21HCODE ENDSEND START四.实验结果。
19+7的解题方式

19+7的解题方式19+7的解题方式有很多种,下面将介绍一种较为常见的解题方式。
一、列竖式加法列竖式是一种常见的数学解题方法,可以将加法运算分步进行,逐位相加。
以19+7为例,按照十位、个位的顺序列竖式如下:1 9+ 7——2 6将19和7的个位数相加得到6,然后将19和7的十位数相加(进位),得到2作为十位数。
最后将十位和个位数相连,得到结果26。
这种解题方式简单直观,适用于小数的加法计算。
二、手算加法法则手算加法法则是一种将加法运算按照规则进行分解的方法,便于计算。
1.利用进位法则,首先将个位相加,如果结果大于等于10,记住进位,将个位数字写下。
9 + 7 = 16,个位数字为6,进位为1。
2.再将十位相加,如果有进位,则将进位加上。
1(进位) + 1(十位) = 2。
3.将十位和个位数字连接起来,得到结果。
2 6。
这种解题方式利用了进位法则,较为灵活,适用于小数和较大数的加法计算。
三、运用十进制加法规则十进制加法规则是一种运用位权法则的数学解题方法,适用于任意数量的位数相加。
1.先将个位数相加,得到个位数字。
9 + 7 = 16,个位数字为6。
2.再将十位数相加,同时将个位数的进位加上。
1(进位) + 1(十位) = 2。
3.将十位和个位数字连接起来,得到结果。
2 6。
这种解题方式利用了位权法则,可以计算任意位数的加法,但需要对每一位的进位注意处理。
四、数形结合法数形结合法是一种将加法运算表示为图形的解题方法,利用图形的具体形状和数量进行计算。
以19+7为例,可以将19视为一组有19个小球的圆柱,将7视为另一组有7个小球的圆柱,然后将两组小球合并。
将两个圆柱上的小球排列在一起,然后数取得总数。
在这种方法中,可以通过对图形进行计数来得到结果。
例如,在数轴上表示两个数,可以找到最大的数,然后在该数点上再数相应的数即可。
这种解题方式利用了空间感和图形感,适用于一些具体物体和空间的加法计算。
五、分组分解法分组分解法是一种将加法运算按照位数进行分解的方法,便于计算。
一位十进制全加器

一位十进制全加器华北电力大学一位十进制全加器课程名称:数字电子技术基础专业班级:电力实1201、电力实1202 指导教师:何玉钧小组成员:朱思丞(1201)潘俊诚(1201)陶冀(1201)曹晟哲(1202)谢力也(1201)吴若冰(1201)一位十进制全加器一、Multisim简介Multisim是一个专门用于电路设计与仿真的工具软件。
它以界面形象直观、操作方便、分析功能强大、易学易用等突出优点,迅速被推广应用。
Multisim仿真软件能将电路原理图的创建、电路的仿真分析及结果输出都集成在一起,并具有绘制电路图所需的元器件及其仿真测试的仪器,可以完成从电路的仿真设计到电路版图生成的全过程,从而为电子系统的设计、电子产品的开发和电子系统工程提供一种全新的手段和便捷的方法。
二、实验目的1.掌握全加器的工作原理。
2.掌握逻辑电路图的设计思路。
3.熟练运用Multisim 软件进行电路的仿真。
4.培养所学理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力。
三、一位十进制全加器设计原理1.输入十个按键8421BCD码编码器原理可以列些十个按键8421BCD码编码器真值表:输入S9 S8 S7 S6 S5 S4 S3 S2 S1 S0 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 01 1 1 1 1 1 1 1 0 11 1 1 1 1 1 1 0 1 11 1 1 1 1 1 0 1 1 11 1 1 1 1 0 1 1 1 11 1 1 1 0 1 1 1 1 11 1 1 0 1 1 1 1 1 11 1 0 1 1 1 1 1 1 11 0 1 1 1 1 1 1 1 1A 0 0 0 0 0 0 0 0 0 1B 0 0 0 0 0 1 1 1 1 0输出 C 0 0 0 1 1 0 0 1 1 0D GS 0 0 1 0 1 0 1 0 1 00 1 1 1 1 1 1 1 1 1对真值表进行分析可以得知:①该编码器为输入低电平有效;②在按下S0~S9中任意一个键时,即输入信号中有一个为低电平时GS=1,表示有信号输入,而只有S0~S9均为高电平时GS=0,表示无信号输入,此时的输出代码0000为无效代码。
数字逻辑电路课程课程设计--简易加减计算器

摘要本次课程设计的任务是设计一个具有加减运算功能的简易计算器,并通过合适的方式来显示最后的计算结果。
此次设计电路的完成主要是利用简单的数字电路和电路逻辑运算来进行的。
简易加减计算器电路主要是对数据的输入与显示,数据的加减运算,数据的输出与显示三个主要的方面来设计研究完成的。
在输入电路的部分,我们通过开关的闭合与断开来实现数据的输入,开关闭合接入高电平“1”,断开接入低电平“0”。
而输入的数据将通过显示译码管以十进制的形式显示出来。
由于输入二进制的位数较多,我们采用个位十位分别输入的方式来简化电路。
加减运算电路则主要通过加法器来实现的。
设计电路时,我们将个位和个位、十位和十位分别接入一片加法器。
在进行加法运算时我们所选择的加法器是完全符合要求的,但是在进行减法运算时加法器就不能满足我们的设计要求了。
因此我们将减法转换为加法进行运算,运算时采用补码的形式。
在进行减法时通过异或门将减数的原码全部转换为补码,输入加法器中进行相加。
最后将进位信号加到十位的运算电路上就实现了加减法的运算电路。
在显示电路中,由加法器输出的数据是二进制码。
这些码可能表示超过十的数字,所以显示译码管就不能正确的显示出数字了。
此时要将二进制转化成BCD码,再将BCD 码送到显示译码管中就可以将计算所得的数字显示出来了。
概述1.1设计题目:简易加减计算器1.2设计任务和要求:1)用于两位以下十进制数的加减运算。
2)以合适的方式显示输入数据及计算结果。
1.3设计方案比较:方案一:输入十进制的数字,再通过编码器对十进制的数字进行编码,输出二进制的数据。
运用显示译码器对输入的数字以十进制的形式进行显示。
在进行加减计算的时候将二进制数字运用数模转换,然后再进行相加减。
然后将这些模拟信号再次转换成数字信号转换成数字信号,再将数字信号输入到显示译码管中来显示数剧。
这个方案中要进行数模转换和模数转换所需要的电路器件有些复杂,并且转换的时候需要很长的时间,而且转换以后数值的精度不高。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一两个多位十进制数相加的实验
一、实验目的
1、学习数据传送和算术运算指令的用法。
2、熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。
二、实验内容
将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。
三、程序框图
四、程序清单
DATA SEGMENT ;定义数据段
DATA1 DB 33H,39H,31H,37H,34H ;被加数
DATA1END EQU $-1
DATA2 DB 34H,35H,30H,38H,32H ;加数
DATA2END EQU $-1
SUM DB 5 DUP(?) ;定义5个空字节
DATA ENDS
STACK SEGMENT ;定义堆栈段
STA DB 20 DUP(?) ;取从STA开始的20个字节为堆栈段
TOP EQU LENGTH STA ;将堆栈段长度存放在TOP中
STACK ENDS ;堆栈段定义结束
CODE SEGMENT ;定义程序代码段
ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA ;表明程序代码段与段地址之间的关系START: MOV AX,DATA
MOV DS,AX ;将段地址送入段地址寄存器
MOV AX,STACK
MOV SS,AX ;将当前堆栈段首地址送入SS
MOV SP,AX ;将堆栈段首地址送入堆栈指针寄存器
MOV SI,OFFSET DATA1END ;将DATA1的偏移地址送入SI
MOV DI,OFFSET DATA2END ;将DATA2的偏移地址送入DI
CALL ADDA ;调用子程序ADDA
MOV AX,4C00H
INT 21H ;中断调用
ADDA PROC NEAR ;子程序段
MOV DX,SI ;DX=0004H
MOV BP,DI ;BP=0009H
MOV BX,05H ;程序调用次数
AD1: SUB BYTE PTR[SI],30H ;将被加数的ASCII码转换成十六进制数
SUB BYTE PTR[DI],30H ;将加数的ASCII码转换成十六进制数
DEC SI ;SI中的内容自减1
DEC DI ;DI中的内容自减1
DEC BX ;程序调用次数自减1
JNZ AD1 ;条件转移
MOV SI,DX ;回到初始位置
MOV DI,BP
MOV CX,05H ;循环次数控制
CLC ;清除CF位
AD2: MOV AL,[SI]
MOV BL,[DI]
ADC AL,BL ;从低位开始进行带进/借位的加法运算
AAA ;转换成非压缩BCD码,低位存于AL,高位存于AH
MOV [SI],AL ;将AL中的内容存入SI所在地址
DEC SI ;偏移地址自减
DEC DI ;偏移地址自减
LOOP AD2 ;循环控制指令
MOV SI,DX
MOV DI,BP
MOV BX,05H
AD3: ADD BYTE PTR[SI],30H ;将16进制数转换为ASCII码表示ADD BYTE PTR[DI],30H
DEC SI ;偏移地址自减
DEC DI
DEC BX
JNZ AD3
RET ;返回指令
ADDA ENDP ;结束子程序
CODE ENDS ;结束程序代码段
END START
五、实验结果(截屏--软件实验或者拍照---硬件实验)
六、实验结果分析(预期结果与实际结果的对照)
1、数据段分析
用ASCII码值的形式表示被加数和加数
被加数=39174;加数=45082
2、堆栈段分析
用于存放计算过程中的过程量。
3、程序代码段分析
1)从低位起,将被加数和加数转换成十六进制数
被加数和加数转换各位转换成十六进制数表示。
2)从低位起进行各个位上的带进位的加法运算
得到的结果的各位上的十六进制表示形式。
3)将结果的各个位上的数转换成ASCII码的形式得到最后的结果
实验得到的最后的结果是39174+45082=84256。
七、实验心得体会
通过本次实验,我对汇编有了更物理化的认识,也明白了汇编中各个寄存器的作用及寄存器间是怎样联系的,也初步明白了什么是段地址,什么是堆栈,以及汇编的基本结构和循环结构的基本运用。
但是,我的了解只是初步的,汇编中还有很多我不明白和不了解的地方,最重要的是,汇编语句掌握不牢固,不能很快的知道一些专用的汇编语句的意义,对于宏方面的认识也非常薄弱,还需要在今后的实验和学习中不多的学习和练习。