MIPS将二进制转换为ascii字符串

时间:2017-02-04 09:23:05

标签: assembly x86 ascii mips

我获得了一个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。

1 个答案:

答案 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