1、 一、课程设计目的一、课程设计目的 通过课程设计,进一步加深对课本知识的理解,进一步掌握微机 应用系统的硬件和软件的开发,提高汇编语言程序设计的能力, 提高 我们的开发能力和创新能力。 通过编写程序, 可以提高汇编程序水平, 提高分析问题的能力。 独立编写程序,明白和掌握程序的原理和实现 方式。为以后的设计提供经验。学习和掌握计算机中常用接口电路的 应用和设计技术,充分认识理论知识对应用技术的指导性作用, 进一 步加强理论知识与应用相相结合的实践与锻炼,通过这次课程设计, 进一步加深对专业知识的和理论知识的学习和理解。 增强分析问题和 解决问题的能力,了解微机原理和接口技术的新发展。 二、课程
2、设计内二、课程设计内容容 设计一个简易计算器, 可以对两个一位数进行加法和减法运算, 例如 1+2=3, 8-5=3。 *Display Program* The addition and subtraction operations of two one-digit,Input “=“,then output the result: 如果输入的不是数,提示出错,显示:input error! 如果输入 e,则退出程序。 如果输入 c,则清屏。 三、课程设计过程三、课程设计过程 1、算法设计(画出算法流程图)、算法设计(画出算法流程图) 开始 输入一个字符 Q/q 09+-=? 存储到 BUF
3、 =? BUF+1 出错 BUF+2=+? 输出结果(考虑输出为负数 的情况) 清屏 N Y N Y N Y N N SI+1提取两加数相 加(考虑进位) 输出提示语句 SI+1提取减数和被减数 数相减(考虑借位) Y 结束 C/c? Y 0DH? 换行 N Y N 2、程序代码清单、程序代码清单 data segment meg1 db 0ah,0dh, *Display Program*,0ah,0dh db 0ah,0dh,The addition and subtraction operations of two one-digit,Input “=“,then output the
4、result:$ meg2 db 0ah,0dh,Input error!,0ah,0dh db 0ah,0dh,Please input again:$ data ends code segment assume cs:code,ds:data,ss:stack start: mov dx,data mov ds,dx lea dx,meg1 mov ah,09h int 21h ;显示提示信息 p1: mov ah,01h int 21h call panduan mov bh,al ;输入字符,判断输入的是否是数字,若不是, 则提示错误 mov ah,01h int 21h mov cl
5、,al ;输入符号 mov ah,01h int 21h call panduan ;输入字符,判断输入的是否是数字,若不是, 则提示错误 xchg al,bh sub al,30h sub bh,30h ;将输入的两个数装换成对应的 ASCII 码 cmp cl,+ jz jiafa cmp cl,- jz jianfa jmp error ;判断是执行加还是减操作,若输入的不是+或 -,则提示错误 p2: mov ah,01 int 21h cmp al,= jz display jne error ;判断输入的符号是否是=, 是这输出结果, 否则 提示错误 panduan proc ne
6、ar ;判断是否是数字的子程序 cmp al,e jz exit cmp al,E jz exit cmp al,c jz clear cmp al,C jz clear cmp al,0 jb error cmp al,9 ja error ret panduan endp jiafa: ;实现加法功能 mov ah,0 add al,bh mov bh,10 div bh add ax,3030h mov bx,ax jmp p2 jianfa: ;实现减法功能 cmp al,bh ;判断结果是整数还是负数 jb fushu mov bl,0 p3: sub al,bh mov bh,al add bh,30h jmp p2 fushu