算式计算.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算式计算

算式计算 一、程序要求: 输入一个由“+,-,*,/(整除)及()”组成的算式(运算结果为—32768——+32767),计算并显示结果。 应用:了解栈的应用。 提示:1、运用分支、循环、子程序等编程形式; 2、运用键盘、显示器、文件的中断调用。 3、显示时,注意字符与数值的转换。 二、程序代码 B_p equ byte ptr W_p equ word ptr D_p equ dword ptr ;主程序开始 CODE segment Assume cs:code,ds:code Org 100h Newstar: jmp star Even Num1 dw 0,0 Num2 dw 0,0 Num3 dw 0,0 Jgv4 dw 0,0 Ysf label word Ysf1 db 0 Ysf2 db 0 Juv db 0 Uv db 0 Overs label near Cld Push ax Overs1: lodsb Cmp al,’’ Jz overs1 Cmp al,9 Jz overs1 Dec si Cmp al,13 Pop ax Ret ;输出一个制表符 tab label near mov al,9 Jmp short disp Crlf label near Mov al,13 Call disp Mov al,10 ;显示一个字符 dis label near push ax push dx mov ah,2 mov dl,al int 21h pop dx pop ax ret ;检查是否为运算符 isysf label near cld lodsb call isjj jz isysf1 call isii jz isysf1 dec si isysf1:ret ; 检查是否为加减运算 isjj label near cmp al,’+’ z isysf1 cmp al,’-’ ret ; 检查是否为乘除运算 isii label near cmp al,’*’ jz isysf1 cmp al,’’ jz isysf1 cmp al,’\’ ret ;********* 数据输出********* ;*********cx=10 十进制********** ;*********cx=16 十六进制********* dout label near push ax push bx push dx push bp xor bp,bp dout1: inc bp push ax mov ax,dx xor dx,dx div cx mov bx,ax pop ax div cx push dx mov dx,bx or bx,ax jnz dout1 dout2: pop ax add al,’0’ cmp al,’9’ jbe dout3 add al,’a’-‘9’-1 dout3: call disp dec bp jnz dout2 pop bp pop dx pop bx pop ax ret ;***********输入数据在dx:ax中返回************* ;********cx=0数据为十进制;cx#0数据为十六进制************ date label near push bx push bp push di xor ax,ax xor dx,dx date1: mov di,ax 请输入 lodsb cmp al,’0’ jb date7 cmp al,’9’ ja date6 date2: and ax,0fh and ax,0fh shl di,1 三、流程图 Y N Y 四、程序算法及其编制过程中的错误 本程序的设计是在内存中设置存储区,然后将输入的字符经过分析后分批存入,输入数据时首先判断是不是第一个数据,若是则判断是不是0~9之间的数据,因为本程序只支持十进制的数据之间的加、减、乘、除。若不时则退出程序,若是则经过处理后存入存储区。在这里要用到数据的十进制到二进制的转化。然后存完后(注意:不能大于32767)过程中要判断输入的是不是加减乘除的符号,若

文档评论(0)

shaofang00 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档