您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 《求最大值最小值》微机原理的实验报告
实验报告实验三、给出一组数据,求其中的最大值与最小值1、编写程序:D:\EDIT文件名.ASMDATASEGMENTARRAYDB-1,0,-99,100,110,34,-4,-6,45,90MAXDB0MINDB0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATA;程序用DEBUG装入后用U命令查看此语句MOVDS,AX;可知数据段段基地址,以便查看结果MOVSI,OFFSETARRAYMOVCX,0AH;比较10个数据MOVBH,[SI];(BH)存放最大值,(BL)存放最小值MOVBL,BHA1:LODSB;从数组中取数放ALCMPAL,BH;与BH中的数据比较JLEA2;(AL)=(BH),跳转A2执行;无符号数用JBEA2指令MOVBH,AL;(AL)(BH),(AL)-(BH)JMPA3A2:CMPAL,BL;与BL中的数据比较JGEA3;(AL)=(BL),跳转A2执行;无符号数用JAEA3指令MOVBL,AL;(AL)(BL),(AL)-(BL)A3:LOOPA1;10个数据未比较完,转A1执行MOVMAX,BHMOVMIN,BLMOVAH,4CHINT21HCODEENDSENDSTART2、编译程序:D:\TASM文件名.ASM3、连接程序:D:\TLINK文件名.OBJ4、执行程序:D:\DEBUG文件名.EXE(注意:必须是EXE文件)-U;反汇编,查得数据段段基地址(DATA)=XXXX以及MAX和MIN的偏移地址[????]-DXXXX:0;查看原始数据-G;运行程序-DXXXX:????(MAX的偏移地址);查看结果-Q;退出DEBUG实验三、求最大最小值——对给出的10个数按递增排序。设计思想:a.从最后一个数开始,依次把相邻的两个数进行比较,即第10个数和第9个数比较,第9个数和第8个数比较,等等;若第N-1个数大于第N个数,则两者交换,否则不交换,直到10个数的相邻两个数都比较完为止。此时,10个数中的最小数将被排在10个数的最前列。b.对剩下的9个数重复上步,找到9个数中的最小数。c.重复第二步,直到10个数全部排序好为止。参考程序:DATASEGMENTARRAYDB-1,0,-99,100,110,34,-4,-6,45,90DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVSI,OFFSETARRAY+10MOVCX,0AHMOVBL,0FFH;设置标志FFA1:CMPBL,0FFHJNZA4;BL不为FF则转A4MOVBL,0H;DECCX;外循环修正CXJZA4PUSHSIPUSHCXA2:DECSIMOVAL,[SI]DECSICMPAL,[SI]JGA3;无符号数用JAA3指令XCHGAL,[SI]MOV[SI+1],ALMOVBL,0FFHA3:INCSILOOPA2POPCXPOPSIJMPA1A4:MOVAH,4CHINT21HCODEENDSENDSTART
本文标题:《求最大值最小值》微机原理的实验报告
链接地址:https://www.777doc.com/doc-1872487 .html