String 如何将数字的MIPS字符串转换为十六进制
我开始写一个MIPS程序,在这个程序中,我得到一个十六进制表示的字符串,比如说A23B,我想把它组合成一个完整的十六进制数。我真的迷失在如何提取一个数字,比如说B,并将其转换为十六进制的mips,然后获取另一个。我不是在寻找一个完整的程序,因为我知道这不是它的目的,而是作为一个开始,因为我真的迷路了,谢谢你。考虑一下这一点。假设您的数据段如下所示String 如何将数字的MIPS字符串转换为十六进制,string,binary,mips,hex,String,Binary,Mips,Hex,我开始写一个MIPS程序,在这个程序中,我得到一个十六进制表示的字符串,比如说A23B,我想把它组合成一个完整的十六进制数。我真的迷失在如何提取一个数字,比如说B,并将其转换为十六进制的mips,然后获取另一个。我不是在寻找一个完整的程序,因为我知道这不是它的目的,而是作为一个开始,因为我真的迷路了,谢谢你。考虑一下这一点。假设您的数据段如下所示 .data str: .space 5 #enough room for a 4 digit hex number 而且,str指向的内存包含要转换
.data
str: .space 5 #enough room for a 4 digit hex number
而且,str
指向的内存包含要转换为数字的字符串。要将其第一个字节放入$t1
,可以使用:
la $t0 str
lb $t1 0($t0)
接下来,有四种情况:
'0'<$t1<'9'
'a'<$t1<'f'
'A'<$t1<'F'
sum+=$t1-'0'
sum+=$t1-'a'+10
sum+=$t1-'A'+10
sll $sum $sum 4
这是一个字符的步骤,要转换整个字符串,您需要在每个字符上循环。是的,这有助于我开始。啊,那么字符串被加载到不同的字节中了?这是我遇到的一个问题,我不知道如何在存储器、字、字节等中加载字符串。非常感谢。稍后我会尝试发布我的完整代码,看看我是否接近,如果可以的话。另外,我认为lb应该是lb$t1,0($t0)来从字符串中获取第一个字节。对不起,这是lb的一个拼写错误。我很高兴听到我的帮助,我希望您“接受”答案:)另外,您会建议对案例进行转换还是进行大量分支?不,每一行都有几行。你只需要一行中的几个分支好吧,但对于大写字母,我不是必须先说减去65,然后再加10,才能将它们转换成用户输入的数字吗?比如说D,被解释为0x44,对吗?如果我减去65,然后再加上10,这将变成用户想要的十六进制表示形式的D,即数字13?如果我不能完全完成的话,我会在明天之前完成我的全部代码。