【问题标题】:MIPS Check if equal to a certain characterMIPS 检查是否等于某个字符
【发布时间】:2013-04-19 07:46:50
【问题描述】:

我正在尝试用 mips 编写 srinf。首先,我想计算有多少个字符。

sprintf:
    addi $sp, $sp, -12
    sw $ra, 8($sp)
    sw $s1, 4($sp)
    sw $s2, 0($sp)




        li      $s0, 0          # len = 1
        la      $s1, ($a1)        # s = str
test:
        lb      $s2, 0($s1)     # c = *s
        beqz    $s2, done       # if c == '\0', branch to "done"
        beq $s2, '5', done
        addi    $s0, $s0, 1     # len = len + 1
        addi    $s1, $s1, 1     # s = s + 1
        j       test

percent:




done:
        li      $v0, 1          # syscall code: print_int
        move    $a0, $s0
        syscall
        li      $v0, 11         # syscall code: print_char
        li      $a0, 10         # pass newline character
        syscall

        jr      $ra

但是当有 %d 或 %c 等时,需要检查是否在格式中。

我如何检查这样的某个字符? 我在 mips ascii 中看到了这个 http://galia.fc.uaslp.mx/~luis/arquitectura_files/table.pdf

但是 beq 会是什么样子?

【问题讨论】:

    标签: ascii mips


    【解决方案1】:

    无需查阅 ASCII 表。任何值得使用的汇编程序都支持字符立即数。所以你可以这样做:

    lbu $s2,($s1)
    li $t0,'%'
    bne $s2,$t0,not_percent_sign
    

    或者,如果您的汇编器支持带有立即数的分支伪指令:

    lbu $s2,($s1)
    bne $s2,'%',not_percent_sign
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-10
      • 1970-01-01
      • 2017-07-21
      • 1970-01-01
      • 2015-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多