ImageVerifierCode 换一换
格式:DOCX , 页数:36 ,大小:247.04KB ,
资源ID:22248891      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22248891.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(武汉理工十进制加减计算器Word文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、阅读资料:1)IBMPC汇编语言程序设计实验教程实验2.42)IBMPC汇编语言程序设计(第2版)例6.11时间安排:设计安排一周:周1、周2:完成系统分析及设计。周3、周4:完成程序调试,和验收。周5:撰写课程设计报告。指导教师签名: 2012年06月29日系主任(或责任教师)签名: 目录1.需求说明 42.设计说明 4 2.1 简要分析 4 2.2 概要设计 4 2.2.1 主要模块 4 2.2.2 主函数结构. 53.详细的算法描述 6 3.1 详细的算法描述 6 3.2 算法流程图 11 3.2.1 程序流程图 11 3.2.2 输入函数(inputdec)流程图. 12 3.2.3

2、输出函数(outputdec)流程图. 12 3.2.4 输出算术表达式函数(show)流程图 134.源程序与执行结果 13 4.1 源程序.13 4.2 执行结果 19 4.2.1 测试方法 19 4.2.2 测试结果.195.使用说明.206.总结.21十进制数加减计算器的设计1.需求说明 十进制数加减计算器的设计,要求完成:(1) 用汇编语言正确编写程序,完成简单的十进制数的加减运算,(2) 求能正确进行输入和输出操作,界面追求友好,尽量实现菜单操作(3) 用若干测试用例来测试程序的正确性2.设计说明2.1 简要分析 要正确、友好地完成用汇编语言设计十进制数的加减计算器,我们应该完成以

3、下几个功能:(1) 相关菜单及字符输出的设计(2) 十进制数的输入(3) 十进制数的输出(4) 加法运算(5) 减法运算(6) 输出运算表达式(7) 回车换行功能(因为为了控制格式,经常要用到)2.2 概要设计2.2.1 主要模块(1)菜单及字符 menu db |-|0dh,0ah db | 1.Add |0dh,0ah db | 2.Sub |0dh,0ahdb | 0.Exit |0dh,0ahdb |-|0dh,0ahdb Please input your choice:$ mess1 db Please input the first number: $ mess2 db Plea

4、se input the second number: mess3 db The result is : mess4 db -$ mess5 db +$mess6 db =$(2)十进制数的输入inputdec proc 实现代码 retinputdec endp(3)十进制数的输出outputdec procoutputdec endpaddfun proc显示mess1 ;提示输入第一个数call inputdec ;输入第一个数显示 mess2 ;提示输入第二个数输入第二个数做加法运算显示mess3 ;call show ;输出运算表达式retaddfun endpsubtract pr

5、oc 显示mess1 ;做减法运算subtract endp(6) 输出运表达算式函数show proccall outputdec ;输出第一个数输出运算符号输出第二个数输出等号输出运算结果show endp(7) 回车换行crlf proc实现代码crlf endp2.2.2 主函数结构 main proc 显示menu ;供选择 输入选项 判断选项 Case 1: call addfun Case 2: call subtract Case 3: 退出程序 main endp3.详细的算法描述3.1详细的算法描述 (1)main函数 push ds xor ax,ax push ax m

6、ov ax,data mov ds,ax ks:lea dx,menu ;输出菜单项 mov ah,09h int 21h mov al,0 mov ah,01h ;输入选择项 sub al,30h cmp al,2 ;判断选择项 jz l2 ;如果输入为2 ,则跳转到l2 cmp al,1 jz l1 ;如果输入为1,则跳转到l1 mov ah,4ch ;这两句为正常返回dos界面 l1:call addfun ;调用加法函数 jmp ks ;返回到菜单 l2: call subtract;调用减法操作 (2)addfun函数(加法运算函数) addfun proc call crlf mo

7、v bp,1 ;给下面的show输出中间的运算符做标记,1为加号 lea dx,mess1 ;给出输入第一个数的提示信息 call inputdec;调用输入函数,输入第一个数 mov si,bx ;第一个数保存在si中 lea dx,mess2 ;给出输入第二个数的提示信息调用输入函数,输入第二个数 mov di,bx ;第二个数保存在di中 mov bx,si ;将第一个数保存到bx中,再进行操作,以免影响到的输出 add bx,di ;第一个数和第二个数相加,结果保存在bx中 lea dx,mess3 ;给出输出结果的提示信息 call show ;调用show函数,输出算术表达式 re

8、t ;返回函数调用处 addfun endp(3)subtract函数(减法运算函数) subtract proc mov bp,2 ;给下面的show输出中间的运算符做标记,2为减号 lea dx,mess1; mov ah,09h mov bx,si cmp bx,di ;比较第一个数和第二人数的大小 js subl1 ;如果为负(第一个数小一些)则跳转 sub bx,di ;否则直接进行计算,结果保存在bx中 jmp subl2 subl1:mov bp,3 ;为show里面是否输出负号作准备,3的时候要输出负号 push di ;先将第二个操作数进栈,否则下面的减法操作会将其值改变 s

