汇编课程设计报告_第1页
汇编课程设计报告_第2页
汇编课程设计报告_第3页
汇编课程设计报告_第4页
汇编课程设计报告_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2020年4月19日汇编课程设计报告文档仅供参考,不当之处,请联系改正。学 号: 课 程 设 计题 目打印水仙花数学 院计算机科学与技术专 业计算机科学与技术班 级姓 名指导教师 年6月28日课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位:计算机科学与技术学院 题目: 打印水仙花数初始条件:理论:完成了汇编语言程序设计课程,对微机系统结构和80系列指令系统有了较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧。实践:完成了汇编语言程序设计的4个实验,熟悉了汇编语言程序的设计环境并掌握了汇编语言程序的调试方法。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写

2、等具体要求)进一步理解和掌握较复杂程序的设计方法,掌握子程序结构的设计和友好用户界面的设计。具体的设计任务及要求:输入一个大整数n;将小于n的水仙花数打印出来(各位数字的立方和等于该数本身);程序采用子程序结构,结构清晰;友好清晰的用户界面,能识别输入错误并控制错误的修改。在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求请见课程设计指导书。阅读资料:1)IBMPC汇编语言程序设计实验教程实验2.42)IBMPC汇编语言程序设计(第2版)例6.11时间安排:设计安排一周:周1、周2:完成系统分析及设计。周3、周4:完成程序调试,和验收。周5:撰写课程设计报告。指导教师签名:

3、 月 日系主任(或责任教师)签名: 月 日打印水仙花数需求说明 1.1设计要求: 进一步理解和掌握较复杂程序的设计方法,掌握子程序结构的设计和友好用户界面的设计。具体的设计任务及要求:1.输入一个三位整数n;2.将小于n的水仙花数打印出来(各位数字的立方和等于该数本身);3.程序采用子程序结构,结构清晰;4.友好清晰的用户界面,能识别输入错误并控制错误的修改。 1.2设计说明 所谓“水仙花数”是指一个3位数,其个、十、百位数字的立方和等于其本身。 1.3功能简述 程序能够输入一个三位数,若输入有误则提示错误,并提示重新输入,若输入正确,系统将显示出所有大于等于100,而且小于等于输入数字的水仙

4、花数。 然后提示是否继续,若用户输入y或Y,则系统回到最开始的状态,若输入n或N,则退出系统,若为其它则提示错误,并重新输入。设计说明(简要的分析与概要设计) 2.1简要分析 2.1.1原理说明 能够用标签来接收三位数,标签的好处在于能够限制输入的位数,而且经过实际输入位数能够直接进行一部分的异常处理。将数存到标签后,因为是以ASCII码的形式存的,因此需要进行转换,将其变成十六进制数,转换后将数字存到申请的内存字中。在转换成十六进制数的过程中,能够对输入的数进行异常处理,判断是否输入有误。在输出水仙花数时,设置一个计数器,从100开始循环判断,直到等于用户输入的数为止,依次判断是否为水仙花数

5、,决定是否输出该数。在输出时,分别取出水仙花数的个、十、百位数,转换成ASCII码再输出。系统提示是否继续后,程序对用户输入的信息进行判断,若为y或Y则系统回到初始状态,若为n或N则退出系统,若为其它则提示输入错误并重新输入。 2.1.2程序流程图 开始 输入一个三位数n输入错误输入正确输出100=X=n的水仙花数 是否继续输入y或Y输入其它输入n或N结束2.2 数据段设计data segmentmess1 db 0dh,0ah,Please input a nubmer (100=number=999):,$mess2 db 0dh,0ah,Do you want to continue(y

6、/n)? ,$mess3 db 0dh,0ah,shuixianhuashu:,0ah,$error db 0dh,0ah,Input error,please input again!,$numpar label bytemax db 4act db ?numfld db 4 dup(?);存放输入的字符串,设定了最大长度,避免错误。real dw ? ;用于存放转换后的十六进制数data ends子程序设计与描述 3.1输入一个三位数: ;input a numbernum proc near lea dx,mess1 mov ah,9 int 21h mov ah,0ah lea dx,

7、numpar int 21h call convert retnum endp3.2 将输入的数据转换成十六进制数并进行异常处理:convert proc near mov bx,0 mov dx,0 mov ax,0 cmp act,3 ;判断是否为三位数 jne err mov bl,numfld2 ;判断个位是否为19 cmp bl,2fh jbe err cmp bl,3ah jge err sub bl,30h mov al,numfld1 ;判断十位是否为09 cmp al,2fh jbe err cmp al,3ah jge err sub al,30h mov dh,10 mu

8、l dh add bl,al mov al,numfld0 ;判断百位是否为09 cmp al,30h jbe err cmp al,3ah jge err sub al,30h mov dh,100 mul dh add ax,bx mov real,ax ;将转换后的十六进制数存到内存中 jmp exterr: ;错误处理 lea dx,error mov ah,9 int 21h call num ext: retconvert endp3.2 判断是否为水仙花数并输出结果( display子程序) ;display shuixianhuashudisplay proc near lea

