汇编语言、微机原理、接口技术-实验三:循环程序实验.pdf
1 计算机硬件实验室实验报告课程名称:姓名学 号班 级成 绩设备名称及软件环境Windows XP 操作系统 emu8086 仿真器 proteus 仿真器实验名称0003 循环程序实验实验日期2012/11/6 一实验内容1.实现内存数据访问,用两种方法对五个字从大到小排序二扩展要求1.用冒泡法时快排二理论分析或算法分析直接选择排序:内部循环:每一次寻找找出最小的那个数放入AL 中。假设第一个数就是最小的。一次和后面的几个数进行比较,修正AL中的数,使每次最小的都放在AL中。外部循环:内部循环第一次结束后,将移动指向首地址的指针,后移2 个字节。再继续内部循环。循环初始次数:CX=LENGTH-1 冒泡排序:内部循环:相邻的两个数进行比较。如果前面的数大于后面的数将交换,否则继续下一次的比较,记录下内部循环一轮技术后,交换的次数BL。外层循环:初始化BL。初始化比较两个数的指针。当BL=0时,提前退出循环。图一:直接选择排序图二:冒泡排序2 三实现方法(含实现思路、程序流程图、实验电路图和源程序列表等基本要求源代码:冒泡排序关键代码:mov cx,4 ;CX length-1 mov si,offset a ;DI string pointer call sort sort proc mov cx,5 lp2:mov ah,02h mov bl,0;计数器 BL mov si,offset a mov si,di lp3:push cx mov dl,si lp1:int 21h mov al,si inc si cmp al,si+2 INC SI jna j1 loop lp3 xchg al,si+2 HLT mov si,al A DW 5,7,1,9,2 inc bl ;si string pointer j1:;cx length-1 inc si sort proc inc si lp2:loop lp1 mov di,si pop cx push cx cmp bl,0 mov dl,di loopnz lp2 lp1:ret inc di sort endp inc di cmp dl,di jna j1 xchg dl,di j1:loop lp1 pop cx mov si,dl inc si inc si loop lp2 ret sort endp 3 四实验结果分析(含执行结果验证、输出显示信息、图形、调试过程中所遇的问题及处理方法等)直接选择排序:冒泡排序:直接排序出现的问题:在该排序中每次都将最小的放在了DL 中。必须有MOV SI,DL,不然将造成数据丢失,执行结果出现错误。冒泡排序:初始内存中的数据为A DW 5,7,1,2,9,执行后,CX=1 时提前退出。实现了快速排序。思考内容:冒泡排序之所以能实现快速排序,是每一次排序都将最大或最小的放在最后或最前,并且有个来统计交换的次数,一旦交换的次数为0 时直接退出循环。五结论完成了本次实验要求的实验内容。学会了实现内存数据访问,用两种方法实现对五个字从大到小排序报告提交日期2012-12-22