十进制加减法.docx

上传人:b****3 文档编号:840270 上传时间:2022-10-13 格式:DOCX 页数:22 大小:157.50KB
下载 相关 举报
十进制加减法.docx_第1页
第1页 / 共22页
十进制加减法.docx_第2页
第2页 / 共22页
十进制加减法.docx_第3页
第3页 / 共22页
十进制加减法.docx_第4页
第4页 / 共22页
十进制加减法.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

十进制加减法.docx

《十进制加减法.docx》由会员分享,可在线阅读,更多相关《十进制加减法.docx(22页珍藏版)》请在冰豆网上搜索。

十进制加减法.docx

十进制加减法

目录

课程设计任务书2

1问题描述3

2前期分析3

3课程设计3

3.1总体设计3

3.2模块设计4

3.2.1求和模块4

3.2.2输入十进制数模块5

3.2.3存储器清零模块6

3.2.4减法模块7

4程序源代码7

5调试与分析13

6测试结果13

7经验与体会15

评分表16

 

课程设计任务书

学生姓名:

毛习均专业班级:

计算机1004班

指导教师:

许毅工作单位:

计算机科学与技术学院

题目:

十进制加减计算器

初始条件:

理论:

完成了《汇编语言程序设计》课程,对微机系统结构和80系列指令系统有了较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧.

实践:

完成了《汇编语言程序设计》的4个实验,熟悉了汇编语言程序的设计环境并掌握了汇编语言程序的调试方法.

要求完成的主要任务:

(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)

进一步理解和掌握较复杂程序的设计方法,掌握子程序结构的设计和友好用户界面的设计.具体的设计任务及要求:

1)编写程序实现十进制数的加减法;

2)将计算结果在屏幕上显示;

3)程序采用子程序结构,结构清晰;

4)友好清晰的用户界面,能识别输入错误并控制错误的修改.

在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求请见课程设计指导书.

阅读资料:

1)《IBM—PC汇编语言程序设计实验教程》实验2.4

2)《IBM—PC汇编语言程序设计(第2版)》例6.11

时间安排:

设计安排一周:

周1、周2:

完成系统分析及设计.

周3、周4:

完成程序调试,和验收.

周5:

撰写课程设计报告.

 

指导教师签名:

年月日

系主任(或责任教师)签名:

年月

十进制加减法计算器

1问题描述

用汇编语言编写一个十进制加减法计算器,此程序要求将结果显示在屏幕上,并且友好清晰的用户界面,能识别输入错误并且控制修改.在此程序中采用子结构程序使结构清晰.

2前期分析

此课题是做一个带显示界面的十进制加减法计算器.首先,程序中多次用到BIOS的10号类型的显示中断功能,所以,在完成此课题之前重点深入学习例行中断程序的理论知识以及用法.其次,识别输入错误的修改功能,这就需要判断错误并及时置光标到合适的位置,以便提示并修改错误.最后,对于采用子程序结构必须清晰了解课题的大体结构,然后分析与设计子程序结构.比如输入十进制数就可以采用子程序结构.

3课题设计

3.1总体设计

概括程序的整体流程,设计有好的用户界面,总体设计流程图如下

输入0

输入1

输入

N

Y

其他键Enter

 

图1有好用户界面

3.2模块设计

3.2.1求和模块

如右图2,求和模块,将加数与被

加数相加然后扩展为双字,最后通过求

余把每一位数存储在HE存储单元里,

后面把结果按位输出.

 

 

图2求和

3.2.2输入十进制数模块

Y

N

N

Y

图3输入十进制数

上图3,就是输入两个十进制数,对输入的字符判断,如果是0-9之间的数,则转化为十进制数,否则提示重新输入字符.

3.2.3存储单元清零模块

为保证不发生内存访问冲突,每次重新计算的时候都要存储单元清零.如图4

 

N

Y

图4存储单元清零

 

3.2.4减法模块

减法模块主要是比较减数与被减数的大小,如果data1>data2就直接计算,打印结果.否者将data1压入堆栈,显示’-’,然后data1出栈、计算,打印结果.

减法模块如下图5

 

Y

N

 

图5减法

4.程序源代码

DATASSEGMENT

STR1DB0AH,0DH,'********************************************'

STR2DB0AH,0DH,'**'

STR3DB0AH,0DH,'**'

STR4DB0AH,0DH,'*1:

Enterrun*'

STR5DB0AH,0DH,'**'

STR6DB0AH,0DH,'*otherkeysexit*'

STR7DB0AH,0DH,'**'

STR8DB0AH,0DH,'**'

STR9DB0AH,0DH,'**'

STR10DB0AH,0DH,'********************************************'

LENGTH1EQU$-STR1;至str1的字节数

STR11DB'EnterExit,Otherkeyscontinue!

$'

STR12DB'Pleaseinputagain!

$'

ERRDB'Error!

