关键词不能为空

当前您在: 主页 > 英语 >

汇编语言实现四则混合运算

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-01-29 23:59
tags:

-

2021年1月29日发(作者:村民自治组织法)


;


本程序实现加减混合运算输入格式必须为



1+2-3=


;


程序思路:



遇到一个操作符执行前一次运算,等号执行最后一次运算,然后保


存本次操作符




;---------

< br>提示信息


------


DISPL


MACRO DI




MOV


AH,9




MOV


DX,DI




INT 21H




ENDM


;-----------




DISP


MACRO V


AR




MOV


AH,2




MOV


DL,V


AR




INT 21H




ENDM




;--------


输入函数


-------


INPUT MACRO




PUSH


AX



PUSH


BX



PUSH


CX



PUSH


DX



MOV


BX,0









CLC



MOV


DX,0


NEXT0:



MOV




AH,1



INT



21H



CMP




AL,2BH





JE




NEXT2



CMP




AL,2DH





JE




NEXT2





CMP




AL,3DH



JE



NEXT2



SUB




AL,30H



JL




NEXT1



CMP




AL,9



JG




NEXT1




MOV




AH,0







XCHG


AX,BX



MOV




CX,10



MUL




CX



ADD




AX,BX






;BX


存放十进制数




;


判断输入是否为


'+'



;


判断输入是否为


'-'





;


判断


‘=’



;


将输入的数转换成


10


进制数














JC




NEXT1



XCHG


AX,BX






JMP



NEXT0


NEXT1:



MOV




DX,0



MOV




BX,0






MOV




DI,


OFFSET


STR






;


提示出错







DISPL


DI






MOV




DI,


OFFSET







DISPL


DI



JMP



NEXT0


NEXT2:







CMP




DX,0



JNZ



NEXT1



CMP




COUNT,1








JE



L0



MOV




BUF0,BX



JMP



L1


L0:


MOV




BUF1,BX






JMP



NEXT3



L1:


MOV




OPER,AL








MOV




COUNT,1






MOV




BX,0






JMP



NEXT0


NEXT3:



CMP




OPER,


'+'






JE



N0



CMP




OPER,


'-'



JE



N1


N0:



MOV



BX,BUF0






ADD



BX,BUF1



MOV



BUF0,BX



CMP



AL,


'='



JE


NEXT4



JMP



L1


N1:






MOV


DX,BUF0







CMP



FLAG


,1






对值




JNE


N


2



XCHG


DX,BUF1



MOV



FLAG


,0


N2: CLC


STR2






;


第一次 输入存到


buf0


以后输入全部存放到


buf1






;


将操作符保存至


oper




;


判读那是何种操作








;


加法相应操作







;


加法操作








;


如果原来


buf0


里的数是负数用


buf1-buf0


的绝



















SBB



DX,BUF1






JNC N3






MOV



FLAG


,1






NEG


DX


















;


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



N3:







MOV



BUF0,DX






CMP



AL,


'='



JE


NEXT4







JMP


L1


NEXT4:






CMP




FLAG


,1






JNE



NEXT5






DISP


'-'
















;


若果结果为负数输出负号



NEXT5:






CALL



PRINT






POP




DX



POP




CX



POP




BX



POP




AX






ENDM




DATAS


SEGMENT


STR



DB




0AH,0DH,


'$$'


STR0


DB



'please input arithmetic expressions:'


,0AH,0DH,


'$$'


STR2


DB



'the num is unexpected,input again:'


,0AH,0DH,


'$$'


BUF0



DW



?


BUF1



DW



?


FLAG


DB


0


OPER


DB



?


COUNT


D


B


0


DATAS


ENDS



STACKS


SEGMENT






DW



256


DUP


(


?


)


;


此处输入堆栈段代码



STACKS


ENDS



CODES


SEGMENT






ASSUME


CS:CODES,DS:DATAS,SS:STACKS


START


:






MOV


AX,DATAS






MOV


DS,AX






MOV


DI,


OFFSET


STR0






DISPL DI






INPUT









MOV


AH,4CH






INT 21H












;-- ---------


显示函数


--------


PRINT PROC NEAR






PUSH


AX






PUSH


BX



PUSH


CX



PUSH


DX






MOV




CX,0






















;


记录有效数字位数







MOV




BX,10






















;



10


取余







MOV




AX,BUF0


LAST:






MOV




DX,0





















