1

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

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

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

很长的故事

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

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

我可以很好地将字符/字符串打印到文件中,但我只能打印:

.)
.)
.)
....

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

我已阅读此页面: MIPS 文件 I/O 示例

这就是我学会将字符串打印到文件的方式,但我找不到任何关于如何打印程序中计算的整数的信息。从昨晚开始,我一直在寻找一个简单的解决方案,但它让我无法理解。

这是第一个 MIPS 分配,我们必须编写 ac 程序,然后将其转换为 MIPS 程序集,所以我没有太多经验,因此不胜感激。

提前致谢。


这是我想要处理的代码部分,如您所见,我正在尝试在文本文件中镜像控制台上所期望的内容。我正在使用 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:
4

1 回答 1

0

汇编就是欣赏高级编程。您应该尝试将整数一一转换为字符并打印它们。为此,您可以将此伪代码转换为汇编(k 是整数):

while(k){
    char c = 0x03|((k%10)&0x0f);
    push(c);
    k=k/10;
}
while(c=pop()){
    printf("%c",c);
}
于 2012-09-23T20:16:35.990 回答