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


    实验目的

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

    MIPS代码

    #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  

    参考链接:https://blog.csdn.net/oncoding/article/details/4346531

  • 相关阅读:
    第四章的知识点:
    第一章的知识点:
    13
    12
    11
    10
    9
    zy
    金嘉琪 作业
    1022作业
  • 原文地址:https://www.cnblogs.com/lfri/p/9671231.html
Copyright © 2020-2023  润新知