当前位置:文档之家› 数字签名第一次实验报告

数字签名第一次实验报告

数字签名第一次实验报告
数字签名第一次实验报告

数字签名实验

【实验环境】

ISES客户端

Microsoft CLR Debugger 2005或其它调试器

【实验步骤】

一、RSA-PKCS签名算法

(一)签名及验证计算

(1)进入实验实施,默认选择即为“RSA-PKCS”标签,显示RSA-PKCS签名实验界面。

(2)选择明文格式,输入明文信息。

(3)点击“计算SHA1值”按钮,生成明文信息的散列值,如图1.1.8-1所示。

(4)选择密钥长度,此处以512bit为例,点击“生成密钥对”按钮,生成密钥对和参数。

(5)选择“标准方法”标签,在标签下查看生成的密钥对和参数,如图1.1.8-2所示。

(6)标准方法签名及验证

点击“标准方法”标签下的“获得签名值”按钮,获取明文摘要的签名值,签名结果以十六进制显示于相应的文本框内;点击“验证签名”按钮,对签名结果进行验证,并显示验证结果;上述过程如图1.1.8-3所示。

(二)扩展实验

(1)设置签名系统参数

①直接点击“测试素性”按钮,使用系统初始预设的RSA参数,如图1.1.8-6所示。

①点击“生成pq”按钮,系统会自动产生2个大素数。然后,点击“测试素性”按钮,

再次确认其素性,如图1.1.8-7所示。

图1.1.8-7

注:这个过程比较费时,可能要花费几分钟。

(2)注册用户

①在“用户名”文本框中输入一个“注册用户列表”中未出现的用户名,如“alice”,

点击“注册”按钮,如图1.1.8-8所示。

图1.1.8-8

②在“用户注册”窗口,点击“密钥测试”按钮,系统会为该用户生成一对公私钥,

如图1.1.8-9所示。

图1.1.8-9

注:这个过程比较费时,可能要花费几分钟。

③点击“密钥登记”按钮,主窗口的“注册用户列表”中就会出现一个新的用户信息。如图1.1.8-10所示。

图1.1.8-10

④重复上述过程,产生不少于2个注册用户,如图1.1.8-11所示。

图1.1.8-11

(3)在“主窗口”中,点击“数字签名”,进入“数字签名”窗口,如图1.1.8-12所示。

图1.1.8-12

(4)确定签名方。在“签名方基本信息”中的“用户名UID”文本框中输入一个已经注

册的用户名,然后点击“获取私钥”按钮,即得到签名方的一些基本信息,如图

1.1.8-13所示。

图1.1.8-13

注:上图中的“报文序号I”会随着该用户的签名次数而增加,防止重放攻击。

(5)确定验证方。在“验证方公钥”中的“验证方用户名”文本框中输入一个已经注册

的用户名,然后点击“获取公钥”按钮,即得到验证方的一些基本信息,如图1.1.8-14

所示

图1.1.8-14

(6)签名运算

①输入签名消息。在“明文M”文本框中输入要签名的消息,然后点击“确定”按钮,得到该消息摘要,如图1.1.8-15所示。

图1.1.8-15

②签名。点击“签名”按钮,得到该消息的保密签名结果,如图1.1.8-16所示。

图1.1.8-16

注:这个过程比较费时,可能要花费几分钟。

③发送签名。点击“发送签名”按钮,返回“主窗口”,等待验证方验证。

(7)在“主窗口”中,点击“验证签名”,进入“验证签名”窗口,如图1.1.8-17所示。

图1.1.8-17

(8)确定验证方。在“验证方基本信息”中的“用户名UID”文本框中输入一个已经注

册的用户名,点击“获取私钥”按钮,即得到验证方的一些基本信息,如图1.1.8-18

所示。

(9)确定签名方。在“签名方公钥”中的“签名方用户名”文本框中输入一个已经注册

的用户名,点击“获取公钥”按钮,即得到签名方的一些基本信息,如图 1.1.8-19所示。

(10)验证签名。点击“验证”按钮,验证结果将会出现在“验证结果”文本框中,如图

1.1.8-20所示。注:这个过程比较费时,可能要花费几分钟。

(三)算法跟踪

在“算法跟踪”框下点击“获得RSA签名”/“验证RSA签名”按钮,进入调试器,选择对应的算法函数对RSA签名生成和RSA签名验证进行算法跟踪;跟踪完成后会自动返回实验界面显示计算结果;切换回调试器,停止调试,关闭调试器,不保存工程。

具体步骤可参照古典密码实验中实验步骤二。

二、ELGAMAL签名算法

(一)扩展实验

(1)在“RSA-PKCS”标签下的扩展实验中,点击“ELGAMAL扩展实验”按钮,进入

ELGAMAL签名算法扩展实验窗体。

(2)设置签名系统参数。在文本框“大素数p”内输入一个大的十进制素数(不要超过

8位);然后在文本框“本原元a”内输入一个小于p的十进制正整数,点击“测试”,

如图1.1.8-21所示。

图1.1.8-21

注:确保素数p和a的合法性。

(3)注册用户

①在“用户名”文本框中输入一个“注册用户列表”中未出现的用户名,如“alice”,

点击“注册”按钮,如图1.1.8-22所示。

②在“用户注册”窗口中的文本框“私钥x”中输入一个小于素数p的十进制非负整

数,点击“确定”按钮;然后,点击“计算公钥”按钮,系统会为该用户生成一对公私钥;如图1.1.8-23所示。③点击“密钥登记”按钮,主窗口的“注册用户列表”

中就会出现一个新的用户信息。如图1.1.8-24所示。

④重复上述过程,产生不少于2个注册用户,如图1.1.8-25所示。

图1.1.8-25

(4)在“主窗口”中,点击“数字签名”,进入“数字签名”窗口,如图1.1.8-26所示。

图1.1.8-26

(5)确定签名方。在“签名方基本信息”中的“用户名UID”文本框中输入一个已经注

册的用户名,然后点击“获取私钥”按钮,即得到签名方的一些基本信息,如图

1.1.8-27所示。

图1.1.8-27

(6)签名运算

①输入签名消息。在“明文M”文本框中输入一个小于p的十进制非负整数,作为欲签名的消息;在“随机数k”文本框中输入一个小于p的十进制非负整数,作为共享密钥的初始信息;然后点击“确定”按钮,如图1.1.8-28所示。

