我正在尝试将MIPS寄存器中的无符号整数值作为ASCII文本打印到控制台。
换句话说,让我们假装$ a0中有“0x4ab3c823”。我想在xSPIM中打印出“4ab3c823”到控制台。
这是我的尝试。我一直得到十进制值,而不是ASCII。它只是整个程序的剪辑,所以我删掉了其余部分。
.data
printspace: .space 8
.text
printHex:
move $t0,$a0
la $a0,printspace #Save address of 8 blank bytes to $a0
sw $t0,0($a0) #Copys the integer I want to print to $a0's address in memory
li $v0 1
syscall
jr $ra
答案 0 :(得分:1)
我认为你的意思是你想要十六进制输出,因为ASCII输出将是其他字母。
我不认为SPIM有十六进制输出。这意味着您必须逐个字符地打印。这将涉及一次取$ a0四位,并添加一个常量(取决于它是否在0-9或A-F之间)以将其转换为可打印的ASCII字符。
在MARS模拟器中,li $v0 34
以十六进制打印。
答案 1 :(得分:0)
随着一些摆弄,我得到以下内容来做我需要的。张贴未来派对。
.text
hexToConsole:
#$t0 already contains what we want to print
li $t1,58
la $t2,0xf0000000
maskAndShift:
beq $t0,$zero,exit
and $t3,$t2,$t0
sll $t0,$t0,4
srl $t3,$t3,28
addi $t3,$t3,48
blt $t3,$t1,print
addi $t3,$t3,39
b print
print:
move $a0,$t3
li $v0,11
syscall
b maskAndShift
exit:
j $ra