实验二 算术运算实验

合集下载

算术逻辑运算实验总结

算术逻辑运算实验总结

算术逻辑运算实验总结一、引言在现代社会中,算术逻辑运算是一项基本且必不可少的能力。

它们不仅在日常生活中起着重要作用,也广泛应用于各个领域的科学和工程。

为了提高算术逻辑运算的能力,我进行了几项实验,并总结了一些重要的经验和教训。

二、实验一:基本算术运算在这个实验中,我进行了一系列的基本算术运算,如加法、减法、乘法和除法。

通过这些运算,我更加熟悉了数字和运算的关系,并且提高了我的计算速度和准确性。

通过这个实验,我发现了一些有趣的现象。

首先,我发现加法和减法是最简单的运算,因为它们只涉及到数字的简单相加或相减。

而乘法和除法则需要更多的思考和推理,因为它们涉及到数字的相对大小和关系。

除此之外,在进行算术运算时,我还体会到了一些技巧和方法。

例如,在进行长数列的相加时,可以将它们分成多个小段,然后分别相加,最后再将结果相加。

这样可以降低错误的可能性,同时提高计算的效率。

三、实验二:逻辑运算逻辑运算是另一种重要的运算方式。

在这个实验中,我学习了逻辑运算的基本原理和方法,并进行了一些实际的应用。

首先,我学习了与运算、或运算和非运算的基本规则。

通过这些规则,我可以判断一个命题的真假,或者从若干个命题中得出一个新的结论。

这是在科学和工程中经常用到的一种思维方式。

其次,我了解了逻辑运算在算法设计和编程中的重要性。

在编写程序时,逻辑运算用于判断条件和控制程序的流程。

通过合理地使用逻辑运算,可以使程序更加高效和精确。

实验中,我发现了一些常见的逻辑谬误。

例如,德摩根定律的错误应用会导致逻辑矛盾和错误的结果。

因此,在进行逻辑运算时,我要特别注意各种规则和定律的正确使用。

四、实验三:复杂算术逻辑运算在这个实验中,我尝试了一些更加复杂的算术逻辑运算,如平方根运算、对数运算和三角函数运算。

通过这些运算,我更深入地了解了数学的奥秘和复杂性。

在进行这些运算时,我遇到了一些困难和挑战。

首先,一些运算需要使用特殊的方法和技巧,我要仔细学习和掌握这些技术。

计算机组成实验报告二8位算术逻辑运算

计算机组成实验报告二8位算术逻辑运算

1、目的与要求1、验证带进位控制的算术逻辑运算发生器74LSl8l 的功能。

2、按指定数据完成几种指定的算术运算。

实验性质:验证性参见《计算机组成原理实验指导书》2、实验设备DVCC 计算机组成原理实验箱,排线若干。

3、实验步骤与源程序⑴ 连接线路,仔细查线无误后,接通电源。

本实验用到4个主要模块:⑴低8位运算器模块,⑵数据输入并显示模块,⑶数据总线显示模块,⑷功能开关模块(借用微地址输入模块)。

根据实验原理详细接线如下: ⑴ ALUBUS 连EXJ3; ⑵ ALUO1连BUS1; ⑶ SJ2连UJ2;⑷ 跳线器J23上T4连SD ;⑸ LDDR1、LDDR2、ALUB 、SWB 四个跳线器拨在左边(手动方式); ⑹ AR 跳线器拨在左边,同时开关AR 拨在“1”电平。

⑵ 用二进制数码开关KD0~KD7向DR1和DR2寄存器置数。

方法:关闭ALU 输出三态门(ALUB`=1),开启输入三态门(SWB`=0),输入脉冲T4按手动脉冲发生按钮产生。

设置数据开关具体操作步骤图示如下:说明:LDDR1、LDDR2、ALUB`、SWB`四个信号电平由对应的开关LDDR1、LDDR2、ALUB 、SWB 给出,ALUB=1 LDDR1=1 LDDR2=0 ALUB=1 LDDR2=1 LDDR1=0拨在上面为“1”,拨在下面为“0”,电平值由对应的显示灯显示,T4由手动脉冲开关给出。

