实验二算术运算实验
实验二 算术运算类操作实验 (基础与设计)
实验二算术运算类操作实验 (基础与设计)一、实验要求和目的1、了解汇编语言中的二进制、十六进制、十进制、BCD 码的表示形式;2、掌握各类运算类指令对各状态标志位的影响及测试方法;3、熟悉汇编语言二进制多字节加减法基本指令的使用方法;4、熟悉无符号数和有符号数乘法和除法指令的使用;5、掌握符号位扩展指令的使用。
6、掌握BCD 码调整指令的使用方法二、软硬件环境1、硬件环境:计算机系统 windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识本实验主要进行算术运算程序设计和调试,涉及到的知识点包括:1.加减法处理指令主要有加法指令ADD,带进位加法ADC,减法指令SUB,带进位减法指令SBB。
2.乘除法指令和符号位扩展指令主要有无符号数乘法指令MUL,带符号数乘法指令IMUL,无符号数除法指令DIV,带符号数除法指令IDIV,以及符号位从字节扩展到字的指令CBW 和从字扩展到双字的指令CWD。
3.BCD 码的调整指令主要有非压缩的BCD 码加法调整指令DAA,压缩的BCD 码减法调整指令DAS,非压缩的BCD 码加法调整指令AAA,非压缩的BCD 码减法调整指令AAS,乘法的非压缩BCD码调整指令AAM,除法的非压缩BCD 码调整指令AAD。
8088/8086 指令系统提供了实现加、减、乘、除运算的上述基本指令,可对下表所示的数据类型进行数据运算。
四、实验内容与步骤1、对于两组无符号数,087H 和034H,0C2H 和5FH,试编程求这两组数的和差积商,并考虑计算结果对标志寄存器中状态标志位的影响。
设计流程:源代码:DATAS SEGMENTARRAY DW 087H,034H,0C2H,05FHJIA DW 2 DUP(?) ;储存两组加法结果JIAN DW 2 DUP(?) ;储存两组减法结果CHENG DW 2 DUP(?) ;储存两组乘法结果CHU DW 2 DUP(?) ;储存两组除法结果DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXMOV SI,0MOV BX,0SUB BX,2SUB SI,4L1:ADD SI,4ADD BX,2MOV AX,ARRAY[SI] ;第一个运算数ADD AX,ARRAY[SI+2] ;加法运算MOV JIA[BX],AX ;储存加法结果MOV AX,ARRAY[SI]SUB AX,ARRAY[SI+2] ;减法运算MOV JIAN[BX],AX ;储存减法结果MOV AX,ARRAY[SI]MUL ARRAY[SI+2] ;乘法运算MOV CHENG[BX],AX ;储存乘法结果MOV AX,ARRAY[SI]MOV CX,ARRAY[SI+2]DIV CL ;除法运算MOV CHU[BX],AX ;储存除法结果CMP BX,2JNZ L1MOV AH,4CHINT 21HCODES ENDSEND START程序结果:通过-t逐步运行程序,逐步查看每次运算后标志位的状态,结果如下:2、在数据段定义了两个多精度的有符号16 进制数,FIRST 和SECOND ,1)求两数的和与差,并将结果存放在THIRD 为首地址的缓冲区中;2)如果把两组数据当作十进制数据来处理,再次求两数的和与差,并将结果存放在FORTH 为首地址的缓冲区中。
算术逻辑运算实验总结
算术逻辑运算实验总结一、引言在现代社会中,算术逻辑运算是一项基本且必不可少的能力。
它们不仅在日常生活中起着重要作用,也广泛应用于各个领域的科学和工程。
为了提高算术逻辑运算的能力,我进行了几项实验,并总结了一些重要的经验和教训。
二、实验一:基本算术运算在这个实验中,我进行了一系列的基本算术运算,如加法、减法、乘法和除法。
通过这些运算,我更加熟悉了数字和运算的关系,并且提高了我的计算速度和准确性。
通过这个实验,我发现了一些有趣的现象。
首先,我发现加法和减法是最简单的运算,因为它们只涉及到数字的简单相加或相减。
而乘法和除法则需要更多的思考和推理,因为它们涉及到数字的相对大小和关系。
除此之外,在进行算术运算时,我还体会到了一些技巧和方法。
例如,在进行长数列的相加时,可以将它们分成多个小段,然后分别相加,最后再将结果相加。
这样可以降低错误的可能性,同时提高计算的效率。
三、实验二:逻辑运算逻辑运算是另一种重要的运算方式。
在这个实验中,我学习了逻辑运算的基本原理和方法,并进行了一些实际的应用。
首先,我学习了与运算、或运算和非运算的基本规则。
通过这些规则,我可以判断一个命题的真假,或者从若干个命题中得出一个新的结论。
这是在科学和工程中经常用到的一种思维方式。
其次,我了解了逻辑运算在算法设计和编程中的重要性。
在编写程序时,逻辑运算用于判断条件和控制程序的流程。
通过合理地使用逻辑运算,可以使程序更加高效和精确。
实验中,我发现了一些常见的逻辑谬误。
例如,德摩根定律的错误应用会导致逻辑矛盾和错误的结果。
因此,在进行逻辑运算时,我要特别注意各种规则和定律的正确使用。
四、实验三:复杂算术逻辑运算在这个实验中,我尝试了一些更加复杂的算术逻辑运算,如平方根运算、对数运算和三角函数运算。
通过这些运算,我更深入地了解了数学的奥秘和复杂性。
在进行这些运算时,我遇到了一些困难和挑战。
首先,一些运算需要使用特殊的方法和技巧,我要仔细学习和掌握这些技术。
实验二 算术运算
汇编语言实验报告(二)班级:01540802班姓名:南征学号: 20080705信息与电子学院实验二算术运算一、实验目的熟悉利用汇编语言对多精度十六进制和十进制的编程方法,弄清带符号数及不带符号数的运算区别,理解各状态标志位的含义,以及运算结果对各状态标志的影响,掌握无符号数的乘除法运算并保证运算结果不溢出。
二、实验要点对汇编语言的算术运算要分清是有符号的运算还是无符号的运算,当对无符号数进行加减时,要考虑进位CF,对于有符号数进行加减时,要考虑运算结果是否溢出。
为防止溢出,常将操作数利用CBW或CWD指令进行符号扩展后再进行加减运算。
对于多精度的加减运算时,对高位字节或字的加减法要分别采用ADC和DBB;对低位字节或字采用不带进位的加减指令ADD和SUB;在利用循环计算多字节的加减法时,可以用CLC指令将CF初始化为0,然后在循环体内统一使用带进位(或借位)的加减法指令。
在汇编语言进行十进制的加减运算时,首先需将操作数用BCD码示,并且要考虑操作数是用组合的BCD码还是用一个字节表示一个十进制数。
对于组合的BCD码加减法,其结果应放在AL寄存器中,再用DAA和DAS指令进行二——十进制调整。
二对于未组合的BCD码加减法,用AAA和AAS对结果进行二——十进制调整。
此外在进行十进制数减法时,要考虑用大数减小数,因为十进制数运算不能用补码表示。
对于有符号数惩罚要用IMUL指令,对无符号数乘法要用MUL指令。
字乘时AX为约定的一个乘数,其积在DX:AX中;字节相乘时AL为约定的一个乘数,其积在AX中。
乘法指令中的操作数,不得为立即数,可以为通用寄存器或存储器操作数。
对于除法要用IDIV、DIV分别对有符号数和无符号数进行除法运算。
字除法时被除数约定在DX:AX中;字节相除时,被除数约定在AX中,除法指令中的操作数可以为通用寄存器或者存储器操作数,但不得是立即数。
在进行除法运算时要考虑除数是否为零,以及其商是否溢出,在出现除零溢出时,将产生类型号为0的内部中断。
数电实验二报告
实验二半加器、半减器的实现
一、实验者
1.刘皎,RJ010901,2009303336
2.陈泫文,RJ010901,2009303340
二、实验目的
1.掌握双进位全加器74LS183和四位二进制超前进位全加器
74LS283的逻辑功能
2.熟悉集成加法器的使用方法
3.了解算术运算电路的结构
三、实验设备
1.数字电路实验箱
2.74LS86
3.74LS00
4.导线若干
四、实验原理
1.半加器、半减器真值表:M=0时为半加,M=1时为半减
2.半加器、半减器卡诺图:
五、实验电路
六、实验步骤
1.将M,A,B分别从0/1端输出。
2.将74LS86引脚14接电源,引脚7接地,引脚13接A,引脚12
接B,这样从引脚11输出的为A⊕B,即为S。
3.将74LS86引脚14接电源,引脚7接地,引脚10接A,引脚9
接M,这样从引脚8中输出的即为M⊕A。
4.将74LS00引脚14接电源,引脚7接地,引脚13接从引脚8中
输出的信号,引脚12接B,这样从引脚11中输出的为
(M⊕A)B的非。
5.再将从引脚11中输出的信号作为输入,连接到引脚1,引脚
2悬空,从引脚3中输出的即为(M⊕A)B,即为C0。
七、实验结果
通过S,C0灯的亮和灭判断出全加器和半加器连接的正确性。
实验二 算术逻辑运算及移位操作
实验二算术逻辑运算及移位操作一.实验任务1.实验程序段及结果表格如表:分析:程序段1:MOV AX, 1018H ;AX←1018HMOV SI, 230AH ;SI←230AHADD AX, SI ;AX=3322H,低8位为00100010B,1的个数;为偶数,PF=1,同时D3向D4有进位发生,AF=1 ADD AL, 30H ;AX=3352H,低8位1个个数为奇数,PF=0 MOV DX, 3FFH ;DX←3FFHADD AX,BX ;AX=3352H,MOV [20H], 1000H ;[20H]←1000HADD [20H], AX ;[20H]=4352HPUSH AX ;POP BX ;BX=3352H程序段2:MOV AX, 0A0AH ;AX←0A0AHADD AX, 0FFFFH ;AX=0A09H,最高位进位CF=1,低8位1的;个数为偶数PF=1;D3向D4进位AF=1 MOV CX, 0FF00H ;CX←0FF00HADC AX, CX ;AX=090AH,最高位进位CF=1,低8位1的个;数为偶数PF=1SUB AX, AX ;AX=0,运算结果为零ZF=1INC AX ;AX=1HOR CX, 0FFH ;CX=0FFFFH,最高位为1,ZF=1,低8位1的;个数为偶数PF=1AND CX, 0F0FH ;CX=0F0FH,低8位1的个数为偶数PF=1MOV [10H], CX ;[10H]←0F0FH程序段3:MOV BL, 25H ;BL←25HMOV BYTE PTR[10H], 4 ;[10H]←04HMOV AL, [10H] ;AL←04HMUL BL ;AL=94H程序段4:MOV WORD PTR[10H],80H ;[10H]←0080HMOV BL, 4 ;BL←04HMOV AX, [10H] ;AX←0080HDIV BL ;AX=0020H程序段5:MOV AX, 0 ;AX←0000HDEC AX ;AX=0FFFFH,最高位为1,SF=1,低8;位1的个数为偶数PF=1,最高位向前、;D3向D4有借位,CF=1,AF=1 ADD AX, 3FFFH ;AX=3FFEH,D3向D4有进位,AF=1 ADD AX, AX ;AX=7FFCH,低8位1的个数为偶数,PF=1;D3向D4有进位,AF=1NOT AX ;AX=8003HSUB AX, 3 ;AX=8000H,低8位1的个数为偶数,PF=1;最高位为1,SF=1OR AX, 0FBFDH ;AX=0FBFDH,最高位为1,SF=1AND AX, 0AFCFH ;AX=0ABCDH,最高位为1,SF=1SHL AX,1 ;AX=579AH,低8位1的个数为偶数,PF=1,;算数结果溢出OF=1,最高位进位CF=1 RCL AX,1 ;AX=0AF35H,低8位1的个数为偶数,;PF=1,算数结果溢出OF=12.用BX寄存器作为地址指针,从BX所指的内存单元(0010H)开始连续存入三个无符号数(10H、04H、30H),接着计算内存单元中的这三个数之和,和放在0013H单元中,再求出这三个数之积,积放0014单元中。
计算机组成原理实验exp_2(运算器 ── 进位控制实验)
实验二运算器──进位控制实验一实验目的(1) 验证带进位控制的算术运算功能发生器的功能;(2) 按指定数据完成几种指定的算术运算。
二实验设备TDN-CM++计算机组成原理教学实验系统一台,排线若干。
三实验内容进位控制运算器的实验原理如图3所示,在算术逻辑运算实验的基础上增加进位控制部分,其中74181的进位进入一个7474锁存器,其写入是由T4和AR信号控制,T4是脉冲信号,实验时将T4连至STA TE UNIT的微动开关KK2上。
AR是电平控制信号(低电平有效),可用于实现带进位控制实验,而T4脉冲是将本次运算的进位结果锁存到进位锁存器中。
图 3 进位控制实验原理图线四实验步骤(1) 按图4连接实验线路,仔细查线无误后,接通电源。
(2) 用二进制数码开关向DR1和DR2寄存器置数,具体方法:图 4 进位控制实验接线图线① 关闭ALU 输出三态门(ALU-B=1),开启输入三态门(SW-B=0),设置数据开关; ② 例如向DR 1存入01010101,向DR 2存入10101010。
具体操作步骤如下:(3) 关闭输入三态门(SW-B=1),开启ALU 输出三态门(ALU-B=0)。
(4) 进位标志清零具体操作方法如下:实验板中SWITCH UNIT 单元中的CLR 开关为标志CY ,ZI 的清零开关,它为零时是清零状态,所以依次将开关做1→0→1操作,即可使标志位清零。
注:进位标志指示灯CY 亮时表示进位标志为“0”,无进位:标志指示灯CY 灭时表示进位为“1”,有进位.(5) 验证带进位运算及进位锁存功能,使Cn=1,AR=0来进行带进位算术运算。
数据开关 (01010101) 三态门 寄存器DR 1 (01010101) 数据开关寄存器DR 2 (10101010) LDDR 1=1 LDDR 2=0 T4=ALU-B=1 SW-B=0LDDR 1=0 LDDR 2=1 T4= 关寄存器 LDDR 1=0 LDDR 2=0例如:做加法运算,首先向DR1,DR2置数,然后使ALU-B=0,S3S2S1S0M状态为10010,此时数据总线上显示的数据为DR1加DR2加当前进位标志,这个结果是否产生进位,则要按动微动开关KK2,若进位标志灯亮,表示无进位;反之,有进位。
实验二 数据类型、运算符和表达式
实验二数据类型、运算符和表达式一、实验目的(1)了解C 语言数据类型的意义,掌握基本数据类型变量的特点和定义方法。
(2)学会使用C 的算术运算符,以及包含这些运算符的算术表达式。
(3)掌握自加(++)和自减(--)运算符的使用。
(4)进一步熟悉C 程序的编辑、编译、连接和运行的过程。
二、实验要点基本数据类型包括整型、字符型、实型。
三、实验要求(1)上机前先阅读和编写以下要调试的程序。
(2)上机输入和调试程序并存在磁盘上。
(3)检查实验结果是否正确。
四、实验内容1. 调试程序,分析输出结果(1)输入并运行以下程序。
main(){float a,b;a=123456.789e5;b=a+20;printf("a=%f,b=%f\n",a,b);}将第二行改为:double a,b;再运行,分析运行结果。
说明:由于实型变量的值是用有限的存储单元存储的,因此其有效数字的位数是有限的。
float型变量最多只能保证7 位有效数字,后面的数字是无意义的,不能准确表示该数。
(2)输入并运行以下程序。
main(){char c1,c2;c1=97;c2=98;printf("%c %c\n",c1,c2);printf("%d %d\n",c1,c2);}①将第二行改为:int c1,c2;再运行。
②再将第三行改为:c1=300;c2=400;再运行,分析运行结果。
说明:字符型数据可作为整型数据处理,整型数据也可以作为字符型数据处理,但应注意字符数据只占一个字节,它只能存放0-2 55 范围的整数。
2.完成以下填空,并把程序调通,写出运行结果。
下面的程序计算由键盘输入的任意两个整数的平均值:main(){int x,y ;float a; ;scanf(“%d,%d”,&x,&y);a=(x+y)/2 ;printf("The average is :%f ",a);}3. 指出以下程序的错误并改正,上机把程序调通main();{int a;A=5;printf(“a=%d, a)//printf(“a=%d, a);//}4. 编写程序并上机运行要将“China”译成密码,译码规律是:用原来字母后面的第3 个字母代替原来的字母。
实验二:算术逻辑运算和移位运算
西安交通大学实验报告
课程名称:微机原理与接口技术实验名称数据传送
班级:机械36班姓名:申湾舟学号:2130101125
实验日期:2015年9 月29日教师审阅签字:1.实验目的
(1)熟悉算数逻辑运算指令和移位指令的功能;
(2)了解标志寄存器中各个标志位的意义以及指令执行对它的影响。
2.实验内容
(1)标志位改变规律;
(2)简单存储和计算;
(3)写出规定功能的程序1;
(4)写出规定功能的程序2;
(5)补全规定功能的程序;
(6)清除操作;
(7)执行已知程序;
(8)实验结果分析。
3.实验工具
操作系统:windows7;实验平台:调试工具TD.EXE。
4.实验步骤与结果
(1)标志位改变规律;
在TD.EXE中输入程序段并且单步运行,观察标志位变化。
(2)简单存储和计算;
(3)写出规定功能的程序1;
(4)写出规定功能的程序2;
(5)补全规定功能的程序;
(6)清除操作;
(7)执行已知程序;
(8)实验结果分析。
五、实验小结
Page2 of 7。
计算机组成原理实验二
Vcc
右移门
4.ALU左移输出原理图
数据输出选择器输出信号L_OE
左移门
当CN=1 Cy 移入DBUS0 当CN=0 0 移入DBUS0
二. 实验任务
1. 计算37H+56H后左移一位的值送OUT 输出。 2. 把36H取反后同54H相与的值送入R1 寄存器。
三. 实验过程举例(1)
例:实验任务:输出ACH-BDH的值(用外部输入门IN进行数据输入) 1. 实验箱没有一条微命令能完成这个操作任务。所以要考虑一个微命令序 列——微程序来完成任务。故先把任务分解成有微命令对应的基本操作,并有序 排列这些基本操作。 2. 选择基本操作:由背景知识1,可以选用“A-W”微命令;这要求先把值 ACH送入寄存器A,值BDH送入寄存器W;题意没有要求对运算结果做进一步处 理,所以直通门D中保存的值是计算结果;把D的值送OUT寄存器输出。
控制电键
k9
k8
k7Leabharlann k6k4k3k2
k1
k0
被控对象
OUTEN
X2 X1 X0
S2
S1
S0
WEN
AEN
三. 实验过程举例(2)
第三步、实验:
① 注视仪器,打开电源,手不要远离电源开关,随时准备关闭电源, 注意各数码管、发光管的稳定性,静待10秒,确信仪器稳定、无焦糊味。
② 设置实验箱进入手动模式。 ③ ACH送入寄存器A。X2x1x0(k8k7k6)=000,AEN(k0)=0, k23-k16=10101100 按下STEP键数值打入A寄存器。 ④ BDH送入寄存器W。方法同上。 ⑤ 计算A-W:按“运算器选择表”置:k4k3k2=001;
计算机组成原理实验课程
实验二 运算器实验
实验二运算器实验报告
实验二运算器实验报告
实验二是运算器实验,旨在让我们了解计算机运算器的结构和工作原理。
在本次实验中,我们通过搭建运算器电路并进行验证,深入理解了运算器的运作过程,为我们今后学习和应用计算机原理打下了基础。
一、实验原理
运算器是计算机中重要的组成部分,用于实现各种算术和逻辑运算。
在本次实验中,我们首先学习了运算器的基本原理和功能,并了解了运算器中常用的逻辑门电路,如与门、或门、非门等。
接着,我们根据原理和逻辑门电路的特点,搭建了一个16位的运算器电路,并测试了电路的逻辑功能和运算准确性。
二、实验步骤
1. 搭建16位运算器电路,包括与门、或门、非门等逻辑电路。
2. 对搭建的运算器电路进行测试,如测试与门、或门、非门电路的逻辑输出是否正确。
3. 实现加法和减法运算功能,测试运算器的运算准确性。
4. 对搭建的运算器电路进行进一步优化,提高电路工作效率和运算速度。
三、实验结果
经过实验测试,我们成功搭建了一个16位的运算器电路,并对电路进行了多项测试和验证。
在逻辑输出方面,与门、或门、非门电路均能够正确输出逻辑值,验证了运算器电路的逻辑功能。
在加法和减法运算方面,运算器电路能够正确实现运算功能,并输出正确的运算结果,这表明运算器电路的运算准确性良好。
四、实验总结
通过本次实验,我们深入理解了计算机中运算器的工作原理和结构,掌握了运算器电路的搭建和运作方法,并初步掌握了在运算器上实现加法和减法运算的原理和方法。
此外,我们还了解了运算器电路的优化方法和技巧,提高了电路工作效率和运算速度。
这些知识和技能对我们今后学习和应用计算机原理具有重要的指导意义。
算术运算实验报告总结
一、实验目的本次实验旨在通过计算机编程实现对基本算术运算(加、减、乘、除)的模拟,加深对算术运算原理的理解,提高编程能力和问题解决能力。
二、实验内容1. 实验环境(1)操作系统:Windows 10(2)编程语言:Python 3.82. 实验内容(1)编写函数实现加、减、乘、除运算(2)编写主程序,实现用户输入两个数和运算符,调用函数进行计算,并输出结果(3)测试不同类型数据(整数、浮点数、负数)的运算结果三、实验步骤1. 导入Python内置库```pythonimport sys```2. 编写算术运算函数```pythondef add(x, y):return x + ydef subtract(x, y):return x - ydef multiply(x, y):return x ydef divide(x, y):if y == 0:print("除数不能为0")sys.exit()return x / y```3. 编写主程序```pythondef main():while True:num1 = float(input("请输入第一个数:"))num2 = float(input("请输入第二个数:"))operator = input("请输入运算符(+、-、、/):") if operator == '+':result = add(num1, num2)elif operator == '-':result = subtract(num1, num2)elif operator == '':result = multiply(num1, num2)elif operator == '/':result = divide(num1, num2)else:print("运算符错误,请重新输入")continueprint("运算结果:", result)break```4. 运行主程序```pythonif __name__ == '__main__':main()```四、实验结果与分析1. 正确实现加、减、乘、除运算在实验中,我们成功实现了加、减、乘、除运算,并分别定义了四个函数来执行这些运算。
C语言实验报告-实验二 数据类型、运算符和表达式
请编程序:当给出f时,求其相应摄氏温度和绝对温度。
测试数据:①f=34 f=100
答:①的程序为
#include <stdio.h>
main()
{
float f,c;
double k;
f=34;
c=5/9*(f-32);
k=273.16+c;
printf("c=%f,k=%lf\n",c,k);
x=r.cosθ
y=r.sinθ
测试数据:①r=10 θ=45° r=20 θ=90°
答:①的程序为
#include<stdio.h>
#include <math.h>
main()
{
float r,b,x,y;
r=10;
b=45;
x=r*cos(b/180*3.14);
y=r*sin(b/180*3.14);
答:该程序为
#include<stdio.h>
#define PI 3.14
main()
{
float r;
double s,c;
r=1.5;
s=PI*r*r;
c=2*PI*r;
printf("s=%.2lf,c=%.2lf",s,c);
}
(2)将华氏温度转换为摄氏温度和绝对温度的公式分别为:
(摄氏温度)
main( )
{int i=8,j=10,m=0,n=0;
m+=i++;n-=--j;
printf(“i=%d,j=%d,m=%d,n=%d\n”,i,j,m,n);
算术逻辑运算实验报告
算术逻辑运算实验报告算术逻辑运算实验报告一、引言算术逻辑运算是数学中的重要分支,它研究数字和符号之间的关系以及它们之间的运算规则。
在日常生活中,我们经常进行算术逻辑运算,比如加减乘除、逻辑与或非等。
本实验旨在通过一系列实验,探索算术逻辑运算的规律和特点。
二、实验一:加法与减法1. 实验目的通过加法和减法实验,观察数字之间的相互关系,并分析运算规律。
2. 实验步骤首先,我们随机选择两个数字进行加法运算,记录结果。
然后,再选择两个数字进行减法运算,同样记录结果。
3. 实验结果与分析我们发现,在加法运算中,两个正数相加的结果仍然是正数,而两个负数相加的结果仍然是负数。
而正数与负数相加,则会根据绝对值的大小决定结果的正负性。
在减法运算中,两个正数相减的结果可能是正数或零,而两个负数相减的结果可能是负数或零。
正数与负数相减,则会根据绝对值的大小决定结果的正负性。
三、实验二:乘法与除法1. 实验目的通过乘法和除法实验,观察数字之间的相互关系,并分析运算规律。
2. 实验步骤我们选择两个数字进行乘法运算,记录结果。
然后,再选择两个数字进行除法运算,同样记录结果。
3. 实验结果与分析我们发现,在乘法运算中,两个正数相乘的结果仍然是正数,而两个负数相乘的结果则变为正数。
正数与负数相乘,则会根据负数的个数决定结果的正负性。
在除法运算中,两个正数相除的结果仍然是正数,而两个负数相除的结果则变为正数。
正数与负数相除,则会根据负数的个数决定结果的正负性。
四、实验三:逻辑与与逻辑或1. 实验目的通过逻辑与和逻辑或实验,观察逻辑运算的结果,并分析运算规律。
2. 实验步骤我们随机选择两个命题进行逻辑与运算,记录结果。
然后,再选择两个命题进行逻辑或运算,同样记录结果。
3. 实验结果与分析逻辑与运算的结果只有在两个命题都为真时才为真,否则为假。
逻辑或运算的结果只有在两个命题都为假时才为假,否则为真。
五、实验四:逻辑非1. 实验目的通过逻辑非实验,观察逻辑运算的结果,并分析运算规律。
实验二16位算术逻辑运算实验
实验三16位算术逻辑运算实验一、实验目的1、掌握16位运算器的数据传送通路组成原理。
2、进一步验证算术逻辑运算功能发生器74LS181的组合功能。
3、按要求和给出的数据完成几种指定的算术逻辑运算。
二、实验内容1、实验原理16位运算器数据通路如图2-1所示,其中运算器由四片74LS181以并/串形成16位字长的ALU构成。
低8位运算器的输出经过一个三态门74LS245(U33)到ALUO1插座,实验时用8芯排线和内部数据总线BUSD0~D7插座BUS1~6中的任一个相连,低8位数据总线通过LZD0~LZD7显示灯显示;高8位运算器的输出经过一个三态门74LS245(U33`)到ALUO1`插座,实验时用8芯排线和高8位数据总线BUSD8~D15插座KBUS1或KBUS2相连,高8位数据总线通过LZD8~LZD15显示灯显示;参与运算的四个数据输入端分别由四个锁存器74LS273(U29、U30、U29`、U30、)锁存,实验时四个锁存器的输入并联后用8芯排线连至外部数据总线EXD0~D7插座EXJ1~EXJ3中的任一个;参与运算的数据源来自于8位数据开并KD0~KD7,并经过一三态门74LS245(U51)直接连至外部数据总线EXD0~EXD7,输入的数据通过LD0~LD7显示。
2、实验接线本实验需用到6个主要模块:①低8位运算器模块;②数据输入并显示模块;③数据总线显示模块;④功能开关模块(借用微地址输入模块);⑤高8位运算器模;,⑥高8位(扩展)数据总线显示模块。
根据实验原理详细接线如下(接线①~⑤同实验一):①ALUBUS连EXJ3;②ALUO1连BUS1;③SJ2连UJ2;④跳线器J23上T4连SD;⑤LDDR1、LDDR2、ALUB、SWB四个跳线器拨至左侧(手动方式);⑥AR跳线器拨至左侧,同时开关AR拨至“1”电平;⑦ALUBUS`连EXJ2;⑧ALUO1`连KBUS1;⑨跳线器J19、J25拨至左侧(16位ALU状态);⑩高8位运算器区跳线器ZI2、CN0、CN4连上短路套。
高中计算机科学实验归纳
高中计算机科学实验归纳实验目的该实验的目的是引导高中学生深入理解计算机科学的基本原理和概念,并通过实际操作加深对计算机科学的理解。
通过实验,学生将研究如何使用计算机进行编程和解决问题,培养他们的逻辑思维和创造力。
实验内容1. 实验一:研究使用编程语言进行简单的算术运算。
学生将研究使用计算机编程语言(如Python或Java)进行加减乘除等基本算术运算。
通过编写简单的代码,他们将学会如何使用变量、运算符和输入输出功能,并进行基本的数学计算。
2. 实验二:理解条件语句和循环语句。
学生将研究如何使用条件语句(如if语句)和循环语句(如for循环和while循环)来控制程序的流程。
他们将通过编写代码解决一些实际问题,如判断一个数字的奇偶性、计算斐波那契数列等。
3. 实验三:设计简单的游戏。
学生将利用所学的编程知识设计一个简单的游戏,如猜数字游戏或石头剪刀布游戏。
他们将研究如何使用条件语句和循环语句来实现游戏的逻辑,并通过用户输入和程序输出进行交互。
4. 实验四:研究使用函数和库函数。
学生将研究如何编写和调用函数,以及如何使用库函数来简化程序开发。
他们将编写一些简单的程序,并尝试使用一些常见的库函数,如数学函数、字符串处理函数等。
实验要求学生需要具备一定的数学基础和逻辑思维能力。
他们需要认真完成每个实验,并按照要求编写代码和撰写实验报告。
他们还需要主动讨论问题、交流经验,并积极参与实验班级的讨论和展示活动。
实验评估学生将根据每个实验的完成情况和实验报告的质量进行评估。
老师将根据学生的编程能力、问题解决能力和创造力等方面进行评估,给予适当的奖励和反馈。
学生需要及时修改和改进自己的实验报告,并在实验展示中展示自己的成果。
实验收获通过完成这些实验,学生将获得以下收获:1. 深入理解计算机科学的基本原理和概念。
2. 掌握计算机编程的基本技能,包括算术运算、条件语句和循环语句的使用。
3. 培养逻辑思维和解决问题的能力。
实验二-算术逻辑单元实验
实验二算术逻辑单元(ALU)的设计与实现实验目的1.认识算术逻辑单元的功能及意义2.掌握算术逻辑单元的结构与实现3.进一步熟练Modelsim、Vivado软件和Verilog硬件描述语言的使用4.理解Digilent N4 DDR FPGA开发板上数码管显示原理实验原理1.ALU算术逻辑单元(Arithmetic/Logic Unit , ALU)是现代计算机的核心部件之一。
其内部由算术和逻辑操作部件组合而成,可以实现整数加、减等算术运算和与、或等逻辑运算。
一个典型的算术逻辑单元由两路N位输入、一路N位输出、一组功能选择信号和一些标志位(flag)组成。
两路N位输入数据作为参与运算的两个操作数,输入到ALU中,通过改变功能选择信号,控制ALU对两操作数进行不同的算术或逻辑运算操作,并将N位的结果输出,与结果一同输出的还有运算产生的标志位,例如运算结果为零的标记信号Z(zero)与运算结果溢出的标记信号O(over)、进位标志C(CY)、符号位S(SF)等,如图2-1所示。
图2- 1ALU模块示意图在本次实验中,我们把输入和输出的数据长度定为4位,数据输入命名为A、B,数据输出为F,功能控制信号输入为opcode,进位输入为C n,只产生结果为零的zero标志位。
功能控制信号opcode的定义如表2-1所示。
例如:opcode=0001,运算器实现加法运算。
2.数码管显示关于N4 DDR开发板上数码管的显示原理,参见前面的实验准备部分内容。
实验内容1.基础实验。
用实验调试软件验证ALU的功能,并操作分析、记录结果。
图2- 2 ALU虚拟实验示意图(1)运算功能和控制信号①输入输出对于的开关指示灯分配如下:输入信号A:SW(4-7) B:SW(3-0) Cn:SW8 opcode:SW(12-9)输出信号F:LD(12-15) 标志位S :LD(3) Z LD(2) O: LD(1) C: LD(0)②各种运算对应的控制信号及功能,如下表。
微机实验二算术逻辑运算及移位操作
实验二算术逻辑运算及移位操作一、实验目的1.熟悉算术逻辑运算指令和移位指令的功能。
2.了解标志寄存器各标志位的意义和指令执行对它的影响。
二、实验要求1.复习8086指令系统中的算术逻辑类指令和移位指令。
2.按照题目要求在实验前编写好实验中的程序段。
三、实验内容与步骤1. 实验程序段及结果表格如下2.用BX寄存器作为地址指针,从BX所指的内存单元(0010H)开始连续存入三个无符号数(10H、04H、30H),接着计算内存单元中的这三个数之和,和放在0013H单元中,再求出这三个数之积,积放0014单元中。
写出完成此功能的程序段并上机验证结果。
MOV BX,0010HMOV [BX],10HMOV [0001H][BX],04HMOV [0002H][BX],30HMOV AL,[BX]ADD AL,[0001H][BX]ADD AL,[0002H][BX]MOV [0003H][BX],ALMOV AL,BLMUL [0001H][BX]MUL [0002H][BX]MOV [0004H][BX],AX3.写出完成下述功能的程序段。
上机验证你写出的程序段,程序运行的最后结果(AX)=0372(1) 传送15H到AL寄存器; MOV AL,15H(2) 再将AL的内容乘以2;(3) 接着传送15H到BL寄存器; MOV BL,15H(4) 最后把AL的内容乘以BL的内容。
MUL BL(AX)=03724.写出完成下述功能的程序段。
上机验证你写出的程序段,程序运行后的商=73(1) 传送数据2058H到DS:1000H单元中,数据12H到DS:1002H单元中;(2) 把DS:1000H单元中的数据传送到AX寄存器;(3) 把AX寄存器的内容算术右移二位;(4) 再把AX寄存器的内容除以DS:1002H字节单元中的数;(5) 最后把商存入字节单元DS:1003H中。
MOV [1000H],2058HMOV [1002H],12HMOV AX,[1000H]MOV CL,2SAR AX,CLDIV [1002H]MOV [1003H],ALRET四、实验心得与体会在上节课实验的基础上,这次的实验比较顺利,感觉到了微机实验的魅力,对实验产生了浓厚的兴趣。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二算术运算实验一、实验目的1、掌握MASM for Windows 环境下的汇编语言编程环境使用;2、掌握汇编语言程序设计的基本流程及汇编语言中的二进制、十六进制、十进制、BCD码的表示形式;3、掌握汇编语言对多精度十六进制和十进制的编程方法及运算类指令对各状态标志位的影响及测试方法;4、掌握无符号数和有符号数运算区别及编程方法;5、掌握BCD 码调整指令的使用方法二、软硬件实验环境1、硬件环境:惠普64 位一体化计算机及局域网;2、软件环境:windows 8,红蜘蛛管理系统,MASM for Windows。
三、实验基本原理算术运算实验需要对运行结果进行调试及查看状态字,其相关知识如下。
1) 标志位在debug调试过程中,标志位用特殊符号表示的,其标志名和状态符号的对照表参照表1所示。
表1标志名和状态符号的对照表参照表2) 加减法指令ADD表示加法指令,ADC表示带进位加法指令,SUB表示减法指令,SBB表示带进位减法指令。
3) 乘除法指令MUL表示无符号数乘法指令,IMUL表示带符号数乘法指令,DIV表示无符号数除法指令,IDIV表示带符号数除法指令。
4) 符号位扩展指令CBW表示从字节扩展到字的指令,CWD表示从字扩展到双字的指令。
5) BCD码的调整指令在进行十进制加减运算时,需要将数据用BCD码表示,还要考虑到是组合BCD码还是非组合BCD码,组合BCD码是用一个字节表示两位十进制数,非组合BCD码是用一个字节表示一位十进制数,对于组合的BCD码加减法运算其结果存放在AL中。
组合的BCD码加法调整指令DAA;组合的BCD码减法调整指令DAS;非组合的BCD码加法调整指令AAA;非组合的BCD码减法调整指令AAS;乘法的非组合BCD码调整指令AAM;除法的非组合BCD码调整指令AAD。
8088/8086指令系统提供了实现加、减、乘、除运算指令,可参照表2所示内容。
表2数据类型的数据运算表四、实验步骤与内容1) 对于表格中三组无符号数,试编程求这三组数的指定运算结果,并考虑计算结果对标志寄存器中状态标志位的影响:①实验分析本实验要求简单,仅对指定三组数进行基本运算。
只需使用ADD、SUB、MUL、DIV四个运算命令,并以MOV命令作为数值转移的手段即可。
运算结果和状态标志的情况可以通过debug调试中的T命令进行逐步查看。
需要注意的主要有以下几点:1.在进行加法和乘法运算时,会出现对高位的进位扩展。
因此,在记录结果的时候不能仅仅记录低2位(十六进制)的结果,应记录包含高位的完整结果;2.在使用MUL和DIV命令时,语句的写法与ADD和SUB有区别;3.除法运算既可得到商,也可得到余数,余数存在DL中;4.查看结果时以三个语句为一次运算,输入三个T命令后的结果才是此次运算的结果。
②流程图③程序样例1、DATAS SEGMENT;此处输入数据段代码BUF1 DB 0ABH,64H,0A2HBUF2 DB 78H,5AH,3FHBUF3 DB 10 DUP(?)DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AXMOV SI,0MOV CX,2Q1:MOV AH,0HMOV AL,BUF1[SI]MOV BL,ALMOV AL,BUF2[SI]ADD AX,BX ;进行运算MOV BUF3[SI],ALADD SI,1HDEC CXJNZ Q1 ;跳转再做一次第二组数的加法运算MOV AX,4CHINT 21HCODES ENDSEND START2、STACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AXMOV SI,0MOV CX,2Q1:MOV AH,0HMOV AL,BUF2[SI]MOV BL,ALMOV AL,BUF1[SI]SUB AX,BXMOV BUF3[SI],ALADD SI,1H ;do the operationDEC CXJNZ Q1 ;do it again with the second group of numbersMOV AX,4CHINT 21HCODES ENDSEND START3、DATAS SEGMENT;此处输入数据段代码BUF1 DB 0ABH,64H,0A2HBUF2 DB 78H,5AH,3FHBUF3 DB 10 DUP(?)DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXMOV SI,2MOV CX,1Q1:MOV AH,0HMOV AL,BUF2[SI]MOV BL,ALMOV AL,BUF1[SI]DIV BXMOV BUF3[SI],ALADD SI,1H ;do the operationDEC CXJNZ Q1 ;do it again with the second group of numbersMOV AX,4CHINT 21HCODES ENDSEND START④实验结果0ABH+78H64H+5AH0ABH-78H64H-5AH0A2H*3FH0A2H/3FH计算状态标志算式结果AF CF ZF OF SF PF 0ABH+78H 123H 1 0 0 0 0 0 0ABH-78H 33H 0 0 0 0 0 1 64H+5AH 0BEH 0 0 0 0 0 1 64H-5AH 0AH 1 0 0 0 0 1 0A2H*3FH 27DEH 1 0 0 0 0 1 0A2H/3FH 2H余24H 1 0 0 0 0 12) 在数据段定义了两个多精度的有符号16进制数,BUF1和BUF2。
求两数的和与差,并将计算值存放在BUF2为首地址的缓冲区中;同时将两组数据当作十进制数据来处理,再次求两数的和与差,并将结果存放在BUF2为首地址的缓冲区中。
试编程实现上述运算。
BUF1 DB 92H,98H,45H,64H,78HBUF2 DB 33H,46H,17H,45H,52H①实验分析本实验的思想是把这个两个多精度数进行按精度(每两位)进行运算,考虑进位与借位,每种运算都可以使用循环和带进位加法,或循环和带进位减法进行实现。
对于十进制数运算的要求,再辅以DAA和DAS两种十进制调整命令,将结果变为BCD码即可。
本实验中需要注意的有以下几点:1.本实验要求就过存入以BUF2为首地址的缓冲区。
为在运算时保护BUF2的数据,需定义另一个存储空间来存储和BUF2一样的数据;2.在进行不同运算的间隙应当进行清除进位标志的操作,即使用CLC命令,避免上一运算的进位影响下一位运算的结果;3.DAA和DAS都只能对AL里的结果转换为压缩BCD码,因此十进制加减结果必须存入AL里,且转换为压缩BCD码的结果要靠读取AL来获得。
②程序流程图③程序样例1、DATAS SEGMENT;此处输入数据段代码BUF1 DB 92H,98H,45H,64H,78HBUF2 DB 33H,46H,17H,45H,52HBUF3 DB 10 DUP(?)DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AXMOV SI,0MOV CX,4MOV AH,00HQ1:MOV AL,BUF2[SI]MOV BL,ALMOV AL,BUF1[SI]ADC AL,BLMOV BUF2[SI],ALINC SIDEC CXJNZ Q1MOV AX,4CHINT 21HCODES ENDSEND START2、DATAS SEGMENT;此处输入数据段代码BUF1 DB 92H,98H,45H,64H,78HBUF2 DB 33H,46H,17H,45H,52HBUF3 DB 10 DUP(?)DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AXMOV SI,0MOV CX,4MOV AH,00HQ1:MOV AL,BUF2[SI]MOV BL,ALMOV AL,BUF1[SI]SBB AL,BLMOV BUF2[SI],ALINC SIDEC CXJNZ Q1MOV AX,4CHINT 21HCODES ENDSEND START3、DATAS SEGMENT;此处输入数据段代码BUF1 DB 92H,98H,45H,64H,78HBUF2 DB 33H,46H,17H,45H,52HBUF3 DB 10 DUP(?)DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AXMOV SI,0MOV CX,4MOV AH,00HQ1:MOV AL,BUF2[SI]MOV BL,ALMOV AL,BUF1[SI]ADC AL,BLDAAMOV BUF2[SI],ALINC SIDEC CXJNZ Q1MOV AX,4CHINT 21HCODES ENDSEND START4、DATAS SEGMENT;此处输入数据段代码BUF1 DB 92H,98H,45H,64H,78HBUF2 DB 33H,46H,17H,45H,52HBUF3 DB 10 DUP(?)DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AXMOV SI,0MOV CX,4MOV AH,00HQ1:MOV AL,BUF2[SI]MOV BL,ALMOV AL,BUF1[SI]SBB AL,BLDAAMOV BUF2[SI],ALINC SIDEC CXJNZ Q1MOV AX,4CHINT 21HCODES ENDSEND START④实验结果十六进制结果十进制结果BUF1 + BUF2 C5 DE 5C A9+ 25 45 63 09+BUF1 - BUF2 5F 52 2E 1F+ 65 52 34 25+3) 编程计算280*584/190,运算结果用十六进制表示。