汇编简单计算器设计课设

上传人:汽*** 文档编号:479085349 上传时间:2023-08-12 格式:DOC 页数:17 大小:165.50KB
返回 下载 相关 举报
汇编简单计算器设计课设_第1页
第1页 / 共17页
汇编简单计算器设计课设_第2页
第2页 / 共17页
汇编简单计算器设计课设_第3页
第3页 / 共17页
汇编简单计算器设计课设_第4页
第4页 / 共17页
汇编简单计算器设计课设_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《汇编简单计算器设计课设》由会员分享,可在线阅读,更多相关《汇编简单计算器设计课设(17页珍藏版)》请在金锄头文库上搜索。

1、 中 北 大 学课程设计任务书10/11学年第 二 学期学 院:信息与通信工程学院专 业:自动化学 生 姓 名:张欣宇学 号:0805054116课程设计题目:简单计算器设计 起 迄 日 期:2011年6 月20日2011年6月24日课程设计地点:中北大学指 导 教 师:张艳兵、张秀艳系主任:王忠庆下达任务书日期: 2011 年 6 月 19日课 程 设 计 任 务 书1设计目的:用汇编语言编程设计一个简单的计算器,实现两个运算数的键盘输入和加减乘除运算,并显示运算结果。通过设计,掌握键盘输入、屏幕显示和算术运算指令的应用,进一步提高综合运用知识的能力。2设计内容和要求(包括原始数据、技术参数

2、、条件、设计要求等):(1) 要求键盘输入2位十进制数,进行加减乘除运算,并在屏幕上显示出运算结果。(2) 选择方案,画出流程图。(3) 编写汇编语言源程序,并调试。(4) 写出设计说明书。3. 设计工作任务及工作量的要求(1) 查阅资料,确定设计方案对任意给定的正确四则运算表达式,能按照括号、加减乘除计算的优先级,正确计算其结果值并输出。且能计算的正确数据范围为16位无符号数,即结果只能在065535之间,否则错误。(2) 画出程序流程图(3) 编写并调试汇编语言源程序 (4)撰写课程设计说明书(5)心得体会4主要参考文献:1 汇编语言清华大学出版社 王爽编 2IBM-PC汇编语言程序设计清

3、华大学出版社5.设计成果形式及要求:课程设计说明书1份 程序流程图1份 程序清单1份6工作计划及进度:起 迄 日 期工 作 内 容11年6月20日 6月21 日6月 21日 6月22日6月22日 6月23 日6月 23日 6月24日6 月24日 查阅资料,确定设计方案画出流程图编写并调试程序撰写课程设计说明书课程设计答辩系主任审查意见: 签字: 年 月 日中北大学汇编原理课程设计说明书学生姓名: 张欣宇学 号:0805054116学 院:信息与通信工程学院专 业:自动化题 目: 键盘和显示器设计 指导老师张艳兵职称讲师 2011 年6 月24日设计目的:用汇编语言编程设计一个简单的计算器,实现

4、两个运算数的键盘输入和加减乘除运算,并显示运算结果。通过设计,掌握键盘输入、屏幕显示和算术运算指令的应用,进一步提高综合运用知识的能力。设计要求:(1) 要求键盘输入2位十进制数,进行加减乘除运算,并在屏幕上显示出运算结果。(2) 选择方案,画出流程图。编写汇编语言源程序,并调试、写出设计说明书。设计过程:在DOS下进入masm的目录,用masm程序将编辑好的asm文件编译输出目标文件obj文件,用link程序把obj文件连接生成exe文件后,直接运行该可执行文件进入该程序的界面,提示输入正确的表达式,以等号结束,程序给出正确的结果。输入的表达式中只能含有加减乘除及数字括号,最后以等号结束,如

5、果输入其它字符,程序会给出相应的提示信息此程序计算的结果范围最大为65535,所以当输入的数值计算结果超出范围时,结果溢出,给出的结果不正确。程序中可连续输入表示计算,按ESC键退出,返回DOS。程序无需查错功能,所输入的都是正确的四则运算表达式,并且表达式中运算分量均为无正负号整数,运算符为+、-、*、/,表达式以字符=结束。根据要求,首先需要从DOS界面输入用户的四则混合表达式,其中包括括号(或),数字,运算符+,-,*,/。因为用户从键盘输入的是ASCII码,因些需要做相应的转换。例如将字符串123转化为十进制的值123。其次,需要对(,),+,-,*,/的优先级进行判断。(3)子程序流

6、程:子过程详细说明 1、 compare子函数 用于判断键盘输入的符号是否合法,若合法,则在屏幕上显示,否则报错2、 mult子函数 用于对输入的数字进行乘10累加操作,以便将连续输入的数字字符串转换为相对应的数值3、trans子函数 核心算法,将输入的中缀表达式转换为后缀表达式4、value子函数 核心算法,将后缀表达式结合堆栈结构进行表达式求值5、divi子函数 辅助子过程,通过除以10以及进一步处理将某数值转换为相应的ASCII字符串 按照个十百位6、 print子过程 配合divi子过程,将表达式求值结果输出到屏幕上用到中断向量表 如图所示程序:STACK SEGMENT PARA S

7、TACK DW 256 DUP(0) STACK ENDS DATA SEGMENT STRI DB 50 DUP(0) EXP DB 30 DUP(0) TRACK DB 30 DUP(0) INSTR DB 100 DUP(0) MSG0 DB input :,0DH,0AH,$ MSG1 DB 0DH,0AH,wrong,$ MSG2 DB 0DH,0AH,( and ) does not match,$ MSG3 DB 0DH,0AH,div by zero error,$ MSG4 DB 0DH,0AH,fushu,$ MSG5 DB 0DH,0AH,any key to conti

8、nue,esc to exit,$ DATA ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK,DS:DATA START: MOV AX,STACK MOV SS,AX MOV AX,DATA MOV DS,AX MOV DX,OFFSET MSG0 MOV AH,9 INT 21H XOR AX,AX ;READ MOV BX,OFFSET INSTR MOV DL,20H JMP L2 COMPARE PROC NEAR CMP AL,0DH JZ L2 MOV DL,AL MOV AH,2 INT 21H RET COMPARE ENDP L2: MO

9、V AH,8 INT 21H CALL COMPARE CMP AL,3DH ;end with = JZ L2_OVER MOV AH,39H CMP AH,AL ;del the wrong data ( 9 ) JNB CONTI MOV AH,2 MOV DL,8 INT 21H MOV DL,20H INT 21H MOV DL,8 INT 21H JMP L2 CONTI: CMP AL,28H ;( JZ L2_YES CMP AL,29H JZ L2_YES ;) CMP AL,2AH ;* JZ L2_YES CMP AL,2BH ; + JZ L2_YES CMP AL,2DH ; - JZ L2_YES CMP AL,2FH ; / JZ L2_YES ; back function - CMP AL,08H JNZ NO_8 L2_NEXT: PUSH DX MOV DL,20H MOV AH,2 INT 21H MOV DL,8 MOV AH,2 INT 21H CMP BX,OFFSET INSTR JZ L2 DEC BX MOV AL,0 MOV BX,AL POP DX JMP L2 ; NO_8: MOV AH,2FH

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号