All pastes #274783 Raw Edit

Miscellany

public text v1 · immutable
·published 2006-12-10 23:25 UTC
rendered paste body
#Floating Point calculator Elmer Lin

	.data
vals:	.float 0.0, 0.00
str1:	.asciiz "\n Enter first floating point number: "
str2:	.asciiz "Enter operation: "
str3:	.asciiz "Enter value: "
str4:	.asciiz "Result is: "
	
adds: 	.asciiz "add"
subs: 	.asciiz "sub"
eqs:	.asciiz "eq"

	.text
	.globl main
main:		la $10, vals		#Loads $10 with data address for vals
		lwc1 $f10, 0($10)	#Loads $f10 with value 0.0
		addi $v0, $0, 4 	#System call print_string
		la $a0, str1		#load string into address $a0
		syscall			#print string

		addi $v0, $0, 6; 	#System call read_float
		syscall			#Read float into $v0
		add.s $f1, $f10, $f0;	#Add to floating point total

read_op:	la $4, adds
		la $5, subs
		la $6, eqs

		lw $7, 0($4)		#Load '+' into $7
		lw $8, 0($5)		#Load '-' into $8
		lw $9, 0($6)		#Load '=' into $9

		addi $v0, $0, 4		#System call print_string2
		la $a0, str2		#load string2 into address $a0
		syscall			#print string2

		addi $v0, $0, 8		#System call read_string
		syscall			#Read char into $v0
		
		
	
		beq $v0, $7, add_op	#Branch to add_op if $v0 == $7
		beq $v0, $8, sub_op 	#Branch to sub_op if $v0 == $8
		beq $v0, $9, output_op	#Branch to output_op if $v0 == $9	
		

		
		

add_op: 	addi $v0, $0, 4		#System call print_string3
		la $a0, str3		#load string3 into address $a0
		syscall 		#print string

		addi $v0, $0, 6		#System call read_float
		syscall			#Read float into $v0
		add.s $f1, $f1, $f0	#Load new result into total

		bgez $0, read_op	#Branch to read_op

sub_op:		addi $v0, $0, 4		#System call print_string3
		la $a0, str3		#load string3 into address $a0
		syscall 		#print string

		addi $v0, $0, 6		#System call read_float
		syscall			#Read float into $v0
		sub.s $f2, $f1, $f0	#Subtract new float from old float and store in $f2
		add.s $f1, $f10, $f2	#Add 0 to +/- float and store in $f1

		bgez $0, read_op 	#Branch to read_op


output_op:	addi $v0, $0, 4		#System call print_string
		la $a0, str4		#Load string4 into address $a0
		syscall			#Print String4

		addi $v0, $0, 2		#System call print_float
		add.s $f12, $f10, $f1	#Print result.
		syscall			#Call system service

		jr $ra