繁体   English   中英

在 Mips 程序集中打印寄存器值

[英]Printing register value in Mips assembly

我有以下代码,我正在尝试打印一个 int 值:

addi    $t0, $v0, 0             # add immediate: copy returned value to $t0 by adding 0
li      $v0, 1                  # syscall 1 (print_int)
sw      $t0, 0($a0)             # store word: supply argument: recorded return value from $t0
syscall                         # syscall: print the int

但它在运行时出错,我该如何解决?

$a0 应该包含要打印的值,而不是指向它的指针。 将 $v0 分配给 $a0,而不是 addi/sw。 我假设 $v0 最初具有打印价值; 从问题上看并不明显。

同时,$v0 应该有系统调用号,在本例中为 1。

由于您可能没有将 $a0 初始化为有效的内存地址,因此程序会尝试写入一个虚假的内存位置并可能会崩溃。

你可以在$a0移动该值

li $t0,13

li $v0,1

move $a0,$t0

syscall

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM