关于汇编代码的问题

时间:2014-09-16 00:00:11

标签: assembly

我正在学习如何在汇编中编码,所以我是一个菜鸟。我写了这段代码,它在数组中添加了3个第一个元素并将其保存到数组中的第4个元素但是我收到了错误但是我不理解它的含义以及我做错了什么。

这是错误 第19行:0x00400040处的运行时异常:地址超出范围0x00000018

    .text
    .globl main

main:   la $t0, i
    la $s0, sum 
    la $t3, array 
    la $t5, k 

    lw $t0, 0($t0)
    lw $s0, 0($s0)
    lw $t3, 0($t3)
    lw $t5, 0($t5) 

Loop:   
    add $s0, $s0,$t3, # adds sum with element in array
    addi $t3, $t3, 4   # add 4 to array to get next element
    addi $t0, $t0, 1   #add + to i
    bne $t5, $t0, Loop # if k !=i back to loop
    sw $s0, 12($t3)  #store sum in 4th element of array
    nop

    .data 0x10010000
i:  .word 0
k:  .word 3
sum:    .word 0
array:  .word 0:2

1 个答案:

答案 0 :(得分:0)

我根本不认识这个集会,并且考虑到压倒性的反应,我认为没有其他人做过,但经过一些检查,我认为你正在混合价值观和地址!

add $s0, $s0,$t3, # adds sum with element in array

你使用$ t3和数组中的值
并在

addi $t3, $t3, 4   # add 4 to array to get next element

你希望$ t3包含一个地址。你不能同时拥有两者。