欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年2022年汇编语言程序设计————计算器 .pdf

    • 资源ID:27229336       资源大小:140.19KB        全文页数:10页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年2022年汇编语言程序设计————计算器 .pdf

    1 目录一设计内容 . 2 二设计方案 . 2 1. 主程序模块 . . 2 2. 赋权值模块 . . 2 3. 加减乘除运算子程序模块. . 2 4. 调用赋权宏子程序模块 . . 2 5. 回车换行宏模块 . . 2 6.9 号功能显示字符串宏模块. . . 2 三设计框图 . 3四程序代码 . 4五运行结果 . 9六设计总结 . 9名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 10 页 - - - - - - - - - 2 计算器汇编语言程序设计一设计内容从键盘输入一个十进制两位数的四则运算表达式,如23*56(8*19)/6 678,编程计算表达式的值,输出十进制结果(有可能是三位或四位十进制), */ 位置任意。并要求程序能反复执行直道对“还要继续吗?(y/n ) ”之类的提示回答“n”或“ N”为止。四则运算主要包括以下几个模块:(1)主程序模块. (2)赋权宏模块. (3)加减乘除运算子程序模块. (4)调用赋权宏子程序模块. (5)回车换行宏模块. (6)9号功能显示字符串宏模块.二设计方案1.主程序模块 . 主程序初始化数据段,调用显示宏show显示界面,输入字符或数字并判断,调用子程序dyfq 调用赋权宏 fq为符号赋权,从而判断优先级,调用加减乘除运算子程序ys对判断出的相应运算符进行运算,输出运算结果, 判断是否继续, 继续则返回输入,不继续则退出程序. 2.赋权宏模块 . 通过定义宏 fq,定义了变元 a,b进行参数传递,并使用替换运算符& 使变元 a与标号 s对应 .接着给对应的符号赋予权值,将其权值存入ch中. 3.加减乘除运算子程序模块. 运算模块实现了将ax入栈保存,然后将ax,bx赋值为 0,判断 cl中的符号是否为乘号* ,若为乘号 *则将 number中的数字与其下一位的数字相乘,并把结果存入该位置,类似的若不为乘号 *则接着判断是否为除号/,若为除号 /则进行除法运算,然后判断是否为加法,为加法则进行加法运算, 接着判断是否为减法,为减法则进行减法运算并将结果存入当前的计算的第二个数的位置. 4.调用赋权宏子程序模块 . 该模块实现了调用赋权宏fq为(,),*,/,+,-,= 等符号分别赋权值为5,1,4,4,3,3,0.从而可以通过设定的权值来判断优先级. 5.回车换行宏模块 . 通过 2号功能的输出功能,将0dh赋予 dl输出,再调用 2号功能,将 0ah赋予 dl输出,从而实现回车换行功能. 6.9号功能显示字符串宏模块. 通过定义宏 show,用 9号显示功能,通过变元str将字符串显示出来。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 10 页 - - - - - - - - - 3 三设计框图开始加载数据段附加段显示界面input 输入数字或字符输入的是=,数字,符号?SIGN1=0?保存数字显示错误= 数字符号SIGN2=0?n y 下 移2位 将SIGN1 赋 0 设优先级,并判断是何符号n y 根据符号决定运算 , 将 值 存 入numbOutput 通过 2 号功能显示结果是否继续?结束y n Di+2 取 number,operator的偏移地址名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 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代表输入的不是数字,为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 HCHH 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 页 - - - - - - - - - 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 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 ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 10 页 - - - - - - - - - 6 MOV WORD PTR SIGN1,0 ; 将数字标志位复0 LET2: CALL DYFQ ;设定优先级CMP CH,5 ;判断输入的符号是否是左括号JNE LET3 ;不是则判断输入的是否是右括号INC WORD PTR SIGN2 ; 是左括号,括号标志位加1 LET3: CMP CH,1 ;判断输入的是否是右括号JNE LET4 DEC WORD PTR SIGN2 ;是右括号,括号标志位减1 LET4: CMP BYTE PTRSI,$ ;判断运算符存储区是否为空JE LET6 CMP CH,SI ;SI的内容为前一个符号或其权值JA LET6 CMP BYTE PTRSI,( JNE LET5 DEC SI JMP INPUT LET5: DEC SI MOV CL,SI CALL YS ;判断是什么运算符并进行相应的计算JMP LET4 LET6: CMP CH,0 ;判断是否是等号JE OUTPUT CMP CH,1 JE INPUT ;“) ”不保存,输入下一个数INC SI MOV SI,AL ;保存符号INC SI CMP CH,5 ;判断是否是左括号JNE LET7 MOV CH,2 ;改变 ( 的权值LET7: MOV SI,CH ;紧跟着保存符号的权值JMP INPUT LET8: LEA DX,ERROR MOV AH,9 INT 21H JMP EXIT RET 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 10 页 - - - - - - - - - 7 FUN ENDP;* DYFQ PROC ;子程序 DYFQ 调用宏 FQ,判断优先级FQ 28H,1,5 ;调用宏 FQ 为( 赋权值S1:FQ 29H,2,1 ;调用宏 FQ 为) 赋权值S2:FQ 2AH,3,4 ;调用宏 FQ 为*赋权值S3:FQ 2FH,4,4 ;调用宏 FQ 为/ 赋权值S4:FQ 2BH,5,3 ;调用宏 FQ 为+赋权值S5:FQ 2DH,6,3 ;调用宏 FQ 为- 赋权值S6:FQ 3DH,7,0 ;调用宏 FQ 为=赋权值S7:RET DYFQ ENDP;* OUTPUT: ;输出运算结果SUB DI,2 CMP WORD PTRDI,0 JGE K1 NEG WORD PTRDI ;求负数的绝对值MOV DL,- MOV AH,2 INT 21H K1: MOV BX,10000 MOV CX,5 MOV SI,0 K2: MOV AX,DI CWD DIV BX MOV DI,DX CMP AL,0 JNE K3 CMP SI,0 JNE K3 CMP CX,1 JE K3 JMP K4 K3: MOV DL,AL ADD DL,30H MOV AH,2 INT 21H MOV SI,1 K4: MOV AX,BX ;实现将 10000变为 1000,100,10 MOV DX,0 MOV BX,10 DIV BX MOV BX,AX LOOP K2 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 10 页 - - - - - - - - - 8 HCHH SHOW STR7 MOV AH,1 INT 21H CMP AL,n ;判断是否继续输入,输入n则结束操作JE EXIT CMP AL,N JE EXIT MOV WORD PTRDI+2,0 LEA DI,NUMBER LEA SI,OPERATOR JMP START1 EXIT: MOV AH,4CH INT 21H YS PROC NEAR ; 子程序,进行相应的运算PUSH AX MOV AX,0 MOV BX,0 CMP CL,2AH ;乘法运算JNE CHU SUB DI,2 XCHG BX,DI SUB DI,2 XCHG AX,DI IMUL BX MOV DI,AX ADD DI,2 JMP FINISH CHU: CMP CL,2FH ;除法运算JNE JIA SUB DI,2 XCHG BX,DI SUB DI,2 XCHG AX,DI CWD IDIV BX MOV DI,AX ADD DI,2 JMP FINISH JIA: CMP CL,2BH ;加法运算JNE JIAN 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 10 页 - - - - - - - - - 9 SUB DI,2 XCHG BX,DI SUB DI,2 ADD DI,BX ADD DI,2 JMP FINISH JIAN: CMP CL,2DH ;减法运算JNE FINISH SUB DI,2 XCHG BX,DI SUB DI,2 SUB DI,BX ADD DI,2 FINISH: POP AX RET YS ENDP;* CODES ENDS END START 五运行结果六设计总结本次设计让我学到了很多关于汇编的知识,首先,本次设计是以四则运算为主题,通过在课堂上学习的基本知识和基本方法以及平时积累的知识和方法来实现对带符号数的加减乘除运算, 在设计过程中, 对我已有的知识进行了巩固,对我之前不太了解的知识有了一定的了解,通过亲身去编写程序,使得自己的实际动手能力得以增强。其次,通过本次设计,使我对模块化, 结构化的程序设计方法掌握的更加透彻,再者,就是对于宏的定义,调用以及子程序的定义,调用的方法掌握的更加熟练。本次设计是要实现对有符号数的加减乘除等四则运算,程序开始先定义了显示界面的诸多字符串, 经过显示界面,接下来,定义了判断数字和判断运算符的存储区,通过这两个存储区来判断当前位置输入的是数字还是运算符,然后,定义了保存数字和保存运算符的存储区,提示错误的字符串,显示宏,赋权宏,回车换行宏等,通过主程序对各个宏及子程序的调用, 判断出输入的是数字还是运算符,若是运算符又是运算符中的哪类运算符,然后,进名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 10 页 - - - - - - - - - 10 行加减乘除运算, 最后将运算结果存入保存数字的存储区中,运用到显示输出模块将最后的运算结果显示出来,从而实现了对带符号数的四则运算功能。通过这次设计, 我在汇编语言方面收获了很多东西,具体而言,在宏定义,宏调用和子程序定义, 调用方面我学到了比以前更多的知识,尤其是通过子程序调用宏这种嵌套模式可以简化许多复杂的程序,让程序更加简洁易懂,此外,这次设计让我认识到了上课认真听讲的必要性, 老师在课堂上讲解的许多知识都很重要,在本次设计中就充分体现了这一点,所以学好课堂老师讲解的知识是很有必要的。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 10 页 - - - - - - - - -

    注意事项

    本文(2022年2022年汇编语言程序设计————计算器 .pdf)为本站会员(Che****ry)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开