2014-10-05 49 views
2

基本上,我想用MIPS中的分支语句来比较两个字符。虽然我不确定使用什么指令。反正我会告诉我的伪代码我C.比较MIPS中的字符并进行字符运算

The array M contains characters. 
if(M[i] >= "0" && M[i] <= "9") 
{ 
    ascii_to_bin += M[i] - "0" 
} 

它写道,仅仅是if语句的一个,但它封装了每一个问题我的时刻。在条件语句中进行比较时,我不知道使用哪些指令。此外,行$ascii_to_bin += M[i] - "0";真的不知道如何在MIPS中进行字符算术。

+0

我不是100%的信心,这就是为什么这是一个评论,而不是一个答案,但我不不要以为MIPS(或任何汇编语言)有类型的概念。我很确定你只能通过操纵字符的ASCII值来达到这个目的。 – 2014-10-05 03:25:47

+0

你通过操纵ASCII值是什么意思? – 2014-10-05 03:46:11

+0

也许我会做出这个答案。挂上 – 2014-10-05 06:20:31

回答

0

正如您可能知道的那样,您可以对C(和C++,Java等)中的字符进行算术运算的唯一原因是char类型可以通过它们的ASCII值被隐式转换为int类型。然而,MIPS(和更广泛的汇编语言)没有类型的概念;包含“字符”的变量的任何概念都是由程序员强加的,而不是由机器强加的。

那么这是什么意思?这意味着你正在直接使用整数值。如果你从内存中拉出你所知道的字符a,你实际上是而不是使用ASCII值,97。你可以比较,就好像它是任何其他整数(因为它任何其他整数)。

所以,你的if语句会再看看大致是这样的(伪代码):

If M[i] >= 48 and M[i] <= 57 then: 
    ascii_to_bin += M[i] - 48 
相关问题