汇编课程设计报告.docx

上传人:b****2 文档编号:1927743 上传时间:2022-10-25 格式:DOCX 页数:17 大小:89.18KB
下载 相关 举报
汇编课程设计报告.docx_第1页
第1页 / 共17页
汇编课程设计报告.docx_第2页
第2页 / 共17页
汇编课程设计报告.docx_第3页
第3页 / 共17页
汇编课程设计报告.docx_第4页
第4页 / 共17页
汇编课程设计报告.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

汇编课程设计报告.docx

《汇编课程设计报告.docx》由会员分享,可在线阅读,更多相关《汇编课程设计报告.docx(17页珍藏版)》请在冰豆网上搜索。

汇编课程设计报告.docx

汇编课程设计报告

汇编课程设计报告

学号:

课程设计

 

题目

打印水仙花数

学院

计算机科学与技术

专业

计算机科学与技术

班级

姓名

指导教师

 

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 财务管理

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

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