汇编语言综合程序设计.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
项目3 汇编语言综合程序设计 分项目1 数据排序程序设计 实训目标 1.能够设计出数据排序的汇编语言源程序。 2.能用MASM对程序进行编译和调试。 3.会使用常用的DEBUG命令调试和运行程序。 二、实训器材 1.微型计算机 2.MASM编辑软件 三、实训内容及步骤 1.程序设计 (1)要求:对BUFF数据区中的10个无符号数按从小到大排序。 (2)设计思路:因为要实现从小到大排序,可从数据区的最后一个数开始,依次把相邻的两个数进行比较,根据比较情况选择交换或不交换。 ① 第10个数与第9个数比较,第9个数与第8个数比较,依此类推。若后面的数大于前面的数,则将两者交换,否则不交换。将数据区的10个数比较9次后,数据区的第1个数即为该组数据中最小的数。 ② 对数据区中除去已经筛选出的最小数以外的剩余9个数,重复①步操作,经比较8后,筛选出次小数。 ③ 重复②步,直到10个数全部排好序为止。 进一步对排序操作进行分析,会发现对10个数据进行排序,将①步重复操作9次仅仅是最坏的一种情况。一般的数据排列不一定需要进行9次比较,如数据序列为“3,5,6,7,10,15,17,19,25,2”时,只需进行1次比较就可完成从小到大的排序。 为了提高程序的运行效率,当数据已经有序时就能结束比较,程序中可设置一个交换标志。如果某次比较过程中有交换操作,置标志为FFH;当某次比较过程中没有交换操作时,置标志为00H。程序中如果检测到标志为00H,即结束。 (3)参考程序流程图:如图IP3-1所示。 (4)参考程序: DATA SEGMENT BUFF DB 07H,04H,08H,01H,09H,06H,05H,03H,02H,10H COUNT EQU $-BUFF DATA ENDS STA SEGMENT DB 100 DUP(?) STA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STA START:MOV AX,DATA MOV DS,AX MOV CX,000AH MOV SI,COUNT-1 MOV BL,0FFH L1:CMP BL,0FFH JNZ OVER MOV BL,00H DEC CX JZ OVER PUSH SI PUSH CX L2:MOV AL,[SI] DEC SI CMP AL,[SI] JA L3 XCHG AL,[SI] MOV [SI+1],AL MOV BL,0FFH L3:LOOP L2 POP CX POP SI JMP L1 OVER:MOV AH,4CH INT 21H CODE ENDS START END 2.程序编译、运行 通过MASM编辑器,对排序源程序进行汇编、链接及运行。 3.DEBUG调试 用DEBUG命令进行程序反汇编、单步运行调试、查看运行结果。 四、实训准备 1.复习8086指令系统及汇编语言程序设计。 2.复习汇编语言的编辑、调试步骤,了解R-、U-、D-、T-、G-等常用的DEBUG命令的功能和用法。 3.学习绘制程序流程图。 分项目2 学生成绩排序程序设计 一、实训目标 1.能够进行实用汇编源程序的设计。 2.会用MASM及DEBUG命令,编辑、调试和运行程序。 二、实训器材 1.微型计算机 2.MASM编辑软件 三、实训内容及步骤 1.程序设计 (1)要求: ① 将30个学生的成绩按学号存入到首地址为BUFF1的内存数据区中。 ② 根据学生成绩排名次,将名次存入到首地址为BUFF2的数据区中与学号对应的存储单元内。 (2)设计思路: ① 学生成绩的存储可在数据段中通过数据区定义实现。 ② 存入到数据区中的学生成绩以学号为序,所以其学号就是其所在的存储单元地址+1。 ③ 排名操作可用子程序实现。通过主程序的循环控制,对子程序进行30次调用,完成30个学生成绩的排序。 ④ 子程序中,可将30个学生成绩通过循环控制,依次与一个最小初值比较,用AL跟踪学生成绩的最高值,用DX作为出口参数,保存成绩最高的学生的学号。这样子程序执行结束后,就会得到当前数据区中的最高成绩。找到一个最高成绩,应将其所在单元内容清0,才能继续后面的排名操作。 (3)参考程序流程图:如图IP3-2所示。 (4)参考程序: DATA SEGMENT BUFF1 DB 65H,71H,57H,…,94H

文档评论(0)

kaku + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8124126005000000

1亿VIP精品文档

相关文档