1.总体设计思想及主要功能
1.1总体设计思想
程序主要分为主程序,输入子程序,输出子程序,加法子程序,减法子程序,乘法子程序,除法子程序。根椐输入的符号选用不同的运算子程序,最后调用输出子程序。各个程序的具体做法,详见后面的流程图和分析。本程序的关键是在输入、输出程序,值得特别注意的地方是call ret的调用,而且还要清楚跳转的返回地址;由于计算器比数学用表等计算工具要先进得多,应该积极倡导学生加速用计算器取代数学用表的进程。从键盘输入数据与运算符;可以进行加、减、乘、除四则运算,输入和输出的数均必须为十进制的。输入的数据最大为双字的,。如果输入的除数为0;输出错误信息。输入的表达式有误,输出错误信息。输入的两个数,不能除尽时,输出除数输入错误信息。如果输入了空格,同样输出错误信息。输出的数据最大可输出4字,为的是输出乘除法的结果。除法最后所得结果可为小数点后四位值。
  1.2实现的主要功能
(1) 输入和输出的数均为十进制的。
(2) 输入的数据最大为双字的且必须是数字,当输入字母或其他非数字符号时,输出错误信息。
(3) 如果输入的除数为0;输出错误信息。
(4) 输入的表达式有误,输出错误信息。
(5) 输入的两个数,有一个大于双字,输出错误信息。
(6) 如果输入了空格,输出错误信息。
(7) 输出的数据最大可输出4字,为的是输出乘法的结果。
(8) 除法有不能整除的情况时,输出小数结果保留小数点后四位并显示除数输入错误信息。
2.简单计算器的流程图
2.1 主程序的流程图
主程序设计思路说明:
输入的数据如果超过双字,就会溢出,因为我定义的存储器为双字的。输入什么样的数都会有一个范围,一定得有这个信息。根据输入的符号调用相应的函数。除法和别的不一样,还要输出余数,并且,除数不能是0。所以我就在里面调用了输出函数,要输出两次,而外面只能输出一次,为了更好输出结果,我就只好这样了。输入y可以继续进行运算,要注意的是,要把原来的数给清0,不然得不到答案
2.2 子程序输入函数流程图
十进制输入
   
子程序输入函数设计思路说明:
先把DATA中的数据清0,为的是能继续进行运算,而不会输出错误的答案,result不用清0,按任意键返回到重新输入。然后依次执行以下操作:输入数字和符号;输入两位十进制数自动结束输入,如果输入的不是数字和空格,我就把其值存到FUHAO中,随后进行第二个数的输入;把字符转换成数字,并扩展到AH中,把输入的数存起来。因为后面要用到AX,会 改变。SI=0,DATA+SI是第一个数的低字位,SI=4DATA+SI汇编语言清华大学出版社是第二个数的低字位。这里都是字乘法,DX是结果的高位,AX是结果的低位。SI=0DATA+SI+2是第一个数的高字位,同上。乘以10后结果的低位加上前面乘法后DX的值,结果存到存储器的高位段。存储器乘以10后,加上输入的数字。高字加上产生的进位。
2.3 子程序输出函数流程图
子程序输出函数设计思路说明:
这里可以输出4字的数,只有乘除法的结果会达到这么大,为了减少除法的次数,用了多个比较。result存的是加减乘除后的结果。主要算法就是把result除以10,余数进栈,一直除,直到result0 。出栈,输出结果,一个一个字符输出。运算之前保存了栈顶SP,当栈顶再达到原来的位置时,说明输出 存在 栈内的余数完毕。
2.4 子程序除法流程图
子程序除法函数设计思路说明:
子程序除法除数为双字的,当然除数是不能为0的。除法做的是先从高位开始,依次除以除数,高位的余数和低位组合起来,再除以除数。运算过程中余数保存起来。把余数存到result中,因为display输出的是result的值
3.简单计算器的设计程序

CURS MACRO A,B  输出界面设置
MOV AH,2 ;置光标位置 
MOV BH,0 ;页号为
MOV DH,A ;设置光标的坐标为(A.B) 
MOV DL,B 
INT 10H ;BIOS调用 

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。