⑶检验DR1和DR2中存入的数据是否正确,利用算术逻辑运算功能发生器 74LS181的逻辑功能,即M=1。

具体操作为:关闭数据输入三态门SWB`=1,打开ALU输出三态门ALUB`=0,当置S3、S2、S1、S0、M为1 1 1 1 1时,总线指示灯显示DR1中的数,而置成1 0 1 0 1时总线指示灯显示DR2中的数。

⑷验证74LS181的算术运算和逻辑运算功能(采用正逻辑)在给定DR1=35、DR2=48的情况下,改变算术逻辑运算功能发生器的功能设置,观察运算器的输出,填入表2.1.1中,并和理论分析进行比较、验证。

算术运算编程实验报告

算术运算编程实验报告

实验目的:1. 理解并掌握基本的算术运算编程方法。

2. 培养编程解决问题的能力。

3. 熟悉Python编程语言的基本语法和常用库。

实验环境:1. 操作系统:Windows 102. 编程语言:Python3.83. 开发工具:PyCharm实验内容:本次实验主要围绕基本的算术运算展开,包括加法、减法、乘法、除法、求余等运算。

以下为实验的具体步骤和结果。

一、实验步骤1. 导入必要的库```pythonimport math```2. 定义一个函数,用于执行加法运算```pythondef add(a, b):return a + b```3. 定义一个函数,用于执行减法运算```pythondef subtract(a, b):return a - b```4. 定义一个函数,用于执行乘法运算```pythondef multiply(a, b):return a b```5. 定义一个函数,用于执行除法运算```pythondef divide(a, b):if b != 0:return a / belse:return "Error: Division by zero" ```6. 定义一个函数,用于执行求余运算```pythondef modulo(a, b):return a % b```7. 测试上述函数```pythonprint("加法运算:", add(3, 4))print("减法运算:", subtract(3, 4))print("乘法运算:", multiply(3, 4))print("除法运算:", divide(3, 4))print("求余运算:", modulo(3, 4))```二、实验结果1. 加法运算:72. 减法运算:-13. 乘法运算:124. 除法运算:0.755. 求余运算:3三、实验总结1. 通过本次实验,我们学习了Python编程语言的基本语法和常用库,掌握了基本的算术运算编程方法。

实验二 算术运算

实验二  算术运算

汇编语言实验报告(二)班级: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的内部中断。

实验二算术逻辑运算及移位操作微机原理与接口技术

实验二算术逻辑运算及移位操作微机原理与接口技术

计算内存单元中的这三个数之和,和存放在0013H 单元中,再求出这三个数之积,乘积存放在0014单元中。

试编写完成此功能的汇编语言程序段并上机验证结果(将结果截图)。

MOV BX,0010H MOV [BX],10H MOV [BX+1],04H MOV [BX+2],30H MOV AX,0000H ADD AL,[BX] ADD AL,[BX+1] ADD AL,[BX+2]MOV DS:[0013H],AL MOV AL,[BX]MUL byte ptr [BX+1] MUL byte ptr [BX+2] MOV DS:[0014],AX3.请编写完成下述功能的汇编语言程序段。

上机验证结果,程序运行的最后结果(AX)=?(将结果截图)。

(1) 传送15H 到AL 寄存器;(2) 再将AL 的内容乘以2;(3) 接着传送15H 到BL 寄存器; (4) 最后把AL 的内容乘以BL 的内容。

(1)mov al,15h (2)mov dx,2 mul dx (3)mov bl,15h (4)mul bl实 验 内容 与 实验 结 果4.用移位指令实现将AL寄存器中的无符号数乘以10。

试编写汇编语言程序段,并上机验证结果(将结果截图)。

xor ah,ahshl ax,1mov bx,axshl ax,1shl ax,1add ax,bx5.请编写完成下述功能的汇编语言程序段。

上机验证结果,程序运行后的商=?(将结果截图)。

