实验二 算术运算类操作实验 (基础与设计)

合集下载

《C语言程序设计》实验报告(实验1-12)

《C语言程序设计》实验报告(实验1-12)

《C语⾔程序设计》实验报告(实验1-12)《C语⾔程序设计》实验报告2013~2014学年第⼆学期班级姓名学号指导教师实验⼀实验项⽬名称:C程序的运⾏环境和运⾏C程序的⽅法所使⽤的⼯具软件及环境:Visual C++ 6.0⼀、实验⽬的:1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运⾏⼀个C程序;2.通过运⾏简单的C程序,初步了解C源程序的特点。

⼆、预习内容:教材《C语⾔程序设计教程》第1章。

三、实验内容:1. 在Visual C++ 6.0环境下输⼊并运⾏下⾯的程序:#includeint main( ){printf("This is a C program.\n");return 0;}2. 在Visual C++ 6.0环境下输⼊下⾯的程序(有语法错误),编译、连接、调试该程序,直⾄程序⽆语法错误,然后运⾏程序,并观察分析运⾏结果。

#includeint main( ){int a,b,suma=3;b=4;sun=a+b;print(“%d+%d=%d\n”,a,b,sum);return 0;}四、实验结果:1. 运⾏结果(或截图):This is a C program.Press any key to continue2. (1) 改正后的源程序:#includeint main( ){int a,b,sum;a=3;b=4;sum=a+b;printf("%d+%d=%d\n",a,b,sum);return 0;}(2) 运⾏结果(或截图):3+4=7五、思考题:1. ⼀个C程序上机的步骤有哪些?答:上级输⼊与编辑源程序—对原程序进⾏编译–与库函数链接–运⾏可执⾏的⽬标程序。

2. 组成C程序的基本单位是函数,⼀个函数包括哪⼏个部分?答:⼀个函数包括两部分:分别为函数头或函数⾸部和函数体。

成绩指导教师签名实验⼆实验项⽬名称:数据类型、运算符和表达式所使⽤的⼯具软件及环境:Visual C++ 6.0⼀、实验⽬的:1.掌握整型、实型与字符型这三种基本类型的概念;2.掌握常量及变量的使⽤⽅法;3. 掌握基本算术运算符及其表达式的使⽤⽅法;4. 掌握++、--运算符、赋值运算符及其表达式的使⽤⽅法。

python实验报告书

python实验报告书

python实验报告书一、实验目的本次 Python 实验的主要目的是通过实际操作和编程实践,深入了解Python 语言的基本语法、数据结构、控制结构以及函数的使用,培养解决实际问题的编程能力,提高对计算机程序设计的理解和应用水平。

二、实验环境本次实验使用的操作系统为 Windows 10,编程环境为 Python 385,使用的集成开发环境(IDE)为 PyCharm。

三、实验内容(一)基本语法实验1、变量与数据类型定义不同类型的变量,如整数、浮点数、字符串、布尔值等,并进行输出。

进行数据类型的转换,例如将整数转换为浮点数,字符串转换为整数等。

2、运算符与表达式练习使用算术运算符(+、、、/、%)、比较运算符(>、<、==、!=、>=、<=)、逻辑运算符(and、or、not)等。

编写复杂的表达式,计算并输出结果。

3、输入与输出使用 input()函数获取用户输入,并进行相应的处理和输出。

使用 print()函数输出不同类型的数据,掌握格式化输出的方法。

(二)数据结构实验1、列表创建列表,对列表进行添加、删除、修改元素的操作。

遍历列表,使用索引访问列表中的元素。

对列表进行排序和反转操作。

2、元组定义元组,比较元组和列表的区别。

访问元组中的元素。

3、字典创建字典,添加、删除、修改键值对。

遍历字典,获取字典的键和值。

4、集合创建集合,进行集合的并集、交集、差集等运算。

(三)控制结构实验1、条件语句使用 ifelifelse 结构编写条件判断程序,根据不同的条件执行相应的代码块。

结合逻辑运算符进行复杂条件的判断。