图1.1.8-28

②签名。点击“签名”按钮,得到该消息的保密签名结果,如图1.1.8-29所示。

图1.1.8-29

注:“验证信息”暂时为空,等验证方验证后,自动填充该消息。

③发送签名。点击“发送签名”按钮,激活验证签名窗口,等待验证方验证。

(7)在“主窗口”中,点击“验证签名”,进入“验证签名”窗口,如图1.1.8-30所示。

图1.1.8-30

(8)确定验证方。在“验证方基本信息”中的“用户名UID”文本框中输入一个已经注

册的用户名,然后点击“获取私钥”按钮,即得到验证方的一些基本信息,如图

1.1.8-31所示。

图1.1.8-31

(9)验证签名。点击“验证”按钮,验证结果将会出现在“验证结果”文本框中,如图

1.1.8-32所示。

图1.1.8-32

(10)点击“发送确认”按钮,将验证结果通知签名方。

三、DSA签名算法

(一)签名及验证计算

(1)选择“DSA”标签,进入DSA签名实验界面。

(2)选择明文格式,输入明文信息。

(3)点击“计算SHA1值”按钮,生成明文信息的散列值,如图1.1.8-33所示。

(4)生成参数及密钥

选择密钥长度,此处以512bit为例,点击“生成G、P、Q”按钮,生成DSA参数;点击“生成密钥”按钮,生成密钥对Y和X;上述过程如图1.1.8-34所示。

图1.1.8-34

(5)签名及验证

点击“获得签名值”按钮,获取明文摘要的签名值r和s,签名结果以十六进制显示于相应的文本框内;点击“验证签名”按钮,对签名结果r和s进行验证,并显示验证结果;

上述过程如图1.1.8-35所示。

图1.1.8-35

(二)算法跟踪

在“算法跟踪”框下点击“生成DSA参数”/“生成DSA密钥”/“获取DSA签名”/“验证DSA签名”按钮,进入调试器,选择对应的算法函数对DSA参数生成、DSA密钥生成、DSA签名生成和DSA签名验证进行算法跟踪;跟踪完成后会自动返回实验界面显示计算结果;切换回调试器,停止调试,关闭调试器,不保存工程。

具体步骤可参照古典密码实验中实验步骤二。

四、ECC签名算法

椭圆曲线具有在有限域GF(p)和GF(2m)上的两种类型,因此ECC签名算法有两种具体形式,此处以GF(p)为例,GF(2m)可参照完成。

(一)签名及验证计算

(1)选择“ECC”标签,进入ECC签名实验界面。

(2)选择明文格式,输入明文信息。

(3)点击“计算SHA1值”按钮,生成明文信息的散列值,如图1.1.8-36所示。

图1.1.8-36

(4)参数及密钥生成

选择“F(p)”标签,在标签下选择椭圆曲线参数和密钥生成的参数,此处以m=112(seed)为例,点击“取得密钥对”,生成椭圆曲线参数和密钥对,如图1.1.8-37所示。

图1.1.8-37

(5)签名及验证

点击“获得签名值”按钮,获取明文摘要的签名值r和s,签名结果以十六进制显示于相应的文本框内;点击“验证签名”按钮,对签名结果r和s进行验证,并显示验证结果;上述过程如图1.1.8-38所示。

图1.1.8-38

(二)扩展实验

(1)设置签名系统参数

①直接点击“测试曲线”按钮,使用系统初始预设的椭圆曲线参数,如图1.1.8-39所示。

图1.1.8-39

②在文本框“素数p”,“常数a”和“常数b”内输入十进制非负整数;点击“测试”,如图1.1.8-40所示。

图1.1.8-40

(2)注册用户

①在“用户名”文本框中输入一个“注册用户列表”中未出现的用户名,如“alice”,点击“注册”按钮,如图1.1.8-41所示。

图1.1.8-41

②在“用户注册”窗口,可以“序号”或“坐标”确定生成元,如图1.1.8-42所示。

图1.1.8-42

③点击选择“序号”,并在相应的文本框内输入一个小于“解点数”的十进制数值,然后点击“生成元测试”按钮,如图1.1.8-43所示。

图1.1.8-43

④点击选择“坐标”,并在相应的文本框内输入右边列表框中出现的一个坐标值,然后点击“生成元测试”按钮,如图1.1.8-44所示。

图1.1.8-44

⑤在文本框“私钥d”内输入一个小于生成元G的阶数的十进制非负整数,然后点击“确定”按钮;然后点击“计算公钥”按钮,得到对应的公钥,如图1.1.8-45所示。

⑥点击“登记密钥”按钮,主窗口的“注册用户列表”中就会出现一个新的用户信息。如图1.1.8-46所示。

⑦重复上述过程,产生不少于2个注册用户,如图1.1.8-47所示。

图1.1.8-47

(3)在“主窗口”中,点击“签名”,进入“签名”窗口,如图1.1.8-48所示。

图1.1.8-48

(4)确定签名方。在“签名用户信息”中的“用户名”文本框中输入一个已经注册的用

户名,然后点击“确认”按钮,即得到签名方的一些基本信息,如图1.1.8-49所示。

图1.1.8-49

(5)签名运算。

①输入签名消息。在“明文M”文本框中输入一个小于n的十进制非负整数,作为欲签名的消息;在“随机数k”文本框中输入一个小于的十进制非负整数,作为共享密钥的初始信息;然后点击“确定”按钮,如图1.1.8-50所示。

图1.1.8-50

②签名。点击“签名”按钮,得到该消息的保密签名结果,如图1.1.8-51所示。

图1.1.8-51

注:“验证信息”暂时为空,等验证方验证后,自动填充该消息。

③发送签名。点击“发送签名”按钮,激活验证签名窗口,等待验证方验证。

(6)在“主窗口”中,点击“验证签名”,进入“验证签名”窗口,如图1.1.8-52所示。

图1.1.8-52

(7)确定验证方。在“验证方基本信息”中的“用户名UID”文本框中输入一个已经注

册的用户名,点击“获取私钥”按钮,即得到验证方的一些基本信息,如图1.1.8-53

所示。

图1.1.8-53

(8)验证签名。点击“验证”按钮,验证结果将会出现在“验证结果”文本框中,如图

1.1.8-54所示。

图1.1.8-54

(9)点击“发送确认”按钮,将验证结果通知签名方。

(三)算法跟踪

