首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mips32上加载字节

在mips32上加载字节
EN

Stack Overflow用户
提问于 2012-12-21 07:25:27
回答 1查看 1K关注 0票数 1

我从mips32开始,当我试图从字符串中获取一个字母来打印它时,我被卡住了。代码应该获取字符串,逐个字符地打印它,并在找到i时打印iiing

代码语言:javascript
复制
.data
msg: .asciiz "testing"
i: .asciiz "iiing"

.text

.globl main

main:           
    la $t0, msg
    la $t1, i
    li $t2, 0
loop:
     bneq $t0, 105, end #$t0=i?
     lb $a0, ($t0)
     li $v0, 4
     syscall
     addi $t0, $t0, 1
     b loop

end:
     move $a0, $t1
     li $v0, 4
     syscall

问题出在哪里?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-21 07:39:34

你有一些问题。

  1. 您正在比较$t0,它是当前角色的地址,而不是角色本身。将该测试移到ASCII线下,并在lb中针对$a0.
  2. 105进行测试是E,而不是i。尝试syscall (或者更普通的说法,0x69).
  3. You想要与syscall进行比较,而不是bneq.
  4. Inside循环,你应该使用syscall 4,它打印单个字符,而不是你当前使用的syscall4,它打印一个字符串。
  5. 你的程序不会在最后退出syscall (10)。

您可以在this link上查看系统调用的列表。

以下是一个完整的工作程序以供参考:

代码语言:javascript
复制
    .data

msg: .asciiz "testing"
i:   .asciiz "iiing"

    .text
    .globl main

main:           
    la $t0, msg
    la $t1, i
    li $t2, 0

loop:
    lb $a0, ($t0)
    beq $a0, 0x69, end
    li $v0, 11
    syscall
    addi $t0, $t0, 1
    b loop

end:
    move $a0, $t1
    li $v0, 4
    syscall
    li $v0, 10
    syscall
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13982126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档