更改数据段中的字符

时间:2018-03-30 15:43:35

标签: assembly mips

我想更改字符串中的字符。为此,我在$ t2中加载代表命中的char。在此示例中,第7个位置的“”字符应更改为“x”。 尝试使用sh $t2, 0($t0)更新我的电路板后,我收到以下错误:

Exception occurred at PC=0x0040003c
Unaligned adress in store: 0x1001000f

我想我无法使用我使用的命令更新电路板,你能告诉我该怎么做吗?提前谢谢你:)

 # data segment
        .data
        hit:      .asciiz   "-"
        ship:     .asciiz   "x"
        miss:     .asciiz   "o"
        water:    .asciiz   " "

        board:          .asciiz     "    x xx   x  x      x  x  xxx x  x         x   x         x xxxx  x x       x   xx    x         x xx"

        .text
        .globl main

    main:

        la $t0, board

        # this is position of the array which should be a "x" char at the moment
        addi $t0, $t0, 7

        la $t1, hit
        lhu $t2, 0($t1)     # loading the hit char "-"
        sh $t2, 0($t0)      # ERROR : Here I tried to update the board


        li $v0, 10
        syscall

1 个答案:

答案 0 :(得分:1)

您需要使用sb来存储一个字节。 sh存储一个半字,必须是双字节对齐的。