- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)过程中要判断输入的是不是加减乘除的符号,若
您可能关注的文档
最近下载
- 【江苏卷】江苏省苏州市2024-2025学年2025届高三第一学期学业期末质量阳光指标调研卷(1.13-115)历史试卷.pdf VIP
- 白酒行业全球烈酒专题四:白酒出海,破局之道-250918-华创证券.pdf VIP
- 市第一高级中学党委书记2025年度抓基层党建工作报告材料.docx VIP
- 建筑、市政工程见证取样(送检数量).doc VIP
- 人教版二年级数学上册竞赛试题.pdf VIP
- 机动车检测站安全生产事故应急预案 .pdf VIP
- 压裂队技术员年终总结.pptx
- 《机井井管标准》SL154-2013.pdf VIP
- EPS-3125A-DA-GCN[V1.10][955C]备用电源自动投入装置技术说明书.pdf VIP
- 中国非物质文化遗产糖画介绍宣教讲座PPT课件.pptx VIP
原创力文档


文档评论(0)