汇编课程设计报告

  • 格式:doc
  • 大小:3.77 MB
  • 文档页数:19

下载文档原格式

  / 19
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汇编课程设计报告

号:

课程设计

题目打印水仙花数

学院计算机科学与技术

专业计算机科学与技术

班级

姓名

指导教师

武汉理工大学《汇编语言程序设计》课程设计

2012 年 6 月28 日

课程设计任务书

学生姓名:专业班级:

指导教师:工作单位:计算机科学与技术学院

题目: 打印水仙花数

初始条件:

理论:完成了《汇编语言程序设计》课程,

对微机系统结构和80系列指令系

统有了较深入的理解,已掌握了汇

编语言程序设计的基本方法和技

巧。

实践:完成了《汇编语言程序设计》的4

个实验,熟悉了汇编语言程序的设

计环境并掌握了汇编语言程序的

调试方法。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)

进一步理解和掌握较复杂程序的设计方

法,掌握子程序结构的设计和友好用户界

2.1简要分析

2.1.1原理说明

可以用标签来接收三位数,标签的好处在于可以限制输入的位数,并且通过实际输入位数可以直接进行一部分的异常处理。

将数存到标签后,因为是以ASCII码的形式存的,所以需要进行转换,将其变成十六进制数,转换后将数字存到申请的内存字中。在转换成十六进制数的过程中,可以对输入的数进行异常处理,判断是否输入有误。

在输出水仙花数时,设置一个计数器,从100开始循环判断,直到等于用户输入的数为止,依次判断是否为水仙花数,决定是否输出该数。

在输出时,分别取出水仙花数的个、十、百位数,转换成ASCII码再输出。

系统提示是否继续后,程序对用户输入的信息进行判断,若为y或Y则系统回到初始状态,若为n或N则退出系统,若为其他则提示输入错误并重新输入。

2.1.2程序流程图

是否继续

2.2 数据段设计

data segment

mess1 db 0dh,0ah,'Please input a nubmer

(100<=number<=999):','$'

mess2 db 0dh,0ah,'Do you want to continue(y/n)? ','$' mess3 db 0dh,0ah,'shuixianhuashu:',0ah,'$'

error db 0dh,0ah,'Input error,please input again!','$' numpar label byte

max db 4

act db ?

numfld db 4 dup(?);存放输入的字符串,设定了最大长度,避免错误。 real dw ? ;用于存放转换后的十六进制数

data ends

3.子程序设计与描述

3.1输入一个三位数:

;input a number

num proc near

lea dx,mess1

mov ah,9

int 21h

mov ah,0ah

lea dx,numpar

int 21h

call convert

ret

num endp

3.2 将输入的数据转换成十六进制数并进行异常处理:

convert proc near

mov bx,0

mov dx,0

mov ax,0

cmp act,3 ;判断是否为三位数

jne err

mov bl,numfld[2] ;判断个位是否为1~9

cmp bl,2fh

jbe err

cmp bl,3ah

jge err

sub bl,30h

mov al,numfld[1] ;判断十位是否为0~9

cmp al,2fh

jbe err

cmp al,3ah

jge err

sub al,30h

mov dh,10

mul dh

add bl,al

mov al,numfld[0] ;判断百位是否为0~9

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 ext

err: ;错误处理

lea dx,error

mov ah,9

int 21h

call num

ext:

ret

convert endp

3.2 判断是否为水仙花数并输出结果( display子程序)

;display shuixianhuashu

display 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

相关主题