简易计算器程序设计剖析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计任务书

学生姓名:于强专业班级:电气0603

指导教师:刘劲松工作单位:武汉理工大学自动化学院

题目: 简易计算器程序设计

初始条件:

用汇编语言编写程序,实现简易计算器的功能。

要求完成的主要任务:

(1)简易计算器可进行2位十进制数以内的加减法运算;

(2)使用0~9数字键,+、-、=功能键,“C”或“c”作为清除键。如键入“11+12=”后即输出“23”,单击“C”或“c”键后清屏;

(3)可连续输入数据进行计算,直至单击“Q”或“q”键退出程序。

时间安排:

指导教师签名:年月日

系主任(或责任教师)签名:年月日

简易计算器程序设计

1程序分析及其方案

1.1程序分析

该程序的目的是通过汇编语言,实现简单的两位十进制数内的加减运算。程序通过数字和符号的输入,可以自动的出相应的计算结果。例如:在屏幕中输入:“10+2=”,回车输入后,屏幕显示“10+2=12”。并且该程序要求输入字母“C”或者“c”后,能清除屏幕内容。输入字母“Q”或者“q”后可以退出程序。

经过分析我们可以知道,程序主要由三个模块组成:1.计算模块。该模块的总用时能判断输入的数据和判断相应的运算类型。2.清屏模块。该模块的作用是当键入相应的指令,可以清除屏幕内容,使屏幕处于开始状态,清楚原来显示内容。3.退出模块。当键入相应指令后,程序可以自动退出。

1.2设计方案

设计时应该充分考虑任务书所给的各项要求。我在“微机原理实验平台集成开发环境”中进行程序的开发、修改和调试运行等测试。

在进行程序设计时,先进行程序的整体思路与要求,也就是设计内容的分析。当分析好后,画出相应的流程图,以便在写代码时,能够有一个比较好的思路。之后对所写的程序进行调试,看看所写的程序是否能满足系统要求。如果不能,则需要进行相应的修改,知道达到相应的要求。

2程序流程图设计及说明

2.1设计说明

程序设计遵循模块化程序,这样可以大大降低重复语句,增加程序的高效性。首先,设计处各个模块的作用。因为程序分别涉及到退出、清屏、计算、输入功能,因此再设计程序时,将这些功能模块化。在进行编制成功后,如果需要运行,只需要在主程序中进行相应的模块调用,就能实现相应的功能。

在设计模块时,应该把所有模块写在主程序前边或者在主程序前边有相应的定义。之后再根据每个模块的不同要求进行模块的编写。在写主程序时,当碰到相应的功能,此时只要通过命令调用模块,运行好,把模块计算的值返回这样可以实现模块的整体化,提高程序的高效,易修改,易查错的要求。

2.2流程方框图

图2-1 程序流程方框图

3程序设计

3.1光标定位程序段

CURS MACRO A,B

MOV AH,2 ;置光标位置

MOV BH,0 ;页号为0

MOV DH,A ;设置光标的坐标为(A.B)

MOV DL,B

INT 10H ;BIOS调用

ENDM

该程序段的总用时当调用该子程序时,只需如下列方式调用,如:CURS 2,20.此时表明将光标定位到屏幕(2,20)

3.2清屏程序段

CLEAR MACRO COLOR ;清屏

MOV AH,6 ;屏幕初始化

MOV AL,0 ;页号

MOV CH,0 ;设置左上角的坐标为(0,0)

MOV CL,0

MOV DL,100 ;设置右上角的坐标为(100,100)

MOV DH,100

MOV BH,COLOR ;卷入行属性

INT 10H ;BIOS调用

ENDM

该程序段的总用时是清除屏幕显示内容,调用方式:CLEAR 1EH

3.3输入程序段

CURS 2,20 ;设置光标为(2.20)DISPMSG MSG0 ;显示用户界面

CURS 8,41 ;设置光标为(8,41),第一行

MOV BX,0

MOV CX,2

NEWCHAR1:

MOV AH,1 ;键盘输入并回显

INT 21H ;DOS调用

CMP AL,30H ;检查输入的字符是不是数字JAE J1 ;如果不是,则转移至J1

JMP D2 ;是,转移到D2执行

J1: CMP AL,39H ; 与9的ASCII侣氡

JBE J2 ;如果输入的字符是0-9,则转移至J2

JMP D2 ;如果不是数字,则转移至D2

J2: SUB AL,30H CBW ;AL的内容符号扩展到AH

XCHG AX,BX

MOV DI,10

MUL DI

XCHG AX,BX

ADD BX,AX

LOOP NEWCHAR1

MOV DATA1,BX

CURS 11,41 ;设置光标位为(11,40),第二行

MOV BX,0

MOV CX,2

NEWCHAR2:

MOV AH,1 ;键盘输入并回显

INT 21H ;DOS调用

CMP AL,30H ;与0的ASCII码比较

JAE J3 ;如果输入数字大于等于0则跳转至

J3

JMP D2

J3: CMP AL,39H ;与9比较

JBE J4 ;如果小于或等于9则跳转

JMP D2 ;如果输入不是数字则跳转

J4: SUB AL,30H ;如果输入不是0-9,则转化成相应的字符

CBW ;将AL符号扩展到AH

XCHG AX,BX

MOV DI,10 MUL DI

XCHG AX,BX ADD BX,AX LOOP NEWCHAR2 MOV DATA2,BX MOV AX,DATA1 MOV BX,DATA2 PUSH AX PUSH BX

该程序段是输入数据,能使输入的数据相应的进行储存,并且之后可以调用,同时判断是否输入错误。

3.4判断计算类型,并计算

INT 21H ;DOS调用

CMP AL,'+'

JE ADDI ;如果运算符为+,则计算两数之和

CMP AL,'-'

JE SUBT ;如果运算符为-,则计算两数之差

CMP AL,'*'

JE MULT ;如果运算符为*,则计算两数之积

CMP AL,'/'

JE DIVI ;如果运算符为/,则计算两数之商

判断类型,并且调用相应的程序段或命令进行计算

4程序调试

1.通过编译系统编译调试连接后,启动程序,如4-1显示:

图4-1 程序启动后显示内容

相关文档
最新文档