实验目的

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

MIPS代码

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

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

MIPS汇编程序设计——四则运算计算器的更多相关文章

  1. 深入浅出数据结构C语言版(8)——后缀表达式、栈与四则运算计算器

    在深入浅出数据结构(7)的末尾,我们提到了栈可以用于实现计算器,并且我们给出了存储表达式的数据结构(结构体及该结构体组成的数组),如下: //SIZE用于多个场合,如栈的大小.表达式数组的大小 #de ...

  2. 利用ANTLR4实现一个简单的四则运算计算器

    利用ANTLR4实现一个简单的四则运算计算器 ANTLR4介绍 ANTLR能够自动地帮助你完成词法分析和语法分析的工作, 免去了手写去写词法分析器和语法分析器的麻烦 它是基于LL(k)的, 以递归下降 ...

  3. java 24 - 8 GUI之创建四则运算计算器(未校验版)

    这个是用NetBeans软件制作的,因为这个软件制作GUI任务比较方便 通过拖拽控件生成的窗体:(红色的名称是更改后的控件名称) 拉拽好布局后,要进行的步骤: A:更改想要进行操作的控件的名称(右键控 ...

  4. ARM学习笔记11——GNU ARM汇编程序设计

    GNU ARM汇编程序设计中,每行的语法格式如下: [<label>:] [<instruction | directive | pseudo-instruction>] @c ...

  5. php实现一个简单的四则运算计算器

    php实现一个简单的四则运算计算器(还不支持括号的优先级).利用栈这种数据结构来计算表达式很赞. 这里可以使用栈的结构,由于php的数组“天然”就有栈的特性,这里直接就利用了数组.当然可以使用栈结构写 ...

  6. Object-C,四则运算计算器

    下面是是一个比较复杂的类. 定义一个四则运算计算器Caculator的接口和实现. 在main函数中,让用户输入四则运算表达式,比如a+b,a-b. 最后,在控制台输出结果. 用到的语法:接口.类的定 ...

  7. MIPS汇编学习

    MIPS汇编学习 mips汇编不同于x86汇编,属于精简指令集,常见于路由器等一些嵌入式设备中. mips汇编没有对堆栈的直接操作,也就是没有push和pop指令,mips汇编中保留了32个通用寄存器 ...

  8. 【实践】js实现简易的四则运算计算器

    最近看了一个大神推荐的某公司面试程序员的js 面试题,题目是用js 做一个计算器于是跟着大神的思想自己做了一下 ps:功能还没有完善好毕竟自己还是一只菜鸟还在不断学习中. 闲话不多说先上css代码 & ...

  9. MIPS汇编指令集

    MIPS有三种指令格式: R型 6 5 5 5 5 6 op rs rt rd shamt funct 功能:寄存器-寄存器ALU操作 (算术运算,逻辑运算) I型 6 5 5 16 op rs rt ...

随机推荐

  1. React 从入门到进阶之路(六)

    之前的文章我们介绍了 React 表单事件 键盘事件 事件对象以及 React中 的 ref 获取 dom 节点 .双向数据绑定.接下来我们将介绍 React 表单详解 约束性和非约束性组件 inpu ...

  2. E20190404-hm

    prepend vt. 预先考虑,预先计划,预谋;

  3. npm切换到淘宝镜像

    1. npm简介 1.1.说明:npm(node package manager)nodejs的包管理器,用于node插件管理(包括安装.卸载.管理依赖等): 1.2.使用npm安装插件:命令提示符执 ...

  4. Weekly Contest 78-------->808. Soup Servings

    There are two types of soup: type A and type B. Initially we have N ml of each type of soup. There a ...

  5. Weekly Contest 78-------->811. Subdomain Visit Count (split string with space and hash map)

    A website domain like "discuss.leetcode.com" consists of various subdomains. At the top le ...

  6. hdoj5875【二分+RMQ】

    全部从我大哥那里学习得来.. 一开始硬着头皮就是根据思路上线段树,明知是T还要写(因为线段树还不是很熟,趁机练一发) 后来果然T了,然后就去学了一发RMQ的ST算法,查询是O(1). ST算法主要: ...

  7. Node.js 使用Stream的pipe(管道)方法实现文件复制

    Stream模块有一个pipe方法,可以将两个流串起来,实现所有的数据自动从Readable流进入Writable流 "use strict"; const fs = requir ...

  8. iOS 8 录音重放出现 OSStatus error 1685348671 / 2003334207 问题的解决办法

    许多录音类 APP 都提供录音回放功能,大家在做这类 APP 的时候也经常会遇到这个需求.当大家用以前的套路在 iOS 8 上录音的时候,在模拟器上跑得挺好的,但是一上真机就跪了,为什么?因为真机底层 ...

  9. Faster_Rcnn在windows下运行踩坑总结

    Faster_Rcnn在windows下运行踩坑总结  20190524 今天又是元气满满的一天! 1.代码下载 2.编译 3.下载数据集 4.下载pre-train Model 5.运行train ...

  10. PostgreSQL-13-缺失值处理

    -- 1.查看缺失值CREATE TABLE dnull AS SELECT * FROM data; -- 复制数据SELECT * FROM dnull WHERE 房屋编码 IS NULL OR ...