课 设 报 告
XX 工程学院软件学院
题
班
姓
学
目: 四则运算
级: XX
名: XX
号: XX
指导老师: XX
日
期:
年 月 日
第一章
设计目的 ....................................................................................................................................................... 1
目 录
第二章
第三章
概要设计 ....................................................................................................................................................... 1
2.1 系统总体分析 ............................................................................................................................................... 1
2.2 主模块框图及说明 ....................................................................................................................................... 1
详细设计 ....................................................................................................................................................... 2
3.1 主模块及子模块概述...................................................................................................................................2
3.1.1 主模块 ............................................................................................................................................... 3
3.1.2 子模块 ............................................................................................................................................... 3
3.2 各模块详细设计........................................................................................................................................... 4
3.2.1 界面初始化模块 ...............................................................................................................................4
3.2.2 菜单选择模块 ...................................................................................................................................5
3.2.3 鼠标初始化模块 ...............................................................................................................................5
3.2.4 鼠标状态获取模块 ...........................................................................................................................5
3.2.5 十进制有符号数输出模块 ...............................................................................................................6
程序调试 ....................................................................................................................................................... 6
4.1 运行界面分析 ............................................................................................................................................... 6
4.2 算法分析 ....................................................................................................................................................... 8
4.3 调试过程与分析........................................................................................................................................... 8
心得体会 ....................................................................................................................................................... 9
5.1 设计体会 ....................................................................................................................................................... 9
5.2 系统改进 ....................................................................................................................................................... 9
第四章
第五章
附 录
1
源程序: ................................................................................................................................................................... 1
微机原理课程设计报告
第一章 设计目的
进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基
本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、
编制和调试一定规模的汇编语言程序的水平。
第二章 概要设计
2.1 系统总体分析
本程序以 windows XP 下的自带计算器为参考模型进行设计。模仿其界面、操作模式及计算
模式(支持鼠标)。
程序可输入的数值范围大小为十进制的 0 到 65535。
在执行计算时程序内部均以一个字大小无符号数进行四则运算,当程序输出结果时则以一
个字有符号数进行输出(即范围从-32768 到 32767)。例如,在执行 5600-6120 时程序会输出结
果-520,而执行 65534+1 时程序输出-1。
可以执行多个数的按序运算。例如可以输入 100*2+299+5-4 再按等号按钮,程序则输出 500。
可以利用上次运行结果进行追加运算。例如上次运行结果为 500 此时输入减号再输入 499
(这里也可以是一连串的计算)按下等号,程序输出结果 1。
2.2 主模块框图及说明
见图 2.2。
XX 工程学
第 1页
微机原理课程设计报告
图 2.2
第三章 详细设计
3.1 主模块及子模块概述
程序中先调用 WindowInit 函数进行初始化窗口界面。再调用 MenuChoose 函数对各按钮进
行侦听,单鼠标点击各按钮时,程序对其进行处理并调用各子模块执行各对应动作。
XX 工程学
第 2页
微机原理课程设计报告
3.1.1 主模块
函数名称:WindowInit。功能:初始化窗口界面。
函数名称:MenuChoose。功能:侦听菜单按钮。
函数名称:MouseInit。功能:初始化鼠标。
函数名称:GetMouse。功能:获取鼠标状态。
函数名称:OutInterger。功能:在当前位置输出有符号十进制数。
3.1.2 子模块
DrawButton 入口参数:CX=左上角坐标,DX=右下角坐标。
功能:在对应坐标位置画按钮
DrawRect 入口参数:BH=前、背景色,CX=左上角坐标,DX=右下角坐标。
功能:在对应坐标位置画对应颜色的矩形框。
DrawChar 入口参数:DX=坐标,AL=字符
功能:在对应坐标位置输出字符。
ButtonDown 入口参数:DX=按钮编号值
功能:使对应按钮出现按钮下凹效果。
DrawButtonDown 入口参数:CX=左上角坐标,DX=右下角坐标
功能:在对应位置画下凹的按钮。(为 ButtonDown 模块调用,简化代码量)
DrawButtonFram 入口参数:AL=边框种类,BL=字符,CX=上边框坐标,DX=下边框坐标。
功能:在各种类按钮上对应画边框和字符。
ButtonUp DX=按钮编号值
功能:使下凹的按钮出现上浮(复位)效果。并返回 AX=按钮功能值
XX 工程学
第 3页
微机原理课程设计报告
GetCursor 入口参数:无
功能:获取光标的坐标值,存放在 DX 寄存器中。
Roll 入口参数:无
功能:使显示区域的内容向上翻滚一行。
GetSign 入口参数:无
功能:读取内存中所保存的运算符号,并存放在 Al 中。
AddInterger 入口参数:无
功能:对 NumberTemp 和 Number 中的内容进行求和,并将结果保存在 Number 内存单元中。
SubInterger 入口参数:无
功能:对 NumberTemp 和 Number 中的内容进行求差,并将结果保存在 Number 内存单元中。
MulInterger 入口参数:无
功能:对 NumberTemp 和 Number 中的内容进行求积,并将结果保存在 Number 内存单元中。
DivInterger 入口参数:无
功能:对 NumberTemp 和 Number 中的内容进行求和,并将结果保存在 Number 内存单元中。
3.2 各模块详细设计
3.2.1 界面初始化模块
函数名称:WindowInit。
入口参数:无
返回值:无
功能:设置显示器模式,40*25 大小,16 色文本模式。在左边按钮区域,设置按钮上的字
符为蓝色,按钮为灰色,底层背景为深灰色,以及黑色的按钮阴影。右边显示区域为黑色,边
框为灰色,字符颜色为白色。
XX 工程学
第 4页
微机原理课程设计报告
3.2.2 菜单选择模块
函数名称:MenuChoose。
入口参数:无
返回值:无
功能:首先调用 MouseInit 函数模块初始化鼠标。再嵌套两个循环,外围循环侦听鼠标左键
是否按下,诺按下则执行对应程序段进行处理(如按钮下沉效果等)再进入内围循环;内围循
环侦听鼠标左键是否放开,当鼠标左键放开后,被选中的按钮浮起(复位),并进行对应处理(如
按下数字按钮则将对应数字进行处理,当下次点击非数字按钮时将得到的数值进行运算并写入
内存,并调用对应的功能子模块。)
备注:此模块为程序的主要核心,并调用各小模块函数来实现程序功能。
3.2.3 鼠标初始化模块
函数名称:MouseInit。
入口参数:无
返回值:AX=0H(初始化失败,程序结束)或 AX=0FFFFH(初始化成功)
功能:调用鼠标 33H 中断的 00H 功能进行初始化鼠标,初始化成功则调用 01H 功能显示鼠
标,并返回值 AX=0H,诺初始化失败则返回 AX=0FFFFH。
3.2.4 鼠标状态获取模块
函数名称:GetMouse
入口参数:无
返回值:BX=鼠标左键按钮状态(0 放开,1 按下),CX=鼠标列坐标,DX=鼠标行坐标。
功能:调用鼠标 33H 中断,获取鼠标按键状态和坐标位置。
XX 工程学
第 5页
微机原理课程设计报告
3.2.5 十进制有符号数输出模块
函数名称:OutInterger。
入口参数:AX=要输出的数值
返回值:无
功能:将一个字大小的有符号数用十进制输出。输出位置为当前光标位置。
备注:此函数模块的实现原理是首先比较 AX 的最高位是否为 1,诺为 1 则输出负号再减 1
取反(诺为 0 则不进行此步处理)。然后将 AX 中的内容依次除 10,得到的余数存放在 DX 中,
再将 DX 的内容入栈保护,当余数为 0 时结束循环,最后再依次出栈到 DX 中并加 30H,调用 AH
为 2 的 21H 中断输出。如此便得以输出一个字大小的有符号数。
第四章 程序调试
4.1 运行界面分析
程序初始界面见图 4.1.1。
XX 工程学
第 6页
图 4.1.1