




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中南大学 汇 编实 验 报 告 实验一 求Fibonacci递归数一、实验目的 进一步掌握子程序的设计方法,熟悉递归程序的设计二、实验要求 掌握递归程序的调用、返回及入口、出口参数的传递方法。三、实验内容 程序接收由用户键入的数N,根据给定的N值,计算Fibonacci数。 Fibonacci数的定义如下: FIB(1)=1 FIB(2)=1 FIB(N)=FIB(N-2)+FIB(N-1) N=3四.实验环境Masm For Windows 2012 五.实验方法 程序接收用户输入的1小于等于50的十进制正整数,存入输入缓冲区后再把它转化为十六进制数,存入内存单元N中。调用FIB函数求Fibonacci数,结果高位存在RESULT2H,低位存在RESULT2L,最后调用OUTPUT函数将结果以十进制的形式显示出来。程序亮点在于将结果转换为十进制时采用了除10取余的方法,对于高位通过在适当的位数加65536(ADD65536)的方式巧妙地将乘法转化为加法。六.实验步骤1.显示提示,并接受一个数字N;2.调用fib递归 得到结果存入内存;3.调用显示10进制函数OUTPUT。输入数据 36(十进制)输出数据 14930352(10进制)正确。七.实验结论 本实验使我进一步掌握子程序的设计方法,熟悉递归程序的设计,丰富了我写汇编程序的经验。 实验二 冒泡排序算法的程序实现一、实验目的1. 掌握循环程序的设计方法;2. 了解循环结构在程序中的重要作用起泡排序程序。二、实验原理及基本技术路线图(方框原理图)循环结构分DO_WHILE和DO_UNTIL两种,无论使用哪种循环结构,循环程序一般应包括以下几部分:1.循环初始化。它包括设置循环次数的初始值、地址指针的初始设置等。2.循环体。这是循环工作的主体,包括要重复执行的操作,以及循环的修改部分。修改部分包括地址指针的修改、循环控制条件的修改等。3.循环控制部分。它是控制循环的关键,判断循环条件满足与否。特别要注意循环入口和循环次数的正确设置、地址指针及循环控制条件的修改等。否则会得不到期望的结果。以下为冒泡算法的流程图:开始CX=0?AiAi+1结束AiAi+1置内循环次数CXDI=0?修改外循环次数DI-1DI初始化循环次数DI置地址指针修改内循环次数CX-1CX修改地址指针指向下一元素三.实验环境1. 汇编环境:Masm For Windows 2012 2. 文本编辑器:记事本四、实验方法、步骤1. 将MASM的文件置于C:assembly目录下;2. 将masm.exe和link.exe所在目录(C:assemblyMASM)添加到Path环境变量中;3.在C:assembly下新建一个bubble.asm文件,打开bubble.asm,输入汇编程序代码;4. 运行一个命令行窗口,将当前目录切换到C:assembly,然后输入命令:masm bubble.asm Enter,来汇编程序,根据汇编结果查看程序代码是否有语法错误,如有,则更正保存后重新汇编,直至没有错误为止,此时会生成bubble.obj文件;5. 输入命令:link bubble.obj Enter,观察输出结果,如果没有错误,则生成bubble.exe;6. 输入命令:debug bubble.exe Enter,调试程序,并记录运行过程;7. 完成实验报告。五、实验过程原始记录(数据、图表、计算等)1. 将C:assemblyMASM目录添加到Path环境变量中:2. 新建名为bubble.asm的文件,输入汇编程序代码:程序源码:STACKSGSEGMENTSTACK SDW64DUP(ST)STACKSGENDSDATASEGMENTARYDW5,7,1,4,3,6,9,8,2;数组,流程图中为ACTEQU($-ARY)/2;元素个数DATAENDSCODESEGMENTASSUMECS:CODE, DS:DATA, SS:STACKSGMAINPROCFARMOVAX,DATAMOVDS,AXMOVDI,CT-1;初始化外循环次数LOP1:MOVCX,DI;置内循环次数MOVBX,0;置地址指针LOP2:MOVAX,ARYBXCMPAX,ARYBX+2;两数比较JGECONT;次序正确转XCHGAX,ARYBX+2;次序不正确互换位置MOVARYBX,AXCONT:ADDBX,2;修改地址指针LOOPLOP2;内循环控制DECDI;修改外循环次数JNZLOP1;外循环控制MOVAX,4C00HINT21HMAINENDPCODEENDSENDMAIN3. 汇编源程序:4. 连接生成可执行文件:5.调试程序:(1)初始化外循环次数(DI)=0008H(2)置内循环次数和地址指针(3)第一趟第一次比较,因为57,故互换位置,进行下一次比较(5)修改地址指针,继续内循环(6)第一趟第二次比较,因为51,故直接更改地址指针,进行下一次比较(7)第一趟第三次比较,因为14,故互换位置,进行下一次比较(8)第一趟第四次比较,因为13,故互换位置,进行下一次比较(9)第一趟第五次比较,因为16,故互换位置,进行下一次比较(10)第一趟第六次比较,因为19,故互换位置,进行下一次比较(11)第一趟第七次比较,因为18,故互换位置,进行下一次比较(12)第一趟第八次比较,因为12,故互换位置(13)第一趟循环结束,最小数1被交换至数组的最后位置(14)第二趟循环结束,次小数2被交换至数组的倒数第二个位置(15)第三趟循环结束,数字3归位(16)第四趟循环结束,数字4归位(17)第五趟循环结束,数字5归位(18)第六趟循环结束,数字6归位(19)第七趟循环结束,数字7归位(20)第八趟循环结束,数字8归位(21)第九趟循环结束,数字9归位(22)排序结束,程序退出六、实验结论1. 在进行循环程序设计时,要注意循环初始化、内外层循环的控制、循环结束条件等的设置,对整个程序的执行逻辑要非常清楚,这样可以避免死循环等意外情况的出现。2. 多层循环的控制更为复杂,编写代码时,要注意注释重要的循环控制部分,这样思路才不会乱。同时要对照流程图,随时观察代码的逻辑思路是否正确。3. 当要观察排序结果时,可利用D命令,显示数据段的内容,检查程序是否正常运行。 实验三 分类统计字符个数1、 实验目的通过编程实现字符进行分类统计。利用DOS功能调用INT 21H的10(0Ah)号功能,掌握进行键盘输入字符串的方法以及数据区设置。掌握8086指令: CMP、JB、JA、SHL、INC、LEA、INT、JNZ、SCASB、LOOPE/LOOPNE等。2、 实验内容1、编写一个程序实现将数据段中存储在STRING处到NUM处的字符串进行分类统计,然后将结果存入以letter、digit和other为名的存储单元中。查找字符串STRING中是否有空格,如有找出第一个出现的位置(先用十六进制显示,后修改为十进制显示),否则输出N。2、修改前述1的程序,实现从键盘输入一个以回车键作为结束符的字符串(字符个数不超过80个),存入BUF中,分类统计BUF中字符串,将结果存入以letter、digit和other为名的存储单元中,屏幕输出大小写字母个数、数字个数和其它字符个数,并查找字符串BUF中是否有空格,如有找出第一个出现的位置(用十进制显示),否则输出N。(对有余力的同学)实验结果:DEBUG 调试并查看结果的正确性。对存储区STRING的内容“12ABCDE#!Y(78)=(1).”屏幕显示:N对存储区STRING的内容“12ABCD E#! Y(78)=(1).”屏幕显示:Place=7对第2部分,如键盘输入12ABCDE# 3456789143!Y(78)=(1).回车输出结果:Letter=6Digit=15Other=9Place=93、 实验总结本次实验我花了较长的时间来完成。初略的程序花了5个多小时完成。后来遇到转换为十进制的时候就卡住了。后来在第六周周三的时候听了课以后才会做。第一个代码很长,有340多行代码。其实核心代码不多。主要是每一次转换为16进制以及10进制的时候,重复了相同的代码。还有换行也重复了几次。第二个代码不同的是自己输入字符。我自学了子程序。然后把转换为10进制和输出换行设置成了子程序。精简了代码。 实验四 二进制转十六进制1、 实验目的 实现二进制到十六进制的转换。二、实验环境、内容和方法 内容和方法:试编制一个程序把BX寄存器内的二进制到十六进制数的形式在屏幕上显示出来。保存文件在masm文件夹中,命名为ym01.asm进入debug系统,Microsoft Windows2012编译文件:D:MASMym01Invalid keyboard code specifiedMicrosoft (R) Macro Assembler Version 5.00Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.Source filename .ASM: ym01.asmObject filename ym01.OBJ:Source listing NUL.LST:Cross-reference NUL.CRF: 49948 + 414820 Bytes symbol space free 0 Warning Errors 0 Severe Errors连接文件:D:MASMlinkIBM Personal Computer LinkerVersion 2.00 (C)Copyright IBM Corp 1981, 1982, 1983Object Modules .OBJ: ym01.objRun File YM01.EXE:List File NUL.MAP:Libraries .LIB:Warning: No STACK segmentThere was 1 error detected.运行文件:运行文件D:MASMaa is not recognized as an internal or external command,operable program or batch file.查看结果:D:MASMym011234D:MASM实验五 查找匹配字符串一、实验目的: 查找匹配字符串SEARCH。 二、实验要求: 程序接收用户键入的一个关键字以及一个句子。如果句子中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高铁安检安全知识培训内容课件
- 高血脂科普课件
- 110kV变电站(升压站)工程施工组织设计
- 可研及设计评审服务合同
- 电网建设工程造价咨询合同
- 电缆质量知识培训总结课件
- 电站抢修知识培训课件
- 五四制 统编版 语文 一年级 上册 我是小学生【新课标版】课件
- 电石炉净化设备培训知识课件
- 电焊行业专业知识培训课件
- 科创板开户测试题及答案
- 田野之声:现代农业发展深度调查报告
- 简短戒烟干预戒烟成功
- 治安防范培训课件
- DB3203-T 1080-2025 城市道路路名牌设置规范
- 带状疱疹护理业务查房
- 2025-2030量子科技前沿发展态势与中国市场投资机遇研究报告
- 跨境电子商务专业教学标准(高等职业教育专科)2025修订
- 设备维护方案(3篇)
- 肉类加工间管理制度
- 2024-2025学年苏教版四年级下学期期末测试数学试卷(含答案)
评论
0/150
提交评论