MIPS - 在内存中存储整数(标签)

时间:2018-01-21 14:18:02

标签: assembly mips

问题如下所述。我想我有点工作的解决方案。但是,我并没有真正利用标签(数组)来存储我的整数。我的程序当前存储0的第一个整数为1000000(内存地址),但我不确定它是否正确。有什么方法可以将我的整数存储在"数组"?请注意,我不能使用诸如la之类的伪指令。

问题:

  

编写一个程序,在.data部分的前四个字节中存储数字0,然后将数字1存储在接下来的四个字节中,然后将数字2存储在之后的四个字节中,依此类推。对数字0到24执行此操作。

     

当然你会在计数循环中这样做。数据部分中的地址包含在基址寄存器中。每次存储号码时递增基址寄存器。

     

程序的数据部分应该是

     .data
      array:   .space    100

我的解决方案:

    .text
    .globl main

main:

ori     $8, $0, 0       # counter 
ori     $9, $0, 25      # counter bound
lui     $10, 0x1000     # initialize memory address


loop:
beq     $8, $9, exit    # exit if counter = 25  
sll     $0, $0, 0
sw      $8, 0($10)  # store integer 
sll     $0, $0, 0 
addiu   $8, $8, 1       # increment counter 
addiu   $10, $10, 4     # increment memory address  

j loop                  # while loop
sll     $0, $0, 0 

exit:
sll     $0, $0, 0


.data
array:  .space 100      # reserve 100 bytes. each integer is 4 bytes. to reserve 25 integers

0 个答案:

没有答案