在“算法跟踪”框下点击“取得ECC密钥”/“获得ECC签名”/“验证ECC签名”按钮,进入调试器,选择对应的算法函数对ECC密钥生成、ECC签名生成、ECC签名验证进行算法跟踪;跟踪完成后会自动返回实验界面显示计算结果;切换回调试器,停止调试,关

闭调试器,不保存工程。

具体步骤可参照古典密码实验中实验步骤二。

C++上机实验报告实验三

实验三类与对象 1.实验目的 1.掌握类的定义和使用 2.掌握类的定义和对象的声明 3.复习具有不同访问属性的成员的访问方式 4.观察构造函数和析构函数的执行过程 5.学习类的组合使用方法 6.使用VC++的debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。 2.实验要求 1.定义一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU_Rank,定义为enum CPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为浮点型的电压值。观察构造函数和析构函数的调用顺序。 2.定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom 为CDROM类的一个对象,定义并实现这个类。 3. (选做)设计一个用于人事管理的People(人员)类。考虑到通用性这里只抽象出所有类型人员都具有的属性:number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等等。其中“出生日期”定义为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、组合。 3.实验内容 1.首先定义枚举类型CPU_Rank,例如enum CPU_Rank{P1=1, P2, P3, P4, P5, P6, P7},再定义CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,定义成员函数run、stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示信息。在主程序中定义一个CPU的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。程序名: 2.使用debug调试功能观察程序的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。 3.调试操作步骤如下: 1)单击Build | Start Debug | Step Into命令,或按下快捷键F11,系统进入单步执行状态,程序开始运行,一个DOS窗口出现,此时Visual Studio 中光标停在main()函数的入口处; 2)从Debug菜单或Debug工具栏中单击Step Over,此时,光标下移,程序准备执行CPU 对象的初始化; 3)单击Step Into,程序准备执行CPU类的构造函数; 4)连续单击Step Over,观察构造函数; 5)此时程序准备执行CPU对象的run()函数,单击Step Into,程序进入run()成员函数,连续单击Step Over,直到回到main()函数。 6)继续执行程序,参照上述的方法,观察程序的执行顺序,加深对类的构造函数、析构函数、成员函数的执行顺序的认识。 7)再试试Debug菜单栏中别的菜单项,熟悉Debug的各种方法。 4.首先定义CPU类(可使用第二题中的CPU类)、RAM类、CDROM类。再定义Computer类;

单片机第一次实验报告

单片机第一次实验报告 姓名: 学号: 班级:

实验报告 课程名称:微机原理与接口技术指导老师:学生姓名:学号:专业:自动化日期:20140327 地点: 实验一实验名称 1. 实验目的和要求 1.掌握keil软件和STC-ISP 软件的使用方法 2.点亮第一个发光管. 3.点亮1,3,5,7发光管 4.尝试让第一个发光管闪烁. 2. 主要仪器设备 1.一台pc机 2.一个单片机开发板 点亮第一个发光管. #include void main () { P1 &=0xFE; while(1) } 点亮1,3,5,7发光管 void main () { P1 &=0xAA;

while(1) } 尝试让第一个发光管闪烁. #include #define uint unsigned int #define uchar unsigned char void delay_ms(uint timer) { uchar j = 0; while(timer--) { for(j = 124;j>0;j--) { ; } } } void main (void) { while(1) { P1 &=0xFE; delay_ms(100); P1 |=0x01; delay_ms(100); } }

实验心得:这第一次试验,没准备,所以这次实验一上机啥都不会,也不知道该做啥,在同学的帮助下安装了程序和驱动,代码也是问同学才明白的。第一个代码,通过很顺利,但是测试第二个代码的时候电脑无法连接板子,后来重新安装了驱动才就能连接了。虽然感觉还是好多不懂的,不过还是学到了一些东西,有一点成就感。

实验2 数据加密与数字签名

实验2 数据加密与与数字签名 一、实验目的与要求 体验各种密码体制的数据安全操作与数据安全软件以及了解我国的电子商务法律,并思考应如何做好电子商务的安全防范。 二、实验内容 1.运行C语言编程的加密程序。 2.PGP软件的下载与使用(对邮件以及文件加密)或Openssl软件。 3.非密码的安全技术。 4.各国发展电子商务的政策和制定的电子商务法律。 5.我国第一部电子签名法的内容与实施 三、实验软件 Windows XP ,IE 7 ,PGP软件,Openssl软件 四、实验步骤 (一)数据安全软件的使用 1.下载PGP与安装PGP(见附录) 2.利用PGP对邮件或磁盘文件进行加密 3.或者利用Openssl做如下操作:(用对称加密法对文件进行加密与解密) (1)生成源文件。用记事本创建一个文本文件,文件名为学号 (026h231f.txt),内容为学生的名字与学号,保存在c:\openssl\out32dll 的文件夹下。 (2)对源文件进行对称加密。输入命令:“openssl enc-des3-in 026h231f.txt-out out026h231f.des”回车后,在加密过程中系统会提示输入保护密码,输入密码后,再次确认(输入密码时屏幕无任何显示),系统在c:\openssl\out32dll目录下自动生成一个des3算法加密后的 out026h231f.des文件。 (3)查看加密的文件。输入命令:“type out026h23lf.des”,查看加密后的out026h231f.des文件的内容。

(4)对加密文件进行解密。输入命令“openssl enc-des3-d-in out026h231f.des -out new026h231f.txt”,并根据提示输入解密密码,对“outmane.txt”文件内容进行解码。 (5)比较解密后文件和源文件,输入命令“type new026h23lf.txt”,查看解密后的文件内容,判断是否与源文件026h23lf.txt的内容一致。(二)验证恺撒密码 1、请输入如下程序: #include main() { char c; while((c=getchar())!=’\n’) { if((c>=’a’&&c<=’z’)||(c>=’A’&&c<=’Z’)) { c=c+3; if(c>’z’&&c<=’z’+3||c>’Z’&&c<’Z’+3) c=c-26; } printf(“%c”,c);}} 2、验证是否是素数?的C语言程序 #include Main() { Int m,I,k; Scanf(“%d,&m”); K=aqrt(m); For(i=2;i<=k;i++) If(m%i==0)break;

北京理工大学汇编实验报告3

北京理工大学汇编实验报告3

