MIPS:字符串到整数

时间:2017-12-09 22:03:20

标签: assembly mips

data

string: .asciiz "The String is\0" 
string2: 

.text

main:

#Subtract A and 10 from A to F
#Subtract 0 if between 0 to 9

#\0 : 5C30

sw $a0, string

    str2int:        # convert string to integer
        li $t6, 0x30    # Temp variable contains $t6 = '0'

        li $t7, 0x39    # Temp variable contains $t7 = '9'

        li $v0, 0   # initialize value $v=0

        move $t0, $a0   # $t0 = pointer to string

        lb $t1, ($t0)   # load $t1 = digit character

    loop: 
        blt $t1, $t6, NoDigit   # char < '0'

        bgt $t1, $t7, NoDigit   # char > '9'

        subu $t1, $t1, $t6  # Convert char to integer

        mul $v0, $v0, 10    # multiply value by 10

        add $v0, $v0, $t1   # $v0 = $v0 x 10 + digit

        addiu $t0, $t0, 1   # point to next char

        lb $t1, ($t0)       # load $t1 = next digit

        bne $t1, $0, loop   # branch if not end of string

        jr $ra          # return integer value

    NoDigit: 
        li $v0, -1      # return -1 in $v0

        jr $ra          # return integer value 

    CheckBetween2to16: li $t0, 0X30

    CheckNull:  #Return 0

    CheckLegal: #Check if 

    Converting:
  1. Obeys所有适用的MIPS函数调用约定
  2. 采取两个论点:
    一个。第一个参数:空终止字符串的地址
    湾第二个参数:2到16范围内的整数,包括
  3. 返回整数结果。
  4. 您可以采取以下措施:

    1. 第一个参数是合法地址,表示字符串的第一个字符。
    2. 字符串由空字符“\ 0”终止。这个角色 不被视为字符串的一部分。
    3. 字符串可能为空,也就是说,第一个参数中地址处的字符是空字符。在这种情况下,返回值为零是恰当的。
    4. 结果将适合32位整数
    5. 如果第二个参数不在2到16(含)范围内,则打印错误信息并返回零值。

      所以我有一个将十六进制转换为整数的示例代码。但是对于这个给定的项目,我们需要实现一个程序,将空终止的字符串地址转换为整数值。

0 个答案:

没有答案