汇编语言实现十进制加减计算器
- 格式:docx
- 大小:75.53 KB
- 文档页数:36
汇编语言实现十进制加减计算器
集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988) 学 号: 0120 课 程 设 计
题 目 十进制数加减计算器 学 院 计算机科学与技术 专 业 计算机科学与技术 班 级 计算机0808班 姓 名 何爽 指导教师 袁小玲 2010 年 12 月 31 日
课程设计任务书
学生姓名: 何爽 专业班级: 计算机0808班 指导教师: 袁小玲 工作单位:计算机科学与技术学院 题 目: 十进制数加减计算器的设计 初始条件: 理论:学完“汇编语言程序设计”、“课程计算机概论”、“高级语言程序设计”和“数字逻辑”。 实践:计算机学院科学系实验中心提供计算机和软件平台。如果自己有计算机可以在其上进行设计。 要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) (1) 十进制数加减计算器的设计。 (2) 程序应有操作提示、输入和输出,界面追求友好,最好是菜单式的界面。 (3) 设计若干用例(测试数据),上机测试程序并分析(评价)所设计的程 序。 (4) 设计报告格式按附件要求书写。课程设计报告书正文的内容应包括: 在正文第一行写课程设计题目; 1.需求说明(要求、功能简述)或问题描述; 2.设计说明(简要的分析与概要设计); 3.详细的算法描述; 4.源程序与执行结果(含测试方法和测试结果); 5.使用说明; 6.总结,包括设计心得(设计的特点、不足、收获与体会)和展望(该程序进一步改进扩展的设想)。 时间安排: 设计时间一周: 周1:查阅相关资料。 周2:系统分析,设计。 周3~4:编程并上机调试。 周5:撰写课程设计报告。 设计验收安排:20周星期五8:00起到计算机学院科学系实验中心进行上机验收。 设计报告书收取时间:20周的星期五下午5:00之前。 指导教师签名: 2010年12月31日 系主任(或责任教师)签名: 2010年12月31日 目录 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)菜单及字符 menu db ‘|--------------------------------------|’0dh,0ah db ‘| 1.Add |’0dh,0ah db ‘| 2.Sub |’0dh,0ah db ‘| 0.Exit |’0dh,0ah db ‘|--------------------------------------|’0dh,0ah db ‘Please input your choice:$’ mess1 db 'Please input the first number: $' mess2 db 'Please input the second number: $' mess3 db 'The result is : $' mess4 db '-$' mess5 db '+$' mess6 db '=$' (2)十进制数的输入 inputdec proc 实现代码 ret inputdec endp (3)十进制数的输出 outputdec proc 实现代码 ret outputdec endp (4) 加法运算 addfun proc 显示mess1 ;提示输入第一个数 call inputdec ;输入第一个数 显示 mess2 ;提示输入第二个数 call inputdec ;输入第二个数 做加法运算 显示mess3 ;提示输入第一个数 call show ;输出运算表达式 ret addfun endp (5) 减法运算 subtract proc 显示mess1 ;提示输入第一个数 call inputdec ;输入第一个数 显示 mess2 ;提示输入第二个数 call inputdec ;输入第二个数 做减法运算 显示mess3 ;提示输入第一个数 call show ;输出运算表达式 ret subtract endp (6) 输出运表达算式函数 show proc call outputdec ;输出第一个数 输出运算符号 call outputdec ;输出第二个数 输出等号 call outputdec ;输出运算结果 ret show endp (7) 回车换行 crlf proc 实现代码 ret crlf endp 2.2.2 主函数结构 main proc 显示menu ;供选择 输入选项 判断选项 Case 1: call addfun Case 2: call subtract Case 3: 退出程序 main endp 3.详细的算法描述 3.1详细的算法描述 (1)main函数 main proc push ds xor ax,ax push ax mov ax,data mov ds,ax ks:lea dx,menu ;输出菜单项 mov ah,09h int 21h mov al,0 mov ah,01h ;输入选择项 int 21h sub al,30h cmp al,2 ;判断选择项 jz l2 ;如果输入为2 ,则跳转到l2 cmp al,1 jz l1 ;如果输入为1,则跳转到l1 mov ah,4ch ;这两句为正常返回dos界面 int 21h l1:call addfun ;调用加法函数 jmp ks ;返回到菜单 l2: call subtract;调用减法操作 jmp ks ;返回到菜单 main endp (2)addfun函数(加法运算函数) addfun proc call crlf mov bp,1 ;给下面的show输出中间的运算符做标记,1为加号 lea dx,mess1 ;给出输入第一个数的提示信息 mov ah,09h int 21h call inputdec;调用输入函数,输入第一个数 mov si,bx ;第一个数保存在si中 lea dx,mess2 ;给出输入第二个数的提示信息 mov ah,09h int 21h call inputdec;调用输入函数,输入第二个数 mov di,bx ;第二个数保存在di中 mov bx,si ;将第一个数保存到bx中,再进行操作,以免影响到的输出 add bx,di ;第一个数和第二个数相加,结果保存在bx中 lea dx,mess3 ;给出输出结果的提示信息 mov ah,09h int 21h