汇编实现简单“加减乘除”(无进位)

汇编实现简单“加减乘除”(无进位)_第1张图片

;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
	


你可能感兴趣的:(汇编)