الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

هذا الكود يحتاج بعض التعديلات

بدأه bokasim في 24 أبريل 2008 · 5 رد · 1,081 مشاهدة · في الميكروكنترولر (المتحكم) و الدوائر الرقمية و المنطقية
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عندي هذا الكود و محتاج أعمل عليه هذه التعديلات

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
#2

هذا MIPS Assembly ...

اتمنى ان يساعدك احد هنا !!

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#3

لا ينقل أحسن...

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#4
اقتباس
هذا MIPS Assembly ...

اتمنى ان يساعدك احد هنا !!

نفس الحكاية B)

ال $s0 و حتي 7 دية ريجيستر لحفظ القيم

ال $a0 الي $a3 دية arguments

ال $t0 الي ال $t7 دية Temporaries

beq تساوي branch equal يعني JE

J تساوي JMP

sw تساوي store in memory يعني Lea

addi تساوي add immediate لجمع عدد علي قيمة في ريجستر

يلا بقي ساعدوا انت :lol: :P

#5
اقتباس
يلا بقي ساعدوا انت

يا عم لأ ده add بتاخد 3 operands مرة واحدة !!!!

عايزني ألسع ؟؟

:haha: :haha: :haha:

تم تعديل هذه المشاركة بواسطة GamingMasteR في 24 أبريل 2008 في 23:55

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#6

???

مواضيع مشابهة