Arrays MIPS函数和数组
我能很好地理解和使用Java/c++,但对于我来说,汇编只是让我感到困惑,有两个函数我遇到了麻烦。第一: 接收字符串并在终端上打印的函数 另一个接收字符串并将其转换为整数(给定所有由数字组成的字符串) 你知道从哪里开始吗 更新 关于第二个函数,到目前为止我得到了:Arrays MIPS函数和数组,arrays,string,assembly,mips,Arrays,String,Assembly,Mips,我能很好地理解和使用Java/c++,但对于我来说,汇编只是让我感到困惑,有两个函数我遇到了麻烦。第一: 接收字符串并在终端上打印的函数 另一个接收字符串并将其转换为整数(给定所有由数字组成的字符串) 你知道从哪里开始吗 更新 关于第二个函数,到目前为止我得到了: main: atoi: li $v0, 8 la $a0, tstr li $a1, 64 syscall sub $sp, $sp,4 sw $ra
main:
atoi:
li $v0, 8
la $a0, tstr
li $a1, 64
syscall
sub $sp, $sp,4
sw $ra, 0($sp)
move $t0, $a0
li $v0, 0
next:
lb $t1, ($t0)
beqz $t1, endloop
mul $v0, $v0, 10
add $v0, $v0, $t1
sub $v0, $v0, 48
add $t0, $t0, 1
b next
endloop:
lw $ra, 0($sp)
add $sp, $sp, 4
已更新代码,仍然得到10上的错误,该错误是无效的操作数。关于
sub$v0,$v0,48
我应该像sub$t1,$t1,48
那样做吗?对于输入输出的东西,你必须使用系统调用。对于写入(以零结尾的)字符串,您将使用syscall#4,它希望缓冲区的地址为$a0。现在只需将syscall的编号放入$v0并执行它。例如,此代码段读取一个字符串:
li $v0, 8 # syscall number
la $a0, theString # buffer
li $a1, 64 # length of buffer
syscall # read!
您可以找到一些系统调用号码。第二个练习,这里是C++代码,试着翻译:p
int result = 0;
while (*digit >= '0' && *digit <='9') { // digit is char *
result = (result * 10) + (*digit - '0');
digit++;
}
对于输入输出的东西,您必须使用系统调用。对于写入(以零结尾的)字符串,您将使用syscall#4,它希望缓冲区的地址为$a0。现在只需将syscall的编号放入$v0并执行它。例如,此代码段读取一个字符串:
li $v0, 8 # syscall number
la $a0, theString # buffer
li $a1, 64 # length of buffer
syscall # read!
您可以找到一些系统调用号码。第二个练习,这里是C++代码,试着翻译:p
int result = 0;
while (*digit >= '0' && *digit <='9') { // digit is char *
result = (result * 10) + (*digit - '0');
digit++;
}
是的,但我还是有点落后。我做了一些部分,但我甚至不知道如何声明一个主要的,以及如何“调用”一个功能使用,如果我可以清楚地说。你知道这些吗?是的,我知道。我感到困惑的是,例如,我从用户那里得到了“输入”吗?我如何从用户的“输入”调用某些函数(测试porpuse)是的,但我还是有点落后。我做了一些部分,但我甚至不知道如何声明一个主要的,以及如何“调用”一个功能使用,如果我可以清楚地说。你知道这些吗?是的,我知道。我感到困惑的是,例如,我从用户那里得到了“输入”吗?我如何从一个“输入”的用户调用某些函数(测试porpuse)非常感谢,一个很好的开始!那么,让我们假设我想打印一个字符串,我将该片段读取一个字符串,然后添加li$v0,4系统调用?@Zein:不,只需将li$v0,8替换为li$v0,4,并删除li$a1,64(您不需要指定长度),我如何在注释中发布代码,而不使用行?我还有一个问题xP@Zein:事实上我不知道。我试了好几次,但是非常感谢你,这是一个很好的开始!那么,让我们假设我想打印一个字符串,我将该片段读取一个字符串,然后添加li$v0,4系统调用?@Zein:不,只需将li$v0,8替换为li$v0,4,并删除li$a1,64(您不需要指定长度),我如何在注释中发布代码,而不使用行?我还有一个问题xP@Zein:事实上我不知道。我试了好几次,但是P