ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:215.71KB ,
资源ID:12632297      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12632297.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(综合汇编程序设计资料.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

综合汇编程序设计资料.docx

1、综合汇编程序设计资料深 圳 大 学 实 验 报 告 课程名称: 微机原理及应用实验 实验名称: 综合汇编程序设计 学院: 物理科学与技术学院 专业: 2012级应用物理 指导教师: 报告人: 学号: 实验时间: 2014年12月3日 实验报告提交时间: 2014年12月17日 一、实验目的 (1)综合运用所学的微机汇编语言程序设计的知识。 (2)进一步巩固在PC上建立、汇编、链接、调试和运行汇编语言程序的过程与方法。 二、实验要求 1.以12人为一组,自拟设计题目。要求如下(1)务必用到汇编程序设计中的分支、循环、子程序调用、宏和DOS功能调用;(2)务必有合适的人机交互功能(如键盘输入、屏幕

2、输出等);(3)务必提前提交设计报告书(写明程序功能、总体设计思路与设计方案及分工等)。如模拟计算器设计:用键盘输入,可进行五位十进制以内的加减法、2位十进制以内的乘除运算。再如电子钟或秒表,在屏幕显示时间,支持时间校准或设置记时起点、停止计时等功能等等。三、实验内容1.设计任务书 (1)程序功能: 输入不超过100个学生的成绩,按照分数高低分成A、B、C、D、F五个等级,依次对应的分数为90100、8089、7079、6069、059,屏幕分别输出5个等级的学生人数。总体设计思路: (2)调用DOS键盘输入功能获得不超过100个学生的成绩,每输入一个成绩就要回车换行,故要写一个回车换行的宏和

3、一个输入子程序。再判断一位学生的成绩处于哪个等级,进入相应的分支累加计数,使用循环结构对所有输入的成绩进行判断。接着调用DOS屏幕输出功能输出每个等级的学生人数及总人数,因为要分成六次输出,故将输出写成子程序。(3)设计方案及分工:小组成员:赖树文(负责主程序部分),林成业(负责宏,子程序和报告)设计方案:如简略流程图所示(注:宏和子程序没有在流程图中标出)是是否否是是是否否是 2.汇编代码源文件及注释CRLFM MACRO ;空格宏程序 MOV AH,02 MOV DL,20H ;调用DOS空格功能 INT 21H ENDM CRLFM1 MACRO ;回车换行宏程序 MOV AH,02 M

4、OV DL,0DH ;调用DOS回车功能 INT 21H MOV AH,02 MOV DL,0AH ;调用DOS换行功能 INT 21H ENDM DATA SEGMENT ;定义数据段 TIP DB please input grades (less than 100 numbers),one input,one enter,input Y or y to end input,0DH,0AH,$ ;开头提示 TIPN DB total:,$ ;输出提示 TIPA DB A:,$ ;输出提示 TIPB DB B:,$ ;输出提示 TIPC DB C:,$ ;输出提示 TIPD DB D:,$

5、;输出提示 TIPF DB F:,$ ;输出提示 N=101 STR DB 4,0,3 DUP(30H),0DH DAT1 DB 3 DUP(30H) DAT2 DB 3 DUP(30H) GRA DB N DUP(0) NUM DB -1 NUMA DB 0 NUMB DB 0 NUMC DB 0 NUMD DB 0 NUMF DB 0 PYL DW 0DATA ENDS STACK SEGMENT ;定义堆栈段 DB 100 DUP(0) STACK_TOP DB 0STACK ENDSCODE SEGMENT ;代码段 ASSUME CS:CODE,DS:DATA,SS:STACK ST

6、ART: MOV AX,DATA ;设置数据段、堆栈段 MOV DS,AX MOV AX,STACK MOV SS,AX MOV SP,OFFSET STACK_TOP ;输出提示 LEA DX,TIP CALL OUTTIP CRLFM ;调用输入子程序获得成绩 L1: LEA DX,STR LEA SI,STR LEA DI,DAT1 CALL INPUT CRLFM INC NUM ;记录输入总个数 ;判断是否输入Y和y来结束成绩输入 LEA DI,STR MOV AL,DI+2 CMP AL,Y JE JUDGE CMP AL,y JE JUDGE ;将输入的数转化为十进制多位数存入G

7、RA LEA DI,DAT1 MOV CL,DI SUB CL,30H ;将ASCALL码转化为数字 INC DI MOV AL,DI SUB AL,30H ;将ASCALL码转化为数字 MOV BL,10 MUL BL ADD CL,AL INC DI MOV AL,DI SUB AL,30H ;将ASCALL码转化为数字 MOV BL,100 MUL BL ADD CL,AL LEA DI,GRA ADD DI,PYL MOV DI,CL INC PYL JMP L1 ;不输入Y和y就继续从键盘读取数据 ;用循环和分支结构判断等级 JUDGE: CRLFM1 LEA DI,GRA MOV

8、CL,NUM MOV CH,0L3: MOV AL,DI CMP AL,89 JA DJA CMP AL,79 JA DJB CMP AL,69 JA DJC CMP AL,59 JA DJD JMP DJF DJA: INC NUMA JMP OVERDJB: INC NUMB JMP OVERDJC: INC NUMC JMP OVERDJD: INC NUMD JMP OVERDJF: INC NUMF OVER: INC DI LOOP L3 ;输出结果 LEA DX,TIPN CALL OUTTIP LEA DI,DAT2 MOV AL,NUM CALL TTOUT LEA DX,T

9、IPA CALL OUTTIP LEA DI,DAT2 MOV AL,NUMA CALL TTOUT LEA DX,TIPB CALL OUTTIP LEA DI,DAT2 MOV AL,NUMB CALL TTOUT LEA DX,TIPC CALL OUTTIP LEA DI,DAT2 MOV AL,NUMC CALL TTOUT LEA DX,TIPD CALL OUTTIP LEA DI,DAT2 MOV AL,NUMD CALL TTOUT LEA DX,TIPF CALL OUTTIP LEA DI,DAT2 MOV AL,NUMF CALL TTOUT MOV AH,4CH ;返

10、回DOS INT 21H ;输入子程序 INPUT PROC NEAR MOV AH,0AH ;调用DOS键盘输入功能 INT 21H MOV CL,SI+1 ;获取指针地址,设置循环次数 MOV CH,0 MOV BX,CX ;由低到高位读入数字 L2: MOV AL,SI+BX+1 MOV DI,AL DEC SI INC DI LOOP L2 RET ;返回主程序INPUT ENDP ;输出子程序OUTTIP PROC NEAR MOV AH,09H INT 21H RET ;返回主程序OUTTIP ENDP OUTNUM PROC NEAR LOUT: MOV AH,02H MOV D

11、L,SI INT 21H DEC SI LOOP LOUT RET ;返回主程序OUTNUM ENDP TTOUT PROC NEAR MOV AH,0 MOV BL,10 MOV CX,0L4: DIV BL ADD AH,30H MOV DI,AH MOV AH,0 INC DI INC CX CMP AL,0 JA L4 LEA SI,DAT2 ADD SI,CX DEC SI CALL OUTNUM CRLFM1 RETTTOUT ENDP CODE ENDS ;代码段结束 END START四、实验结果1.编译、连接生成可执行文件,调试该可执行文件。2.输入数据获得结果五、实验总结与

12、体会 本次实验中,运用了汇编程序设计中的分支、循环、子程序调用、宏和DOS功能调用,同时使用了合适的人机交互功能(如键盘输入、屏幕输出等)。实现了“ 输入不超过100个学生的成绩,按照分数高低分成A、B、C、D、F五个等级,依次对应的分数为90100、8089、7079、6069、059,屏幕分别输出5个等级的学生人数。”的功能。 实验过程中,我们先写好设计任务书,并按照任务是的要求和流程图分工编好程序,并一起将各部分程序结合起来,经调试修改最终实现预定功能。我们强化了对汇编程序设计中分支、循环、子程序调用、宏和DOS功能调用的使用方法的理解,并学会用寄存器和指针在各部分程序之间传递数据。由于编写各部分程序时有个别寄存器和指针没有区分清楚,以及个别子程序没有嵌套在合适的位置,使得最初调试时没有实现预定的结果,我们在多次梳理编写出的程序之后,找到以上的问题并顺利解决这些问题。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1