我正在尝试用MARS(MIPS汇编器和运行时模拟器)编写一个程序,该程序将从用户处获取两个整数,然后根据用户选择的操作进行加法或乘法运算。无论如何,我还没有深入到程序中,但是我真的不知道为什么它不能将我的第三个提示打印出来。你能帮我吗?
.data
prompt1: .asciiz "Enter an Integer!"
prompt2: .asciiz "Enter Another Integer!"
prompt3: .asciiz "Would you like to add or multiply? (+ for add, * for multiply)"
resultout: .asciiz "The result is:"
.text
main:
la $a0, prompt1
li $v0, 4
syscall
li $v0, 5
syscall
add $t0, $v0, $zero
la $a0, prompt2
li $v0, 4
syscall
li $v0, 5
syscall
add $t1, $v0, $zero
la $a0, prompt3
li $v0, 12
syscall
li $v0, 11
syscall
add $t2, $v0, $zero
答案 0 :(得分:1)
要打印提示并获取单个字符,我认为您需要立即将$v0
的正确值加载到syscall
。根据MARS 4.5帮助文件,可用服务表建议您的代码应类似于第24行中的以下代码:
la $a0, prompt3
li $v0, 4
syscall
li $v0, 12
syscall
也就是说,您要“打印字符串” prompt3
中的所有内容,然后“读取字符”以获取单个字符。您输入的第一个syscall
是12,是“读取字符”,因此它在等待您输入内容。
我建议将代表特定系统调用的魔术数字(如4和12)作为常量输入代码:
.eqv SYS_PRINT_STRING 4
[...]
li $v0, SYS_PRINT_STRING