簡體   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