资源预览内容
第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
第9页 / 共9页
亲,该文档总共9页全部预览完了,如果喜欢就下载吧!
资源描述
-1-昆明理工大学信息工程与自动化学院学生实验报告( 2011 2012 学年 第 1 学期 )课程名称:汇编与微机接口 开课实验室:信自楼机房 445 2011 年 10月 19 日年级、专业、班计科 093 学号 200910405310姓名 孙浩川 成绩实验项目名称 分支程序设计 指导教师 袁梅宇教师评语该同学是否了解实验原理: A.了解 B.基本了解 C.不了解该同学的实验能力: A.强 B.中等 C.差 该同学的实验是否达到要求: A.达到 B.基本达到 C.未达到实验报告是否规范: A.规范 B.基本规范 C.不规范实验过程是否详细记录: A.详细 B.一般 C.没有 教师签名:年 月 日一、上机目的及内容(1)熟悉汇编语言程序设计的开发环境、格式以及汇编过程;(2)Debug 的主要命令(结合教材第四章的例子) ,熟练掌握 Debug命令的 U命令、D 命令、R 命令、G 命令、T 命令、Q 命令等;(3)掌握分支程序的设计方法;(4)输入并汇编折半查找程序;(5)观察并记录运行结果。二、实验原理及基本技术路线图(方框原理图或程序流程图)折半查找程序原理:1.初始时,下界 l为 0,少年宫街 h为 n-1,即查找范围是整个数组。2.如果下界 l大于上界 h,则查找范围为空,查找结束。这种情况下,数组中没有 a,算法结束。3.去下界 l和上界 h的中点 m,m=(l+h)/2。4.从数组的中点 m处取出一个数组 Rm,和 a进行比较。5.如果 Rm等于 a,则在数组中找到 a,下标为 m。算法结束。6.若果 Rm大于 a,中点上的数比 a大,从中点到上界中的所有数都比 a大,修改上界 h为 m-1。然后跳转到第二步。7.若果 Rm小于 a,中点上的数比 a小,从下界到中点中的所有数都比 a小,修改上界 l为 m+1。然后跳转到第二步。折半查找程序框图:-2-三、所用仪器、材料(设备名称、型号、规格等或使用软件)1 台 PC 及 masm5.0四、实验方法、步骤(或:程序代码或操作过程)1.Debug 的主要命令(结合教材第四章的例子) ,熟练掌握 Debug 命令的 U 命令、D 命令、R 命令、G 命令、T 命令、Q 命令等;STSG SEGMENT STACK S DW 32 DUP(?) STSG ENDSDATA SEGMENTA DW 123B DW 456SUM DW ?DATA ENDSCODE SEGMENTMAIN PROC FAR l=0,h=n-1Lhm=(l+h)/2Rm=ah=m-1l=m+1查找成功查找失败 =是否-3-ASSUME CS:CODE,DS:DATA,SS:STSG,ES:NOTHINGPUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV AX,AADD AX,BMOV SUM,AXRET MAIN ENDPCODE ENDSEND MAIN2.输入并汇编折半查找程序;STACKSG SEGMENT STACK SDW 64 DUP(ST)STACKSG ENDSDATA SEGMENTBUF DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41H,42H,43H,44H, 45H ;有序表 COUNT EQU $-BUF ;表项数CHAR DB ? ;要查找的数MARK DW 0 ;查找次数PROMPT DB NO FOUND$ ;没找到提示信息DATA ENDS CODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSGMAIN PROC FARMOV AX,DATAMOV DS,AXMOV AH,1 ;输入要查找数的字符INT 21HMOV CHAR,AL ;保存要找的数LEA SI,BUF ;表起始地址,初始;化区间下限(左)MOV CX,COUNTMOV DX,SIADD DX,CX ;最后数的地址加 1MOV DI,DX ;初始化区间上限(右)-4-MOV DX,0CMP AL,SI ;判边界元素mov bx,si JB NOFID ;小于表中最小数转未找到JE FOUND ;是表中最小数转找到CMP AL,DI-1 ;判边界元素mov bx, di; dec bxJA NOFID ;大于表中最大数转未找到JE FOUND ;是表中最大数转找到MOV DX,1 ;初始化查找次数MOV AL,CHAR ;要查找的数 C1: MOV BX,SI ;循环入口ADD BX,DISHR BX,1 ;折半CMP AL,BX ;比较JZ FOUND ;找到转PUSHFCMP BX,SI ;指针下限吗?JZ NOFID ;若等于表示未找到,转POPFJL LESS ;可能在左半区转MOV SI,BX ;可能在右半区,调整下限JMP SHORT NEXTLESS: MOV DI,BX ;调整上限NEXT: INC DX ;查找次数加 1JMP C1NOFID: LEA DX,PROMPT ;显示未找到提示信息MOV AH,9 INT 21H JMP SHORT EXIT FOUND: MOV MARK,DX ;保存查找次数PUSH DXMOV AH,2 ;显示找到的数MOV DL,BXINT 21HMOV CL,10POP AXDIV CL ;把查找次数转换成十进制数OR AX,3030H ;转换成 ASCII 码MOV DL,ALPUSH AXMOV AH,2 ;显示查找次数的高位POP AXMOV DL,AHMOV AH,2 ;显示查找次数的低位-5-INT 21HEXIT: MOV AX,4C00HINT 21HMAIN ENDPCODE ENDSEND MAIN五、实验过程原始记录( 测试数据、图表、计算等)(1)熟悉汇编开发环境以及 debug 命令1.打开 cmd,进入 masm2.用 R 命令显示寄存器内容-6-3.用 u 命令反汇编可执行代码4.用 g 命令执行正在被调试的程序到断点处5.用 d 命令查看数据6.跟踪执行程序-7-7.用 q命令退出 debug返回到操作系统(2)输入并汇编折半查找程序1.用 R 命令显示寄存器内容2.用 u 命令反汇编可执行代码3.用 g 命令执行正在被调试的程序到断点处-8-4.用 d 命令查看数据5.跟踪执行程序6、实验结果、分析和结论(误差分析与数据处理、成果总结等。其中,绘制曲线图时必须-9-用计算纸或程序运行结果、改进、收获)通过这次的上机实验,我更加熟悉汇编语言设计的开发环境、格式、汇编过程以及Debug的主要命令,熟练掌握 Debug命令中的-r,-u,-g,-d,-t 等常用命令。了解分支程序设计基础,对折半查找有了更深的认识。在这次实验中我也更加深刻的体会到了理论与实践的比一致性,有时候我们是懂得了理论知识,但是在具体的运用之中,我们会发现很难实施,但是只要我们多进行实践操作,这样很有利于我们以后的学习,提高我们的实际操作能力。注:教师必须按照上述各项内容严格要求,认真批改和评定学生成绩。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号