2、循环语句使用 for 循环遍历列表、元组、字典等数据结构。

使用 while 循环实现条件循环,计算累加和、累乘积等。

掌握 break 和 continue 语句在循环中的使用。

(四)函数实验1、自定义函数定义具有不同参数类型(位置参数、默认参数、关键字参数、可变参数)的函数。

函数的返回值,返回单个值和多个值的情况。

计算机组成原理实验报告

计算机组成原理实验报告

重庆理工大学《计算机组成原理》实验报告学号 __***********____姓名 __张致远_________专业 __软件工程_______学院 _计算机科学与工程二0一六年四月二十三实验一基本运算器实验报告一、实验名称基本运算器实验二、完成学生:张致远班级115030801 学号11503080109三、实验目的1.了解运算器的组成结构。

2.掌握运算器的工作原理。

四、实验原理:两片74LS181 芯片以并/串形式构成的8位字长的运算器。

右方为低4位运算芯片,左方为高4位运算芯片。

低位芯片的进位输出端Cn+4与高位芯片的进位输入端Cn相连,使低4位运算产生的进位送进高4位。

低位芯片的进位输入端Cn可与外来进位相连,高位芯片的进位输出到外部。

两个芯片的控制端S0~S3 和M 各自相连,其控制电平按表2.6-1。

为进行双操作数运算,运算器的两个数据输入端分别由两个数据暂存器DR1、DR2(用锁存器74LS273 实现)来锁存数据。

要将内总线上的数据锁存到DR1 或DR2 中,则锁存器74LS273 的控制端LDDR1 或LDDR2 须为高电平。

当T4 脉冲来到的时候,总线上的数据就被锁存进DR1 或DR2 中了。

为控制运算器向内总线上输出运算结果,在其输出端连接了一个三态门(用74LS245 实现)。

若要将运算结果输出到总线上,则要将三态门74LS245 的控制端ALU-B 置低电平。

否则输出高阻态。

数据输入单元(实验板上印有INPUT DEVICE)用以给出参与运算的数据。

其中,输入开关经过一个三态门(74LS245)和内总线相连,该三态门的控制信号为SW-B,取低电平时,开关上的数据则通过三态门而送入内总线中。

总线数据显示灯(在BUS UNIT 单元中)已与内总线相连,用来显示内总线上的数据。

控制信号中除T4 为脉冲信号,其它均为电平信号。

由于实验电路中的时序信号均已连至“W/R UNIT”单元中的相应时序信号引出端,因此,需要将“W/R UNIT”单元中的T4 接至“STATE UNIT”单元中的微动开关KK2 的输出端。

实验报告_实验2 数据类型与表达式

实验报告_实验2 数据类型与表达式

实验报告_实验 2 数据类型与表达式(学生学号__姓名)一、实验目的:1、熟悉基本数据类型(int、char、float、double)占用的字节数和存储形式,能够定义基本数据类型的变量,使用这些类型的数据;2、掌握字符数据的存储形式及其与整数的运算,能正确理解“字符数据”与“字符串”的区别与联系,熟悉常用转义字符的使用;3、熟悉字符常量与一般常量的定义、使用;4、掌握算术运算符(重点是/和%)、自增(++)和自减(--)运算符的使用,能够构建正确的表达式,并输出其结果;5、理解不同类型数据之间运算时的类型转换规则,掌握强制类型转换的方法。

二、实验内容1、(基础题)用sizeof运算符可以得到各种类型数据占用存储单元长度,利用数据间的关系和不同控制符,可以得到查看数据的存储形式。

回答下列问题:(1)sizeof运算符如何使用?它的操作数可以是类型关键字吗?答:可用sizeof(类型名或数据) 来获取该类型数据所占字节数。

可以。

(2)整数的占用长度与其数值大小有关吗?答:有。

(3)字符串中’\’’、’\n’、’\t’的功能各是什么?答:单引号,换行,水平制表。

(4)字符串的一个英文字母占几个字节?一个汉字占几个字节?尾部还有什么字符?答:1个字节;4个字节;结束符‘\0’。

