diff --git a/mips-1.asm b/mips-1.asm new file mode 100644 index 0000000..ee2455f --- /dev/null +++ b/mips-1.asm @@ -0,0 +1,44 @@ +.data +string1: .asciiz "Enter a number:" +string2: .asciiz "Enter the secon number:" +string3: .asciiz "Sum:" +endLine: .asciiz "\n" + +.text +main: + + li $v0 , 4 #print string1 + la $a0 , string1 + syscall + + li $v0 , 5 #read integer + syscall + + move $t0,$v0 #Girdiğimiz integer değeri temporary(geçici) değere akttardık. + + li $v0 , 4 + la $a0 , endLine #Boşluk vermek için. + syscall + + li $v0 , 4 + la $a0 , string2 + syscall + + li $v0 , 5 + syscall + + move $t1,$v0 + + li $v0 , 4 + la $a0 , string3 + syscall + + add $t2,$t1,$t0 #İki tane yazdığımız integer değerleri toplayıp $t2 temporary değere aktardık.s + li $v0, 1 #print integer + move $a0, $t2 #Temporary değeri a0 a aktardık. + syscall + + + li $v0, 10 #exit + syscall + diff --git a/mips-10-functions.asm b/mips-10-functions.asm new file mode 100644 index 0000000..5cfef92 --- /dev/null +++ b/mips-10-functions.asm @@ -0,0 +1,45 @@ +.data +string1: .asciiz "Enter a number:" +string2: .asciiz "Sum of digits = " # +string3: .asciiz "Original number = " # +endLine: .asciiz "\n" + +.text + +sumFunc: + add $v0,$a0,$a1 # (int a0,int a1) + + jr $ra + +main: + + li $v0,4 + la $a0,string1 + syscall + + li $v0,5 + syscall + move $t0,$v0 + + li $v0,4 + la $a0,string1 + syscall + + li $v0,5 + syscall + move $t1,$v0 + + move $a0,$t0 + move $a1,$t1 + jal sumFunc + move $t2,$v0 # t2 = sumFunc(a0,a1) + + li $v0,1 + move $a0,$t2 + syscall # Result + + + + + li $v0,10 + syscall \ No newline at end of file diff --git a/mips-11.asm b/mips-11.asm new file mode 100644 index 0000000..494afdb --- /dev/null +++ b/mips-11.asm @@ -0,0 +1,91 @@ +.data +string1: .asciiz "Enter a number :" +endLine: .asciiz "\n" +string2: .asciiz "Addition : " +string3: .asciiz "Dividition : " +string4: .asciiz "Remainder : " +string5: .asciiz "Multiplication : " + +.text +main: + +li $v0,4 +la $a0,string1 +syscall + +li $v0,5 +syscall +move $t0,$v0 + +li $v0,4 +la $a0,endLine +syscall + +li $v0,4 +la $a0,string1 +syscall + +li $v0,5 +syscall +move $t1,$v0 + + +beq $t0,$t1, Addition +j Dividition + +Addition: + +li $v0,4 +la $a0,string2 +syscall + +add $t2,$t1,$t0 +move $a0,$t2 + +li $v0,1 +syscall +j exit + +Dividition: + +li $v0,4 +la $a0,string3 +syscall + +div $t0,$t1 +mflo $a0 +li $v0,1 +syscall + +li $v0,4 +la $a0,endLine +syscall + +li $v0,4 +la $a0,string4 +syscall + +mfhi $a0 +li $v0,1 +syscall + +li $v0,4 +la $a0,endLine +syscall + + +li $v0,4 +la $a0,string5 + + +mul $t2,$t1,$t0 +syscall +move $a0,$t2 +li $v0,1 +syscall +j exit + + +exit: +li $v0,10 +syscall \ No newline at end of file diff --git a/mips-12-calculator.asm b/mips-12-calculator.asm new file mode 100644 index 0000000..03a5f67 --- /dev/null +++ b/mips-12-calculator.asm @@ -0,0 +1,132 @@ +.data + +string1: .asciiz "For add press 1, For sub press 2, For div press 3, For mult press 4,For remaminder press 5: " +string2: .asciiz "Enter a number: " +endLine: .asciiz "\n" +addition: .asciiz "Addition : " +subtraction: .asciiz "subtraction : " +dividition: .asciiz "dividition : " +multplication: .asciiz "multplication : " +remainder: .asciiz "Remainder is: " + +.text +main: + + li $v0,4 + la $a0,string2 + syscall + + li $v0,5 + syscall + move $t0,$v0 + + li $v0,4 + la $a0,string2 + syscall + + li $v0,5 + syscall + move $t1,$v0 + + li $v0,4 + la $a0,endLine + syscall + + li $v0,4 + la $a0,string1 + syscall + + li $v0,4 + la $a0,endLine + syscall + + li $v0,5 + syscall + move $t2,$v0 + + beq $t2,1,Addition + beq $t2,2,Subtraction + beq $t2,3,Dividition + beq $t2,4,Multplication + beq $t2,5,Remainder + +Addition: + + li $v0,4 + la $a0,addition + syscall + + li $v0,4 + la $a0,endLine + syscall + + add $t3,$t0,$t1 + move $a0,$t3 + + li $v0,1 + syscall + j Exit + +Subtraction: + + li $v0,4 + la $a0,subtraction + syscall + + sub $t3,$t0,$t1 + move $a0,$t3 + + li $v0,1 + syscall + j Exit + +Dividition: + + li $v0,4 + la $a0,dividition + syscall + + div $t0,$t1 + mflo $a0 + li $v0,1 + syscall + + + j Exit + +Multplication: + + li $v0,4 + la $a0,multplication + syscall + + mul $t3,$t0,$t1 + move $a0,$t3 + + li $v0,1 + syscall + j Exit + +Remainder: + + li $v0,4 + la $a0,remainder + syscall + + + rem $t3,$t0,$t1 + move $a0,$t3 + li $v0,1 + syscall + j Exit + +Exit: + +li $v0,10 +syscall + + + + + + \ No newline at end of file diff --git a/mips-13-Arrays.asm b/mips-13-Arrays.asm new file mode 100644 index 0000000..f7ae034 --- /dev/null +++ b/mips-13-Arrays.asm @@ -0,0 +1,67 @@ +.data + +endLine: .asciiz "\n" +c: .asciiz "c:" +a: .asciiz "a:" +A: .word 3, 4, 5 + +.text +main: + + li $s0,1 # a + li $s1,4 # b + add $s0,$s0,$s1 #a = a + b + + la $s3,A # address + lw $t2,8($s3) # A[2] + + sub $t3,$s0,$s1 + add $t2,$t2,$t3 + + sw $t2,4($s3) + +while: + beq $s0,1,endWhile + + add $s2,$s0,$s1 + sub $s0,1 + + li $v0,4 + la $a0,c + syscall + + li $v0,1 + move $a0,$s2 + syscall + + li $v0,4 + la $a0,endLine + syscall + + li $v0,4 + la $a0,a + syscall + + li $v0,1 + move $a0,$s0 + syscall + + li $v0,4 + la $a0,endLine + syscall + + j while +endWhile: + + + + li $v0, 10 + syscall + + + + + + + + diff --git a/mips-14.asm b/mips-14.asm new file mode 100644 index 0000000..3c72766 --- /dev/null +++ b/mips-14.asm @@ -0,0 +1,43 @@ + +.text + +sumoftimestwo: + + addi $sp,$sp,-4 + sw $s0,$sp + + mul $a0,$a0,2 + mul $a1,$a1,2 + mul $a2,$a2,2 + + add $v0,$a0,$a1 + add $v0,$v0,$a2 + + div $v0,$v0,2 + + lw $s0,$sp + addi $sp,$sp,-4 + + jr $ra + +main: + + li $a0,1 + li $a1,2 + li $a2,3 + jal sumoftimestwo + + move $a0,$v0 + li $v0,1 + syscall + + li $v0, 10 + syscall + + + + + + + + diff --git a/mips-15.asm b/mips-15.asm new file mode 100644 index 0000000..9f9b7e7 --- /dev/null +++ b/mips-15.asm @@ -0,0 +1,42 @@ +.data +endLine: .asciiz "\n" + +.text +main: + li $t9,0x10000000 # base address + + li $t0,15 + sw $t0,24($t9) + + li $t0,25 + sw $t0,28($t9) + + lw $t1,24($t9) + lw $t2,28($t9) + sw $t1,28($t9) + sw $t2,24($t9) + + lw $t1,24($t9) + li $v0,1 + move $a0,$t1 + syscall + + li $v0,4 + la $a0,endLine + syscall + + lw $t1,28($t9) + li $v0,1 + move $a0,$t1 + syscall + + li $v0, 10 + syscall + + + + + + + + diff --git a/mips-16-powerFunc.asm b/mips-16-powerFunc.asm new file mode 100644 index 0000000..54eebd8 --- /dev/null +++ b/mips-16-powerFunc.asm @@ -0,0 +1,66 @@ +.data +string1: .asciiz "Enter base number:" +string2: .asciiz "Enter exp number:" +string3: .asciiz "Result:" +endLine: .asciiz "\n" +.text + +######################################################### +powerFunction: +# a0 -> baseNumber a1 -> expNumber v0 -> result + # result = 1; + # counter = 0; + # if (exp == 0) + # return result; + # for ( counter = 0; counter < expNumber ; ++counter ) + # result = result*baseNumber + # return result; + + + li $v0,1 + bne $a1,$zero,endif + jr $ra +endif: + li $t0,0 +loop: + bge $t0,$a1,endLoop + mul $v0,$v0,$a0 + addi $t0,$t0,1 + j loop +endLoop: + jr $ra +######################################################### +main: + li $v0, 4 + la $a0, string1 + syscall + + li $v0,5 + syscall + move $t0,$v0 + + li $v0, 4 + la $a0, string2 + syscall + + li $v0,5 + syscall + move $t1,$v0 + + move $a0,$t0 + move $a1,$t1 + jal powerFunction + move $a0,$v0 + li $v0,1 + syscall + + li $v0, 10 + syscall + + + + + + + + diff --git a/mips-17-recursivePowerFunc.asm b/mips-17-recursivePowerFunc.asm new file mode 100644 index 0000000..6c3d388 --- /dev/null +++ b/mips-17-recursivePowerFunc.asm @@ -0,0 +1,65 @@ +.data +string1: .asciiz "Enter base number:" +string2: .asciiz "Enter exp number:" +string3: .asciiz "Result:" +endLine: .asciiz "\n" +.text + +######################################################### +recursivePowerFunction: +# a0 -> baseNumber a1 -> expNumber v0 -> result +# recursivePowerFunction +# if (expNumber == 0) +# return 1; +# else +# return baseNumber * recursivePowerFunction(baseNumber,expNumber - 1) + + bne $a1,$zero,recursion + li $v0,1 + jr $ra +recursion: + addi $sp,-4 + sw $ra,0($sp) + addi $a1,$a1,-1 + jal recursivePowerFunction + mul $v0,$v0,$a0 + lw $ra,0($sp) + addi $sp,4 + jr $ra + + +######################################################### +main: + li $v0, 4 + la $a0, string1 + syscall + + li $v0,5 + syscall + move $t0,$v0 + + li $v0, 4 + la $a0, string2 + syscall + + li $v0,5 + syscall + move $t1,$v0 + + move $a0,$t0 + move $a1,$t1 + jal recursivePowerFunction + move $a0,$v0 + li $v0,1 + syscall + + li $v0, 10 + syscall + + + + + + + + diff --git a/mips-18-bubbleSort.asm b/mips-18-bubbleSort.asm new file mode 100644 index 0000000..fcb1e80 --- /dev/null +++ b/mips-18-bubbleSort.asm @@ -0,0 +1,108 @@ + + +#bubble sort +.data + +endLine: .asciiz "\n" +array: .word 5, 3, 4, 6, 1 + +.text + +display: + la $s3,array # address + li $t0,0 # cnt + startLoop: + bge $t0,5,endLoop + li $t1,4 + mul $t1,$t1,$t0 + add $t2,$s3,$t1 + lw $t3,0($t2) + + li $v0,1 + move $a0,$t3 + syscall + + li $v0,4 + la $a0,endLine + syscall + + addi $t0,1 + j startLoop +endLoop: + jr $ra + + + +sort: + + #for (int i = 0 ; i < 5 - 1; ++i) + #{ + # for (int j = 0 ; j < 5 - 1 - j; ++i) + # { + # if( array[j] > array[j+1] ) + # { + # temp = array[j]; + # array[j] = array[j+1]; + # array[j+1] = temp; + # // swap + # } + # + # } + #} + + la $s0,array + li $t0,0 # i + li $t9,4 # size-1 + +sortLoop1: + bgt $t0,$t9,sortEndloop1 + li $t1,0 # j + sub $t2,$t9,$t1 + + sortLoop2: + bgt $t1,$t2,sortEndloop2 + mul $t3,$t1,4 + add $t4,$s0,$t3 + + lw $t5,0($t4) + lw $t6,4($t4) + + bgt $t5,$t6,swap + j endSwap + swap: + move $t7,$t5 + move $t5,$t6 + move $t6,$t7 + + sw $t5,0($t4) + sw $t6,4($t4) + endSwap: + addi $t1,1 + j sortLoop2 + sortEndloop2: + + addi $t0,1 + j sortLoop1 +sortEndloop1: + + jr $ra + + +main: + + + jal display + jal sort + jal display + + + li $v0, 10 + syscall + + + + + + + + diff --git a/mips-2-multiplication.asm b/mips-2-multiplication.asm new file mode 100644 index 0000000..633f048 --- /dev/null +++ b/mips-2-multiplication.asm @@ -0,0 +1,52 @@ +.data +string1: .asciiz "Enter a number:" +string2: .asciiz "Result(low part):" +string3: .asciiz "Result(high part):" +endLine: .asciiz "\n" + +.text +main: + + li $v0, 4 #print string + la $a0, string1 + syscall + + li $v0, 5 #read integer + syscall + move $t0, $v0 + + li $v0, 4 + la $a0, string1 + syscall + + li $v0, 5 + syscall + move $t1, $v0 + + li $v0, 4 + la $a0, string2 + syscall + + mult $t0, $t1 + mflo $a0 + li $v0, 1 + syscall + + li $v0, 4 + la $a0, endLine + syscall + + li $v0, 4 + la $a0, string3 + syscall + + mfhi $a0 + li $v0, 1 + syscall + + + li $v0, 10 + syscall + + + diff --git a/mips-3-division-and-remainder.asm b/mips-3-division-and-remainder.asm new file mode 100644 index 0000000..ac9ef10 --- /dev/null +++ b/mips-3-division-and-remainder.asm @@ -0,0 +1,56 @@ +.data +string1: .asciiz "Enter a number:" +string2: .asciiz "Division:" +string3: .asciiz "Remainder:" +endLine: .asciiz "\n" + +.text +main: + + li $v0, 4 + la $a0, string1 + syscall + + li $v0, 5 + syscall + move $t0, $v0 + + li $v0, 4 + la $a0, string1 + syscall + + li $v0, 5 + syscall + move $t1, $v0 + + li $v0, 4 + la $a0, string2 + syscall + + div $a0,$t0,$t1 # a0 = t0 / t1 + li $v0, 1 + syscall + + li $v0, 4 + la $a0, endLine + syscall + + li $v0, 4 + la $a0, string3 + syscall + + rem $a0,$t0,$t1 # a0 = t0 % t1 + li $v0, 1 + syscall + + + + li $v0, 10 + syscall + + + + + + + diff --git a/mips-4-divider.asm b/mips-4-divider.asm new file mode 100644 index 0000000..92feccf --- /dev/null +++ b/mips-4-divider.asm @@ -0,0 +1,49 @@ +.data +string1: .asciiz "Enter a number : " +endLine: .asciiz "\n" +string2: .asciiz "Lower Part : " +string3: .asciiz "Higher Part : " + +.text +main: + +li $v0,4 +la $a0,string1 +syscall + +li $v0,5 +syscall +move $t0,$v0 + +li $v0,4 +la $a0,string1 #cout< result + li $t1,1 # t1 -> loop counter + +LoopStart: + + bgt $t1,$t2,endLoop # if (t1>t2) goto endLoop + mul $t0,$t0,$t1 + addi $t1,$t1,1 # ++i + j LoopStart + +endLoop: + + li $v0,1 + move $a0,$t2 + syscall # -> print input number + + li $v0,4 + la $a0,string2 + syscall + + li $v0,1 + move $a0,$t0 + syscall # -> print result + + li $v0,10 + syscall + \ No newline at end of file diff --git a/mips-9-while.asm b/mips-9-while.asm new file mode 100644 index 0000000..c125e59 --- /dev/null +++ b/mips-9-while.asm @@ -0,0 +1,49 @@ +.data +string1: .asciiz "Enter a number:" +string2: .asciiz "Sum of digits = " # +string3: .asciiz "Original number = " # +endLine: .asciiz "\n" + +.text + + +main: + + li $v0,4 + la $a0,string1 + syscall + + li $v0,5 + syscall + move $t0,$v0 + + # tempNumber = number; + # sumOfDigits = 0 ; + # while ( tempNumber != 0 ) + # { + # digit = tempNumber % 10; + # sumOfDigits += digit; + # tempNumber /= 10; + # } + + move $t1,$t0 + li $t2,0 + +while: + beq $t1,$zero,endWhile + rem $t3,$t1,10 # 123%10 = 3 + add $t2,$t2,$t3 + div $t1,$t1,10 + j while + +endWhile: + li $v0,4 + la $a0,string2 + syscall + + li $v0,1 + move $a0,$t2 + syscall + + li $v0,10 + syscall \ No newline at end of file