本科实验报告实验名称:实验三字符串操作实验 课程名称: 课程设计Ⅰ(CPU与汇编)(实 验)实验时间: 第5-10周周五 下午 任课教师:聂青实验地点:10-102 实验教师:苏京霞 实验类型:?原理验证□综合设计□自主创新 学生姓名:罗逸雨 学号/班级:1120141208 05211401 组号:3 学院:信息与电子学院同组搭档: 专业:通信工程成绩:

CX 中值减 1,当 CX 中值减至 0 时,停止重复执行,继续执行下一条指令。当REP无条件重复前缀,重复串操作直到计数寄存器的内容 CX 为0为止。经常与REP 配合工作的字符串处理指令有MOVS、STOS和LODS。 当REPE/REPZ判断计数寄存器的内容 CX 是否为0或ZF=0(即比较的两个操作数不等),只要满足一个则重复执行结束,否则继续执行。可以与 REPE/REPZ 配合工作的串指令有CMPS和SCAS。 当REPNE/REPNZ判断计数寄存器的内容是否为0或ZF=1(即比较的两个操作数相等),只要满足一个则重复执行结束,否则继续执行。可以与 REPE/REPZ 配合工作的串指令有CMPS和SCAS。 3)字符串操作指令 lodsb、lodsw:把DS:SI指向的存储单元中的数据装入AL或AX,然后根据 DF 标志增减 SI; stosb、stosw:把AL或AX中的数据装入ES:DI指向的存储单元,然后根据 DF 标志增减 DI; movsb、movsw:把 DS:SI 指向的存储单元中的数据装入ES:DI指向的存储单元中,然后根据 DF标志分别增减SI和DI; scasb、scasw:把AL或AX 中的数据与ES:DI 指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI; cmpsb、cmpsw:把DS:SI 指向的存储单元中的数据与 ES:DI 指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI; rep:重复其后的串操作指令。重复前先判断 CX 是否为0,为0就结束重复,否则CX减1,重复其后的串操作指令。主要用在MOVS和STOS前。一般不用在 LODS 前。 上述指令涉及的寄存器:段寄存器DS和ES、变址寄存器SI和DI、累加器 AX、计数器CX。 涉及的标志位:DF、AF、CF、OF、PF、SF、ZF。 三、实验步骤 1) 编写程序,比较两个字符串BUF1和BUF2所含的字符是否相同,相同则AL 返回0,不同AL返回1,字符串长度要求自动获取,要求用字符串处理方法。提示:输入两个字符串之后,将串操作所必须的寄存器等参数设置好,然后使用串操作指令进行从头到尾的比较,两个字符串相等的条件是串长度相等且对应的字符相同。 2) 编写程序,设有一字符串存放在以BUF为首址的数据区中,其最后一字符‘$’作为结束标志,计算该字符串的长度并输出。提示:从串的第一个字符开始统计,直到遇到定义的字符串结束符为止,看看在这个过程中总共有多少个字符,

计算机组成原理上机实验报告

《计算机组成原理实验》课程 实验报告 实验题目组成原理上机实验 班级1237-小______________ 姓名______________________________ 学号______________________________ 时间2014年5月________ 成绩______________________________

实验一基本运算器实验 1.实验目的 (1 )了解运算器的组成原理 (2 )掌握运算器的工作原理 2?实验内容 进行逻辑、移位、算术运算将运算结果填入表。 输入数据,根据运算器逻辑功能表 表运算结果表

3.实验原理 本实验的原理如图1-1所示。 运算器内部含有三个独立运算部件,分别为算术、逻辑和移位运算部件,要处理的数据存于暂存器A和暂存器B,三个部件同时接受来自A和B的数据(有些处理器体系结构把移位运算器放于算术和逻辑运算部件之前,如ARM),各部件对操作数进行何种运算由控制信号S3-S0和CN来 决定,任何时候,多路选择开关只选择三部件中一个部件的结果作为ALU的输出。如果是影响进位 的运算,还将置进位标志FC,在运算结果输出前,置ALU零标志。ALU中所有模块集成在一片CPLD 中。 图1-1运算器原理图 逻辑运算部件由逻辑门构成,较为简单,而后面又有专门的算术运算部件设计实验,在此对这两个部件不再赘述。移位运算采用的是桶形移位器,一般采用交叉开关矩阵来实现,交叉开关的原理如图1-2所示。 图1-2中显示的是一个4X4的矩阵(系统中是一个8X8的矩阵)。每一个输入都通过开关与一个输出相连,把沿对角线的开关导通,就可实现移位功能,即: (1)对于逻辑左移或逻辑右移功能,将一条对角线的开关导通,这将所有的输入位与所使用的输 出分别相连,而没有同任何输入相连的则输出连接0。 (2)对于循环右移功能,右移对角线同互补的左移对角线一起激活。例如,在4位矩阵中使用 '右1'和‘左3'对角线来实现右循环1位。 (3)对于未连接的输出位,移位时使用符号扩展或是0填充,具体由相应的指令控制。使用另 外的逻辑进行移位总量译码和符号判别。 运算器部件由一片CPLD实现。ALU的输入和输出通过三态门74LS245连到CPU内总线上,另外还有指示灯标明进位标志FC和零标志FZ。请注意:实验箱上凡丝印标注有马蹄形标记 ‘’,表示这两根排针之间是连通的。图中除T4和CLR,其余信号均来自于ALU单元的排线 座,实验箱中所有单元的T1、T2、T3、T4都连接至控制总线单元的T1、T2、T3、T4, CLR都连接至CON单元的CLR按钮。T4由时序单元的TS4提供(时序单元的介绍见附录二),其余控制信号均由CON单元的二进制数据开关模拟给出。控制信号中除T4为脉冲信号外,其余均为电平信号, 其中ALU_B为低有效,其余为高有效。 暂存器A和暂存器B的数据能在LED灯上实时显示,原理如图1-3所示(以A0为例,其

《MATLAB与数值分析》第一次上机实验报告

电子科技大学电子工程学院标准实验报告(实验)课程名称MATLAB与数值分析 学生姓名:李培睿 学号:2013020904026 指导教师:程建

