MIPS 两个数的和(输入,计算,输出)

C语言

Void main()
{ 
   unsigned int num1,num2;    //16位
   scanf(“
Enter the 1st number:%d”,&num1);
   scanf(“
Enter the 2nd number:%d”,&num2);
   Printf(“The sum = %d”,num1+num2);

}

汇编

.data
CONTROL: .word32 0x10000
DATA: .word32 0x10008
TIPS1: .asciiz "Enter the 1st number:"
TIPS2: .asciiz "Enter the 2st number:"
TIPS3: .asciiz "The sum="
.text
main:
lwu r31,CONTROL(r0)#控制寄存器
lwu r30,DATA(r0)#变量寄存器

daddi r28,r0,TIPS1 #TIPS1地址给r28
daddi r29,r0,4 
sd r28,(r30) #变量寄存器得到变量地址
sd r29,(r31) #控制寄存器得到4(输出字符串)

daddi r29,r0,8 ;
sd r29,(r31) #控制寄存器 8 (读入)
ld r26,(r30) #得到内容给r26

daddi r28,r0,TIPS2 ;output TIPS2
daddi r29,r0,4
sd r28,(r30)
sd r29,(r31)

daddi r29,r0,8 ;read input value to r27
sd r29,(r31)
ld r27,(r30)

daddu r25,r26,r27  #r25=r26+r27

daddi r28,r0,TIPS3 ;output TIPS3
daddi r29,r0,4
sd r28,(r30)
sd r29,(r31)

daddi r29,r0,1 
sd r25,(r30)
sd r29,(r31) #控制寄存器 1 (输出整型)

halt

MIPS基础指令https://blog.csdn.net/flyingqr/article/details/7072977

原文地址:https://www.cnblogs.com/ZCM98/p/12906869.html