(1) 传送数据2058H 到DS:1000H 单元中,数据12H 到DS:1002H 单元中; (2) 把DS:1000H 单元中的数据传送到AX 寄存器; (3) 把AX 寄存器的内容算术右移二位;(4) 再把AX 寄存器的内容除以DS:1002H 字节单元中的数; (5) 最后把商存入字节单元DS:1003H 中。

MOV WORD PTR[1000H],2058H MOV BYTE PTR[1002H],12H MOV AX,[1000H] MOV BX,[1002H] SAR AX,1 SAR AX,1 DIV BXMOV [1003H],AX实 验 内容 与 实验 结 果实验内容与实验结果。

实验二-算术运算实验讲课教案

实验二-算术运算实验讲课教案

实验二-算术运算实验实验二算术运算实验一、实验目的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所示内容。

实验二:算术逻辑运算和移位运算

实验二:算术逻辑运算和移位运算

西安交通大学实验报告
课程名称:微机原理与接口技术实验名称数据传送
班级:机械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;
计算机组成原理实验课程
实验二 运算器实验

C语言程序设计实验报告——实验2 数据类型、运算符和表达式

C语言程序设计实验报告——实验2  数据类型、运算符和表达式

凯里学院 C 语言程序设计 实验报告××××× 专业×× 年级×× 班,学号×××××× 姓名××成绩 合作者 实验日期 年 月 日 指导教师 评阅日期 年 月 日实验二 数据类型、运算符和表达式一、实验目的:(1)掌握C 语言数据类型,熟悉如何定义一个整型、字符型、实型变量、以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。

(2)学会使用C 的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(――)运算符的使用。

(3)掌握C 语言的输入和输出函数的使用(4)进一步熟悉C 程序的编辑、编译、连接和运行的过程,学会使用step by step 功能。

(5)认真阅读教材数据类型,算术运算符和表达式,赋值运算符和表达式部分内容。

二、实验内容:(1)输人并运行下面的程序 #include<stdio.h> void main() {char c1,c2; c1='a'; c2='b';printf("%c %c\n",c1,c2); }(2)按习题3. 7的要求编程序并上机运行 该题的要求是:要将“China ”译成密码,密码规律是:用原来字母后面的第4个字母代替原来的字母。

例如,字母“A ”后面第4个字母是“E ”,用“E ”代替“A ”。

因此,“China ”应译为“Glmre" 。

请编一程序,用赋初值的方法使。

cl ,c2,c3,c4,c5五个变量的值分别为‘C ’、‘h ’、‘i ’、‘n ’、‘a ’,经过运算,使cl ,c2,c3,c4,c5分别变为‘G ’、‘l ’、‘m ’、‘r ’、‘e ’,并输出。

三、实验步骤:(1)输人并运行下面的程序 #include<stdio.h> void main() {char c1,c2; c1='a'; c2='b';printf("%c %c\n",c1,c2); }装订线装订线① 运行此程序。

北理工_汇编_实验二_算术运算类操作实验

北理工_汇编_实验二_算术运算类操作实验

本科实验报告实验名称:实验二算术运算类操作实验(基础与设计)课程名称:CPU与汇编实验实验时间:任课教师:实验地点:实验教师:实验类型:□原理验证■综合设计□自主创新学生姓名:学号/班级:组号:无学院:信息与电子同组搭档:无专业:信息工程成绩:一、实验要求和目的1.了解汇编语言中的二进制、十六进制、十进制、BCD 码的表示形式;2.掌握各类运算类指令对各状态标志位的影响及测试方法;3.熟悉汇编语言二进制多字节加减法基本指令的使用方法;4.熟悉无符号数和有符号数乘法和除法指令的使用;5.掌握符号位扩展指令的使用;6.掌握BCD 码调整指令的使用方法。

二、软硬件环境1、硬件环境:计算机系统 windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。

