汇编语言实现四则混合运算DOCWord格式文档下载.docx

上传人:b****3 文档编号:14981097 上传时间:2022-10-26 格式:DOCX 页数:14 大小:17.19KB
下载 相关 举报
汇编语言实现四则混合运算DOCWord格式文档下载.docx_第1页
第1页 / 共14页
汇编语言实现四则混合运算DOCWord格式文档下载.docx_第2页
第2页 / 共14页
汇编语言实现四则混合运算DOCWord格式文档下载.docx_第3页
第3页 / 共14页
汇编语言实现四则混合运算DOCWord格式文档下载.docx_第4页
第4页 / 共14页
汇编语言实现四则混合运算DOCWord格式文档下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

汇编语言实现四则混合运算DOCWord格式文档下载.docx

《汇编语言实现四则混合运算DOCWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《汇编语言实现四则混合运算DOCWord格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。

汇编语言实现四则混合运算DOCWord格式文档下载.docx

MOVAH,1

INT21H

CMPAL,2BH;

判断输入是否为'

+'

JENEXT2

CMPAL,2DH;

-'

JENEXT2

CMPAL,3DH;

判断‘=’

SUBAL,30H

JLNEXT1

CMPAL,9

JGNEXT1

MOVAH,0;

将输入的数转换成10进制数

XCHGAX,BX

MOVCX,10

MULCX

ADDAX,BX

JCNEXT1

JMPNEXT0

NEXT1:

MOVBX,0

MOVDI,OFFSETSTR;

提示出错

DISPLDI

MOVDI,OFFSETSTR2

NEXT2:

CMPDX,0

JNZNEXT1

CMPCOUNT,1;

第一次输入存到buf0以后输入全部存放到buf1

JEL0

MOVBUF0,BX

JMPL1

L0:

MOVBUF1,BX

JMPNEXT3

L1:

MOVOPER,AL;

将操作符保存至oper

MOVCOUNT,1

NEXT3:

CMPOPER,'

;

判读那是何种操作

JEN0

JEN1

N0:

MOVBX,BUF0;

加法相应操作

ADDBX,BUF1

CMPAL,'

='

JENEXT4

N1:

MOVDX,BUF0;

加法操作

CMPFLAG,1;

如果原来buf0里的数是负数用buf1-buf0的绝对值

JNEN2

XCHGDX,BUF1

MOVFLAG,0

N2:

SBBDX,BUF1

JNCN3

MOVFLAG,1

NEGDX;

如果相减为负数则存放绝对值

N3:

MOVBUF0,DX

JENEXT4

NEXT4:

CMPFLAG,1

JNENEXT5

DISP'

若果结果为负数输出负号

NEXT5:

CALLPRINT

POPDX

POPCX

POPBX

POPAX

ENDM

DATASSEGMENT

STRDB0AH,0DH,'

$'

STR0DB'

pleaseinputarithmeticexpressions:

'

0AH,0DH,'

STR2DB'

thenumisunexpected,inputagain:

BUF0DW?

BUF1DW?

FLAGDB0

OPERDB?

COUNTDB0

DATASENDS

STACKSSEGMENT

DW256DUP(?

);

此处输入堆栈段代码

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

MOVDI,OFFSETSTR0

INPUT

MOVAH,4CH

-----------显示函数--------

PRINTPROCNEAR

MOVCX,0;

记录有效数字位数

MOVBX,10;

除10取余

MOVAX,BUF0

LAST:

MOVDX,0

DIVBX

INCCX

CMPAX,0

JNZLAST

AGE:

POPDX;

出栈输出

ORDX,30H

MOVAH,2

LOOPAGE

RET

PRINTENDP

CODESENDS

ENDSTART

DATA0DB'

PLEASEINPUTANUMBER(0-999):

'

DATA1DB'

overflowinputagain:

DATA2DB'

PLEASEINPUTANOTHERNUMBER(EXP:

123)'

DATA3DB'

PLEASEINPUTANOPREATOR:

DATA4DB'

THEOPERATORISWRONG,INPUTAGAIN:

FLAG1DB0

DATADW3DUP(?

MOVDI,OFFSETDATA0;

提示信息

CALLDISPL

MOVSI,0;

SI作为数组下标

CALLINPUT

CALLNEWLINE

MOVDI,OFFSETDATA3;

AGAIN:

MOVAH,1;

1号功能输入四则运算符

判断输入的是不是+,-,*,/

JENEXT0

*'

/'

CALLNEWLINE;

输入的运算符不合法,重新输入

MOVDI,OFFSETDATA4

JMPAGAIN

保存运算符

MOVDI,OFFSETDATA2;

输入第二个操作数

MOVSI,2

MOVAX,DATA[0]

MOVBX,DATA[2]

判断是那种操作,进行运算

JENEXT1

JENEXT3

加法运算

CLC

ADCAX,BX

JNCN1

MOVFLAG,1;

判断是否进位

MOVDATA[4],AX;

运算结果放入内存

JMPOUTPUT

减法运算

SBBAX,BX

JNCN2

判断是否借位

NEGAX

JMPOUTPUT

乘法运算

MULBX

除法运算

CMPBX,0

JNZN4;

判断除数是否为0

CALLERROR

MOVDI,OFFSETDATA2

JMPNEXT4

N4:

OUTPUT:

MOVDI,0;

输出第一个操作数

CALLPRINT

DISPOPER;

输出运算符

MOVDI,2

CALLPRINT;

输出第二个操作数

JNZNEXT5

MOVDI,4

输出结果

INT21H

-----------输入函数------------

INPUTPROCNEAR

----------输入数字----------

判断数字是否合法

CMPAL,0DH

JEL2

JLL1

JGL1

---------转换成十进制数-------

转换成10进制数放入内存

JCL1

JMPL0

L2:

JNZL1

MOVDATA[SI],BX

INPUTENDP

--------------提示信息------------

DISPLPROCNEAR

RET

DISPLENDP

-------回车换行--------

NEWLINEPROCNEAR

MOVDL,0AH

MOVDL,0DH

NEWLINEENDP

----------错误提

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1