我获得了一个32位的二进制数,并被告知转换为mips指令,整数和四字符ASCII字符串。我转换为dec和指令,没有概率,但ascii字符串给我带来了麻烦。我有一个提供ascii值的表,但我不能从这个数字中得到一个四个字符的单词:
0000 0010 0001 0001 0100 0000 0010 0000
我真的很想如果有人可以简单解释一下如何转换,这个数字应该返回4个应该有一些含义的字符。我不需要任何代码,只需手动转换。
要知道我是否误解了这些问题,这里完全是:
32位字没有固有的含义,可以用许多同样有效的方式表示。将以下内容解码为二进制表示,指令,正整数和四字符ASCII字符串。
0000 0010 0001 0001 0100 0000 0010 0000
ASCII字符串?
指令? 添加$ t0,$ s0,$ s1
正整数? 34684960
二进制代表。给出了我输入的指令/ int。
答案 0 :(得分:0)
根据我的理解,你被告知将每个8位转换为单个ascii字符,但前2个字节是“不可打印”(2为ascii为“文本的开头”,17为ascii为“Device”控制1“),所以如果输出似乎关闭不是你的错,只需更改数字以查看它是否正常工作。
f.e:
0100 0001 0100 1100 0100 0101 0101 1000
通过简单的编码,我们可以得到这些位代表的答案(剧透警报:这是我的名字:))
.text
main:
li $v0, 5
syscall
andi $t1, $v0, 0xFF000000
srl $t1, $t1, 24
andi $t2, $v0, 0x00FF0000
srl $t2, $t2, 16
andi $t3, $v0, 0x0000FF00
srl $t3, $t3, 8
andi $t4, $v0, 0x000000FF
li $v0, 11
la $a0, ($t1)
syscall
la $a0, ($t2)
syscall
la $a0, ($t3)
syscall
la $a0, ($t4)
syscall
li $v0, 10
syscall