武汉理工十进制加减计算器Word文档格式.docx

上传人:b****6 文档编号:22248891 上传时间:2023-02-03 格式:DOCX 页数:36 大小:247.04KB
下载 相关 举报
武汉理工十进制加减计算器Word文档格式.docx_第1页
第1页 / 共36页
武汉理工十进制加减计算器Word文档格式.docx_第2页
第2页 / 共36页
武汉理工十进制加减计算器Word文档格式.docx_第3页
第3页 / 共36页
武汉理工十进制加减计算器Word文档格式.docx_第4页
第4页 / 共36页
武汉理工十进制加减计算器Word文档格式.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

武汉理工十进制加减计算器Word文档格式.docx

《武汉理工十进制加减计算器Word文档格式.docx》由会员分享,可在线阅读,更多相关《武汉理工十进制加减计算器Word文档格式.docx(36页珍藏版)》请在冰豆网上搜索。

武汉理工十进制加减计算器Word文档格式.docx

阅读资料:

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

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

时间安排:

设计安排一周:

周1、周2:

完成系统分析及设计。

周3、周4:

完成程序调试,和验收。

周5:

撰写课程设计报告。

指导教师签名:

2012年06月29日

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

目录

1.需求说明…………………………………………………………………………………………………4

2.设计说明…………………………………………………………………………………………………4

2.1简要分析………………………………………………………………………………………4

2.2概要设计………………………………………………………………………………………4

2.2.1主要模块………………………………………………………………………4

2.2.2主函数结构………………………………………………………………….5

3.详细的算法描述……………………………………………………………………………………6

3.1详细的算法描述…………………………………………………………………………6

3.2算法流程图…………………………………………………………………………………11

3.2.1程序流程图…………………………………………………………………11

3.2.2输入函数(inputdec)流程图………………………….12

3.2.3输出函数(outputdec)流程图……………………….12

3.2.4输出算术表达式函数(show)流程图……………13

4.源程序与执行结果………………………………………………………………………………13

4.1源程序………………………………………………………………………………………….13

4.2执行结果……………………………………………………………………………………19

4.2.1测试方法………………………………………………………………………19

4.2.2测试结果……………………………………………………………………….19

5.使用说明……………………………………………………………………………………………….20

6.总结……………………………………………………………………………………………………….21

十进制数加减计算器的设计

1.需求说明

十进制数加减计算器的设计,要求完成:

(1)用汇编语言正确编写程序,完成简单的十进制数的加减运算,

(2)求能正确进行输入和输出操作,界面追求友好,尽量实现菜单操作

(3)用若干测试用例来测试程序的正确性

2.设计说明

2.1简要分析

要正确、友好地完成用汇编语言设计十进制数的加减计算器,我们应该完成以下几个功能:

(1)相关菜单及字符输出的设计

(2)十进制数的输入

(3)十进制数的输出

(4)加法运算

(5)减法运算

(6)输出运算表达式

(7)回车换行功能(因为为了控制格式,经常要用到)

2.2概要设计

2.2.1主要模块

(1)菜单及字符

menudb‘|--------------------------------------|’0dh,0ah

db‘|1.Add|’0dh,0ah

db‘|2.Sub|’0dh,0ah

db‘|0.Exit|’0dh,0ah

db‘|--------------------------------------|’0dh,0ah

db‘Pleaseinputyourchoice:

$’

mess1db'

Pleaseinputthefirstnumber:

$'

mess2db'

Pleaseinputthesecondnumber:

mess3db'

Theresultis:

mess4db'

-$'

mess5db'

+$'

mess6db'

=$'

(2)十进制数的输入

inputdecproc

实现代码

ret

inputdecendp

(3)十进制数的输出

outputdecproc

outputdecendp

addfunproc

显示mess1;

提示输入第一个数

callinputdec;

输入第一个数

显示mess2;

提示输入第二个数

输入第二个数

做加法运算

显示mess3;

callshow;

输出运算表达式

ret

addfunendp

subtractproc

显示mess1;

做减法运算

subtractendp

(6)输出运表达算式函数

showproc

calloutputdec;

输出第一个数

输出运算符号

输出第二个数

输出等号

输出运算结果

showendp

(7)回车换行

crlfproc

实现代码

crlfendp

2.2.2主函数结构

mainproc

显示menu;

供选择

输入选项

判断选项

Case1:

calladdfun

Case2:

callsubtract

Case3:

退出程序

mainendp

3.详细的算法描述

3.1详细的算法描述

(1)main函数

pushds

xorax,ax

pushax

movax,data

movds,ax

ks:

leadx,menu;

输出菜单项

movah,09h

int21h

moval,0

movah,01h;

输入选择项

subal,30h

cmpal,2;

判断选择项

jzl2;

如果输入为2,则跳转到l2

cmpal,1

jzl1;

如果输入为1,则跳转到l1

movah,4ch;

这两句为正常返回dos界面

l1:

calladdfun;

调用加法函数

jmpks;

返回到菜单

l2:

callsubtract;

调用减法操作

(2)addfun函数(加法运算函数)

addfunproc

callcrlf

movbp,1;

给下面的show输出中间的运算符做标记,1为加号

leadx,mess1;

给出输入第一个数的提示信息

callinputdec;

调用输入函数,输入第一个数

movsi,bx;

第一个数保存在si中

leadx,mess2;

给出输入第二个数的提示信息

调用输入函数,输入第二个数

movdi,bx;

第二个数保存在di中

movbx,si;

