




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
昆明理工大学信息工程与自动化学院学生实验报告( 2011 2012学年第一学期 )课程名称:微型计算机原理与应用 开课实验室:信自楼111 2011年 12月1日年级、专业、班生医091班学号姓名成绩实验项目名称子程序设计和调用指导教师韩晓东教师评语 教师签名: 2011年12月 日 一、实验目的 1) 学习子程序的定义和调用方法。 2) 掌握子程序设计、编制及调试。 二、实验内容 编写计算N个偶数之和的子程序和接收键入的N及将结果送显示器的主程序。三、实验设计思路 子程序设计是使程序模块化的一种重要手段。当设计一个比较复杂的程序时,根据程序要实现的若干主要功能及各功能要调用的公用部分,当程序划分为若干个相对独立的模块。确定各模块调用关系和参数传递方式,为各模块分配不同的名字(入口地址),然后把每个模块都编成子程序,最后将这些模块根据调用关系连成一个整体。这样既便于分工合作,又可避免重复劳动,节省存储空间,提高程序设计的效率和质量,使程序整洁,清晰,易读,便于修改和扩充。四、实验设备 PC机一台 五、实验1.按要求编写程序,关键程序写上注释,以便读懂。源程序如下: stack segment stack stack ;定义堆栈段 dw 32 dup(?) ;堆栈段有32字(64字节)空间stack ends ;堆栈段结束data segment ;定义数据段input db please input N: ,$ ;定义字符串inputn db 6,0,6 dup(?) ;定义变量数据区nobf db 9 dup(?)data ends ;数据段结束code segment ;定义代码段begin proc far ;定义一个过程begin assume ss:stack,cs:code,ds:data ;伪指令assume将段寄存器与段间的对应关系告诉汇编程序 push ds sub ax,ax ;为通过过程返回DOS作准备 push ax mov ax, data ;建立DS段地址 mov ds, ax ; mov dx,offset input ;9号功能调用,显示器显示“please input N:” mov ah,9 int 21h ; mov dx,offset n ;10号功能调用,键入并显示数据n mov ah,10 int 21h ; mov si,offset n+2 mov cl,n+1 mov ch,0 call abc ;调用子程序abc call sum ;调用子程序sum shl ax,1 ;乘2 mov bx,seg obf mov es,bx mov di,offset obf+1 call cba ;调用子程序cba call lf ;调用子程序lf mov dx,offset obf ;10号功能调用,输入并显示字符串odf mov ah,9 int 21h Ret ;返回begin endP ;过程段begin结束sum proc ;定义过程sum sum为自然数相加子程序 push cx ;保护现场 push bx mov cx,ax ;把ax的值赋给cx mov bx,0 ;为bx赋值0 mov ax,bx ;把bx的值赋给axsm: adc bx,1 ;把bx,1和进位CF相加 adc ax,bx ;把ax,bx和进位CF相加 loop sm ;cx减1,并判断cx是否为0.cx不为0则转到sm,cx为0则顺序执行 pop bx ;恢复现场 pop cx Ret ;返回sum endp ;过程sum结束abc proc ;定义过程abc abc为将键盘输入的十进制数转化为十六进制子程序 mov ax,0 ;为ax赋值0abc1: push cx ;cx入栈 mov cx,10 ;Xi *10+Xi-1 mul cx ;乘法指令调用 and byte ptrsi,0fh ;把十进制数的ASC转换为BCD数 add al,si adc ah,0 inc si ;越过负号指向数字 pop cx ;cx出栈 loop abc1 ;将cx减1,然后判断cx是否为0.若cx不为0,则转移到abc1 Ret ;cx为0,则返回abc endp ;过程abc结束cba proc ;定义过程cba cba为十六进制转化为ASC码子程序 push ax ;保护现场 push bx push cx push dx push di or ax,ax ;判别数的符号 jns plus ;为正,转移到plus mov byte ptr es:di,- ;为负,送负号至输出数据区 inc di ;并求该负数的绝对值 neg axplus: mov cx,0 ;将AX中的二进制数转换为十进制数 mov bx,10lop1: mov dx,0 div bx push dx ;余数进栈 inc cx ;十进制数位数加1 or ax,ax ;商不为0继续除以10 jnz lop1lop2: pop ax ;将十进制数转换为ASC码 add al,30h stosb loop lop2 mov al,$ stosb pop di ;恢复现场 pop dx pop cx pop bx pop ax Ret ;返回cba endp ;过程cba结束LF PROC ;定义过程LF MOV DL,0AH ;2号功能调用,换行 MOV AH,2 INT 21H MOV DL,0DH ;2号功能调用,回车 MOV AH,2 INT 21H RET ;返回LF ENDP ;过程LF结束code ends ;代码段结束end begin ;汇编结束,同时指明程序起始点2) 运行EXE文件并进行调试。运行程序,当输入为1时,运行结果如下:一个偶数相加为2,结果正确。当输入为2时,运行结果如下:两个偶数相加:2+4=6,结果正确。当输入为5时,运行结果如下:5个偶数相加:2+4+6+8+10=30,实验结果正确。当输入为10时,运行结果如下:10个偶数相加:2+4+6+8+10+12+14+16+18+20=110,实验结果正确。6、 实验拓展1. 计算N个自然数之和,程序如何改写?若要计算N个自然数之和,只要把程序中过程begin里的 shl ax,1删除即可。运行结果如下:当输入N=5时5个自然数相加:1+2+3+4+5=15,,实验结果正确。2. 计算N个奇数之和,程序如何改写?若要计算N个奇数之和,要把程序中过程begin里的 shl ax,1删除,再把过程sum中adc bx,1 复制到adc ax,bx 的下一行。运行结果如下:当输入N=5时5个奇数相加:1+3+5+7+9=25,实验结果正确。3. 在指出程序中子程序设计中设置的入口和出口参数。子程序sum的入口参数为AX,出口参数为AX子程序abc的入口参数:DS:SI-待转换的十进制数的ASC码的首地址 CX-十进制数的位数 出口参数:AX-转换结果,即16位二进制数子程序cba的入口参数:AX-待转换的二进制数 ES:DI-转换后的十进制数的ASC码的存放首地址 出口参数:AX子程序LF的入口参数:0AH 出口参数:0DH7、 心得体会子程序设计和调用实验做完了,我懂得了如何解决包含子程序的程序应解决的3个问题。在设计包含子程序的程序之前应先明确两个问题:一是子程序所处的位置,子程序与调用它的主程序是同一模块,还是分属两个模块;在同一模块时还要明确是在同一代码段,还是在不同的代码段。二是子程序与主程序的参数传递问题。这个实验还是挺难的,程序很复杂,很长,很难懂。读程序花了我很多的时间,常常是能读懂每一条简单语句的意思,但是由它们组成的程序却不能读懂。老师给了我们求N个偶数之和的源程序,在我给它改为求N个自然数之和,N个奇数之和时,由于对所给程序不是很了解,让我觉得很难,经过多次尝试,终于获得了想要的结果,很高兴。在这里,我要特别感谢我的同学,谢谢他们在我遇到困难时帮助我解决。我充分地认识到了理论与实践相结合的重要性,与此同时,我也深切体会到与他人合作的重要性,没有老师同学的帮助,我肯定不能顺利完成任务。另一方面,我也对学习有了新的认识,真正理解了学无止境,只有不断学习,不断充实自己,才
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数字化标准创新-洞察及研究
- 部队安全保密培训内容课件
- 九年级历史第一次测试试卷
- 广西壮族自治区钦州市第四中学2025-2026学年高三上学期开学考试历史试卷(含答案)
- 2024-2025学年内蒙古巴彦淖尔市乌拉特前旗八年级(上)期末数学试卷(含部分答案)
- 基于元学习的个性化信息检索方法-洞察及研究
- 基于拓扑优化的剪式平衡支撑结构轻量化设计对施工效率的影响评估
- 基于工业4.0的减速机支架智能化制造工艺与质量控制体系重构
- 基于AI驱动的动态阻抗匹配算法在宽带增益平坦度中的应用
- 国际标准差异背景下前盖密封条出口认证的技术适配策略
- 体育赛事直播技术服务合同
- 护理礼仪(第3版) 课件 第四章 护士仪态礼仪
- 认识中国特色社会主义文化
- 森林防火林区道路建设基本要求
- 供电所所长讲安全课
- 《钢铁行业智能制造标准体系建设指南(2023版)》
- 餐饮外卖智能调度与配送优化方案
- 设计材料与工艺课程 课件 第1章 产品设计材料与工艺概述
- 《SDH学习知识总结》课件
- 创面封闭负压引流管护理技术
- 2024年20kV及以下配电网工程劳务定额计价清单
评论
0/150
提交评论