2013-09-29 5 views
0

Правильны ли команды с соответствующими комментариями? У меня возникли проблемы с пониманием языка ассемблера, например, «Размер», «Массив» и «Результат», а также как я должен включить их в свой код.Является ли мой следующий код правильным?

.text 0x00400000 
.align 2 
.globl main 

main: 

lw $a0, size  # Load the size of array into $a0, using lw 
li $a1, 0   # index i 
add $a2, $a0, $a1 # a2 contains the sum, initialize a2 
li $t2, 4   # t2 contains constant 4, initialize t2 

loop: 

mul $t1, $a1, $t2 # t1 gets i*4 
lw $a3, Array($t1) # a3 = N[i] 
add $a2, $a2, $a3 # sum = sum + N[i] (sum is a2) 
add $a1, $a1, 1 # i = i + 1 
beq $a1, $a0, STOR # go to STOR if finished 
    j loop 

STOR: 

sw $a2, Result[1] # store sum at Result, using sw 

.data 0x10000000 
.align 2 
Array: .word 3 6 9 12 15 18 21 24 
Size: .word 8 
Result: .word 0 

ответ

0

Большая часть этого штрафа, которую вы можете проверить, запустив ее. Однако проблема состоит в том, что вы инициализировали сумму до размера для общей причины. Вместо этого, сумма должна начинаться на 0.

Изменить:

add $a2, $a0, $a1 # a2 contains the sum, initialize a2

To:

move $a2 $zero

Смежные вопросы