learn mips
可以使用MARS来编汇编,MARS是一个用java编的IDE,它是一个模拟环境.
样例:重要的句子输出三遍
.data str: .asciiz "weidiao is great\n" .text j main f: la $a0,str li $v0, syscall jr $ra main: li $t1, li $t2,3 loop: bgt $t1,$t2,over addi $t1,$t1, jal f j loop syscall
指令文档:链接
下面程序为一个四则运算程序,学习汇编就是要大量的阅读实例.实例学习在编程技术中至关重要.
#simple example :a small calculater’
.text # text section
.globl main # call main by SPIM
main:
la $t0, value
#t0 is the address of the 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) #operation is stored to t0+8---the second byte
la $a0,msg1 #v0 controls the syscall.a0 controls the output_data;
li $v0,4
syscall #print "first num:"
li $v0, 5 #load integer 5 to v0,this is the read operation.
syscall
sw $v0, 0($t0) #store $v0
la $a0,msg2
li $v0,4
syscall #print " second num:"
li $v0, 5
syscall
sw $v0, 4($t0) #read the other num
la $a0,newline
li $v0,4
syscall #print "/n"
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 " /n "
li $v0,10
syscall # exit
# 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):/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"
样例:打印九九乘法表
.data
op :.asciiz "*"
eq:.asciiz "="
line:.asciiz "\n"
space:.asciiz " "
.text
j main
print:
move $a0,$t1
li $v0,
syscall
la $a0,op
li $v0,
syscall
move $a0,$t2
li $v0,
syscall
la $a0,eq
li $v0,
syscall
mult $t1,$t2
mflo $a0
li $v0,
syscall
la $a0,space
li $v0,
syscall
blt $t2,$t1,ret
la $a0,line
syscall
ret:
jr $ra
main:
li $t1,
for1:
addi $t1,$t1,
bgt $t1,,for1_out
li $t2,
for2:
addi $t2,$t2,
bgt $t2,$t1,for1
jal print
j for2
j for1
for1_out:
li $v0,
syscall
learn mips的更多相关文章
- Atitit learn by need 需要的时候学与预先学习知识图谱路线图
Atitit learn by need 需要的时候学与预先学习知识图谱路线图 1. 体系化是什么 架构 知识图谱路线图思维导图的重要性11.1. 体系就是架构21.2. 只见树木不见森林21.3. ...
- Python 爬取所有51VOA网站的Learn a words文本及mp3音频
Python 爬取所有51VOA网站的Learn a words文本及mp3音频 #!/usr/bin/env python # -*- coding: utf-8 -*- #Python 爬取所有5 ...
- ARM、Intel、MIPS处理器啥区别?看完全懂了
安卓支持三类处理器(CPU):ARM.Intel和MIPS.ARM无疑被使用得最为广泛.Intel因为普及于台式机和服务器而被人们所熟知,然而对移动行业影响力相对较小.MIPS在32位和64位嵌入式领 ...
- TLB初始化 Missing Handler,MIPS R3K mips_init_tlb
#include <mips/r3kc0.h> LEAF(mips_init_tlb) mfc0 t0, C0_ENTRYHI # 保存ASID mtc0 zero, C0_ENTRYLO ...
- [转载]VIM 教程:Learn Vim Progressively
文章来源:http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/ Learn Vim Progressively TL ...
- some tips learn from work experience
1.you can't avoid office politics 2.you'll never have a job which you "can't quit" - if yo ...
- MIPS ABI n32意味着什么?
ABI是应用程序二进制接口的简称,用于标识处理器的工作模式及规范目标文件的编码格式. MIPS指令集架构自MIPS3起正式支持64位工作模式,故编码可以遵从o32(o意思是old).n32(n意思是n ...
- Java-集合(没做出来)第四题 (List)写一个函数reverseList,该函数能够接受一个List,然后把该List 倒序排列。 例如: List list = new ArrayList(); list.add(“Hello”); list.add(“World”); list.add(“Learn”); //此时list 为Hello World Learn reverseL
没做出来 第四题 (List)写一个函数reverseList,该函数能够接受一个List,然后把该List 倒序排列. 例如: List list = new ArrayList(); list.a ...
- Learn RxJava
Learn RxJava http://reactivex.io/documentation/operators.html https://github.com/ReactiveX/RxJava/wi ...
随机推荐
- 轻松掌握:JavaScript组合模式
组合模式 组合模式:将一组对象组合成树形结构,并统一对待组合对象和叶对象,忽略它们之间的不同(因为叶对象也可以也可以包含叶对象而成为组合对象),组合模式中的对象只能是一对多的关系,不能出现多对一. 基 ...
- EF 分页查询优化
按照通常的方式分页查询至少要查询数据两遍,一个操作是查询总数,另一个是查询数据,这样有些耗时 这里介绍一个基于EF的插件 EntityFramework.Extended,当然这个插件有很多的功能,比 ...
- UIImageView
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. /***** ...
- windows下用QTwebkit解析html
环境 windows7 + VS2010 + QT5.2_opengl 配置开发环境 1.安装VS2010 2.安装QT 5.2 QT网站:http://qt-project.org/download ...
- 你买了多少ERP?
企业使用ERP(或是其他管理系统),有三种模式:自开发.采购.租赁(SAAS).不知道企业的各级管理者们,是否想过这个问题——我们到底买(做.租)了多少“量”的ERP呢? 这个问题也许不是那么好回答. ...
- angularJS操作键值对象(类似java的hashmap)填坑小结
前言: 我们知道java的hashmap中使用最多的是put(...),get(...)以及remove()方法,那么在angularJS中如何创造(使用)这样一个对象呢 思路分析: 我们知道在jav ...
- Tomcat中更改网站根目录
Tomcat的默认目录是指向webapps下的root目录,输入http://localhost:8080,会打开root目录下的页面.我想让localhost指向我自己的目录.比如webapps/m ...
- Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理7
做完角色之后接下来做先做页面按钮的增加.删除.修改.这里用到的功能和角色那边是一样的.就不多说了.直接上代码. 后台控制器代码 using AuthorDesign.Web.App_Start.Com ...
- eclipse编辑jsp保存的时候特别卡解决办法
今天eclipse用着用着的时候,每次编辑jsp页面快捷键保存的时候要等半天才保存好,特别的卡.搞的很蛋疼.上网搜了下有解决办法 Window -> Preference -> Gener ...
- Linux初学:(一)Linux概述
Linux各个目录的结构介绍 Linux系统以目录的方式来组织和管理系统中的所有文件.Linux系统通过目录将系统中的所有的文件分级.分层组织在一起,形成了Linux文件系统的树形结构层次.以根目录“ ...