汇编实现一位数加减乘除

来源:互联网 发布:淘宝助理二次验证 编辑:程序博客网 时间:2024/03/29 09:13

运行结果如图:(在32位win7masm5下编译运行通过)

data segmentout1 db 0ah,0dh,"Input the first number:$"out2 db 0ah,0dh,"Input the second number:$"newline db 0ah,0dh,"$"data ends;一位数的加减乘除 ;输入两个数字,保存,运算,输出结果code segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov dx,offset out1;lea dx,out1;入口参数为dx,显示第一条提示mov ah,9;使用9号功能调用,int 21h;执行中断mov ah,1;1号功能调用,输入一个字符int 21hmov bl,al;把第一个字符存入bllea dx,out2;显示第二条提示mov ah,9int 21hmov ah,1;输入第二个字符int 21h mov cl,al;将第二个字符存入cllea dx,newline;回车换行mov ah,9int 21h;----------------数据输入运算结束----------------------- ;----------------加法运算开始-----------------------  mov dl,bl;显示第一个字符mov ah,2int 21h mov ah,2;显示加号mov dl,'+'int 21h mov dl,cl;显示第二个字符mov ah,2int 21h     mov ah,2;显示等号mov dl,'='int 21h;-----------------------加法运算mov al,bladd al,clsub al,60hmov ah,0mov dl,10div dlor  ax,3030h;转换成ASCII码mov dl,almov dh,ahmov ah,2int 21hmov dl,dhmov ah,2int 21h;----------------加法运算结束----------------------- lea dx,newline;换行mov ah,9int 21h;---------------减法显示-----------------------mov dl,bl;显示第一个字符mov ah,2int 21h mov ah,2;显示减号mov dl,'-'int 21h mov dl,cl;显示第二个字符mov ah,2int 21h mov ah,2;显示等号mov dl,'='int 21h;------------------------减法操作-------------mov bh,bl     ;值1存于bl;值2存于clsub bh,cljge lneg bhmov dl,'-'mov ah,02hint 21hl:add bh,30hmov dl,bhmov ah,02hint 21h;----------------减法运算结束-----------------------lea dx,newline;换行mov ah,9int 21h;-------------------乘法输出--------------------mov dl,bl;显示第一个字符mov ah,2int 21hmov ah,2;显示乘号mov dl,'*'int 21h mov dl,cl;显示第二个字符mov ah,2int 21h mov ah,2;显示等号mov dl,'='int 21h;--------------------乘法运算开始-------------------sub bl,30h;转换成数字sub cl,30hmov al,bl;取乘数mul cl;做乘aam;调整ah存结果的十位,al存结果的各位or ax,3030h;转换成asciimov bh,ah;将结果个位和十位临时保存mov ch,almov dl,bh;打印十位mov ah,02hint 21hmov dl,ch;打印各位mov ah,2int 21hadd bl,30h;调整回asciiadd cl,30h;---------------------乘法运算结束------------------lea dx,newline;回车换行mov ah,9int 21h;------------------------除法显示-----------------mov ah,2mov dl,bl;显示被除数;add dl,30hint 21h mov ah,2;显示除号mov dl,'/'int 21h mov dl,cl;显示除数;add dl,30hmov ah,2int 21h mov ah,2;显示等号mov dl,'='int 21h;------------------------除法运算开始-----------------sub bl,30h;被除数存于bl除数存于clsub cl,30h;调整为数字mov ah,0mov al,bl;准备被除数div cl;做除or ax,3030h;调整为asciimov dl,al;打印商;sub dl,30hmov ch,ahmov ah,02hint 21hmov dl,' ';打印空格(为了区分商和余数)mov ah,02hint 21hmov dl,ch;打印余数mov ah,02hint 21h;------------------------除法运算运算结束-----------------mov ah,4chint 21hcode endsend start


 

1 0
原创粉丝点击