一、实验名称 《MATLAB与数值分析》第一次上机实验 二、实验目的 1. 熟练掌握矩阵的生成、加、减、乘、除、转置、行列式、逆、范数等运算 操作。(用.m文件和Matlab函数编写一个对给定矩阵进行运算操作的程序) 2. 熟练掌握算术符号操作和基本运算操作,包括矩阵合并、向量合并、符号 转换、展开符号表达式、符号因式分解、符号表达式的化简、代数方程的符号解析解、特征多项式、函数的反函数、函数计算器、微积分、常微分方程的符号解、符号函数的画图等。(用.m文件编写进行符号因式分解和函数求反的程序) 3. 掌握Matlab函数的编写规范。 4、掌握Matlab常用的绘图处理操作,包括:基本平面图、图形注释命令、 三维曲线和面的填充、三维等高线等。(用.m文件编写在一个图形窗口上绘制正弦和余弦函数的图形,并给出充分的图形注释) 5. 熟练操作MATLAB软件平台,能利用M文件完成MATLAB的程序设计。 三、实验内容 1. 编程实现以下数列的图像,用户能输入不同的初始值以及系数。并以x, y为坐标显示图像 x(n+1) = a*x(n)-b*(y(n)-x(n)^2); y(n+1) = b*x(n)+a*(y(n)-x(n)^2) 2. 编程实现奥运5环图,允许用户输入环的直径。 3. 实现对输入任意长度向量元素的冒泡排序的升序排列。不允许使用sort 函数。 四、实验数据及结果分析 题目一: ①在Editor窗口编写函数代码如下:

密码学实验-实验6 DSA数字签名算法

实验报告 一、实验目的 理解DSA算法原理 二、实验内容与设计思想 数字签名是一种以电子形式给消息签名的方法,是只有信息发送方才能进行的签名、信息发送方进行签名后将产生一段任何人都无法伪造的字符串,这段特殊的字符串同时也是对签名真实性的一种证明。电子信息在传输过程中,通过数字签名达到与传统手写签名相同的效果。 数字签名的实现原理简单地说,就是发送方利用hash算法对要传送的信息计算得到一个固定长度的消息摘要值,用发送方的私钥加密此消息的hash值所生成的密文即数字签名;然后将数字签名和消息一同发送给接收方。接收方收到消息和数字签名后,用同样的hash算法对消息进行计算,得到新的hash值,再用发送方的公钥对数字签名解密,将解密后的结果与新的hash值比较,如果相等则说明消息确实来自发送方。 DSA(Digital Signature Algorithm)源于ElGamal和Schnorr签名算法,1991年被美国NIST采纳为数字签名标准DSS(Digital Signature Standard),具体实现过程参见图1。 DSS安全性基于有限域求离散对数的困难性,算法描述如下: 1.密钥生成算法 1)选取160比特长的素数q和L比特长的素数p,满足q|(p?1),其中L≡0(mod 64)且 512≤L≤1024; 2)随机选取正整数h,11;q,p和g作为系统公开参数; 3)每个用户,随机选取正整数x,1≤x≤q?1,计算y=g x mod p;用户的公钥为y,私 钥为x。 2.签名算法 对于消息M,首先随机选取整数k,1≤k≤p?2,计算 r=(g k mod p) mod q s=(H(M)+xr)k?1mod q 则M的签名为(r,s),其中H为Hash函数SHA。 3.验证算法 接收方收到消息M′和签名(r′,s′)后,计算 e1=H(M′)s′?1mod q e2=r′s′?1mod q 验证等式 (g e1y e2mod p) mod q 如果v=r′成立,则说明消息确实来自发送方。

汇编实验报告(详细版)

计算机组成与汇编语言(实验报告) 内容: 实验一、六、七、八 院系专业:计算机学院计算机科学与技术 姓名:xxxxxxxxx 学号: 2011004xxxxx 完成时间:2012年12月1日

计算机组成与汇编语言实验报告 姓名xxxx 学号2011004xxxxx 计分 专业软件工程班级xxxx 实验日期2012年 12 月 1日实验名称实验一数制转换 实验目的 ●熟悉各种进制数据之间的相互转换方法。 ●掌握二-十进制数据的相互转换程序设计。 实验内容 1.将编写好的程序1输入、编译、连接并运行。 程序1清单 #include #include #include void main() { int i,l,s0=0,s=0; char a[17]; while(l!=16) { printf("请输入一个16位的二进制数:\n"); gets(a); l=strlen(a); for(i=0;i<16;i++) { if(a[i]!='0'&&a[i]!='1') {

