कोई विचार नहीं है? मैं क्यों मिल रही है: रनटाइम अपवाद 0x00400020 पर: शब्द सीमा 0x00000007 समस्या लाइन पर गठबंधन नहीं पता लाने जाता है: सरणीएमआईपीएस लांच पता शब्द सीमा पर गठबंधन नहीं किया गया, इस्तेमाल किया .align 4, अभी भी
.data
.align 4 #added this, didnt work
size: .word 7
.align 4 #added this, didnt work
search: .word 30
.align 4 #added this,didnt work
array: .word 10,20,30,40,50,60,70
.align 4
.text
main:
la $a0,array #$a0 = address of array
lw $a1,size #a1 = size of array
lw $a2,search #$a2 = search key
COUNT:
lw $s0,0($a0) #copy arg1 = address array
addi $s1,$zero,7
lw $s1,0($a1) #copy arg2 = size of array
lw $s2,0($a2) #copy arg3 = search key (n)
addi $s2,$zero,30
COUNTLOOP:
add $v0,$zero,$zero #v0 = res
add $t0,$zero,$zero #$t0 = init i to 0
slt $t1,$t0,$s1 #check if i > size of array
beq $t1,$zero,DONECOUNT #i is n so end
sll $t2,$s0,2 #$t2 = get off set for a[i]
lw $t3,0($t2) #$t3 = get value of a[i]
bne $t3,$s2,CLOOPBTM #check if a[i] == seach key
addi $v0,$v0,1 #if above then increment res
CLOOPBTM:
addi $t0,$t0,1
j COUNTLOOP
DONECOUNT:
अरे, मैं वास्तव में सहायता के लिए आभारी हूं। यह काफी रैखिक खोज नहीं है, यह सिर्फ एक पुस्तक से एक समस्या है जो एक और संख्या जोड़ती है, लेकिन यह अप्रासंगिक है। मैं वापस गया और कुछ गलतियों पर ध्यान दिया, लेकिन मुझे अभी भी समस्याएं थीं। मेरी समस्याएं इसके आसपास घूमती हैं: la $ a0, array \t #if यह सरणी के पते को 0 और lw $ s0, ($ a0) में लोड करता है # क्या यह s0 पर संग्रहीत पते की प्रतिलिपि नहीं बना सकता है यह मेरे कोड में ला $ s0 कर रहा है, ($ a0) जिस तरह से मैंने एलडब्ल्यू को समझ लिया है, वह उस स्मृति पते पर संग्रहीत मूल्य प्राप्त करता है और इसे रजिस्टर में रखता है। तो क्या यह गलत है? यह सिर्फ पता स्टोर करता है? – bep
ला प्रतीक के पते को लोड करता है। आपके मामले में इसमें सरणी के पहले तत्व का स्थान होगा। lw स्मृति से मेमोरी सेल लोड करता है और इसे गंतव्य रजिस्टर में संग्रहीत करता है। ला $ s0, ($ a0) कोई समझ नहीं आता है। ला हमेशा आपके कोड से एक प्रतीक लेता है, कभी रजिस्टर नहीं। –