如何将MIPS数字字符串转换为十六进制

时间:2013-11-25 22:49:54

标签: string binary mips hex

我开始写一个MIPS程序,我得到一个十六进制表示的字符串,如A23B,并希望将它组合成1个整数十六进制数。我真的迷失在如何提取说一个数字的部分,说B并将其转换为十六进制为mips然后获取另一个。我并不是在寻找一个完整的程序,因为我知道这不是它的目的,而是因为我真的迷失了,所以我要开始了,谢谢。

1 个答案:

答案 0 :(得分:3)

考虑一下。假设您的数据段看起来像这样

.data
str: .space 5 #enough room for a 4 digit hex number

此外,str指向的内存包含要转换为数字的字符串。要将其第一个字节转换为$t1,您可以使用:

la $t0 str
lb $t1 0($t0)

接下来,有四种情况:

  1. '0' < $t1 < '9'
  2. 'a' < $t1 < 'f'
  3. 'A' < $t1 < 'F'
  4. 错误
  5. 我会假设你知道如何检查这些案件。

    除了最后一种情况外,我们必须按给定的值递增总和;因此,案件的下一步将是:

    1. sum += $t1 - '0'
    2. sum += $t1 - 'a' + 10
    3. sum += $t1 - 'A' + 10
    4. 显然这是伪代码,但它说明了数字和字母的ASCII值是连续的主要观点,因此计算它们的值是微不足道的。

      最后,因为我们知道每个数字恰好代表4位,并且因为我们从左到右开始读取,所以我们必须将剩余的总和移位4位:

      sll $sum $sum 4
      

      这是一个字符的步骤,转换你需要循环遍历每个字符的整个字符串。