将第一个数保存到bx中,再进行操作,以免影响到的输出

addbx,di;

第一个数和第二个数相加,结果保存在bx中

leadx,mess3;

给出输出结果的提示信息

callshow;

调用show函数,输出算术表达式

ret;

返回函数调用处

addfunendp

(3)subtract函数(减法运算函数)

subtractproc

movbp,2;

给下面的show输出中间的运算符做标记,2为减号

leadx,mess1;

movah,09h

movbx,si

cmpbx,di;

比较第一个数和第二人数的大小

jssubl1;

如果为负(第一个数小一些)则跳转

subbx,di;

否则直接进行计算,结果保存在bx中

jmpsubl2

subl1:

movbp,3;

为show里面是否输出负号作准备,3的时候要输出负号

pushdi;

先将第二个操作数进栈,否则下面的减法操作会将其值改变

subdi,bx

movbx,di

popdi;

第二个操作数出栈,再赋给di寄存器

subl2:

leadx,mess3;

输出运算表达式的提示

调用show函数,输出运算表达式

subtractendp

(4)inputdec函数(十进制输入函数)

inputdecproc

movbx,0

il0:

movah,01h;

输入数字

cmpal,0dh;

判断是否为回车

jziexit;

如果是回车,则返回到函数调用处

subal,30h;

得到输入数字的真实大小

movah,0

xchgbx,ax;

将bx值与ax值交换,因为下面乘以10是将ax中的值乘10

movcx,10;

注意,这里不能用CL,否则数较大时就会出现问题

mulcx;

将ax中的值乘以10,也就是将bx中原来的值乘以10

addbx,ax

jmpil0;

进行输入下一数值位

iexit:

callcrlf

inputdecendp

(5)outputdec函数(十进制输出函数)

outputdecproc

pushbp

movbp,0;

前导0输出与否的标志,0时不输出,1时输出

movax,bx

movdx,0;

在进行除法之前,要对dx赋0,否则结果出错

movcx,10000

divcx;

除法,字操作,商在ax中,余数在dx中

movbx,dx;

保存余数,作为下一次裤除数

movdl,al

cmpdl,0;

将万位同0比较

jzol0;

如果万位为0则不输出万位

如果万位不为0,则应将bp设为1,以后的0都要输出

ordl,30h

movah,02h

int21h;

输出万位

ol0:

movax,bx;

输出千位的方法与万位相同

movdx,0

movcx,1000

字操作,商在ax中,余数在dx中

cmpbp,0

jzol1

输出千位

jmpol2

ol1:

cmpdl,0

jzol2

movbp,1

ol2:

输出百位与千位、万位方法相同

movcx,100

jzol3

输出百位

jmpol4

ol3:

jzol4

ol4:

输出十位的方法与前面几位方法相同

movcl,10

divcl;

字节操作,商在al中,余数在ah中

movbl,ah;

保存余数,作为下一次裤除数,也就是个位数

movdl,al

jzol5

输出十位

jmpol6

ol5:

jzol6

ol6:

movdl,bl;

在上面,bl中的数直接就应该为个位,所以直接输出

popbp;

恢复bp

outputdecendp

(6)show函数(输出运算表达式函数)

showproc

pushbx;

把运算结果保存起来

第一个数放在si中

calloutputdec;

cmpbp,3;

是否为减号

jzsl0

cmpbp,2;

判断是否为减号

leadx,mess5;

输出加号

jmpsl1

sl0:

leadx,mess4;

输出减号

sl1:

movbx,di;

第二个数放在di中

calloutputdec;

leadx,mess6;

判断是否需要输出负号

jnzsl2

leadx,mess4;

输出负号

sl2:

popbx;

得到运算结果

showendp

(7)crlf函数(输出回车换行函数)

crlfproc

pushax

pushdx

movah,02h

movdl,0dh;

输出回车

movdl,0ah;

输出换行

ah值被改变

popdx

popax

crlfendp

3.2算法流程图

3.2.1程序流程图

Y

N

Y

N

返回

3.2.2十进制输入(inputdec)流程图

Y

3.2.3十进制输出(outputdec)流程图

待输出数不是个位数

3.2.4输出算术表达式(show)流程图

2or3

加法

1

4.源程序与执行结果(含测试方法和测试结果)

4.1源程序

assumecs:

code,ds:

data

datasegment;

定义数据段

dataends;

数据段结束

codesegment;

定义代码段

mainproc;

主函数

pushds

leadx,menu

movah,01h

cmpal,2

jzl2

jzl1

movah,4ch

calladdfun

jmpks

mainendp;

主函数结束

addfunproc;

加法运算函数

给下面的show输出中间的运算符做标记

leadx,mess1

callinputdec

leadx,mess2

addbx,di

leadx,mess3

输出结果

addfunendp;

加法运算函数结束

subtractproc;

减法运算函数

cmpbx,di

如果为负则跳转

subbx,di

为show里面是否输出负号作准备

pushdi

popdi

leadx,mess3

callshow

subtractendp;

减法运算函数结束

inputdecproc;

十进制输入函数

movah,01h

jziexit

xchgbx,ax

mulcl

addbx,ax

jmpil0

inputdecendp;

十进制输入函数结束

outputdecproc;

十进制输出函数

pushbp;

用来做前导0的标记

movbp,0

movax,bx

在进行除法之前,要对dx赋0,否则结果overdevide

cmpdl,0

jzol0

movax,bx

movbl,

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

当前位置:首页 > 初中教育 > 科学

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

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