C语言转成MIPS汇编语言

代码功能

随机输入两个整数,然后计算这两个数的最小公倍数和最大公约数,并作为计算结果输出。

  • C语言代码

#include "stdio.h"

#include "conio.h"

int main()

{

int a;

int b;

int num1;

int num2;

   printf(“please input two numbers:\n”);

   scanf("%d",num1);//随机输入两个数

scanf("%d",num2);

int temp=0;

if(num2>num1)//如果后面num2大于num1则交换位置

  {

temp=num1;

num1=num2;

num2=temp;

 }

a=num1;

b=num2;

while(b!=0)//一直重复赋值和计算,直到找到正确结果

{

temp=a%b;

a=b;

b=temp;

 }

printf(“gongyueshu:%d\n”,a);//输出结果

printf(“gongbeishu:%d\n”,num1*num2/a);

}

 

  • MIPS代码

 

.data  

  #输出字符串,需要提前定义,

msg_prf1: .ascii "please input twe numbers\0"

msg_prf2: .ascii "gongyueshu\0"

msg_prf3: .ascii "gongbeishu\0"

.text

.globl   main

main:

#printf(“please input two numbers:\n”) $v0等于4输出字符串

la $a0, msg_prf1

li $v0, 4  

syscall

 

#scanf("%d",num1); $v0等于5输入整数,给寄存器$t0

li $v0, 5

syscall

move $t0, $v0

 

#scanf("%d",num2); $v0等于5输入整数,给寄存器$t1

li $v0, 5

syscall

move $t1,$v0

 

#int temp=0;定义变量temp给$t2,并赋初始值等于0

li  $t2, 0

 

 

 

#if成功temp=num1;num1=num2;num2=temp;如果$t0<$t1,则交换两

#者位置

bgt  $t1,$t0, sub1

 

sub1:#交换$t0,$t1  ,$t2当作一个中间变量

move $t2, $t0

  move $t0, $t1

move $t1, $t2

 

#int a=0;把$t3的值赋0

li  $t3, 0

#int b=0;把$t4的值赋0

li  $t4, 0

 

#a=num1; b=num2;

move $t3, $t0       #把$t0的值赋给$t3,

move $t4, $t1 #把$t1的值赋给$t4,

 

 

#while循环部分,一直计算,其中的值一直在变化

loop:

rem $t2, $t3, $t4 #计算 $t3,$t4的模运算,结果存$t2

move $t3, $t4 #把$t4的值赋给$t3

move $t4, $t2 #把$t2的值赋给$t4

bgt $t4, 0, loop #while里面的条件$t4>0

 

#printf(printf(“gongyueshu:%d\n”,a);

la $a0, msg_prf2    #把$a0的值赋变成要输出的字符串

li $v0, 4 #$v0值为4输出字符串

syscall

 

#输出公约数a

move $a0, $t3 #把$t3值赋给$a0,$a0的值用来输出

li $v0,1 #$v0值为1输出整数

syscall

 

#printf(“gongbeishu:%d\n”,num1*num2/a”)

la $a0, msg_prf3  #把$a0的值赋变成要输出的字符串

li $v0, 4 #$v0值为4输出字符串

syscall

 

#计算最小公倍数

  mul $t0, $t0, $t1 #计算最小公倍数$t0,$t1的乘,放在$t0

  div $t0, $t0, $t3 #$t0,$t3相除,结果 放$t0

 

#输出最小公倍数

  move $a0, $t0 #输出$t0

li $v0,1 #$v0值为1输出整数

syscall

  •   运行部分

 

1、输出字符串时$v0=4

 

输出结果:

2、输入数据时$v0=5

输入结果,输入6和9

3、$t0的值变为输入的值6

4、运行过程是寄存器的变化如下:

C语言转成MIPS汇编语言_第1张图片

5、运行结果为3和18

 

 

 

 

 

你可能感兴趣的:(C语言转成MIPS汇编语言)