(5)整数的存储形式是什么?答:二进制补码。

2、(基础题)字符数据以整数方式(ASCII)存储的,可以与整数进行+、-运算,既可以用“字符”方式输出,也可以用“整数”方式输出。

回答下列问题:(1)字符数据在内存中是以什么方式存储的?答: ASCII码。

(2)字符数据与整型数据能相互赋值、运算吗?如何以“整数”方式和“字符”方式输出字符?答:能,整数:”%d”,字符:”%c”。

(3)大小写字母的ASCII有什么关系?(如:’G’与’g’)答:ASCII码相差32。

(4)如何由’A’、’a’分别得到后续的大写字母、小写字母?答:’A+1’,’a+1.’(5)字符间的距离如何计算?由一字符能分别得到ASCII比它小5、大10的两个字符吗?若能,如何得到?答:两个ASCII码绝对值相减,’a’-5,’a’+10.(6)说明“C”与’c’的联系与区别,能否写成”dog”、’boy’?答:”C”字符串,’c’字符,能.3、(基础题)符号常量与常变量(即用const关键字定义)的使用:回答问题:(1)写出用符号常量定义PI的格式;#define PI(2)写出用“常变量”方式定义PI值的语句。

《计算机组成原理》学生实验报告

《计算机组成原理》学生实验报告

《计算机组成原理》学生实验报告(2011~2012学年第二学期)专业:信息管理与信息系统班级: A0922学号:10914030230姓名:李斌目录实验准备------------------------------------------------------------------------3 实验一运算器实验-----------------------------------------------------------7 实验二数据通路实验-------------------------------------------------------13 实验三微控制器实验--------------------------------------------------------18 实验四基本模型机的设计与实现------------------------------------------22实验准备一、DVCC实验机系统硬件设备1、运算器模块运算器由两片74LS181构成8位字长的ALU。

它是运算器的核心。

可以实现两个8位的二进制数进行多种算术或逻辑运算,具体由74181的功能控制条件M、CN、S3、S2、S1、S0来决定,见下表。

两个参与运算的数分别来自于暂存器U29和U30(采用8位锁存器),运算结果直接输出到输出缓冲器U33(采用74LS245,由ALUB信号控制,ALUB=0,表示U33开通,ALUB=1,表示U33不通,其输出呈高阻),由输出缓冲器发送到系统的数据总线上,以便进行移位操作或参加下一次运算。

进位输入信号来自于两个方面:其一对运算器74LS181的进位输出/CN+4进位倒相所得CN4;其二由移位寄存器74LS299的选择参数S0、S1、AQ0、AQ7决定所得。

触发器的输出QCY就是ALU结果的进位标志位。

QCY为“0”,表示ALU结果没有进位,相应的指示灯CY灭;QCY为“1”,表示ALU结果有进位,相应的指示灯CY点亮。

(计算机组成原理)实验一运算器实验

(计算机组成原理)实验一运算器实验

D5
D4
D3
D2
CLK D1 D0
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
D7
D DA2(74LS273)6
D5
D4
D3
D2
CLK D1 D0
返回
D7-D0
BUS TO ALU
Cn181
B-DA2 B-DA1
DA1,DA2:两片74LS273
❖ 74LS273:带清零端的8D寄存器 ❖ MR:异步清零信号(--接+5V) 返回 ❖ CP:时钟脉冲(--B-DA1、 B-DA2)
74LS245
B0 B1 B2 B3 B4 B5 B6 B7
18 17 16 15 14 13 12 11
D0 D1
D2 D3 D4 D5 D6 D7
19 1
E D IR
地址
Ai
+5
❖ 只有当I/O-R#和Ai同时=0时E#打开,开关 值BUS(D7~D0)
2、Input Device
❖ 输入设备(开关)的工作过程:
0FFH+01H (算术加) 5BH+0A0H+FC(算术加) 5BH∧0A0H(逻辑与) 79H+32H+FC(算术加)
返回
(一)实验原理逻辑框图
T4
74299
299-B M
S0 S1 S2 S3
ALU UNIT
ALU (74LS181) T4
进位 判零 电路
ALU-B
CyCn CyNCn M Ci
B-DA1
DA1 (74LS273)
DA2 (74LS273)
B-DA2
I/O-R INPUT
Ai=“0”