三、实验涉及的主要知识1.加减法处理指令2.乘除法指令和符号位扩展指令3.BCD 码的调整指令四、实验内容(一)对于两组无符号数,087H 和034H,0C2H 和5FH,试编程求这两组数的和差积商,并考虑计算结果对标志寄存器中状态标志位的影响:1.流程图Array2.程序代码:DA TAS SEGMENTDA TAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DA TAS,SS:STACKS START:MOV AX,DATASMOV DS,AXMOV AX,0C2HMOV BX,5FHADD AX,BX ;addMOV AX,0C2HMOV BX,5FHSUB AX,BX ;subMOV AX,0C2HMOV BX,5FHMUL BX ;mulMOV AX,0C2HMOV BX,5FHDIV BX ;divMOV AH,4CHINT 21HCODES ENDSEND START(将数据改变得到另一组输出结果)3.实验结果以第一组数的加法为例(已将截图以上输入-t进行debug的步骤省略)此时右下角信息(NV UP……)代表标志寄存器的值。

算术运算实验报告总结

算术运算实验报告总结

一、实验目的本次实验旨在通过计算机编程实现对基本算术运算(加、减、乘、除)的模拟,加深对算术运算原理的理解,提高编程能力和问题解决能力。

二、实验内容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语言实验报告-实验二 数据类型、运算符和表达式

C语言实验报告-实验二  数据类型、运算符和表达式
k=273.16+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位算术逻辑运算实验

实验三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.熟悉算术逻辑运算指令和移位指令的功能。

2.了解标志寄存器各标志位的意义和指令执行对它的影响。

二、实验预习要求1.复习8086指令系统中的算术逻辑类指令和移位指令。

2.按照题目要求在实验前编写好实验中的程序段。

三、实验任务1.实验程序段及结果表格如表:表2.用BX 寄存器作为地址指针,从BX 所指的内存单元(0010H)开始连续存入(10H 、04H 、30H),接着计算内存单元中的这三个数之和,和放在单元中,再求出这三个数之积,积放0014单元中。

写出完成此功能的程3.写出完成下述功能的程序段。

上机验证你写出的程序段,程序运行的最(AX)=(1) 传送15H 到AL 寄存器; (2) 再将AL 的内容乘以2;(3) 接着传送15H 到BL 寄存器; (4) 最后把AL 的内容乘以BL 的内容。

4商=(1) 传送数据2058H 到DS:1000H 单元中,数据12H 到DS:1002H 单元中; (2) 把DS:1000H 单元中的数据传送到AX 寄存器; (3) 把AX 寄存器的内容算术右移二位;(4) 再把AX寄存器的内容除以DS:1002H 字节单元中的数; (5) 最后把商存入字节单元DS:1003H 中。

5.下面的程序段用来清除数据段中从偏移地址0010H 开始的12元的内容(即将零送到这些存储单元中去)。

(1) 将第4条比较指令语句填写完整(划线处)。

MOV SI ,0010H NEXT: MOV WORD PTR[SI],0 ADD SI ,2CMP SI ,答案 22H (或者20H )JNE NEXTHLT(2) 假定要按高地址到低地址的顺序进行清除操作(高地址从0020H 开始),则上述程序段应如何修改上机验证以上两个程序段并检查存储单元的内容是否按要求进行了改变。

6. 输入并运行表中的程序段,把结果填入表右边的空格中,并分析结果,说明本程序段的功能是什么。

高中计算机科学实验归纳

高中计算机科学实验归纳

高中计算机科学实验归纳实验目的该实验的目的是引导高中学生深入理解计算机科学的基本原理和概念,并通过实际操作加深对计算机科学的理解。

通过实验,学生将研究如何使用计算机进行编程和解决问题,培养他们的逻辑思维和创造力。

实验内容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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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:STACKSSTART: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:STACKSSTART: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:STACKS START: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/3FH2) 在数据段定义了两个多精度的有符号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 21H CODES 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④实验结果3) 编程计算280*584/190,运算结果用十六进制表示。

要求上式计算结果的商存入AX,余数存入DX寄存器。

①实验分析本实验要求很简单,可用基本运算直接完成。

值得注意的就是最后进行除法运算时,DIV命令的执行结果自动将商存在AX中,余数存于DX中,可直接满足实验要求,故无需多余操作。

相关文档
最新文档