实验六汇编语言中的循环程序设计.docx

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验六汇编语言中的循环程序设计

数学与软件科学学院 实验报告 学期:2013 至 2014 第 二 学期 5月 10日 课程名称:汇编语言 专业: 信息与计算科学 2011 级 5 班实验编号:6 实验项目: 指导教师:姓名: 学号: 实验成绩:实验六 汇编语言中的循环程序设计(4学时)实验目的:掌握循环程序设计的基本方法。主要掌握几种基本的循环程序设计技巧,如计数法程序设计、当循环、直到循环等程序设计技术。实验内容:(任选其二)主要实验实例:1.用多种循环方法实现1+2+3+…+20的程序(至少二种方法);2.将寄存器AX中的2#数用16#形式显示出来;3.将内存中的数据块中(BUFF为起始地址)奇数和偶数分别存入以ADDR1和ADDR2开始的存储块中,并分别统计其中的奇、偶数,将统计结果存放在RESULT开始的两个字存储单元中;4.不利用乘法指令实现乘法的程序;5.对在附加段中的首地址为LIST的字数组进行从大到小的排序;6.对给定数组和给定数,编制程序来确定数组中是否有给定数的值,如有则从数组中删除之;7.对给定数组和给定数(设数组是有序数组),试将给定数插入给定数组中相应位置。实验准备:汇编语言下的循环程序设计基本技术和指令系统。循环程序设计的基本结构和问题表示方法。实验步骤:(1) 完成源程序设计任务,并准备好测试用例,分析其可能的测试结果;(2) 上机运行和测试所写的程序;(3) 进行实验分析;(4) 编写实验报告。实验结果:(1) 根据测试目标写出测试报告;(2) 测试结果分析说明;(3) 测试程序代码清单。一、将寄存器AX中的2#数用16#形式显示出来。思想:将寄存器中从高向低每四位2#转化为一个16#的ASCII,然后再依次显示出来。绘制程序流程图如下:根据流程图编写源代码如下:prognam segment ;define code segmentmain proc far assume cs:prognamstart:;set up stack for return push ds sub ax,ax push ax;*************main part of program************************* mov ch,4 ;number of rotate times mov ax,1101101010010111b ;2# numberrotate: mov cl,4 ;shift 4 bits rol ax,cl ;left 4 to right mov bl,al ;turn to bx register to convert mov si,ax ;save axs value in si because ah register will be used again when print and bl,15 ;get low 4 bits add bl,30h ;covert to ASCII cmp bl,3ah ;is it9? jl print add bl,7h ;digit is A~Fprint: mov dl,bl mov ah,2 ;print ASCII int 21h mov ax,si ;resume AXs value dec ch jnz rotate ret main endpprognam ends end start 将源程序编译链接后,使用debug跟踪执行,如下所示:此时AX中的数为输入的二进制数的十六进制表示,CX的高字节和低字节分别存入循环次数和移位数。再继续跟踪,观察各寄存器的变化:再单步执行若干次,可以依次显示后三位数值,得到如下的最终显示结果:二、对给定数组和给定数(设数组是有序数组),试将给定数插入给定数组中相应位置。思想:假设原数组以递增的次序排列,逐一读取数组中的数值,然后与定数比较,若小于定数,则此单元后面的数逐个前移一个字(向低地址方向移动),否则把定数插在当前单元之前根据绘制的程序流程图如下所示:根据算法编写的源代码如下:data segment ;define data segment x dw ? ;allot a space before arrays first address array_head dw 3,5,15,23,37,49,52,65,78,99 ;the number in array array_end dw 105 ;the last number in arr

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档