Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 如何在.space类型MIPS中存储立即字符_Assembly_Char_Mips - Fatal编程技术网

Assembly 如何在.space类型MIPS中存储立即字符

Assembly 如何在.space类型MIPS中存储立即字符,assembly,char,mips,Assembly,Char,Mips,我目前正在尝试将ascii字符转换为二进制的等效字符,作为我运行的更大程序的一部分。我有一个输入缓冲区,我可以通过一个字符一个字符地成功解析,我使用分支语句来运行特定命令,如下所示: .data ... binaryBuff: .space 32 ... .text ... la $s1, binaryBuff #Store buffer for binary string in $s1 ... beq $t1, '0', zero #

我目前正在尝试将ascii字符转换为二进制的等效字符,作为我运行的更大程序的一部分。我有一个输入缓冲区,我可以通过一个字符一个字符地成功解析,我使用分支语句来运行特定命令,如下所示:

.data
...
    binaryBuff: .space 32
...
.text
...
la $s1, binaryBuff              #Store buffer for binary string in $s1
...
beq $t1, '0', zero              #If current character is ascii zero
...
zero:
    jal loadZero
    jal loadZero
    jal loadZero
    jal loadZero
    j afterCBChecks
...
loadZero: #Load zero into current space in binary buffer, then move to next char
    
    addi $t2, $zero, 48 
    sb $s1, ($t2)                   #Load 0 into current $s1 byte
    addi $s1, $s1, 1                #Move to next char
    jr $ra
我的问题是代码的loadZero部分。我需要能够将单个字符(0或1)存储到由$s1引用的缓冲区中的一个字节中,然后移动到空间中的下一个字节进行重复。我必须这样做以进一步分析二进制字符串作为一个整体,因此(据我所知)不存在其他存储信息的选项

当前,
sb$s1,($t2)
命令在0x004002d4处返回错误
运行时异常:地址超出范围0x00000030
,我知道这是因为我使用的命令试图将地址存储到$s1中,而不是普通字符值。我只是不确定什么命令会真正执行我想要的操作

长话短说,我需要一种方法将立即字符值存储到
.space
数据类型中


一种更有效的方法来实际比较ascii值也不会有什么坏处,因为有16个分支条件,并且每个分支都以相同的方式布局,它在我的代码中使用了122行(这让我很烦恼)。我有一个以前的方法,使用了更多的比较,总的线条更少,但即使这样也让我感到困扰。但是,当我要求装配时,可能对装配要求太多。

请密切注意错误消息。它告诉您地址0x30 aka 48是一个用于存储的坏内存地址。交换寄存器操作数。@ErikEidt我应该知道的。事情总是非常简单。。。谢谢你的回答。如果你想把它作为一个实际的答案而不是一个评论,我可以为你标记它是正确的。