Pleaseinputagain!

$'

STR13DB'inputdata1:

','$'

STR14DB'inputdata2:

','$'

STR15DB'addresult:

','$'

STR16DB'-','$'

STR17DB'subresult:

','$'

COUNTDW?

VALUEDW?

JIASHUDW?

BEIJIASHUDW?

HEDW?

SHOWMACROM;定义宏,显示字符串

LEADX,M

MOVAH,9

INT21H

ENDM

GUANGBIAOMACROM1,M2

MOVDH,M1;行(Y坐标)

MOVDL,M2;列(X坐标)

MOVBH,0;显示页码

MOVAH,02

INT10H;用文本坐标下,设置光标位置

ENDM

QINGPINGMACROM1,M2,M3,M4,M5

MOVAH,6;向上滚屏

MOVAL,M1;滚动行数(0-清窗口)

MOVBH,0DH;空白区域的缺省属性

MOVCH,M2;窗口的左上角位置,Y坐标

MOVCL,M3;----------------,X坐标

MOVDH,M4;窗口的右上角位置,Y坐标

MOVDL,M5;----------------,X坐标

INT10H

ENDM

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

MOVAL,3;80*2516色文本

MOVAH,0;设置显示模式为80*25彩色文本模式

INT10H

MOVBP,SEGSTR1;取段地址

MOVES,BP

MOVBP,OFFSETSTR1;取偏移地址

MOVCX,LENGTH1

MOVDX,0

MOVBL,09H;属性(颜色)

MOVAL,0;光标位置不变(1改变)属性存在BL中,2和3的属性不在BL中

GUANGBIAO4,15

MOVAH,13H;在TELETYPE模式下显示字符串

INT10H

MOVAH,1;键盘输入并回显

INT21H

CMPAL,31H;输入1进入加法器,输入2结束

;JNZNEXT

;NEXT:

;JMPLOOP8

GUANGBIAO8,20;确定光标位置(字符串起始位置)

SHOWSTR13

GUANGBIAO9,20

SHOWSTR14

GUANGBIAO10,20

SHOWSTR15

GUANGBIAO11,20

SHOWSTR17

MOVSI,-2

MOVCX,5

LOOP1:

;存储器清零

ADDSI,2

MOVHE[SI],0

LOOPLOOP1

MOVBX,0

LOOP2:

;输入被加数

QINGPING1,8,30,8,50

QINGPING1,9,30,9,50

QINGPING1,10,30,10,50

QINGPING1,11,30,11,50

GUANGBIAO8,30

CALLINPUT

MOVBEIJIASHU,BX

LOOP3:

;输入加数

QINGPING1,13,18,13,51

QINGPING1,12,20,12,50

MOVBX,0

GUANGBIAO9,30

MOVBX,0

CALLINPUT

MOVJIASHU,BX

LOOP4:

GUANGBIAO10,30;相加

MOVAX,BEIJIASHU

ADDAX,JIASHU

CWD

MOVDX,0;扩展并求结果各位数值

MOVBX,10000

DIVBX

MOV[HE],AX

MOVAX,DX;余数给AX

CWD

MOVBX,1000

DIVBX

MOV[HE+2],AX

MOVAX,DX

CWD

MOVBX,100

DIVBX

MOV[HE+4],AX

MOVAX,DX

CWD

MOVBX,10

DIVBX

MOV[HE+6],AX

MOV[HE+8],DX

MOVSI,-2

MOVCX,5

LOOP5:

ADDSI,2;结果输出

MOVDX,HE[SI]

ADDDX,30H

MOVAH,02

INT21H

LOOPLOOP5;每位循环输出

LOOP_I:

;JIANFA

GUANGBIAO11,30

MOVAX,BEIJIASHU

CMPAX,JIASHU

JAEFLAG

XCHGAX,JIASHU

PUSHAX

MOVDX,OFFSETSTR16

MOVAH,09H

INT21H

POPAX

FLAG:

SUBAX,JIASHU

CALLPRINT

JMPLOOP6

LOOP6:

GUANGBIAO13,19;退出或继续

SHOWSTR11

MOVAH,01

INT21H

CMPAL,0DH;回车退出

JNELOOP7

MOVAH,4CH

INT21H

LOOP7:

QINGPING1,13,18,13,51

GUANGBIAO12,21

SHOWSTR12

JMPLOOP1

LOOP8:

MOVAH,4CH

INT21H

ERROR:

GUANGBIAO12,21

SHOWERR

JMPLOOP1

INPUTPROCNEAR;输入子程序

LP1:

MOVAH,01

INT21H

CMPAL,0dH;输入回车输入结束

JEEXIT

CMPAL,31H

JBERROR

CMPAL,39H

JAERROR;不是0~9之间则显示错误

SUBAL,30H

CBW

X

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

当前位置:首页 > 成人教育 > 自考

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

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