c语言作业

c语言作业

1、用下面的scanf函数输入数据,使a=10, b=20, c1='A', c2='a', x=1.5, y=-3.75, z=67.8,请问在键盘上如何输入数据?scanf("%5d%5d%c%c%f%f%*f,%f", &a,&b,&c1,&c2,&x,&y,&z);2、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。

用scanf函数输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字第三次作业1、有3个整数a,b,c,由键盘输入,输出其中最大的数。

2、有一个函数:x x<1y= 2x-1 1<=x<103x-11 x>=10写一段程序,输入x,输出y的值。

3、给出一百分制成绩,要求输出成绩等级A、B、C、D、E。

90分以上为A,80-89分为B,70-79为C,60-69为D,60分以下为E。

4、给一个不多于5位的正整数,输出这个数是几位数。

第四次作业1、给一个不多于5位的正整数,要求:a.求出它是几位数;+b.分别输出每一位数字;c.按逆序输出各位数字,例如:原数为321,应输出123。

2、教材P112页第5.8题(if语句解法创建一个独立文件,switch语句解法创建一个独立文件第五次作业1、输入两个正整数m和n,求其最大公约数和最小公倍数。

(经典题)2、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数,并输出。

3、求s=a+aa+aaa+aaaa+....+(a...a)之值,其中a是一个数字,n表示a的位数。

1、输入两个字符串,使用指针p将两个字符串按次序复制到数组c中。

例:输入“zhe"和"jiang",将"zhejiang"保存在数组c中。

C语言实验教案

C语言实验教案
二、实验学时 4学时
三、实验任务 1、熟悉 TrbuoC 集成环境
了解和熟悉编辑(Edit)窗口和信息窗口(Message)作用.试一下能否向信 息窗口输入程序,按功能键 F5,观察它有什么作用,再按一次 F6,再观察它有什 么作用。
按功能键 F10,并按回车键,观察 File 菜单,了解它们的作用和用法.用键盘 上的 键,分别选中 Edit,Run,Compile,Project,Debug,Break/watch,观察它们 的菜单,大致上了解它们的作用. 选择 File 菜单中的 New 并按回车键,在编辑窗口中随意输入几行字符,观察窗 口顶端 line 和 col 后面数字的变化。
i=8; j=10; m=++i; n=j++; printf(“%d,%d,%d,%d”,i,j,m,n) ; } a. 运行程序,注意i,j,m,n 各变量的值,分别作出以下改动并运行。 第 4、5 行改为: m=i++; n=j++;
3
再运行。 b. 将程序改为: main( ) { int i,j;
实验二 顺序结构程序设计
一、实验目的及要求 1. 掌握 C 语言中使用最多的一种语句——赋值语句的使用方法。 2. 掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。 二、实验学时
2学时 三、实验任务 1、掌握各种格式转换符的正确使用方法 a.输入程序
main( ) {int a,b;
float d,e; char c1,c2; double f,g;
2
main() { char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;
printf(“a%c b%c\tc%ctabc\n”,c1,c2,c3); printf(“\t\b%c %c”,c4,c5); } 在上机前先用人工分析程序,写出应得结果,上机后将二者对照。 4、输入并运行下面的程序 main()
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二算术运算类操作实验 (基础与设计)
一、实验要求和目的
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 SEGMENT
ARRAY DW 087H,034H,0C2H,05FH
JIA DW 2 DUP(?) ;储存两组加法结果
JIAN DW 2 DUP(?) ;储存两组减法结果
CHENG DW 2 DUP(?) ;储存两组乘法结果CHU DW 2 DUP(?) ;储存两组除法结果DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV SI,0
MOV BX,0
SUB BX,2
SUB SI,4
L1:
ADD SI,4
ADD BX,2
MOV 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,2
JNZ L1
MOV AH,4CH
INT 21H
CODES ENDS
END START
程序结果:
通过-t逐步运行程序,逐步查看每次运算后标志位的状态,结果如下:
2、在数据段定义了两个多精度的有符号16 进制数,FIRST 和SECOND ,1)求两数的和与差,并将结果存放在THIRD 为首地址的缓冲区中;2)如果把两组数据当作十进制数据来处理,再次求两数的和与差,并将结果存放在FORTH 为首地址的缓冲区中。

