MIPS汇编程序设计——四则运算计算器
实验目的
运用简单的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汇编程序设计——四则运算计算器的更多相关文章
- 深入浅出数据结构C语言版(8)——后缀表达式、栈与四则运算计算器
在深入浅出数据结构(7)的末尾,我们提到了栈可以用于实现计算器,并且我们给出了存储表达式的数据结构(结构体及该结构体组成的数组),如下: //SIZE用于多个场合,如栈的大小.表达式数组的大小 #de ...
- 利用ANTLR4实现一个简单的四则运算计算器
利用ANTLR4实现一个简单的四则运算计算器 ANTLR4介绍 ANTLR能够自动地帮助你完成词法分析和语法分析的工作, 免去了手写去写词法分析器和语法分析器的麻烦 它是基于LL(k)的, 以递归下降 ...
- java 24 - 8 GUI之创建四则运算计算器(未校验版)
这个是用NetBeans软件制作的,因为这个软件制作GUI任务比较方便 通过拖拽控件生成的窗体:(红色的名称是更改后的控件名称) 拉拽好布局后,要进行的步骤: A:更改想要进行操作的控件的名称(右键控 ...
- ARM学习笔记11——GNU ARM汇编程序设计
GNU ARM汇编程序设计中,每行的语法格式如下: [<label>:] [<instruction | directive | pseudo-instruction>] @c ...
- php实现一个简单的四则运算计算器
php实现一个简单的四则运算计算器(还不支持括号的优先级).利用栈这种数据结构来计算表达式很赞. 这里可以使用栈的结构,由于php的数组“天然”就有栈的特性,这里直接就利用了数组.当然可以使用栈结构写 ...
- Object-C,四则运算计算器
下面是是一个比较复杂的类. 定义一个四则运算计算器Caculator的接口和实现. 在main函数中,让用户输入四则运算表达式,比如a+b,a-b. 最后,在控制台输出结果. 用到的语法:接口.类的定 ...
- MIPS汇编学习
MIPS汇编学习 mips汇编不同于x86汇编,属于精简指令集,常见于路由器等一些嵌入式设备中. mips汇编没有对堆栈的直接操作,也就是没有push和pop指令,mips汇编中保留了32个通用寄存器 ...
- 【实践】js实现简易的四则运算计算器
最近看了一个大神推荐的某公司面试程序员的js 面试题,题目是用js 做一个计算器于是跟着大神的思想自己做了一下 ps:功能还没有完善好毕竟自己还是一只菜鸟还在不断学习中. 闲话不多说先上css代码 & ...
- MIPS汇编指令集
MIPS有三种指令格式: R型 6 5 5 5 5 6 op rs rt rd shamt funct 功能:寄存器-寄存器ALU操作 (算术运算,逻辑运算) I型 6 5 5 16 op rs rt ...
随机推荐
- XSL简单实例
利用xsl可以做到将数据和格式完全分离,下面比较一个xml+css和xml+xsl的区别. XML + css resume.xml文件内容如下: <?xml version="1.0 ...
- CodeForces 363D 【二分+贪心】
思路: 一开始是没有办法贪心的,但是答案是可以二分的,因为窝能买k辆车的话,窝就一定能买k-1辆车:而且我最好就是拿手上钱较多的那些人去买价格便宜的车,这样肯定是能买到最多的车,而且花的少,因为对于要 ...
- HDU1598【最小生成树拓展】
参考自 http://www.cnblogs.com/nanke/archive/2012/02/13/2350008.html PS: 没想到最小生成树的kruskal算法从小到大枚举边,然后MAX ...
- HDU4166【BFS】
题意: 给你一幅图,给你起点和终点,再给你机器人所面对的方向,机器人可以左转90°,右转90°,向前进一格,每种操作都是1秒,,求起点和终点最少花费下的路径条数,方案数: 思路: 这里有一个不同就是机 ...
- django框架知识3
1.Django安装: 1.安装版本Django1.11.11 2.安装方式:命令行安装 pycharm安装 2.创建Django项目 1.创建方式:cd到你要创建的目录下 然后输入 Djang ...
- SpringBoot | idea新建项目
1.new ----> Spring Initializr 2.设置相应文件名 3.选择需要配置
- Codeforces Round #542(Div. 2) A.Be Positive
链接:https://codeforces.com/contest/1130/problem/A 题意: 给n个数,找出一个非0整数d,使所有n个数除以整数d后,数组中正数的数量>= n/2. ...
- GYM 101673F(树计数)
树上每个割点计算一下各个size的组合相乘再相加为第一问答案,取最大的:再把本答案中最大的两个size相乘减掉,为第二问答案. const int maxn = 1e4 + 5; int n, siz ...
- 如何实现序列化为json
因为需要观察对象的数据,所以寻找能自动描述对象中字段名和其值的描述类,咨询了不少人,都推荐使用json,但是json使用起来有一点额外的操作. 需要在文件中引用 using System.Web.Sc ...
- centos7安装iptables
使用CentOS 7时发现使用iptables防火墙时提示错误Unit iptables.service failed to load,意思是防火墙运行启动失败了,那么要如何处理呢. 一直用Cen ...