DIV




BX






PUSH


DX






INC




CX






CMP




AX,0






JNZ



LAST


AGE:







POP




DX























;


出栈输出







OR





DX,30H






MOV




AH,2






INT



21H






LOOP AGE






POP




DX






POP




CX



POP




BX



POP




AX



RET



PRINT ENDP


CODES


ENDS







END



START


DISP


MACRO V


AR




MOV


AH,2




MOV


DL,V


AR




INT 21H




ENDM




DATAS


SEGMENT


DATA0


DB



'PLEASE INPUT A NUMBER(0-999):'


,


'$$'


DATA1


DB



'












over flow input again:'


,


'$$'


DATA2


DB



'PLEASE INPUT ANOTHER NUMBER(EXP:123)'


,


'$$'


DATA3


DB



'PLEASE INPUT AN OPREATOR:'


,


'$$'


DATA4


DB



'THE OPERATOR IS WRONG


,INPUT AGAIN:'


,


'$$'


OPER


DB



?


FLAG


DB


0


FLAG1


DB


0


DATA



DW


3


DUP


(


?


)


DATAS


ENDS



STACKS


SEGMENT






DW


256


DUP


(


?


)


STACKS


ENDS



CODES


SEGMENT






ASSUME


CS:CODES,DS:DATAS,SS:STACKS


START


:






MOV


AX,DATAS






MOV


DS,AX






MOV



DI,


OFFSET


DATA0



;


提示信息







CALL DISPL






MOV



SI,0
















;SI


作为数组下标







CALL INPUT






CALL NEWLINE



MOV




DI,


OFFSET



DATA3



;


提示信息




CALL DISPL


AGAIN:






MOV



AH,1
















;1


号功能输入四则运算符







INT 21H



CMP



AL,


'+'















;


判断输入的是不是


+


-



*



/



JE



NEXT0



CMP



AL,


'-'



JE



NEXT0



CMP



AL,


'*'



JE



NEXT0



CMP



AL,


'/'



JE



NEXT0



CALL NEWLINE











;


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






MOV



DI,


OFFSET



DATA4




CALL DISPL



JMP


AGAIN


NEXT0:






MOV



OPER,AL











;


保存运算符







CALL NEWLINE






MOV


DI,


OFFSET



DATA2




;


输入第二个操作数


-


-


-


-


-


-


-


-



本文更新与2021-01-29 23:59,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/587999.html

汇编语言实现四则混合运算的相关文章

  • 余华爱情经典语录,余华爱情句子

    余华的经典语录——余华《第七天》40、我不怕死,一点都不怕,只怕再也不能看见你——余华《第七天》4可是我再也没遇到一个像福贵这样令我难忘的人了,对自己的经历如此清楚,

    语文
  • 心情低落的图片压抑,心情低落的图片发朋友圈

    心情压抑的图片(心太累没人理解的说说带图片)1、有时候很想找个人倾诉一下,却又不知从何说起,最终是什么也不说,只想快点睡过去,告诉自己,明天就好了。有时候,突然会觉得

    语文
  • 经典古训100句图片大全,古训名言警句

    古代经典励志名言100句译:好的药物味苦但对治病有利;忠言劝诫的话听起来不顺耳却对人的行为有利。3良言一句三冬暖,恶语伤人六月寒。喷泉的高度不会超过它的源头;一个人的事

    语文
  • 关于青春奋斗的名人名言鲁迅,关于青年奋斗的名言鲁迅

    鲁迅名言名句大全励志1、世上本没有路,走的人多了自然便成了路。下面是我整理的鲁迅先生的名言名句大全,希望对你有所帮助!当生存时,还是将遭践踏,将遭删刈,直至于死亡而

    语文
  • 三国群英单机版手游礼包码,三国群英手机单机版攻略

    三国群英传7五神兽洞有什么用那是多一个武将技能。青龙飞升召唤出东方的守护兽,神兽之一的青龙。玄武怒流召唤出北方的守护兽,神兽之一的玄武。白虎傲啸召唤出西方的守护兽,

    语文
  • 不收费的情感挽回专家电话,情感挽回免费咨询

    免费的情感挽回机构(揭秘情感挽回机构骗局)1、牛牛(化名)向上海市公安局金山分局报案,称自己为了挽回与女友的感情,被一家名为“实花教育咨询”的情感咨询机构诈骗4万余元。

    语文