bất kỳ ý tưởng nào? Tại sao tôi nhận được: Runtime ngoại lệ tại 0x00400020: lấy địa chỉ không phù hợp trên ranh giới từ dòng 0x00000007 Vấn đề là: lw $ s1,0 ($ a1) #copy arg2 = kích thước của mảngMIPS tìm nạp địa chỉ không được căn chỉnh trên ranh giới từ, được sử dụng .align 4, vẫn không đi
.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:
Hey, Tôi thực sự đánh giá cao sự giúp đỡ. Đây không phải là một tìm kiếm tuyến tính, nó chỉ là một vấn đề từ một cuốn sách có thêm một số khác, nhưng điều đó không liên quan. Tôi đã quay lại và nhận thấy một vài lỗi, nhưng tôi vẫn gặp sự cố. Các vấn đề của tôi đã xoay quanh vấn đề này: la $ a0, mảng \t #if điều này tải địa chỉ của mảng vào a0 và lw $ s0, ($ a0) # sẽ không sao chép địa chỉ được lưu tại đó đến s0 Tôi đã sửa điều này trong mã của tôi bằng cách thực hiện la $ s0, ($ a0) Cách tôi hiểu LW là nó nhận được giá trị được lưu trữ tại địa chỉ bộ nhớ đó và đặt nó vào thanh ghi. Vậy điều này có đúng không? Nó chỉ lưu trữ địa chỉ? – bep
la tải địa chỉ của một biểu tượng. Trong trường hợp của bạn, nó sẽ chứa vị trí của phần tử mảng đầu tiên. lw tải ô nhớ từ bộ nhớ và lưu nó vào thanh ghi đích. la $ s0, ($ a0) không có ý nghĩa. la luôn lấy một biểu tượng từ mã của bạn, không bao giờ là một thanh ghi. –