9、ub di,bx mov bx,di pop di ;第二个操作数出栈,再赋给di寄存器 subl2:lea dx,mess3 ;输出运算表达式的提示调用show函数,输出运算表达式 subtract endp(4)inputdec函数(十进制输入函数) inputdec proc mov bx,0 il0:mov ah,01h ;输入数字 cmp al,0dh ;判断是否为回车 jz iexit ;如果是回车,则返回到函数调用处 sub al,30h ;得到输入数字的真实大小 mov ah,0 xchg bx,ax ;将bx值与ax值交换,因为下面乘以10是将ax中的值乘10 mov cx,

10、10 ;注意,这里不能用CL,否则数较大时就会出现问题 mul cx ;将ax中的值乘以10,也就是将bx中原来的值乘以10 add bx,ax jmp il0 ;进行输入下一数值位 iexit:call crlf inputdec endp(5)outputdec函数(十进制输出函数) outputdec proc push bp mov bp,0 ;前导0输出与否的标志,0时不输出,1时输出 mov ax,bx mov dx,0 ;在进行除法之前,要对dx赋0,否则结果出错 mov cx,10000 div cx ;除法,字操作,商在ax中,余数在dx中 mov bx,dx ;保存余数,作

11、为下一次裤除数 mov dl,al cmp dl,0 ;将万位同0比较 jz ol0 ;如果万位为0则不输出万位如果万位不为0,则应将bp设为1,以后的0都要输出 or dl,30h mov ah,02h int 21h ;输出万位 ol0:mov ax,bx ;输出千位的方法与万位相同 mov dx,0 mov cx,1000字操作,商在ax中,余数在dx中 cmp bp,0 jz ol1输出千位 jmp ol2 ol1:cmp dl,0 jz ol2 mov bp,1 ol2:输出百位与千位、万位方法相同 mov cx,100 jz ol3输出百位 jmp ol4 ol3: jz ol4

12、ol4:输出十位的方法与前面几位方法相同 mov cl,10 div cl ;字节操作,商在al中,余数在ah中 mov bl,ah ;保存余数,作为下一次裤除数,也就是个位数 mov dl,al jz ol5输出十位 jmp ol6 ol5: jz ol6 ol6:mov dl,bl ;在上面,bl中的数直接就应该为个位,所以直接输出 pop bp ;恢复bp outputdec endp(6)show函数(输出运算表达式函数) show proc push bx ;把运算结果保存起来第一个数放在si中 call outputdec; cmp bp,3 ;是否为减号 jz sl0 cmp b

13、p,2 ;判断是否为减号 lea dx,mess5 ;输出加号 jmp sl1 sl0:lea dx,mess4 ;输出减号 sl1:mov bx,di ;第二个数放在di中 call outputdec ; lea dx,mess6 ;判断是否需要输出负号 jnz sl2 lea dx,mess4 ;输出负号 sl2:pop bx ;得到运算结果 show endp(7)crlf函数(输出回车换行函数) crlf proc push ax push dx mov ah,02h mov dl,0dh ;输出回车 mov dl,0ah ;输出换行ah值被改变 pop dx pop ax crlf

14、 endp3.2 算法流程图3.2.1 程序流程图 Y N YN 返回3.2.2 十进制输入(inputdec)流程图 Y 3.2.3 十进制输出(outputdec)流程图 待输出数不是个位数 3.2.4 输出算术表达式(show)流程图 2 or 3 加法 14.源程序与执行结果(含测试方法和测试结果)4.1 源程序 assume cs:code,ds:data data segment ;定义数据段data ends ;数据段结束code segment ;定义代码段 main proc ;主函数 push dslea dx,menu mov ah,01h cmp al,2 jz l2

15、jz l1 mov ah,4chcall addfun jmp ks main endp ;主函数结束 addfun proc ;加法运算函数给下面的show输出中间的运算符做标记 lea dx,mess1 call inputdec lea dx,mess2 add bx,di lea dx,mess3输出结果 addfun endp ;加法运算函数结束 subtract proc ;减法运算函数 cmp bx,di如果为负则跳转 sub bx,di为show里面是否输出负号作准备 push di pop dilea dx,mess3 call show subtract endp ;减法运算函数结束 inputdec proc ;十进制输入函数mov ah,01h jz iexit xchg bx,ax mul cl add bx,ax jmp il0 inputdec endp ;十进制输入函数结束 outputdec proc ;十进制输出函数 push bp ;用来做前导0的标记 mov bp,0 mov ax,bx在进行除法之前,要对dx赋0,否则结果over devide cmp dl,0 jz ol0mov ax,bx mov bl,

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

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