当前位置首页 > 百科资料> 正文

汇编语言加减乘除四则运算课程设计

2022-07-09 04:37:26 百科资料

《汇编语言加减乘除四则运算课程设计》是用汇编语言进行编辑加减乘除四则运算的程序设计。

格式

  课程设计指导书

  姓 名

  学号

  班级

  课程名称

  汇编语言

  课程性质

  课程设计

  设计时间

  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,0AHDB '*---1:ADD--2:SUB--3:MUL--4:DIV--Q:QUIT---------*',0DH,0AHDB '*------- IT*2011-1*WEIGUANG-------------------*',0DH,0AHDB 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

  RET

  MAIN ENDP

  INPUT 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,1INT 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,1INT 21H

  CMP AL,'Y'

  JE EXIT0

  CMP AL,'y'

  JNE START

  EXIT0: MOV AH,4CH

  INT 21H

  YES1: CALL JIAJ

  MP START

  YES2: CALL JIAN

  JMP START

  YES3: CALL CHENGJMP START

  YES4: CALL CHU

  RET

  CHOOSEENDP

  WRONG PROC NEAR

  LEA DX,PR

  CALL OUTPUT

  LEA DX,WRO

  CALL OUTPUT

  JMP START

  RET

  WRONG ENDP

  JIA PROC NEARIN16

  ADD BX,[SI]

  LEA DX,PR

  CALL OUTPUT

  LEA DX,PR1

  CALL OUTPUT

  CALL OUTBX

  RET

  JIA ENDP

  JIAN PROC NEARIN16

  SUB BX,[SI]

  NEG BX

  LEA DX,PR

  CALL OUTPUT

  LEA DX,PR2

  CALL OUTPUT

  CALL OUTBX

  RETJ

  IAN ENDP

  CHENG PROC NEARIN16

  MOV DX,0

  MOVAX,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

  RET

  CHENG ENDP

  CHUPROC NEARIN16

  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

  RETCHU

  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 CHJ

  NZ ROTATE

  RETOUTBX

  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的过程终止等,还有其他安逸些相关指令,在平时的学习中叶学到过,但是经过此次课设,我对汇编语言的了解会更加深刻。当然,在短时间里不可能掌握汇编语言的全部,还需要在以后的学习中不断地实践和积累。

  设计成绩: 教师签名:

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:baisebaisebaise@yeah.net