MIPS程序集中字符串/ char的简单整数?将整数打印到文本文件?

时间:2012-09-22 01:42:21

标签: string file-io integer char mips

好的,所以我有一个任务,我必须找到并打印素数。

我已经完成了,但现在我需要将结果打印到文件中。

长话短说,如何将整数打印到文件?

长篇故事

我可以将整数和字符串打印到控制台,所以我有这样的输出:

1.) 2
2.) 3 
3.) 5
...

我可以将字符/字符串打印到文件中,但我可以打印的是:

.)
.)
.)
....

有没有办法在MIPS程序集中将intger转换或存储到字符串?我的任务不是做一个MIPS版本iota,所以如果有一个简单的输出整数到文件,我会很感激任何见解。

我已阅读此页:MIPS File I/O Example

这就是我学习如何将字符串打印到文件中,但是我找不到任何关于如何打印在程序中调用的intger的内容。我自昨晚以来一直在寻找一个简单的解决方案,但它让我感到厌烦。

这是第一个MIPS分配,我们必须编写一个c程序然后将其翻译成MIPS程序集,所以我没有太多的经验,所以任何帮助都会受到赞赏。

提前致谢。


以下是我想要处理的代码部分,因为您可以看到我正在尝试在文本文件中镜像控制台上的desiplayed。我正在使用MARS MIPS模拟器。

FOR:
beq $t0, $t1, EndFOR
IF:
jal test_prime
bne $s1, 1, EndIF
addi $s0, $s0, 1        #Increment 'c'.

#Print 'c', the nth counted place of the found Prime Integer.
li $v0, 1
move $a0, $s0
syscall

sw $s0, buffer($0)

li $v0, 15
move $a0, $s7
la $a1, buffer
li $a2, 1
syscall

#Print '.) '
li $v0, 4
la $a0, dotP
syscall

li $v0, 15
move $a0, $s7
la $a1, dotP
li $a2, 3
syscall


#Print the Prime integer, 'i'.
li $v0, 1
move $a0, $t0
syscall

#Print a New Line.
li $v0, 4
la $a0, newL
syscall

li $v0, 15
move $a0, $s7
la $a1, newL
li $a2, 1
syscall
EndIF:

IF2:
beq $s0, 100, EndFOR        #Once 100 Prime Integers have been found, escape out of the 'For' loop.
EndIF2:             #Not Necessary, but just there to have a complete coding style.

addi $t0, $t0, 1            #Increment 'i'.
j FOR
EndFOR:

1 个答案:

答案 0 :(得分:0)

大会就是欣赏高级节目。您应该尝试将整数逐个转换为字符并打印它们。为此,您可以将此伪代码转换为程序集(k是整数):

while(k){
    char c = 0x03|((k%10)&0x0f);
    push(c);
    k=k/10;
}
while(c=pop()){
    printf("%c",c);
}