printf("输入的二进制数不正确!!"); break; } } } if(a[15]=='1') s++; for(i=1;i<16;i++) { if(a[15-i]=='1') s+=(1<

说明:如果不是16位二进制则会提示错误。 2.将编写好的程序2输入、编译、连接并运行。 程序2清单 #include #include void main() { int t0,t1,t2,t3,i,j; int a[16]; printf("请输入一个十进制数:"); scanf("%d",&t0); t1=t0; for(i=0;i<16;i++) { t2=t1/2; if(t2>1) a[i]=t1%2; else if(t1==1) { a[0]=1; for(i=1;i<16;i++) a[i]=0; } else if(t1==2) { a[i]=0; a[i+1]=1; for(j=i+2;j<16;j++)

模式识别第二次上机实验报告

北京科技大学计算机与通信工程学院 模式分类第二次上机实验报告 姓名:XXXXXX 学号:00000000 班级:电信11 时间:2014-04-16

一、实验目的 1.掌握支持向量机(SVM)的原理、核函数类型选择以及核参数选择原则等; 二、实验内容 2.准备好数据,首先要把数据转换成Libsvm软件包要求的数据格式为: label index1:value1 index2:value2 ... 其中对于分类来说label为类标识,指定数据的种类;对于回归来说label为目标值。(我主要要用到回归) Index是从1开始的自然数,value是每一维的特征值。 该过程可以自己使用excel或者编写程序来完成,也可以使用网络上的FormatDataLibsvm.xls来完成。FormatDataLibsvm.xls使用说明: 先将数据按照下列格式存放(注意label放最后面): value1 value2 label value1 value2 label 然后将以上数据粘贴到FormatDataLibsvm.xls中的最左上角单元格,接着工具->宏执行行FormatDataToLibsvm宏。就可以得到libsvm要求的数据格式。将该数据存放到文本文件中进行下一步的处理。 3.对数据进行归一化。 该过程要用到libsvm软件包中的svm-scale.exe Svm-scale用法: 用法:svmscale [-l lower] [-u upper] [-y y_lower y_upper] [-s save_filename] [-r restore_filename] filename (缺省值:lower = -1,upper = 1,没有对y进行缩放)其中,-l:数据下限标记;lower:缩放后数据下限;-u:数据上限标记;upper:缩放后数据上限;-y:是否对目标值同时进行缩放;y_lower为下限值,y_upper为上限值;(回归需要对目标进行缩放,因此该参数可以设定为–y -1 1 )-s save_filename:表示将缩放的规则保存为文件save_filename;-r restore_filename:表示将缩放规则文件restore_filename载入后按此缩放;filename:待缩放的数据文件(要求满足前面所述的格式)。缩放规则文件可以用文本浏览器打开,看到其格式为: y lower upper min max x lower upper index1 min1 max1 index2 min2 max2 其中的lower 与upper 与使用时所设置的lower 与upper 含义相同;index 表示特征序号;min 转换前该特征的最小值;max 转换前该特征的最大值。数据集的缩放结果在此情况下通过DOS窗口输出,当然也可以通过DOS的文件重定向符号“>”将结果另存为指定的文件。该文件中的参数可用于最后面对目标值的反归一化。反归一化的公式为: (Value-lower)*(max-min)/(upper - lower)+lower 其中value为归一化后的值,其他参数与前面介绍的相同。 建议将训练数据集与测试数据集放在同一个文本文件中一起归一化,然后再将归一化结果分成训练集和测试集。 4.训练数据,生成模型。 用法:svmtrain [options] training_set_file [model_file] 其中,options(操作参数):可用的选项即表示的涵义如下所示-s svm类型:设置SVM 类型,默

matlab第一次实验报告

Matlab第一次实验报告 2012029010010 尹康 1. 编程实现以下数列的图像,用户能输入不同的初始值以及系数。并以x,y为坐标显示图像 x(n+1) = a*x(n)-b*(y(n)-x(n)^2); y(n+1) = b*x(n)+a*(y(n)-x(n)^2) 程序代码: n=input('input the number of pionts:'); a=input('input a:'); b=input('input b:'); x=[]; y=[]; x(1)=input('input x1:'); y(1)=input('input y1:'); %输入点数、初始值以及系数for i=2:n x(i)=a*x(i-1)-b*(y(i-1)-x(i-1)^2); y(i)=a*x(i-1)+b*(y(i-1)-x(i-1)^2); %根据已输入的数据进行迭代end figure;plot(x,y,'linewidth',2) axis equal %横纵坐标等比例 text(x(1),y(1),'1st point') %标记初始点 运行结果:

心得体会及改进:在输入某些数据时,所绘曲线可能是一条折线(如:n=5,a=b=x1=1,y1=2)甚至只有一个点(如:n=5,a=b=x1=y1=1),此时可能出现曲线与坐标轴重合或无法看到点的情况,为了更清晰地展现曲线,可以使线宽适当加宽并标记初始点。 2.编程实现奥运5环图,允许用户输入环的直径。 程序代码: 函数circle: %在指定的圆心坐标处,用指定颜色、宽度的线条绘出指定半径、圆心角的弧 function f=circle(r,x,y,color,linw,alp1,alp2) alp=linspace(alp1,alp2); X=r*cos(alp)+x; Y=r*sin(alp)+y; plot(X,Y,color,'linewidth',linw) end 主程序代码: r=input('input r:');

电子商务安全 数字签名实验报告

实验二数字签名 一实验目的 了解数字签名的原理,掌握数字签名的方法,掌握常用的数字签名技术,理解并掌握非对称加密算法的使用。 二实验内容 1 散列函数: 2 数字签名: 3 非对称加密算法的使用 三实验步骤 1 散列函数 (1)任意选择一个文件,分别使用MD5和SHA进行信息摘要实验,比较两种散列算法得到的结果。注意:这里要完成2种情况的实验。 (2)将文件中的内容进行分别进行不同的修改操作:增加、删除、修改,然后再使用两种散列算法进行信息摘要实验,比较两种算法在不同修改操作得到的结果,并进行分析。注意,这里要完成6种实验过程。

经过对内容的修改(即使是很小的改动例如一个标点符号),同种算法中得出的结果完全不相同,由此可见散列算法具有唯一性,从而保证了信息传输的安全性。而且摘要长度大小是一样的,这说明散列算法有定长性。 (3)字符串散列实验:使用自己的姓名和学号当作实验字符串,使用不同的散列算法获得信息摘要,并 2 数字签名实验 (1)选择一个文件,然后生成信息摘要。 (2)使用RAS算法进行数字签名。注意自己的私钥和公钥的保存。 (3)将原始文件和签名得到的文件传递给相邻同学,让其验证你的签名。注意,应告诉对方你的公钥, 四实验总结

2 总结信息摘要的特点,分析比较原始文件和信息摘要的关系。 (1)对于任何大小的数据,单向散列函数产生定长的信息摘要——定长性; (2)对任何不同的信息,通过单项散列函数产生的指纹都不同——唯一性; (3)已知信息摘要,不能通过推理或计算得到相应的数据——单向性。 信息摘要是根据原始文件通过单项散列函数得到的,并且原始文件一经改变,其信息摘要也会改变;而且无法从信息摘要产生相应的文件信息,这是由其单向性决定的。也就是说原始文件是信息摘要的基础,而信息摘要无法推断出原始文件,并且原始文件的改变也会改变信息摘要。 3 查找资料,掌握数字签名的原理和过程,画出数字签名的过程。 数字签名使用的是发送方的密钥对,发送方用自己的私有密钥进行加密,授受方用发送方的公开密钥进行解密。这是一对多的关系:任何拥有发送方公开密钥的人都可以验证数字签名的正确性。在实际过程中,通常一个用户拥有两个密钥对,一个密钥对用来对数字签名进行加密解密,一个密钥对用来对私有密钥进行加密解密。下面介绍利用散列函数进行数字签名和验证的文件传输过程: (1)被发送文件用SHA编码加密产生128bit的数字摘要。 (2)发送方用自己的私用密钥对摘要再加密,这就形成了数字签名。 (3)将原文和加密的摘要同时传给对方。 (4)对方用发送方的公共密钥对摘要解密,同时对收到的文件用SHA编码加密产生又一摘要。 (5)将解密后的摘要和收到的文件在接收方重新加密产生的摘要相互对比。如两者一致,则说明传送过程中信息没有被破坏或篡改过。否则不然。 数字签名的过程如下图:

汇编实验报告

XXXX大学 实验报告 课程名称汇编语言程序设计成 绩 实验学时 评语: 指导教师: 年月日 班级: 学号: 姓名: 地点: 时间:

实验一汇编语言编程实验 一、实验目的 (1)掌握汇编语言的编程方法 (2)掌握DOS功能调用的使用方法 (3)掌握汇编语言程序的调试运行过程 二、实验内容 1. 将指定数据区的字符串数据以ASCII码形式显示在屏幕上,并通过DOS功能调用完 成必要提示信息的显示。 2. 在屏幕上显示自己的学号姓名信息。 3. 循环从键盘读入字符并回显在屏幕上,然后显示出对应字符的ASCII码,直到输 入”Q”或“q”时结束。 4. 实验中使用的DOS功能调用: INT 21H AH 值功能调用参数结果 1 键盘输入并回显AL=输出字符 2 显示单个字符(带Ctrl+Break检查) DL=输出字符光标在字符后面 6 显示单个字符(无Ctrl+Break检查) DL=输出字符光标在字符后面 8 从键盘上读一个字符AL=字符的ASCII码 光标跟在串后面 9 显示字符串DS:DX=串地址, ‘$’为结束字符 4CH 返回DOS系统AL=返回码 例如,实现键盘输入并回显的完整代码: MOV AH 01H INT 21H 三、实验结果 1. 将指定数据区的字符串数据”Let us go !”以ASCII码形式显示在屏幕上,并通过 DOS功能调用完成必要提示信息的显示: 2. 在屏幕上显示自己的学号姓名信息 3.循环从键盘读入字符并回显在屏幕上,然后显示出对应字符的ASCII码,直到输 入”Q”或“q”时结束。

四、实验原理 DATA SEGMENT MES DB 'NUMBER: 03099018 ',0AH,0DH,'NAME: Feng Xiaokang',0AH,0DH,'$' CENT DB 'Let us go !','$' ENTE DB 0AH,0DH,'$' INFO DB 'Origin: ','$' ASCI DB 'ASCII : ','$' MSG1 DB 'If you want to quit please press...q/Q...',0AH,0DH,'$' MSG2 DB 0AH,0DH,'Char: $' RS DB ' ASCII: $' SD DB '' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ;存储数据 MOV DS,AX MOV DX,OFFSET MES ;显示数据 MOV AH,09H INT 21H MOV DX,OFFSET MSG1 MOV AH,09H INT 21H MOV DX, OFFSET CENT MOV SI, DX T: MOV AL,[SI] CMP AL,'$' JZ C1 AND AL,0F0H ;取高4位 MOV CL,4 SHR AL,CL CMP AL,0AH ;是否是A以上的数 JB A ADD AL,07H A: ADD AL,30H MOV DL,AL ;show character MOV AH,02H INT 21H

计算机组成原理上机实验报告

《计算机组成原理实验》课程实验报告 实验题目组成原理上机实验 班级 1237-小 姓名 学号 时间 2014年5月 成绩

实验一基本运算器实验 1.实验目的 (1)了解运算器的组成原理 (2)掌握运算器的工作原理 2.实验内容 输入数据,根据运算器逻辑功能表1-1进行逻辑、移位、算术运算,将运算结果填入表1-2。 表 1-1运算器逻辑功能表 表1-2运算结果表

3.实验原理 本实验的原理如图1-1所示。 运算器内部含有三个独立运算部件,分别为算术、逻辑和移位运算部件,要处理的数据存于暂存器 A 和暂存器 B,三个部件同时接受来自 A 和 B 的数据(有些处理器体系结构把移位运算器放于算术和逻辑运算部件之前,如 ARM),各部件对操作数进行何种运算由控制信号S3…S0和 CN 来决定,任何时候,多路选择开关只选择三部件中一个部件的结果作为 ALU 的输出。如果是影响进位的运算,还将置进位标志 FC,在运算结果输出前,置 ALU 零标志。ALU 中所有模块集成在一片 CPLD 中。 图 1-1 运算器原理图 逻辑运算部件由逻辑门构成,较为简单,而后面又有专门的算术运算部件设计实验,在此对这两个部件不再赘述。移位运算采用的是桶形移位器,一般采用交叉开关矩阵来实现,交叉开关的原理如图1-2所示。 图1-2中显示的是一个 4X4 的矩阵(系统中是一个 8X8 的矩阵)。每一个输入都通过开关与一个输出相连,把沿对角线的开关导通,就可实现移位功能,即: (1)对于逻辑左移或逻辑右移功能,将一条对角线的开关导通,这将所有的输入位与所使用的输出分别相连,而没有同任何输入相连的则输出连接 0。 (2)对于循环右移功能,右移对角线同互补的左移对角线一起激活。例如,在 4 位矩阵中使用‘右1’和‘左3’对角线来实现右循环 1 位。 (3)对于未连接的输出位,移位时使用符号扩展或是 0 填充,具体由相应的指令控制。使用另外的逻辑进行移位总量译码和符号判别。 运算器部件由一片 CPLD 实现。ALU 的输入和输出通过三态门 74LS245 连到 CPU 内总线上,另外还有指示灯标明进位标志 FC 和零标志 FZ。请注意:实验箱上凡丝印标注有马蹄形标记‘’,表示这两根排针之间是连通的。图中除 T4 和 CLR,其余信号均来自于 ALU 单元的排线座,实验箱中所有单元的 T1、T2、T3、T4 都连接至控制总线单元的 T1、T2、T3、T4,CLR 都连接至 CON 单元的 CLR 按钮。T4 由时序单元的 TS4 提供(时序单元的介绍见附录二),其余控制信号均由 CON 单元的二进制数据开关模拟给出。控制信号中除 T4 为脉冲信号外,其余均为电平信号,其中 ALU_B 为低有效,其余为高有效。 暂存器 A 和暂存器 B 的数据能在 LED 灯上实时显示,原理如图1-3 所示(以 A0 为例,其

并行计算第一次实验报告

并行计算上机实验报告题目:多线程计算Pi值 学生姓名 学院名称计算机学院 专业计算机科学与技术时间

一. 实验目的 1、掌握集群任务提交方式; 2、掌握多线程编程。 二.实验内容 1、通过下图中的近似公式,使用多线程编程实现pi的计算; 2、通过控制变量N的数值以及线程的数量,观察程序的执行效率。 三.实现方法 1. 下载配置SSH客户端 2. 用多线程编写pi代码 3. 通过文件传输界面,将文件上传到集群上 4.将命令行目录切换至data,对.c文件进行编译 5.编写PBS脚本,提交作业 6.实验代码如下: #include

#include #include #include #include #include static double PI=0; static int N=0; static int numOfThread=0; static int length=0; static int timeUsed=0; static int numOfThreadArray[]={1,2,4,6,8,10,12,14,16,20,24,30}; static int threadArraySize=12; static int nTime=4; static int repeatTime=30; static double totalTime=0; struct timeval tvpre, tvafter; pthread_mutex_t mut; clockid_t startTime,endTime;

发送数字签名和加密邮件 实验报告

一、实验目的 ●了解什么是数字签名与加密 ●掌握用Outlook Express发送签名邮件的方法 ●掌握用Outlook Express 发送加密邮件的方法。 二、实验环境 ●实验室所有机器安装了Windows 操作系统,并附带Outlook Express。 三、实验内容和步骤 1、设置Outlook Express收发QQ邮件 (1)打开OUTLOOK EXSPRESS方法为开始/所有程序/OUTLOOK EXPRESS; (2)申请帐号方法:OUTLOOK EXSPRESS的工具/帐号/添加/邮件/输入显示名/输入你的QQ邮箱地址/设置电子邮件服务器名 https://www.doczj.com/doc/4d17441514.html, https://www.doczj.com/doc/4d17441514.html,/输入电子邮件的帐号名称和密码/下一步/完成 2、申请免费数字证书

查看证书: 3、在Outlook Express 设置数字证书 (1)在Outlook Express 中,单击“工具”菜单中的“帐号”(2)选取“邮件”选项卡中用于发送安全邮件的邮件帐号,然后单击“属性”。

(3)选取安全选项卡中的签名标识复选框,然后单击选择按健 (4)在弹出的“选择默认帐户数字标识”窗口中,选择要使用的数字证书,就选择你刚才申请的个人电子邮件保护证书 (5)点击“确定”按钮,完成证书设置。至此,你可以发送带数字签名的邮件。 4、发送签名邮件 发送邮件时从“工具”菜单中选择“签名”,收件人地址栏后面出现“签名”标志。

本次实验我给邮箱为16018733139@https://www.doczj.com/doc/4d17441514.html, 发送一个签名邮件。 发送成功: 5、发送加密邮件 发送加密邮件前必须正确安装了对方的“电子邮件保护证书”,只要请对方用他的“电子邮件保护证书”给你发送一个签名邮件,证书会自动安装,并与对方Email地址绑定,否则就要手工安装对方“电子邮件保护证书”。 (1)从Outlook Express“工具”菜单中选择“选项”。 (2)鼠标单击“数字标识”按钮。

汇编实验报告..

合肥工业大学计算机与信息学院 实验报告 课程:汇编语言程序设计专业班级: 学号: 姓名:

实验一Debug程序的使用 一.实验目的 1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。 2、掌握8086/8088的寻址方式及多字节数据的处理方法。 二.实验内容 1、利用DEBUG程序中的“E”命令,将两个多字节数“003F1AE7H”和“006BE5C4H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。 2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H 单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。要求: 本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。 三.实验过程和程序 1、启动DOS操作系统 2、运行https://www.doczj.com/doc/4d17441514.html,程序(若当前盘为C) C:>DEBUG↙ – ;(“–”为DEBUG提示符,仅当屏幕出现该提示符后,才可输入DEBUG命令) 3、用“A”命令编辑和汇编源程序 –A ↙ 186E:0100 MOV AX,[0200]↙ 186E:0103 MOV BX,[0202]↙ 186E:0107 ADD AX,[0204]↙ 186E:010B ADC BX,[0206]↙ 186E:010F MOV [0208],AX↙ 186E:0112 MOV [020A],BX↙ 186E:0116 ↙ 4、用“U”命令反汇编验证源程序 –U CS:0100↙ 186E:0100 A10002 MOV AX,[0200] 186E:0103 8B1E0202 MOV BX,[0202] 186E:0107 03060402 ADD AX,[0204] 186E:010B 131E0602 ADC BX,[0206] 186E:010F A30802 MOV [0208],AX 186E:0112 891E0A02 MOV [020A],BX 186E:0116 – 注意:

西电微机原理第二次上机实验报告

西电微机原理第二次上机实验报告 学号:姓名: 一、实验目的 1.熟练掌握汇编语言程序设计的方法及上机步骤。 2.掌握算术运算中,十进制数调整指令的应用。 3.掌握子程序的设计方法。 4.掌握DOS功能的调用方法。 二、实验仪器 586微机 1台 三、实验内容 编写求十进制数12678532与21736543之和的程序,并将和以十进制数的形式送屏幕显示。 编程要求与提示: [1] 两个加数均以压缩(组合)十进制数形式存放在ADD1和ADD2为首址的存贮器单元。 [2] 和以压缩十进制数的形式存入SUM以下单元。 [3] 将和送到屏幕显示部分功能的实现采用子程序的形式。 [4] 实验步骤如下: a. 用全屏幕编辑软件建立源程序。 b.用masm.exe汇编程序对源程序进行汇编,形成目标程序。 c. 用link.exe连接程序对目标程序进行连接形成可执行文件。 d. 用DEBUG对连接通过的可执行程序进行调试。 四、实验内容对应的源程序及流程 源程序如下: STACK SEGMENT STACK DB 10H DUP(00) STACK ENDS DATA SEGMENT ADD1 DB 12H,67H,85H,32H ADD2 DB 21H,73H,65H,43H SUM DB 4H DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START:

MOV AX, DATA MOV DS, AX MOV AX, DATA MOV ES, AX MOV AX,STACK MOV SS,AX LEA SI, ADD1[3] LEA BX, ADD2[3] LEA DI,SUM[3] MOV CX,4 CLC L1: MOV AL,[SI] ADC AL,[BX] DAA MOV [DI],AL DEC SI DEC BX DEC DI LOOP L1 CALL DISPAL ; ------------EXITPROC: MOV AH,4CH ;结束程序 MOV AH,1 INT 21H ; ------------DISPAL PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI LEA DI,SUM MOV CX,4 DISPAL2: MOV AL,[DI] SHR AL,1 SHR AL,1 SHR AL,1 SHR AL,1 MOV AH,2 MOV DL,AL ADD DL,30H

相关主题
文本预览
相关文档 最新文档