	;MASM MODE
	.386
	.MODEL use32 small


include  prints.ase 
include  input.ase 
include  mtrap.ase 
include  breaks.ase 
	PUBLIC domath

	.CODE
;
; Do math
;
domath	PROC	
	Call	WadeSpace	; Wade till address
	jc	readerr
	call	ReadNumber	; first number
	jc	readerr
	mov	edx,eax
	call	WadeSpace	; get operator
	jz	readerr
	sub	ebx,ebx
	cmp	al,'*'
	jz	got
	inc	bl
	cmp	al,'/'
	jz	got
	inc	bl
	cmp	al,'+'
	jz	got
	inc	bl
	cmp	al,'-'
	jz	got
	inc	bl
	cmp	al,'%'
	jz	got
	dec	esi
	mov	bl,2		; default operator = +
got:
	inc	esi
	call	WadeSpace
	jz	readerr
	call	ReadNumber	; second number
	jc	readerr
	mov	ecx,eax
	call	WadeSpace
	jnz	readerr
	mov	eax,edx
	call	[ebx*4 + jumptab]
	push	eax
	call	crlf
	pop	eax
	call	PrintDword		; print result
	clc
	ret
jumptab	dd	xmul,xdiv,xxadd,xsub,xmod
xmul:
	mul	ecx
	ret
xmod:
	call	xdiv
	mov	eax,edx
	ret
xdiv:
	or	eax,eax
	jz	nodiv
	sub	edx,edx
	div	ecx
nodiv:
	ret
xxadd:
	add	eax,ecx
	ret
xsub:
	sub	eax,ecx
	ret
readerr:
	stc
	ret
domath	ENDP
end