实验二、寻找最大和最小数实验实验目的学习循环程序结构,掌握编写循环处理程序的方法和技巧。通过循环结构程序熟悉汇编语言程序设计的主要方法。了解和掌握程序设计过程中算法的选择。掌握汇编语言调试方法。实验内容以buff开始的内存单元中有9个有符号数(字节型DB):手动输入9个数字请编写程序,找出最大的数并存入MAX单元中,同时也找出最小的数并存入MIN单元中,在Debug下运行程序,查看数据区MAX和MIN的内容检验运行结果。编程过程1、在数据段设置buff区(DB)存放10个被测试的数,再分别设置字节数据MAX、MIN。BUFdbMAXdbMINdb2、通过一个循环程序完成比较,先用第一个数与第二个,把较小的数放在AL中,较大的数放在AH中。3、以后每次都用AL与后面的数比较,把小的总放在AL中;然后再用AH与后面的数比较,把大的放在AH中;比较结束后AL和AH分别放最小和最大数。实验步骤在EDIT或其它编辑方式下输入源程序,。用MASM文件汇编源程序,C>MASM3;用LINK连接程序,C>LINK3;。。首先用R指令,然后使用U指令查看自己所编写的程序,确定断点后,使用G命令执行程序到断点,查看结果程序执行输入9个数字:123456789输出:最大值9,最小值16、程序运行结束后,用DDS:0检查数据区MAX及MIN内容,检查结果是否正确。思考查看DOS操作系统把可执行程序装载到的内存的首地址及结束地址。首地址:1447:0000,结束地址:1447:0053查看MAX和MIN的段地址及偏移地址。MAX:1444:0024MIN:1444:0025分别计算数据段和代码段占用的地址空间大小。数据段:40字节代码段:54字节附:源程序清单:DATASEGMENTSTRDB0AH,0DH,"pleaseinputnumber:",'$'BUFDB10;BUF大小DB?DB10DUP(?);TEQU$-BUF-3;循环次数MAXDB?;存放最大数MINDB?;存放最小数CRLFDB0AH,0DH,'$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEADX,STRMOVAH,09HINT21HINPUT:LEADX,BUFMOVAH,T-1MOVBX,OFFSETBUF+2;首地址MOVAH,[BX];假定第一个数为最大数MOVAL,[BX];假定第一个数为最小数LOOP1:INCBX;指向下一个数CMPAH,[BX];比较JGENEXT1;AH中数大MOVAH,[BX];AH中数小,替换JMPNEXT2NEXT1:CMPAL,[BX];比较JNGENEXT2MOVAL,[BX];AL中数大,替换NEXT2:XJNZLOOP1;循环MOVMAX,AH;存储最大数MOVMIN,ALMOVDL,CRLFMOVAH,02INT21HMOVDL,MAXMOVAH,02INT21HMOVDL,MINMOVAH,02INT21HMOVAH,4CHINT21HCODEENDSENDSTAR实验三、统计学生成绩实验步骤在EDIT或其它编辑方式下输入源程序,。用MASM文件汇编源程序,C>MASMt;如有错误,回到第一步,如没错误,,C>LINKt;。在DEBUG环境下运行调试程序:C>,使用U命令反汇编自己编写的程序,查找到断点地址,用G命令使程序执行到完成初始化的功能;此时使用D命令查看数据段的内容,是否有学生的分数并查看s5、s6、s7、s8、s9、s10字节变量的地址及内容。数据段有学生的分数,S51444:0014内容为0;S61444:0015内容为0;S71444:0016内容为0;S81444:0017内容为0;S91444:0018内容为0;S101444:0019内容为0;然后查找程序功能结束的命令对应的断点地址,用G命令使程序运行到断点;G命令执行程序,程序结果如下:S5:5S6:4S7:3S8:4S9:3S10:1此时再使用D命令查看存储各分数段的学生人数是否正确。各分数段的学生人数正确实验四、查找字符一、实验步骤在EDIT或其它编辑方式下输入源程序,。2、用MASM文件汇编源程序,C>MASM5;如有错误,回到第一步,如没错误,、用LINK连接程序,C>LINK5;。4、运行程序:C>:在屏幕上先显示提示信息,例如pleaseenter:后,等待键盘输入字符,DDEEFFGG,输入结束后应在屏幕出现C
实验二求最大数最小数 来自淘豆网m.daumloan.com转载请标明出处.