提问人:Zuja Plays 提问时间:4/6/2023 更新时间:4/6/2023 访问量:25
MIPS 汇编语言 printString(p) 函数
MIPS Assembly Language printString(p) function
问:
我在程序内存中存储了一个字符串,我试图将其打印到控制台,但它未能越过第一个 ascii 字母,只是重复 w 表示无穷大。我只是使用汇编程序来隐藏它,但它基本上会不断重印 W。将内存映射 IO 与0x80000008一起使用以写入或控制台输出。
.data
welcome: .asciiz "Welcome to tab!\n"
.text
main:
# Load the address of the "welcome" string into register $4
la $4, welcome
# Call the printString function
jal printString
# Exit the program
li $v0, 10
# Function to print a null-terminated string to the console
printString:
# Initialize count to 0
add $2, $0, $0
# Loop over the characters in the string
loop:
# Load the next byte from memory
lb $8, 0($4)
# If the byte is null, exit the loop
beq $8, $0, end
# Print the character to the console
li $v0, 11
addi $a0, $8, 0
# Increment the current character pointer and the count
addi $4, $4, 1
addi $2, $2, 1
# Jump back to the beginning of the loop
j loop
# Return to the calling function
end:
jr $ra
答: 暂无答案
上一个:堆栈帧大小
评论
$4
是 ,与您用于打印到控制台的那个相同(您删除了它?请参见 en.wikibooks.org/wiki/MIPS_Assembly/Register_File。这就是为什么将寄存器编号与“ABI”名称混合使用是个坏主意的原因。我不得不查找它才能找到 的名称,但是当我看到您的程序使用原始寄存器编号时,我立即怀疑了类似的事情。$a0
syscall
$4