2022年2022年汇编语言程序设计————计算器 .pdf
《2022年2022年汇编语言程序设计————计算器 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年汇编语言程序设计————计算器 .pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 目录一设计内容 . 2 二设计方案 . 2 1. 主程序模块 . . 2 2. 赋权值模块 . . 2 3. 加减乘除运算子程序模块. . 2 4. 调用赋权宏子程序模块 . . 2 5. 回车换行宏模块 . . 2 6.9 号功能显示字符串宏模块. . . 2 三设计框图 . 3四程序代码 . 4五运行结果 . 9六设计总结 . 9名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 10 页 - - - - - - - - - 2 计算器汇编语言程序设计一设计内容从键盘
2、输入一个十进制两位数的四则运算表达式,如23*56(8*19)/6 678,编程计算表达式的值,输出十进制结果(有可能是三位或四位十进制), */ 位置任意。并要求程序能反复执行直道对“还要继续吗?(y/n ) ”之类的提示回答“n”或“ N”为止。四则运算主要包括以下几个模块:(1)主程序模块. (2)赋权宏模块. (3)加减乘除运算子程序模块. (4)调用赋权宏子程序模块. (5)回车换行宏模块. (6)9号功能显示字符串宏模块.二设计方案1.主程序模块 . 主程序初始化数据段,调用显示宏show显示界面,输入字符或数字并判断,调用子程序dyfq 调用赋权宏 fq为符号赋权,从而判断优先级
3、,调用加减乘除运算子程序ys对判断出的相应运算符进行运算,输出运算结果, 判断是否继续, 继续则返回输入,不继续则退出程序. 2.赋权宏模块 . 通过定义宏 fq,定义了变元 a,b进行参数传递,并使用替换运算符& 使变元 a与标号 s对应 .接着给对应的符号赋予权值,将其权值存入ch中. 3.加减乘除运算子程序模块. 运算模块实现了将ax入栈保存,然后将ax,bx赋值为 0,判断 cl中的符号是否为乘号* ,若为乘号 *则将 number中的数字与其下一位的数字相乘,并把结果存入该位置,类似的若不为乘号 *则接着判断是否为除号/,若为除号 /则进行除法运算,然后判断是否为加法,为加法则进行加
4、法运算, 接着判断是否为减法,为减法则进行减法运算并将结果存入当前的计算的第二个数的位置. 4.调用赋权宏子程序模块 . 该模块实现了调用赋权宏fq为(,),*,/,+,-,= 等符号分别赋权值为5,1,4,4,3,3,0.从而可以通过设定的权值来判断优先级. 5.回车换行宏模块 . 通过 2号功能的输出功能,将0dh赋予 dl输出,再调用 2号功能,将 0ah赋予 dl输出,从而实现回车换行功能. 6.9号功能显示字符串宏模块. 通过定义宏 show,用 9号显示功能,通过变元str将字符串显示出来。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - -
5、 - - - - - 名师精心整理 - - - - - - - 第 2 页,共 10 页 - - - - - - - - - 3 三设计框图开始加载数据段附加段显示界面input 输入数字或字符输入的是=,数字,符号?SIGN1=0?保存数字显示错误= 数字符号SIGN2=0?n y 下 移2位 将SIGN1 赋 0 设优先级,并判断是何符号n y 根据符号决定运算 , 将 值 存 入numbOutput 通过 2 号功能显示结果是否继续?结束y n Di+2 取 number,operator的偏移地址名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -
6、- - - - - - 名师精心整理 - - - - - - - 第 3 页,共 10 页 - - - - - - - - - 4 四程序代码DATAS SEGMENT STR1 DB 0AH,0DH,*$ STR2 DB 13,10, * 1 2 3 4 5 *$ STR3 DB 13,10, * 6 7 8 9 0 *$ STR4 DB 13,10, * + - * / = *$ STR5 DB 0AH,0DH,*$ STR6 DB 13,10, PLEASE INPUT A FORMULA: $ STR7 DB CONTINUE(Y/N)?$ SIGN1 DW 0 ;值为 0代表输入的不
7、是数字,为1代表输入的是数字SIGN2 DW 0 ;值为 0代表输入的符号是匹配的,为1输入的符号不匹配NUMBER DW 20 DUP(0) ;保存输入的数值OPERATOR DB $ ;判断输入的运算符是否为空 DB 10 DUP(0) ;保存该运算符对应的权值ERROR DB WRONG!$ DATAS ENDS SHOW MACRO STR ; 宏定义 , 显示字符串 LEA DX,STR MOV AH,9 INT 21H ENDM FQ MACRO ASCII,A,B ;宏定义 , 给运算符赋权值 CMP AL,ASCII JNE S&A MOV CH,B JMP S7 ENDM H
8、CHH MACRO ;宏定义 , 回车换行MOV AH,2 MOV DL,0DH INT 21H MOV AH,2 MOV DL,0AH INT 21H ENDM CODES SEGMENT MAIN PROC FAR ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX LEA DI,NUMBER LEA SI,OPERATOR 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 10 页 - - - - - - -
9、- - 5 SHOW STR1 SHOW STR2 SHOW STR3 SHOW STR4 SHOW STR5 SHOW STR6 MOV AX,0 MOV BX,0 MOV CX,0 MOV DX,0 START1: HCHH INPUT: MOV AH,1 INT 21H CMP AL,= JE LET0 CMP AL,28H ;第二种情况,第一次输入的与28H也就是 ( 比较JB INPUT ;小于 28H=(则重新输入CMP AL,39H JA INPUT ;大于 39H=9 则重新输入CMP AL,2FH ;判断是数字还是符号 JBE LET1 ;是符号转入响应操作INC WORD
10、PTR SIGN1 ; 是数字的话将数字标志位加1 SUB AL,30H MOV AH,0 XCHG AX,DI MUL BX MOV BX,10 XCHG AX,DI ADD DI,AX JMP INPUT CALL FUN RET MAIN ENDP FUN PROC NEAR;* LET0: CMP WORD PTR SIGN2,0; 判断配对标志位JE LET1 ;经过左括号和右括号抵消为0则跳转JMP LET8 ;否则跳转到 BC 显示输入错误LET1: CMP WORD PTR SIGN1,0 JE LET2 ADD DI,2 ; 名师资料总结 - - -精品资料欢迎下载 - -
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年汇编语言程序设计计算器 2022 汇编语言 程序设计 计算器
限制150内