;xp masm环境下编译通过,代码写得很渣,汇编还没入门。。。
assume cs:code,ds:data data segment out1 db 0ah,0dh,"please input the first number:$" out2 db 0ah,0dh,"please input the second number:$" newline db 0ah,0dh,"$" data ends ;输入两个数字,保存,运算,输出结果 code segment start: mov ax,data mov ds,ax mov dx,offset out1 ;lea dx,out1 ;入口参数为dx,显示第一条提示 mov ah,9 ;使用9号功能调用, int 21h ;执行中断 mov ah,1 ;1号功能调用,输入一个字符 int 21h mov bl,al ;把第一个字符存入bl ;save the input number lea dx,out2 ;显示第二条提示 mov ah,9 int 21h mov ah,1 ;输入第二个字符 int 21h mov cl,al ;将第二个字符存入cl lea dx,newline ;回车换行 mov ah,9 int 21h mov dl,bl ;显示第一个字符 mov ah,2 int 21h mov ah,2 ;显示加号 mov dl,'+' int 21h mov dl,cl ;显示第二个字符 mov ah,2 int 21h mov ah,2 ;显示等号 mov dl,'=' int 21h ;----------------------- 加法运算<无进位> mov al,bl add al,cl aaa ;加法调整 or ax,3030h ;转换成ASCII码 mov dl,al mov ah,2 int 21h ;------------------------- lea dx,newline ;换行 mov ah,9 int 21h mov dl,bl ;显示第一个字符 mov ah,2 int 21h mov ah,2 ;显示减号 mov dl,'-' int 21h mov dl,cl ;显示第二个字符 mov ah,2 int 21h mov ah,2 ;显示等号 mov dl,'=' int 21h ;------------------------减法操作<无进位借位> mov al,bl sub al,cl aas or al,30h mov dl,al mov ah,2 int 21h ;------------------------ lea dx,newline ;换行 mov ah,9 int 21h mov dl,bl ;显示第一个字符 mov ah,2 int 21h mov ah,2 ;显示乘号 mov dl,'*' int 21h mov dl,cl ;显示第二个字符 mov ah,2 int 21h mov ah,2 ;显示等号 mov dl,'=' int 21h ;-----------------乘法操作<无进位> sub bl,30h sub cl,30h mov al,bl mul cl aam or al,30h mov dl,al mov ah,2 int 21h add bl,30h add cl,30h ;----------------- lea dx,newline mov ah,9 int 21h mov dl,bl mov ah,2 int 21h mov ah,2 mov dl,'/' int 21h mov dl,cl mov ah,2 int 21h mov ah,2 mov dl,'=' int 21h ;----------------- sub bl,30h sub cl,30h mov ax,bl div cl or ax,3030h mov dl,al mov ah,2 int 21h ;----------------- mov ah,4ch int 21h code ends end start