实验2-寻找最大数最小数

实验2-寻找最大数最小数

ID:1246623

大小:383.28 KB

页数:0页

时间:2017-11-09

实验2-寻找最大数最小数_第页
预览图正在加载中,预计需要20秒,请耐心等待
资源描述:

《实验2-寻找最大数最小数》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验一、寻找最大数最小数实验吴艳红11283019一、实验目的1、学习循环程序结构,掌握编写循环处理程序的方法和技巧。2、通过循环结构程序熟悉汇编语言程序设计的主要方法。3、了解和掌握程序设计过程中算法的选择。4、掌握汇编语言调试方法。二、实验题目以buff开始的内存单元中有10个有符号数(字节型DB):-37、28、-115、-2、98、-100、93、120、56、-99请编写程序,找出最大的数并存入MAX单元中,同时也找出最小的数并存入MIN单元中,在Debug下运行程序,查看数据区MAX和MIN的内容检验运行结果。三、实验过程1、新建一个.txt文件,在文件中编辑寻找最大数最小数的源

2、程序代码,并以max——min.asm命名保存,程序代码见附。2、用MASM文件汇编源程序,C>masmmax_min.asm;生成目标文件max_min.obj和max_min.lst。3、用LINK连接程序,C>linkmax_min;形成max_min.exe文件。结果见截图1:截图14、在DEBUG调试环境下调试并运行max_min.exe程序。C>debugmax_min.exe,首先用R指令,后使用U指令查看编写的程序结果见截图2截图2单步执行完命令后,用DDS:0检查数据区MAX及MIN内容,检查结果是否正确。见截图3:已知78H为最大数,8DH为最小数,说明程序运行结果正确。

3、截图3四、实验过程遇到的问题以及解决办之前一直在尝试利用加法将ASCII码转换成字符输出,结果总是出现乱码,经过仔细的考虑和认真的尝试之后,终于发现了问题所在:本组给定的数据为-37、28、-115、-2、98、-100、93、120、56、-99,当把最大数还有最小数输入到寄存器DL中用以输出时,数据以补码的形式保存,可是数据默认是ASCII码,每一个ASCII码对应一个字符,所以当存入数据78H时,表示ASCII码的120位字符x,即输出x,而不是78H,如果提出改进,将BUF的输入值改为0,1,2,3,4,5,6,7,8,9十位数时,经过ASCII码与字符的转换,即在ASCII码的基础

4、上加一个30H,那么就将数字转换成了相应的字符,如截图4,即为修改后的运行结果截图:输出结果为0和9,结果正确。截图4除了上述将输入数据改变以外,提出另外的改进方法,参考教材有关子程序的设计,发现可以将2位十六进制数转换成相应的ASCII码,子程序设计如下:CONHAPROCMOVAH,BL;保存待转换的数ANDBL,0FH;处理十六进制数低位CMPBL,0AH;判断是不是十六进制中的字母JBASCI;不是转移ADDBL,07;是加7ASCI:ADDBL,30H;转换为ASCII码MOVDH,BL;保存转换的低位数据MOVCL,4;移位控制SHRAH,CL;将原数右移处理高位CMPAH,0A

5、HJBASCI1ADDAH,07ASCI1:ADDAH,30HMOVDL,AH;保存转换好的高位MOVAH,2INT21HMOVDL,DHMOVAH,2INT21HRETCONHAENDP在程序中调用如下子程序后输出结果见截图5:可以看到,输出结果分别是8DH,78H结果正确,达到了此次试验的目标。截图5五、思考1、查看DOS操作系统把可执行程序装载到内存的首地址及结束地址。当我们用编辑程序把源程序输入到机器中,用汇编程序把它转换为目标程序,用连接程序对其进行连接和定位时,操作系统为每一个用户程序建立了一个程序段前缀区PSP,其长度为256个字节,主要用于存放所要执行程序的有关信息,同时也提

6、供了程序和操作系统的接口。操作系统在程序段前缀的开始处(偏移地址0000H)安排了一条INT20H软中断指令,INT20H中断服务程序由DOS提供,执行该服务程序后,控制就转移到DOS,即返回到DOS管理的状态。因此,用户在组织程序时,必须使程序执行完后能去执行存放于PSP开始处的INT20H指令,这样便返回到DOS,否则就无法继续键入命令和程序。   DOS在建立了程序段前缀区PSP之后,就将要执行的程序从磁盘装入内存。在定位程序时,DOS将代码段置于PSP下方,代码段之后是数据段,最后放置堆栈段。内存分配好之后,DOS就设置段寄存器DS和ES的值,以使它们指向PSP的开始处,即INT20

7、H的存放地址,同时将CS设置为PSP后面代码段的段地址,IP设置为指向代码段中第一条要执行的指令位置,把SS设置为指向堆栈的段地址,让SP指向堆栈段的栈底(取决于堆栈的长度),然后系统开始执行用户程序。 2、查看MAX和MIN的段地址及偏移地址。见下图6,max的段地址为ds,偏移地址为000A,min的段地址为ds,偏移地址为000B.截图63、分别计算数据段和代码段占用的地址空间大小。见下图7,可见数据段

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。