关键词不能为空

当前您在: 主页 > 英语 >

汇编语言实现四则运算

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

-

2021年1月29日发(作者:半个月)


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




;


输入第二个操作数







CALL



DISPL






MOV



SI,2







CALL INPUT











MOV



AX,DATA[0]






MOV



BX,DATA[2]



CMP



OPER,


'+'








JE



NEXT1



CMP



OPER,


'-'



JE



NEXT2



CMP



OPER,


'*'



JE



NEXT3



CMP



OPER,


'/'



JE



NEXT4






NEXT1:


















CLC




ADC



AX,BX



JNC N1



MOV



FLAG


,1







N1:


MOV



DATA[4],AX




JMP



OUTPUT



NEXT2:


















CLC




SBB



AX,BX



JNC N2



MOV



FLAG


,1








NEG



AX


N2:


MOV



DATA[4],AX







JMP



OUTPUT


NEXT3:


















CLC




MOV



DX,0



MUL



BX






MOV



DATA[4],AX







JMP



OUTPUT





;


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




;


加法运算








;


判断是否进位









;


运算结果放入内存



;


减法运算







;


判断是否借位









;


运算结果放入内存




;


乘法运算









;


运算结果放入内存


















NEXT4:






















;


除法运算




CLC




MOV



DX,0



CMP



BX,0



JNZ


N


4

















;


判断除数是否为


0



CALL


NEWLINE



CALL


ERROR






CALL


NEWLINE






MOV



DI,


OFFSET


DATA2






CALL DISPL






MOV



SI,2







CALL INPUT






JMP


NEXT4


N4:


DIV



BX






MOV



DATA[4],AX











;


运算结果放入内存




OUTPUT:






CALL NEWLINE






MOV




DI,0
















;


输出第一个操作数







CALL



PRINT






DISP



OPER














;


输出运算符







MOV




DI,2





















CALL



PRINT













;


输出第二个操作数




DISP


'='



CMP



FLAG


,1



JNZ


N


EXT5



DISP



'-'


NEXT5:



MOV



DI,4



CALL


PRINT













;


输出结果













MOV


AH,4CH






INT 21H









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


输入函数


------------





INPUT PROC NEAR



PUSH


AX



PUSH


BX



PUSH


CX



PUSH


DX




MOV


BX,0



;BX


存放十进制数




CLC

-


-


-


-


-


-


-


-



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

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