汇编语言课程设计四则运算计算器Word格式.docx
- 文档编号:7953688
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:20
- 大小:30.90KB
汇编语言课程设计四则运算计算器Word格式.docx
《汇编语言课程设计四则运算计算器Word格式.docx》由会员分享,可在线阅读,更多相关《汇编语言课程设计四则运算计算器Word格式.docx(20页珍藏版)》请在冰点文库上搜索。
此程序流程图简要地表现出了所要实现的功能以及一些功能的大概算法,同时也是我编写的程序的一个总体的框架。
程序流程图说明:
通过流程图,可以看出程序开始运行时,首先输出提示语句,当用户输入后,程序根据所输入的内容进行判断,通过判断的结果来决定调用哪个功能模块,首先要判断输入的字符是否为Q或q,若是,则退出程序,不是则继续输入。
还要判断输入的是否为0--9,‘+'
‘-‘*‘/'
这些字符,若不是会报
错,是则将根据运算符号调用相应的功能模块完成运算。
最后将运算的结果显示在屏幕上,并返回主题程序,使用户可以重新输入。
源程序清单
B_P
EQUBYTEPTR
W_P
EQUWORDPTR
D_P
EQUDWORDPTR
CODE
SEGMENT
ASSUMECS:
CODE,DS:
ORG100H
;
主程序开始
NEWSTAR:
JMPSTAR
EVEN
NUM1
DW0,0
NUM2
NUM3
JGV4
YSF
LABELWORD
YSF1
DB0
YSF2
JUV
UV
;
使DS:
SI指向第一有效字符
OVERSLABELNEAR
CLD
PUSHAX
OVERS1:
LODSB
CMPAL,'
'
JZOVERS1
CMPAL,9
DECSI
CMPAL,13
POPAX
RET
输出一个制表符
TABLABELNEAR
MOVAL,9
JMPSHORTDISP
输出一个回车换行符
CRLF
LABELNEAR
MOVAL,13
CALLDISP
MOVAL,10
显示一个字符
DISP
PUSHDX
MOVAH,2
MOVDL,AL
INT21H
POPDX
检查是否为运算符
ISYSF
CALLISJJ
JZISYSF1
CALLISII
JZISYSF1DECSI
ISYSF1:
检查是否是加减运算
ISJJ
+'
-'
检查是否为乘除运算
ISII
*'
/'
\'
数据输出
CX=10十进制
CX=16十六进制
DOUT
PUSHBX
PUSHBP
XORBP,BP
D0UT1:
INCBP
MOVAX,DXXORDX,DXDIVCX
MOVBX,AX
DIVCX
MOVDX,BXORBX,AXJNZDOUT1
DOUT2:
ADDAL,'
0'
JBEDOUT3
A'
9'
-1
DOUT3:
DECBP
JNZDOUT2
POPBP
POPBX
输入数据在DX:
A)中返回
CX=0数据为10进制
CX#0数据为16进制
DATE
PUSHDI
XORAX,AX
XORDX,DX
DATE1:
MOVDI,AXLODSB
JBDATE7
JADATE6
DATE2:
ANDAX,0FH
SHLDI,1
RCLDX,1
MOVBX,DI
MOVBP,DX
JCXZDATE3
JmpshortDATE4
DATE3:
ADDDI,BX
ADCDX,BP
DATE4:
ADDAX,DI
ADCDX,0
JMPDATE1
DATE5:
ADDAL,9
JMPDATE2
DATE6:
JCXZDATE7
F'
JBEDATE5
a'
f
DATE7:
MOVAX,DI
ORDI,DX
POPDI
数据1与数据2根据YSF进行加减运算
JSJJ
MOVAX,NUM2
MOVDX,NUM2+2
CMPYSF1,'
JZJSJJ1
SUBNUM1,AX
SBBNUM1+2,DX
JMPSHORTJSJJ2
JSJJ1:
ADDNUM1,AX
ADCNUM1+2,DX
JSJJ2:
数据1与数据2根据YSF进行乘除运算
JSII1
MOVBX,OFFSETNUM1
JMPSHORTJSII21
数据2与数据3根据YSF2进行乘除运算
JSII2
MOVBX,OFFSETNUM2
JSII2_1:
DB66H
MOVAX,[BX]
MOVCX,[BX+4]
CMPYSF2,'
JNZJSII2_2
IMULCX
JMPSHORTJSII2_3
JSII2_2:
CWD
IDIVCX
JZJSII2_3
XCHGDX,AX
JSII2_3:
MOV[BX],AX
显示结果
XUJG
MOVAX,JGV4
MOVDX,JGV4+2
MOVCX,10
CMPUV,10
JZXUJG0
MOVCX,16
XUJGO:
TESTDX,8000H
JZXUJG1
JZXUJG2
CALLDOUT
XUJG2:
NOTAX
NOTDX
ADDAX,1
JZXUJG3
MOVAL,'
('
XUJG3:
)'
XUJG1:
计算结果放入DX:
AX中
JSJGLABELNEAR
CALLJSJJ
MOVAX,NUM1
MOVDX,NUM1+2
从DS:
SI处取一个数据
LOADATELABELNEAR
JZLOADATE1
PUSHCX
XORCX,CX
JZLOADATE0
INCCX
LOADATE0:
CALLDATE
POPCX
LOADATE1:
PUSHNUM1
PUSHNUM1+2
PUSHNUM2
PUSHNUM2+2
PUSHYSF
INCJUV
MOVJGV4,0
MOVJGV4+2,0
进行四则运算
SZYSLABELNEAR
CALLISYSF
JZSZYS2
CALLLOADATE
MOVNUM1,AX
MOVNUM1+2QX
SZYS1:
MOVNUM2,AX
MOVNUM2+2,AX
JZSZYS3
JNZSZYS6
SZYS2:
取16进制数
取数据放入DX:
保存数据1数据2及运算符
结果值清零
首字符是运算符?
不是,取数并保存
数据2清零
下个是运算符?
将结果作为数据1
SZYS3:
MOVAXJGV4+2
MOVNUM1+2,AX
MOVYSF1,AL
MOVYSF2,AL
JZSZYS4
是加减运算转
MOVNUM2+2QX
取数据2
算算
CALLJSII1
数据1与数据2根据YSF进行乘除运
SZYS4:
JMPSZYS1
结果保存在数据1中
SZYS4_1:
取数据2并保存
运算符2是加减运算?
JNZSZYS5
不是转
数据1与数据2根据YSF14行加减运
SZYS5:
JMPSZYS4
保存新的运算符
保存运算符2
MOVNUM3,AX
MOVNUM3+2QX
取数据3
算
CALLJSII2
数据2与数据3根据YSF2t行乘除运
JMPSZYS41
结果保存在数据2中
SZYS6:
MOVCL,AL
JNZSZYS9
SZYS7:
CALLJSJG
CMPJUV,0
JZSZYS8
DECJUV
POPYSF
POPNUM2+2
POPNUM2
POPNUM1+2
POPNUM1
SZYS8:
CMPCL,'
JZSZYS10
MOVJGV4,AX
MOVJGV4+2QX
JNZSZYS12
SZYS9:
JNZSZYS11
INCSI
JMPSZYS7
SZYS10:
SZYS11:
STC
SZYS12:
CLC
数制处理
UVIL
PUSHSI
UVIL1:
JZUVIL2
JZUVIL4
JNZUVIL1
UVIL2:
MOVBX,SICALLOVERSJZUVIL3
LODSW
CALLOVERS
POPSI
CMPAX,'
O1'
MOVUV,10
UVIL3:
MOV[BX-1],AL
UVIL4:
预置结果
YVJG
MOVAH,52H
MOVAX,ES:
[BX-2]
MOVDS,AX
MOVAX,DS:
[0CH]
MOVCS:
JGV4,AX
[0EH]
JGV4+2,AX
PUSHCS
POPDS
POPES
保存结果
BCJG
MOVAX,CS:
MOVDS:
[0CH],AX
JGV4+2
[0EH],AX
STAR:
MOVSI,81H
JNZSTAR1
STARO:
MOVDX,OFFSETMESS1
JMPSTAR4
STAR1:
CALLYVJG
CALLUVIL
JBSTAR0
MOVSAVESP,SP
CALLSZYS
MOVSP,SAVESP
MOVDX,OFFSETMESS2
JBSTAR4
CALLCRLF
CALLXUJG
CALLBCJG
MOVDX,OFFSETMESS3
STAR4:
MOVAH,9
INT20H
SAVESP
DW0
MESS1
DB
13,10,'
Syntax:
13,10
DB'
JSvExpression>
MESS2
Errorin
expression!
$'
MESS3
ENDS
ENDNEWSTAR
[10]'
13,10,'
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 课程设计 四则运算 计算器