9、 dx,mess3 mov ah,9 int 21h mov cx,100 cmp3: mov ax,cx ;将百位数的立方存入bx中 mov dh,100 div dh mov dh,al mul dh mul dh mov bx,ax mov ax,cx ;将十位数的立方加到bx中 mov dh,10 div dh mov ah,0 div dh mov al,ah mov dh,ah mul dh mul dh add bx,ax mov ax,cx ;将个位数的立方加到bx中 mov dh,10 div dh mov al,ah mov dh,ah mul dh mul dh add

10、bx,ax mov dx,cx ;若是水仙花数则跳转到print cmp dx,bx je print mov ax,real ;若等于用户输入的数据则终止 cmp cx,ax je stop inc cx ;否则计数器加一继续比较 jmp cmp3 print: mov ax,bx ;打印百位 mov dh,100 div dh mov dl,al add dl,30h mov ah,2 int 21h mov ax,bx ;打印十位 mov dh,10 div dh mov ah,0 div dh mov dl,ah add dl,30h mov ah,2 int 21h mov ax,b

11、x ;打印个位 div dh mov dl,ah add dl,30h mov ah,2 int 21h mov dl,20h int 21h mov ax,real cmp ax,cx je stop inc cx jmp cmp3 stop: retdisplay endp 4.源程序与执行结果 4.1源程序代码 data segmentmess1 db 0dh,0ah,Please input a nubmer(100=number=999):,$ ;提示输入一个三位数mess2 db 0dh,0ah,Do you want to continue(y/n)? ,$;提示是否继续mess

12、3 db 0dh,0ah,shuixianhuashu:,0ah,$;提示输出水仙花数error db 0dh,0ah,Input error,please input again!,$;出错信息numpar label bytemax db 4act db ?numfld db 4 dup(?);存放输入的字符串,设定了最大长度,避免错误。real dw ?;用于存放转换后的十六进制数data endscode segment assume ds:data,cs:codemain proc farstart: mov ax,data mov ds,axgo: call num call di

13、splayagain: lea dx,mess2 mov ah,9 int 21h mov ah,1 int 21h cmp al,89 je go cmp al,121 je go cmp al,78 je exit cmp al,110 je exit lea dx,error mov ah,9 int 21h jmp againexit: mov ah,4ch int 21hmain endp; ;input a number;输入一个三位数num proc near lea dx,mess1 mov ah,9 int 21h mov ah,0ah lea dx,numpar int 2

14、1h call convert retnum endp; ;convert decimal to hexadecimal ;store to real;将输入的数据转换成十六进制数并进行异常处理convert proc near mov bx,0 mov dx,0 mov ax,0 cmp act,3 ;判断是否为三位数 jne err mov bl,numfld2 ;判断个位是否为09 cmp bl,2fh jbe err cmp bl,3ah jge err sub bl,30h mov al,numfld1 ;判断十位是否为09 cmp al,2fh jbe err cmp al,3ah

15、 jge err sub al,30h mov dh,10 mul dh add bl,al mov al,numfld0 ;判断百位是否为19 cmp al,30h jbe err cmp al,3ah jge err sub al,30h mov dh,100 mul dh add ax,bx mov real,ax ;将转换后的十六进制数存到内存中 jmp exterr: ;错误处理 lea dx,error mov ah,9 int 21h call num ext: retconvert endp; ;display shuixianhuashu;判断是否为水仙花数并输出结果disp

16、lay proc near lea dx,mess3 mov ah,9 int 21h mov cx,100 cmp3: mov ax,cx ;将百位数的立方存入bx中 mov dh,100 div dh mov dh,al mul dh mul dh mov bx,ax mov ax,cx ;将十位数的立方加到bx中 mov dh,10 div dh mov ah,0 div dh mov al,ah mov dh,ah mul dh mul dh add bx,ax mov ax,cx ;将个位数的立方加到bx中 mov dh,10 div dh mov al,ah mov dh,ah m

17、ul dh mul dh add bx,ax mov dx,cx ;若是水仙花数则跳转到print cmp dx,bx je print mov ax,real ;若等于用户输入的数据则终止 cmp cx,ax je stop inc cx ;否则计数器加一继续比较 jmp cmp3 print: mov ax,bx ;打印百位 mov dh,100 div dh mov dl,al add dl,30h mov ah,2 int 21h mov ax,bx ;打印十位 mov dh,10 div dh mov ah,0 div dh mov dl,ah add dl,30h mov ah,2

18、 int 21h mov ax,bx ;打印个位 div dh mov dl,ah add dl,30h mov ah,2 int 21h mov dl,20h int 21h mov ax,real cmp ax,cx je stop inc cx jmp cmp3 stop: retdisplay endp ;code ends end start 4.2 测试方法 4.2.1 测试用例 输入数字:错误输入12错误输入045正确输入265 是否继续:错误输入1错误输入t正确输入y正确输入n4.2.2 测试结果5.总结 5.1不足 本程序只是针对了三位数进行设计,对于四位数进行过设计,但没法正确输出,最后只完成了判断输出三位数的水仙花数,因此在功能上有所不足,只是实现了最基本的判断三位数是否为水仙花数而且输出。 5.2收获与体会在编程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论