汇编课程设计报告.docx
- 文档编号:1927743
- 上传时间:2022-10-25
- 格式:DOCX
- 页数:17
- 大小:89.18KB
汇编课程设计报告.docx
《汇编课程设计报告.docx》由会员分享,可在线阅读,更多相关《汇编课程设计报告.docx(17页珍藏版)》请在冰豆网上搜索。
汇编课程设计报告
汇编课程设计报告
学号:
课程设计
题目
打印水仙花数
学院
计算机科学与技术
专业
计算机科学与技术
班级
姓名
指导教师
2012
年
6
月
28
日
课程设计任务书
学生姓名:
专业班级:
指导教师:
工作单位:
计算机科学与技术学院
题目:
打印水仙花数
初始条件:
理论:
完成了《汇编语言程序设计》课程,对微机系统结构和80系列指令系统有了较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧。
实践:
完成了《汇编语言程序设计》的4个实验,熟悉了汇编语言程序的设计环境并掌握了汇编语言程序的调试方法。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
进一步理解和掌握较复杂程序的设计方法,掌握子程序结构的设计和友好用户界面的设计。
具体的设计任务及要求:
1)输入一个大整数n;
2)将小于n的水仙花数打印出来(各位数字的立方和等于该数本身);
3)程序采用子程序结构,结构清晰;
4)友好清晰的用户界面,能识别输入错误并控制错误的修改。
在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求请见课程设计指导书。
阅读资料:
1)《IBM—PC汇编语言程序设计实验教程》实验2.4
2)《IBM—PC汇编语言程序设计(第2版)》例6.11
时间安排:
设计安排一周:
周1、周2:
完成系统分析及设计。
周3、周4:
完成程序调试,和验收。
周5:
撰写课程设计报告。
指导教师签名:
2012年月日
系主任(或责任教师)签名:
2012年月日
打印水仙花数
1.需求说明
1.1设计要求:
进一步理解和掌握较复杂程序的设计方法,掌握子程序结构的设计和友好用户界面的设计。
具体的设计任务及要求:
1.输入一个三位整数n;
2.将小于n的水仙花数打印出来(各位数字的立方和等于该数本身);
3.程序采用子程序结构,结构清晰;
4.友好清晰的用户界面,能识别输入错误并控制错误的修改。
1.2设计说明
所谓“水仙花数”是指一个3位数,其个、十、百位数字的立方和等于其本身。
1.3功能简述
程序可以输入一个三位数,若输入有误则提示错误,并提示重新输入,若输入正确,系统将显示出所有大于等于100,并且小于等于输入数字的水仙花数。
然后提示是否继续,若用户输入y或Y,则系统回到最开始的状态,若输入n或N,则退出系统,若为其他则提示错误,并重新输入。
2.设计说明(简要的分析与概要设计)
2.1简要分析
2.1.1原理说明
可以用标签来接收三位数,标签的好处在于可以限制输入的位数,并且通过实际输入位数可以直接进行一部分的异常处理。
将数存到标签后,因为是以ASCII码的形式存的,所以需要进行转换,将其变成十六进制数,转换后将数字存到申请的内存字中。
在转换成十六进制数的过程中,可以对输入的数进行异常处理,判断是否输入有误。
在输出水仙花数时,设置一个计数器,从100开始循环判断,直到等于用户输入的数为止,依次判断是否为水仙花数,决定是否输出该数。
在输出时,分别取出水仙花数的个、十、百位数,转换成ASCII码再输出。
系统提示是否继续后,程序对用户输入的信息进行判断,若为y或Y则系统回到初始状态,若为n或N则退出系统,若为其他则提示输入错误并重新输入。
2.1.2程序流程图
开始
输入一个三位数n
是否继续
结束
2.2数据段设计
datasegment
mess1db0dh,0ah,'Pleaseinputanubmer(100<=number<=999):
','$'
mess2db0dh,0ah,'Doyouwanttocontinue(y/n)?
','$'
mess3db0dh,0ah,'shuixianhuashu:
',0ah,'$'
errordb0dh,0ah,'Inputerror,pleaseinputagain!
','$'
numparlabelbyte
maxdb4
actdb?
numflddb4dup(?
);存放输入的字符串,设定了最大长度,避免错误。
realdw?
;用于存放转换后的十六进制数
dataends
3.子程序设计与描述
3.1输入一个三位数:
;inputanumber
numprocnear
leadx,mess1
movah,9
int21h
movah,0ah
leadx,numpar
int21h
callconvert
ret
numendp
3.2将输入的数据转换成十六进制数并进行异常处理:
convertprocnear
movbx,0
movdx,0
movax,0
cmpact,3;判断是否为三位数
jneerr
movbl,numfld[2];判断个位是否为1~9
cmpbl,2fh
jbeerr
cmpbl,3ah
jgeerr
subbl,30h
moval,numfld[1];判断十位是否为0~9
cmpal,2fh
jbeerr
cmpal,3ah
jgeerr
subal,30h
movdh,10
muldh
addbl,al
moval,numfld[0];判断百位是否为0~9
cmpal,30h
jbeerr
cmpal,3ah
jgeerr
subal,30h
movdh,100
muldh
addax,bx
movreal,ax;将转换后的十六进制数存到内存中
jmpext
err:
;错误处理
leadx,error
movah,9
int21h
callnum
ext:
ret
convertendp
3.2判断是否为水仙花数并输出结果(display子程序)
;displayshuixianhuashu
displayprocnear
leadx,mess3
movah,9
int21h
movcx,100
cmp3:
movax,cx;将百位数的立方存入bx中
movdh,100
divdh
movdh,al
muldh
muldh
movbx,ax
movax,cx;将十位数的立方加到bx中
movdh,10
divdh
movah,0
divdh
moval,ah
movdh,ah
muldh
muldh
addbx,ax
movax,cx;将个位数的立方加到bx中
movdh,10
divdh
moval,ah
movdh,ah
muldh
muldh
addbx,ax
movdx,cx;若是水仙花数则跳转到print
cmpdx,bx
jeprint
movax,real;若等于用户输入的数据则终止
cmpcx,ax
jestop
inccx;否则计数器加一继续比较
jmpcmp3
print:
movax,bx;打印百位
movdh,100
divdh
movdl,al
adddl,30h
movah,2
int21h
movax,bx;打印十位
movdh,10
divdh
movah,0
divdh
movdl,ah
adddl,30h
movah,2
int21h
movax,bx;打印个位
divdh
movdl,ah
adddl,30h
movah,2
int21h
movdl,20h
int21h
movax,real
cmpax,cx
jestop
inccx
jmpcmp3
stop:
ret
displayendp
4.源程序与执行结果
4.1源程序代码
datasegment
mess1db0dh,0ah,'Pleaseinputanubmer(100<=number<=999):
','$';提示输入一个三位数
mess2db0dh,0ah,'Doyouwanttocontinue(y/n)?
','$';提示是否继续
mess3db0dh,0ah,'shuixianhuashu:
',0ah,'$';提示输出水仙花数
errordb0dh,0ah,'Inputerror,pleaseinputagain!
','$';出错信息
numparlabelbyte
maxdb4
actdb?
numflddb4dup(?
);存放输入的字符串,设定了最大长度,避免错误。
realdw?
;用于存放转换后的十六进制数
dataends
codesegment
assumeds:
data,cs:
code
mainprocfar
start:
movax,data
movds,ax
go:
callnum
calldisplay
again:
leadx,mess2
movah,9
int21h
movah,1
int21h
cmpal,89
jego
cmpal,121
jego
cmpal,78
jeexit
cmpal,110
jeexit
leadx,error
movah,9
int21h
jmpagain
exit:
movah,4ch
int21h
mainendp
;--------------------------------------
;inputanumber;输入一个三位数
numprocnear
leadx,mess1
movah,9
int21h
movah,0ah
leadx,numpar
int21h
callconvert
ret
numendp
;---------------------------------------
;convertdecimaltohexadecimal
;storetoreal;将输入的数据转换成十六进制数并进行异常处理
convertprocnear
movbx,0
movdx,0
movax,0
cmpact,3;判断是否为三位数
jneerr
movbl,numfld[2];判断个位是否为0~9
cmpbl,2fh
jbeerr
cmpbl,3ah
jgeerr
subbl,30h
moval,numfld[1];判断十位是否为0~9
cmpal,2fh
jbeerr
cmpal,3ah
jgeerr
subal,30h
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 课程设计 报告