实验 字符串的传送
字符及字符串输入输出与顺序程序设计实验报告
字符及字符串输入输出与顺序程序设计实验实验报告2.2.1 实验目的1、学习和掌握字符及字符串的输入输出方法。
2、掌握顺序程序的设计方法。
3、进一步掌握调试工具的使用方法。
2.2.2 实验预习要求1、复习DOS功能调用中用于字符输入(功能号01H)、字符输出(功能号02H)、字符串输入(功能号为0AH)以及字符串输出(功能号09H)的调用方法(详见教材5.5.6)。
2、复习BCD码运算调整指令。
3、根据“2.2.3 实验内容”中给出的源程序框架编写完整的源程序,以便实验时调试。
4、从“2.2.4 实验习题”中任选一道题目,编写源程序,以便上机调试。
2.2.3实验内容从键盘输入两个一位十进制数,计算这两个数之和,并将结果在屏幕上显示出来。
1、问题分析比如使用功能号为01H的用于实现单个字符输入的DOS功能调用接收从键盘输入的两个十进制数8和6,这时计算机内部得到的是这两个数的ASCII码值38H和36H。
由于数字0 9的ASCII码值与其代表的数值之间相差30H,因此将其减去30H即可得到以非压缩型BCD数形式表示的十进制数08H和06H,使用ADD指令对它们进行相加后结果为0EH(00001110B),显然需要用非压缩型BCD数加法调整指令对ADD的运算结果进行调整,调整后得到两个非压缩型BCD数01H和04H,将它们分别加上30H后变为其对应的ASCII码31H(1的ASCII码)和34H(4的ASCII码),然后调用功能号为02H用于单个字符输出的DOS功能调用将它们显示出来。
综上所述,需要考虑以下问题。
(1)从键盘输入一个一位十进制数的方法通过功能号为1的DOS功能调用实现从键盘输入一个字符,格式如下:MOV AH, 01HINT 21H ;此时程序等待用户键入,键入字符的ASCII码值存在AL中SUB AL, 30H ;减去30H后得到键入数字所代表的数值(2)提示信息字符串的显示通过功能号为9的DOS功能调用实现字符串显示,注意字符串的最后一个字符必需为’$’。
《汇编语言》实验指导书
(1)输入程序并汇编
_A100
0B03:0100 MOV DL,33
0B03:0102 MOV AH,2
0B03:0104 INT 2l
“0B03:0100”类似这样的地址是系统自动提供的,不需用户输入。至此程序已输入完毕,并汇编成机器指令。现在用G命令运行程序如下:
(2)运行程序
_G
3
Program terminated normally
编程思路(仅供参考):
该题目要求掌握运算中带符号数和无符号数运算的区别。本题目只考虑有符号数情况
参考程序清单:ABC.ASM
DATA SEGMENT
X DB1;x 单元存放数字1,以下类推
Y DB4
Z DB3
WDB?,? ;预留2个单元,存放运算结果
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
INT 21H
:
当要执行INT 21H这条指令时,若用T命令进行跟踪,则进入INT 21H程序(DOS功能调用)后,需要数十次T命令才能返回当前程序;若采用P命令进行调试,则只执行INT 21H一条指令,执行完立即返回,给调试者的感觉好象是执行了一条普通指令一样。因此,当读者以后遇到CALL、INT n指令或带重复前缀的数据串操作指令时,若不想观察相应过程的详细执行过程,就可以用P命令。
若是0则为偶数若为2则为奇数可以采用test指令和条件转移指令jz来实现在内存中以buf单元开始缓冲区中连续存放着10个学生的分数试编制程序统计英中90100分8089分6079分及60分以下少人并把结果分别存放在s9s8s7和s6试编制程序从键盘输入学生成绩abcd自动汇总并显示各类分数的人数假定各类分数的总人数在0止输入
哈夫曼树编码译码实验报告
数据结构课程设计设计题目:哈夫曼树编码译码目录第一章需求分析1第二章设计要求1第三章概要设计2(1)其主要流程图如图1-1所示。
3(2)设计包含的几个方面4第四章详细设计4(1)①哈夫曼树的存储结构描述为:4(2)哈弗曼编码5(3)哈弗曼译码7(4)主函数8(5)显示部分源程序:8第五章调试结果10第六章心得体会12第七章12附录:12第一章需求分析在当今信息爆炸时代,如何采用有效的数据压缩技术节省数据文件的存储空间和计算机网络的传送时间已越来越引起人们的重视,哈夫曼编码正是一种应用广泛且非常有效的数据压缩技术。
哈夫曼编码是一种编码方式,以哈夫曼树—即最优二叉树,带权路径长度最小的二叉树,经常应用于数据压缩。
哈弗曼编码使用一张特殊的编码表将源字符(例如某文件中的一个符号)进行编码。
这张编码表的特殊之处在于,它是根据每一个源字符出现的估算概率而建立起来的(出现概率高的字符使用较短的编码,反之出现概率低的则使用较长的编码,这便使编码之后的字符串的平均期望长度降低,从而达到无损压缩数据的目的)。
哈夫曼编码的应用很广泛,利用哈夫曼树求得的用于通信的二进制编码称为哈夫曼编码。
树中从根到每个叶子都有一条路径,对路径上的各分支约定:指向左子树的分支表示“0”码,指向右子树的分支表示“1”码,取每条路径上的“0”或“1”的序列作为和各个叶子对应的字符的编码,这就是哈夫曼编码。
哈弗曼译码输入字符串可以把它编译成二进制代码,输入二进制代码时可以编译成字符串。
第二章设计要求对输入的一串电文字符实现哈夫曼编码,再对哈夫曼编码生成的代码串进行译码,输出电文字符串。
通常我们把数据压缩的过程称为编码,解压缩的过程称为解码。
电报通信是传递文字的二进制码形式的字符串。
但在信息传递时,总希望总长度能尽可能短,即采用最短码。
假设每种字符在电文中出现的次数为Wi,编码长度为Li,电文中有n种字符,则电文编码总长度为∑WiLi。
若将此对应到二叉树上,Wi为叶结点的权,Li为根结点到叶结点的路径长度。
使用VB中的MSComm控件实现RS-232串口通信
使用VB中的MSComm控件实现RS-232串口通信实验准备:需要准备一些与串口通信有关的设备,如(外置式)调制解调器、计算机串口与调制解调器的连接线、一根DTE到DTE 的无调制解调器连接线(接法见本章有关习题的参考答案),在实验前检查计算机的两个串口是否能够正常工作。
实验环境:Windows 95/98操作系统,Microsoft VB 5.0以上程序设计环境。
对例题中涉及调制解调器的内容,采用计算机与调制解调器连接的方式;对在例题中设计数据传输的内容,须事先将DTE 到DTE的无调制解调器连接线的两端,分别插入Com1和Com2串口。
实验说明:VB中的MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。
MSComm控件提供下列两种处理通讯的方式:(1)事件驱动(实时)方式,这是处理串行端口交互作用的一种非常有效的方法。
在许多情况下,在事件发生时需要得到通知,例如,在Carrier Detect(CD)或RequestToSend(RTS)线上一个字符到达或一个变化发生时。
在这些清况下,可以利用MSComm控件的OnComm事件捕获并处理这些通讯事件。
OnComm事件还可以检查和处理通讯错误。
(2)轮询方式,在程序的每个关键功能之后,可以通过检查CommEvent属性的值来查询事件和错误。
如果应用程序较小,并且是自保持的,这种方法可能是更可取的。
例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“OK”响应。
每个使用的MSComm控件都对应着一个串行端口。
如果应用程序需要访问多个串行端口,必须使用多个MSComm控件。
可以在Windows“控制面板”中改变端口地址和中断地址。
下面这个简单的例子采用了轮询方法演示了用调制解调器进行基本的串行通讯:Private Sub Form_Load()Dim Instring As String '保存输入子串的缓冲区mPort=3 '使用COM3。
大数据预处理字符串与字段操作实验报告
大数据预处理字符串与字段操作实验报告一、实验目的。
咱们这次做这个实验啊,主要就是想学会怎么处理电商用户评论数据里的字符串和字段。
比如说,把用户那些乱七八糟的评论整理得清楚一点,把有用的信息挑出来,方便后面分析用户到底喜欢啥,不喜欢啥。
二、实验数据。
三、实验步骤。
# (一)数据清洗。
1. 去除重复数据。
为啥要去除重复数据呢?因为有时候可能因为网络问题或者其他原因,会有一些评论重复出现。
比如说,有个用户不小心点了两次提交评论,那我们就只需要保留一条就够了。
具体操作就是用一些工具或者编程语言里的函数,把重复的评论找出来删掉。
像Python里的pandas库就有很方便的方法可以做到这个。
2. 处理缺失值。
有些评论可能因为用户没写完或者其他原因,会有信息缺失的情况。
比如说,评论里只写了“挺好的”,但是没说具体是哪个方面挺好的。
这时候我们可以选择把这些缺失值填充上一些默认的值,比如“无”,或者根据其他评论的情况来推测一个合理的值填上去。
# (二)字符串操作。
1. 大小写转换。
有些用户写评论的时候可能大小写不规范,一会儿大写一会儿小写的。
为了方便统一处理,我们可以把所有的评论都转换成小写或者大写。
比如说,“Good”和“good”其实表达的是一个意思,转换成一样的形式后,后面分析起来就不容易出错。
在Python里,用字符串的lower()或者upper()方法就能轻松实现大小写转换。
2. 去除特殊字符。
评论里可能会有一些特殊字符,像标点符号、表情符号啥的。
这些字符对我们分析内容可能没什么帮助,还会增加处理的难度。
所以我们要把它们去掉。
比如说,“这个产品 真不错!”,经过处理后就变成“这个产品真不错”。
可以用正则表达式来匹配这些特殊字符,然后替换掉。
# (三)字段操作。
1. 提取关键信息。
从评论里提取出关键信息很重要哦。
比如说,我们想知道用户对产品的评价是正面的还是负面的,那就可以根据评论里的一些关键词来判断。
C语言上机实验例题
实验一 C语言的运行环境、运行过程和表达式的使用一、目的与要求1、了解Dos、Windows环境下C语言的运行环境,了解所用的计算机系统的基本操作方法,学会独立使用该系统。
2、了解在该系统上如何编辑、编译、连接和运行一个C程序。
3、通过运行简单的C程序,初步了解C源程序的特点。
4、掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。
5、学会使用C的有关算术运算符,以及包含这些运算符的表达式二、实验例题【例1】编程实现在屏幕上显示如下三行文字Hello, world !Wolcome to the C language world!Everyone has been waiting for.在Turbo C的集成环境下,键入如下源文件。
敲Alt+F组合键打开File菜单,File菜单中Write to或save as选项可将默认noname.c文件名改为任意文件名。
程序example.c如下:main(){printf("Hello,World!\n");printf("Wolcome to the C language world!\n");printf("Everyone has been waiting for.\n");}然后用Ctrl+F9执行example.c,用Alt+F5查看结果,即在屏幕上显示题目要求的三行文字。
按回车键重新返回Turbo C的编辑环境。
注意,在运行程序之前最好先存盘。
【例2】输入并运行程序,写出运行结果。
main(){int a,b,sum;a=123;b=456;sum=a+b;printf(“sum is %d\n”,sum);}运行方法同上,最后结果为:sum is 579。
【例3】输入并运行程序,写出运行结果。
main(){int a,b,c;int max(int,int);scanf(“%d,%d”,&a,&b);c=max(a,b);printf(“max=%d”,c);}int max(int x,int y){int z;if (x>y) z=x;else z=y;return(z);}这个程序的功能是对于任意输入的两个整数,输出较大的那个数。
LABVIEW实验,字符串加密
实验报告课程名称:虚拟仪器实验名称:字符串加密专业:电子信息工程一、实验目的和要求:1、熟悉LabVIEW的编程环境,掌握基本使用方法。
2、掌握字符串、数组等函数的使用方法。
二、实验器材:1、PC机2、LabVIEW2011软件三、设计思路:1、本次设计的是一个字符串加密程序,规则是每个字母后移5位,例如A变为F,b变为g,x 变为c,y变为d…2、字符串加密首先需要将字符串中的每一个字符都转换成ASCII码,转换后就变成了一个数组;3、每个字母后移5位,即为每个字符的ASCII码值加上5,再将计算后的ASCII码值转换成字符。
这里要注意的是26个字母的最后5位需要单独讨论,即v变为a,w变为b,x变为c,y变为d,z变为e,大小写皆如此;4、计算后的ASCII码值转换为字符之后需要进行拼接,得到最终加密好的的字符串。
四、前面板:五、程序面板:六、遇到的问题及解决方法:Q1:相加时出现错误(加函数连接处有红点)。
原因:由于LabVIEW软件的特点,运行后人能够出现需要的结果,但应注意,数组只能和同阶的数组相加。
方法:用一个循环将被加数变为数组(如下图)。
Q2:字母表中最后5个字母输入后得不到应得的结果。
原因:没有和其他字母分开讨论。
方法:用一个条件结构将字母表最后5分字母分开讨论(如下图)。
Q3:计算后的ASCII码值无法转换成字母表中对应的字符。
原因:选错了函数。
方法:改选为“强制类型转换”函数。
七、体会字符串加密程序的设计可以有很多种,还可以用一个大的循环体结构,先将字符串中的每一个字符单独截取出来,转换为ASCII码值,加上5后再转换成对应字母,最后再连接成字符串。
LabVIEW中的“帮助”可以帮助我们了解许多LabVIEW中用到的函数,所以要善于运用它。
SPI总线数据通信实验
1. 内部逻辑结构图
2. 时钟信号的相位和极性
SPI_CR1.LSBFIRST=0 的时序
3. 数据帧格式
根据 SPI_CR1.LSBFIRST 位,输出数据位时可以 MSB 在先也可以 LSB 在先。 根据 SPI_CR1.DFF 位,每个数据帧可以是 8 位或 16 位。所以选择的数据帧格式 对发送或者接受都有效。
Transfer_procedure();
/* Check the corectness of written dada */
TransferStatus = Buffercmp(SPI1_Buffer_Rx, SPI1_Buffer_Tx, BufferSize);
进行读写操作,此时串口会输出读到 FLASH ID 值。 2) 如果读到 ID 值正确,说明 FLASH 在位。FLASH 准备好后,先通过按钮"上"
键,将由 SPI2 接口把提前设置好的字符串“const u8 TEXT_Buffer[]={神 舟 II 号 SPI 读写访问程序}”中的数据写到 FALSH W25X16 中;然后,通过 “下”键的检测,将写到 W25X16 的字符串读取出来,并在串口显示出来。 3) 上电后,读取 FLASH 的 ID 号,作为在位判断,如果不在位,则循环打印“当 读到的 ID 为 0xxxx:期望值的 ID 为 0XEF14,请检查硬件连接!”等。否则 准备好,并提示写 FLASH 或是读 FLASH 操作。
7) SPI Tx CRC寄存器(SPI_TXCRCR)
8) SPI_I2S配置寄存器(SPI_I2S_CFGR)
9) SPI_I2S预分频寄存器(SPI_I2SPR)
六、参考程序
管道通信实验
院系:计算机系
姓名:李
学号:10
专业:科学技术
年级:10级
实验题目:管道通信实验
一、实验目的(包括:实验内容、实验原理、实验目标)
1、了解管道的基本概念
2、掌握Linux支持的管道通信方式
二、实验设计(包括:设计思路、数据结构、程序流程图、关键代码说明)
本实验利用管道通信机制,实现输入字符串的自动分流操作。一共涉及3个管道,4个进程。P1:从键盘接受输入字符串,写入管道pipe1
{
close(d1[1]); //p1必须关闭写
read(d1[0],buff,sizeof(buff)); //p2从pipe1中读信息
if(strlen(buff)%2==1) //判断字符串长度,若为奇数
{
j=fork(); //创建子进程P3
if(j) //P3执行
}
}
三、实验结果(包括:运行结果、结果分析)
教师评语
成绩:教室签名:年月日
Please input a string: apple
P2 finishes writing to pipe2.
P3 pipe2 odd length string:apple
Please input a string: pear
P2 finishes writing to pipe3.
P4 pipe3 even length string:pear
P2:从pipe1接受字符串,若字符串的长度为偶数,则将其写入管道pipe2,负责写入管道pipe3.P3:从pipe2读出字符串,并显示pipe2:Even length string:偶长度字符串。P4:从pipe3读出字符串,并显示pipe3:Old length string:奇长度字符串。输入exit程序退出,示意图如下图1.1
实验1:CC2530 LED 灯闪烁实验
计算机科学与技术学院实验报告课程名称:无线传感器网络原理与应用实验一CC2530 LED灯闪烁实验一、实验目的熟悉鼎轩 WSN 实验平台使用的基本步骤,熟悉 IAR 开发环境,掌握 CC2530 芯片 LED 对应的 GPIO 引脚,并且熟练掌握 LED 的使用。
二、实验内容1)安装 IAR 开发环境;2)控制红灯、绿灯、蓝灯(蓝灯、黄灯、绿灯)交替闪烁。
三、实验环境硬件:鼎轩 WSN 实验箱(汇聚网关、烧录线),PC 机;软件:IAR 软件。
四、实验步骤目前网关上有红、绿、蓝 3 个 LED 灯,还另有一个红色的 LED 工作指示灯,节点上有红、蓝、黄、绿 4 个 LED 灯,其中,红灯是工作指示灯,蓝灯和黄灯主要用于程序调试。
现在对 LED 灯的操作主要是点亮和关闭,下面是CC2530 中 LED部分的原理图。
LED 颜色, MCU 管脚,信号控制关系如下:对于网关板:对于节点板:要想通过编程 P1,P2 引脚控制 LED 的亮灭,必须设置对应的引脚方向为输出,对应的暂存器为 P1DIR,P2DIR。
P2DIR :D0~D4 设置 P2_0 到到 P2_4 的方向D7 、D6 位作为端口 0 外设优先级的控制1)打开鼎轩 WSN 实验箱,检查实验箱设备,确保实验箱设备完整、连接无误后,连接电源线,打开电源开关;2)安装好 IAR 开发环境以及驱动程序,详细方法见说明资料;3)用烧录线连接汇聚网关上的烧录接口与 PC 机 USB 接口,连接方法可参考相应的说明资料;4) 双击打开目录(/cc2530-simple-demo/LED_BLINK)下的工程图标 AUTO.eww 打开工程;5) 点击 IAR 中的图标按钮编译程序;6)完成编译后若没有错误信息,将实验箱节点编程开关上汇聚网关开关拨上去,点击调试并下载按钮将程序下载到汇聚网关上;7) 运行程序,可以观察到红灯和绿灯交替闪烁。
8) 修改程序代码,实现红、蓝、绿三个灯一起闪烁。
