السلام عليكم
عندي هذا الكود و محتاج أعمل عليه هذه التعديلات
1 - الطلب من المستخدم ادخال عدد الأرقام المطلوب إدخالها
2 - إدخال الأرقام
3 - عمل ترتيب تصاعدي لهذه الأرقام
4 - يطلب من المستخدم إدخال مفتاح للبحث عنه
أرجو الإفاده ولكم جزيل الشكر
.data v: .word -2,0,5,7,9,12,17,25,40,128 FOUNDS: .asciiz "This Number is FOUND" # declares a null-terminated string, to "prettify" output NOTFOUNDS: .asciiz "This Number is NOTFOUND" .text main: la $a0,v ######## li $a1,10 li $a2,25 jal bsearch li $v0, 10 syscall bsearch: addi $sp,$sp,-28 sw $ra,24($sp) sw $s0,20($sp) sw $s1,16($sp) sw $s2,12,($sp) sw $s3,8($sp) sw $s4,4($sp) sw $s5,0($sp) li $s4,0 # Set Initial Left li $s5,10 # Set Initial Right #Read Number From User li $v0, 5 syscall # Number Saved In $v0 add $a2,$v0,$zero towhile: slt $t0,$s4,$s5 # While(left < Right ) beq $t0,$zero,NotFound jal mid add $t1 , $v1,$v1 # Index Of Array * 4 add $t1 , $t1,$t1 add $t1 , $a0,$t1 #Phisical Adress = Base Adress + Index Of Array *4 lw $t1 ,0($t1) # $t1 = V[ PH.A ] beq $t1,$a2, InArray slt $t2,$a2,$t1 bne $t2,$zero , SetRight addi $s4,$v1,1 j towhile SetRight: add $s5,$v1,$zero j towhile InArray: li $v0, 4 # system call code for printing string = 4 la $a0, FOUNDS # load address of string to be printed into $a0 syscall j Exit NotFound: li $v0, 4 # system call code for printing string = 4 la $a0, NOTFOUNDS # load address of string to be printed into $a0 syscall Exit: lw $s5,0($sp) lw $s4,4($sp) lw $s3,8($sp) lw $s2,12($sp) lw $s1,16($sp) lw $s0,20($sp) lw $ra,24($sp) addi $sp,$sp,28 jr $ra mid: add $t0,$s4,$s5 srl $v1,$t0,1 jr $ra
