Assembly MIPS中带两个条件的While循环
这些天我在学习MIPs汇编语言,我被要求在作业中用MIPs实现以下C代码Assembly MIPS中带两个条件的While循环,assembly,while-loop,mips,Assembly,While Loop,Mips,这些天我在学习MIPs汇编语言,我被要求在作业中用MIPs实现以下C代码 int i = 0; int j = 10; while(i < 5 && j >= 5) { int sum = i+j; printf(“%d ”, sum); i++; j--; } inti=0; int j=10; 而(i=5) { 整数和=i+j; printf(“%d”,总和); i++; j--; } 我无法理解如何在MIPS中使用两个条件实现
int i = 0;
int j = 10;
while(i < 5 && j >= 5)
{
int sum = i+j;
printf(“%d ”, sum);
i++;
j--;
}
inti=0;
int j=10;
而(i<5&&j>=5)
{
整数和=i+j;
printf(“%d”,总和);
i++;
j--;
}
我无法理解如何在MIPS中使用两个条件实现while循环?我为您编写了以下代码:
.data
space: .asciiz " "
.text
.globl main
.ent main
main:
li $t0, 0 #store i's value in $t0
li $t1, 10 #store j's value in $t1
li $t6, 5
j while
.end main
#while loop
while:
sge $t2, $t0, $t6 #$t2=1(true) if i>=5
slt $t3, $t1, $t6 #$t3=1(true) if j<5
or $t4, $t3, $t2
beq $t4, 1, exit #exit, if $t4=1(true)
add $t5, $t1, $t0 #sum of i and j
#printing sum
li $v0, 1
move $a0, $t5
syscall
li $v0, 4
la $a0, space
syscall
add $t0, $t0, 1 #incrementing i
sub, $t1, $t1, 1 #decrementing j
j while
.end while
exit:
li $v0, 10
syscall
.data
空间:.asciiz“”
.文本
格洛博梅因酒店
新界北总区
主要内容:
li$t0,0#将i的值存储在$t0中
li$t1,10#将j的值存储在$t1中
李$t6,5
j同时
.尾干管
#while循环
而:
sge$t2、$t0、$t6#$t2=1(如果i>=5,则为真)
slt$t3,$t1,$t6#$t3=1(真)如果你没有实现一个函数,只需一个大的main
。哦,是的,谢谢你让我知道。更正了。