课程设计指导书
姓 名 学号 班级
课程名称 汇编语言 课程性质 课程设计
设计时间 2011年12月15日—— 2011 年12月22日
设计名称 加减乘除四则运算
设计目的 实现16进制数的加减乘除运算
设计要求 完成加减乘除运算
设计思路与设计过程 本次设计要求系统实现的功能如下:从键盘接受十六进制数。能实现加、减、乘、除四则运算。执行时,能在文件名后显示计算表达式。按Q键退出程序
计划与进度 12月15日~12月16日:收集资料,方案选择12月17日~1月18日:整体流程,程序细节12月19日~1月22日:调试程序,报告撰写12月末:交设计报告
任课教师意 见
备 注
课程设计报告
课程: 汇编语言
学号:
姓名:
班级:
教师:
时间: 2011/12/22
计算机科学与技术系
设计名称:加减乘除四则运算 日期:2011 年12 月22 日
设计内容: (1)建立一个DOS下的菜单界面,界面要显示各功能键的作用和提示信息。 (2)在十六进制的四则运算中,要输入两个数,故要用两个寄存器来存储, 第一个数由SI指向,第二个数存放在BX中,这样可以使计算更加方便。 (3) 将十六进制存放到寄存器时,采用的是移位存放的方法。例如:将EF22H 存放到BX中,首先要输入的是E,存放在AL中后,用CBW扩展,然后 将BX左移四位,再加上AX,即BX为000EH,然后输入第二个数F,同 上让BX移四位,再加上AX,得BX为00EFH,以此类推,可将EF22存 入BX中。 (4)在显示BX寄存器的内容时,例如BX中存放的是EF22,那么首先让其 循环左移四位,即BX变为F22E,然后让BL赋给AL,在让AL加上0FH, 即屏蔽了AL的高四位,使其为零,然后判断是字母还是数字,做相应 的处理,输出AL中的内容即可。后三位输出的同上。 (5)屏幕上显示计算式需利用多字符输出功能,结果需转换成十六进制。 (6)退出时按Q,选择Y/N。
设计目的与要求:本次设计要求系统实现的功能如下:从键盘接受十六进制数。能实现加、减、乘、除四则运算。执行时,能在文件名后显示计算表达式。按Q键退出程序。
设计环境或器材、原理与说明:实验器材:计算机本次设计需要实现的模块图图如所示 四则运算器程序设计算法选择设置数制转换设置 界面设置
(1)界面设置 主要实现确定界面样式的功能,以菜单形式显示。算法选择设置 用于选择加、减、乘、除来进行运算。(3)数制转换设置 应用十进制的转换算法来处理加、减、乘、除四则运算。 流程图: 开 始 初始化 输入算法选择键X 十六进制加法Y X=1? X=2?X=3? X=4 ?X=Q/q?X=Y/y? 输入第一个数 十六进制减法 十六进制乘法 十六进制除法提示出错!Y Y Y N N N N N Y Y N
输入第二个数 结 束显示计算式和计算结果
设计过程(步骤)或程序代码(可以加页):IN16 MACRO LEA DX,PR CALL OUTPUT LEA DX,INPUT1 CALL OUTPUT CALL INPUT LEA SI,RESULT MOV [SI],BX LEA DX,PR CALL OUTPUT LEA DX,INPUT2 CALL OUTPUT CALL INPUT ENDM DATA SEGMENT BUF DB '*------- WELCOME TO CALCULATOR SYSTEM ---------*',0DH,0AH DB '*---1:ADD--2:SUB--3:MUL--4:DIV--Q:QUIT---------*',0DH,0AH DB '*------- IT*2011-1*WEIGUANG-------------------*',0DH,0AH DB 0DH,0AH,'Please input the select number:','$' INPUT1 DB 'Please input the first number xiao yu 4 wei:','$' INPUT2 DB 'Please input the second number xiao yu 4 wei:','$' RESULT DW ?,? WRO DB 'The number you input is wrong,please input again:',0DH,0AH,'$' PR DB 0DH,0AH,'$' PR1 DB 'A + B=$' PR2 DB 'A - B=$' PR3 DB 'A * B=$' PR4 DB 'A / B=$' PR5 DB '......$' PR6 DB 'Are you sure to exit?(Y/N)$' DATA ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE ,DS:DATA START: MOV AX,DATA MOV DS,AX LEA DX,BUF CALL OUTPUT SUB AX,AX CALL CHOOSE JMP START RETMAIN ENDPINPUT PROC NEAR MOV BX,0 NEWCHAR: MOV AH,1 INT 21H CMP AL,0DH JE EXIT CMP AL,'A' JAE H0 CMP AL,'0' JAE H1 H0: SUB AL,37H JMP ADDTO H1: SUB AL,30H JMP ADDTO ADDTO: MOV CL,4 SHL BX,CL MOV AH,0 ADD BX,AX JMP NEWCHAR EXIT: RET INPUT ENDP OUTPUT PROC NEAR MOV AH,09H INT 21H RET OUTPUT ENDP CHOOSE PROC NEAR MOV AH,1 INT 21H CMP AL,'1' JE YES1 CMP AL,'2' JE YES2 CMP AL,'3' JE YES3 CMP AL,'4' JE YES4 CMP AL,'q' JE EXIT1 CMP AL,'Q' JE EXIT1 CALL WRONG EXIT1: LEA DX,PR CALL OUTPUT LEA DX,PR6 CALL OUTPUT MOV AH,1 INT 21H CMP AL,'Y' JE EXIT0 CMP AL,'y' JNE START EXIT0: MOV AH,4CH INT 21H YES1: CALL JIA JMP START YES2: CALL JIAN JMP START YES3: CALL CHENG JMP START YES4: CALL CHU RET CHOOSE ENDP WRONG PROC NEAR LEA DX,PR CALL OUTPUT LEA DX,WRO CALL OUTPUT JMP START RET WRONG ENDP JIA PROC NEAR IN16 ADD BX,[SI] LEA DX,PR CALL OUTPUT LEA DX,PR1 CALL OUTPUT CALL OUTBX RET JIA ENDP JIAN PROC NEAR IN16 SUB BX,[SI] NEG BX LEA DX,PR CALL OUTPUT LEA DX,PR2 CALL OUTPUT CALL OUTBX RET JIAN ENDP CHENG PROC NEAR IN16 MOV DX,0 MOV AX,BX MUL WORD PTR[SI] MOV BX,AX PUSH BX PUSH DX LEA DX,PR CALL OUTPUT LEA DX,PR3 CALL OUTPUT POP DX MOV BX,DX CALL OUTBX POP BX CALL OUTBX RETCHENG ENDP CHU PROC NEAR IN16 MOV AX,[SI] MOV DX,0 DIV BX PUSH DX PUSH AX LEA DX,PR CALL OUTPUT LEA DX,PR4 CALL OUTPUT POP AX MOV BX,AX CALL OUTBX LEA DX,PR5 CALL OUTPUT POP DX MOV BX,DX CALL OUTBX RET CHU ENDP OUTBX PROC NEAR MOV CH,4 ROTATE:MOV CL,4 ROL BX,CL MOV AL,BL AND AL,0FH ADD AL,30H CMP AL,3AH JL PRINTIT ADD AL,7H PRINTIT:MOV DL,AL MOV AH,2 INT 21H DEC CH JNZ ROTATE RET OUTBX ENDP CODE ENDS END MAIN 代码用5号字单倍行距
设计结果与分析(可以加页):操作说明: (1)按提示输入1,2,3,4。(2)1:加法ADD。(3)2:减法SUB。(4)3:乘法MUL。(5)4:除法DIV。输入一个小于4位的十六进制数,回车。再输入一个小于4位的十六进制数,回车。显示计算式和结果。退出按Q,选择Y/N。 程序运行如下:加法:算法选择1,按提示输入两个十六进制数,回车后显示计算式 和结果。程序运行截图如图3所示。 图3 加法程序截图 (2)减法:算法选择2,按提示输入两个十六进制数,回车后显示计算式和 结果,若结果为负数,则屏幕上结果显示为补码。程序运行截图如图4 所示。 图4 减法程序截图 (3)乘法:算法选择3,按提示输入两个十六进制数,回车后显示计算式和 结果。程序运行截图如图5所示。 图5 乘法程序截图 (4)除法和退出:算法选择3,按提示出入两个十六进制数,回车后显示计 算式和结果,结果包括商和余数。按Q键,选择Y,即可退出程序。程 序运行截图如图6所示。 图6 除法及退出运行截图 程序运行后可以看出,程序完成了十六进制加减乘除四则运算,按Q键,可以算则Y/N,选择Y,则退出程序,选择N,就继续运行,也符合设计要求。同时,屏幕上可以显示计算式和结果,也完成了设计要求。
设计体会与建议:汇编语言是一项实用性很强的技术,只有进行实际操作,将理论应用于实际中,才能确实掌握书中的知识点。通过做这次课程设计,我受益匪浅,让我对汇编的知识有了更深的了解。在这几天的时间里,我遇到了很多的问题,可以说是一个接一个的来,这个解决了,可是又来了一个。有时候我觉得自己是没法再写下去了,但是,有时候我就是不会放弃的,有了不明白的地方,就和同学讨论,这让我更深切的体会到人与人之间的那种相互协调合作的机制。本次的汇编语言课程设计是通过大量的查阅资料和搜索信息资料来完成的,在设计的过程使我掌握了许多的电脑基本技能及理解查阅资料的基本方法,同时经过我的不断查阅,理解资料,加深了对汇编语言的理解与认识。在设计的整个过程中,我体会到了设计的快乐,和小小的成就感。我的课设利用了很多DOS的调用,有01H号的单字符输入,09H号的多字符输出,4CH的过程终止等,还有其他安逸些相关指令,在平时的学习中叶学到过,但是经过此次课设,我对汇编语言的了解会更加深刻。当然,在短时间里不可能掌握汇编语言的全部,还需要在以后的学习中不断地实践和积累。
设计成绩: 教师签名: 年 月 日