试编程实现上述运算。

FIRST DW 45 H,82H,96 H,57H
SECOND DW 12 H,46H,83 H,45H
思路流程:
以十六进制加法为例
源代码:
DATAS SEGMENT
FIRST DB 45H,82H,96H,57H
SECOND DB 12H,46H,83H,45H
THIRD DB 10 DUP(?)
FORTH DB 10 DUP(?)
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS START:
MOV AX,DATAS
MOV DS,AX
;十六加法
MOV SI,3 ;运算数据的偏移量
MOV BX,3 ;储存数据结果的偏移量MOV CX,4 ;循环标志量
INC BX
INC SI
CLC ;标志位CF清零
L1:
DEC SI
DEC BX
MOV AL,FIRST[SI]
ADC AL,SECOND[SI]
MOV THIRD[BX],AL
LOOP L1
;十六减法
MOV SI,3
MOV BX,8
MOV CX,4
INC BX
INC SI
CLC
L2:
DEC SI
DEC BX
MOV AL,FIRST[SI]
SBB AL,SECOND[SI]
MOV THIRD[BX],AL
LOOP L2
;十加法
MOV SI,3
MOV BX,3
MOV CX,4
INC BX
INC SI
CLC
L3:
DEC SI
DEC BX
MOV AL,FIRST[SI]
ADC AL,SECOND[SI]
DAA ;转换为十进制加法MOV FORTH[BX],AL
LOOP L3
;十减法
MOV SI,3
MOV BX,8
MOV CX,4
INC BX
INC SI
CLC
L4:
DEC SI
DEC BX
MOV AL,FIRST[SI]
SBB AL,SECOND[SI]
DAS ;转换为十进制减法
MOV FORTH[BX],AL
LOOP L4
MOV AH,4CH
INT 21H
CODES ENDS
END START
程序结果:
0770:0000到0770:0003是FIRST数,0770:0004到0770:0007是SECOND数,0770:0008到0770:000B是十六进制加法结果,0770:000D到0770:0010是十六进制减法结果,0770:0012
3、编程计算((Z +X*Y -328) -V)/ Y,其中X、Y、Z、V 均为16 位带符号数,假设初始数
据分别装入X、Y、Z、V 单元,要求上式计算结果的商存入AX,余数存入DX 寄存器。

同学自行给出初始值加以验证程序。

源代码:
DATAS SEGMENT
X DW 200 ;设X=200
Y DW 2 ;设Y=2
Z DW 30 ;设Z=30
V DW 4 ;设V=4
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AX,X
MUL Y
ADC AX,Z
SBB AX,328
SBB AX,V
DIV Y ;运算结果在AX中
MOV AH,4CH
INT 21H
CODES ENDS
END START
程序结果:
结果在AX=31H,商为DX=0
五、心得体会
本次实验主要学习了汇编中四则运算的方法,并在程序中加以循环实现多组数依次完成运算。

这次实验学习到的最主要的知识就是DW和DB两种数据在进行运算时候的不同以及对进位的处理。

在第二个题目中需要涉及到加减乘除四种运算,为了更好的处理进位就把原数据由DW改为了DB,这是因为如果用DW进位时会将该数的进位加在其4位十六进制数的高两位,而不能加在高位的DW中,不方便阅读最终结果。

实验中另一个很大的收获就是有了更深的对标志位的认识。

通过第一个题目认识了不同运算对标志位的影响。

在做第二个题目时,由于在循环过程中用了CMP改变了标志位导致有些结果总是没有加上下面的进位,我改进了判断循环的方法避免了改动标志位。

这个经历对我日后的汇编编程是很宝贵的经验。

相关文档
最新文档