Assembly 用mips求解二次函数
我想用mips汇编做一个简单的程序来学习语言。我有函数ax²+bx。用户必须输入a、b和函数域。我想打印函数为零的值,但只打印域的整数。我认为最简单的方法是循环[x1,x2]中的所有整数并打印函数=0的值。我得到一个错误“未知系统调用268501060”Assembly 用mips求解二次函数,assembly,mips,Assembly,Mips,我想用mips汇编做一个简单的程序来学习语言。我有函数ax²+bx。用户必须输入a、b和函数域。我想打印函数为零的值,但只打印域的整数。我认为最简单的方法是循环[x1,x2]中的所有整数并打印函数=0的值。我得到一个错误“未知系统调用268501060” 你试过调试它吗?单步执行,直到命中得到错误的系统调用,然后,查看$v0中的值。@ErikEidt我刚刚做了并修复了错误,但结果仍然是错误的,所以我想我弄乱了环井,这就是调试。直到每件事都是对的,它才起作用。但至少你取得了一些进展。 .d
你试过调试它吗?单步执行,直到命中得到错误的系统调用,然后,查看$v0中的值。@ErikEidt我刚刚做了并修复了错误,但结果仍然是错误的,所以我想我弄乱了环井,这就是调试。直到每件事都是对的,它才起作用。但至少你取得了一些进展。
.data
msg_read_a: .asciiz"dwse arithmo a:"
msg_read_b: .asciiz"dwse arithmo b:"
msg_read_x1: .asciiz"dwse diastima x1:"
msg_read_x2: .asciiz"dwse diastima x2:"
riza: .asciiz"h sunartish mhdenizetai sto: \n"
.text
main:
li $v0,4
la $a0,msg_read_a #α
syscall
li $v0,5
syscall
move $t0,$v0
li $v0,4
la $a0,msg_read_b #β
syscall
li $v0,5
syscall
move $t1,$v0
li $v0,4
la $a0,msg_read_x1 #διαστημα χ1
syscall
li $v0,5
syscall
move $t2,$v0
li $v0,4
la $a0,msg_read_x2 #διαστημα χ2
syscall
li $v0,5
syscall
move $t3,$v0
move $t4, $t2 #πρωτο χ για επαναληψη
while:
beq $t4, $t3, exit
mul $t6,$t4,$t4 #x^2
mul $t7,$t0,$t6 #a*x^2
mul $t6,$t1,$t4 #b*x
add $t8, $t7, $t6 #τ8 τελικη τιμη συναρτησης
beq $t8,0,isioi #if(t8=0)
isioi:
li $v0, 1
la $v0, riza
syscall
move $a0, $t8
li $v0, 1
syscall
add $t4, $t4, 1
j while
exit:
li $v0, 10
syscall