MIPS汇编程序设计——四则运算计算器

Posted lfri

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MIPS汇编程序设计——四则运算计算器相关的知识,希望对你有一定的参考价值。

实验目的

运用简单的MIPS实现一个能够整数加减乘除的计算器,同时使自己更加熟悉这些指令吧

MIPS代码

#https://blog.csdn.net/oncoding/article/details/4346531
#sample example a small calculater’  
# data section  
.data                 
value:  .word 0, 0, 0 ,0 ,0     # 0: first num ,4 : second num , 8 : operation , 12:result  
msg0        :   .asciiz  " please choose the operation(1~4):
		1 : +,addition 
		2 : -,subtracter
		3 : * multiplication 
		4 : /,division
"  
msg1        :   .asciiz  "first num:"  
msg2        :   .asciiz  "second num:"  
addFlag     :   .asciiz  " + "  
subFlag     :   .asciiz  " - "  
mulFlag     :   .asciiz  " * "  
divFlag     :   .asciiz  " / "  
equalStr    :   .asciiz  " = "  
newline     :   .asciiz  "
==================================
"
.text                       # text section  
.globl main                 # call main by SPIM  
main:  
    la $t0, value           # load address "value" into $t0  
    la $a0,msg0  
    li $v0,4          
    syscall              #print "please choose the operation:"  
      
    li  $v0, 5    
    syscall  
    sw  $v0, 8($t0)      #input operator
      
    la $a0,msg1  
    li $v0,4          
    syscall              #print "first num:"  
      
    li  $v0, 5    
    syscall  
    sw  $v0, 0($t0)      #read a
      
    la $a0,msg2  
    li $v0,4          
    syscall              #print " second num:"  
      
      
    li  $v0, 5    
    syscall  
    sw  $v0, 4($t0)      #read b 
      
    la $a0,newline  
    li $v0,4          
    syscall              #print "
"  
      
    lw $t1, 0($t0)          # load the first num  
    lw $t2, 4($t0)          # load the second num  
    lw $t3, 8($t0)          # load the operation  
      
    beq $t3,1,addOp         # if +  
    beq $t3,2,subOp         # if -  
    beq $t3,3,mulOp         # if *  
    beq $t3,4,divOp         # if /  
      
addOp:  
    add $t4, $t1, $t2       # $t1 + $t2 = $t4     
    sw $t4, 12($t0)         #   
    la $t5,addFlag  
    j printResult  
subOp:  
    sub $t4, $t1, $t2       # $t1 - $t2 = $t4     
    sw $t4, 12($t0)           
    la $t5,subFlag  
    j printResult  
mulOp:  
    mul $t4, $t1, $t2       # $t1 * $t2 = $t4     
    sw $t4, 12($t0)  
    la $t5,mulFlag  
    j printResult  
divOp:  
    div $t4, $t1, $t2       # $t1 / $t2 = $t4     
    sw $t4, 12($t0)   
    la $t5,divFlag  
    j printResult  
      
printResult:  
    lw $a0,0($t0)  
    li $v0,1          
    syscall             #read first number  
      
    la $a0,0($t5)  
    li $v0,4   
    syscall             #print opflag  
      
    lw $a0,4($t0)  
    li $v0,1          
    syscall             #print second number  
      
    la $a0,equalStr  
    li $v0,4   
    syscall             #print " = "  
      
    lw $a0,12($t0)  
    li $v0,1          
    syscall             # print sum result  
    j exit  
      
exit:  
    la $a0,newline  
    li $v0,4   
    syscall             #print " 
 "  
     
    #j main 
    li $v0,10         
    syscall             # exit  

 

以上是关于MIPS汇编程序设计——四则运算计算器的主要内容,如果未能解决你的问题,请参考以下文章

MIPS汇编指令集

在 MIPS 上对 C++ 和汇编代码进行微架构分析

如何在x86 linux上执行MIPS汇编程序?

优化系列MIPS架构汇编优化资料

mips是怎么运算的呀?

优化系列汇编优化技术:MIPS架构纯汇编优化及demo