mips汇编语言语法
<p>这个博客讲的很好【十分钟教会你汇编】MIPS编程入门(妈妈说标题要高大上,才会有人看>_<!)</p><h2 id="总览">总览</h2>
<p>程序分为数据段和代码段:</p>
<pre><code>.data 声明变量
.text 书写代码
</code></pre>
<h3 id="数据段">数据段</h3>
<p>变量名:数据类型 变量值</p>
<p><img src="3e370d32685da62156830e0fe7944b0a.png"><br>
<img src="9da29cf1e4ee52ea3103210f8959adcf_720.png"></p>
<h3 id="代码段">代码段</h3>
<h4 id="指令">指令</h4>
<h5 id="mcf1">mcf1</h5>
<p>在MIPS汇编语言中,mfc1 指令用于将浮点寄存器的内容转移到整数寄存器中。</p>
<pre><code>mfc1 $t0, $f0
//这条指令的作用是从浮点寄存器 $f0 中读取值,并将其转换为整数(如果是必要的话),然后存储到整数寄存器 $t0 中。
</code></pre>
<h5 id="srlsll">srl/sll</h5>
<p>逻辑右移和逻辑左移操作。</p>
<pre><code> sll $rd, $rt, shamt
//将寄存器$rt中的值向左逻辑移动shamt位。最右边空出来的位用0填充。结果存入寄存器$rd。
srl $rd, $rt, shamt
//将寄存器$rt中的值向右逻辑移动shamt位。最左边空出来的位用0填充。结果存入寄存器$rd。
</code></pre>
<h3 id="syscall">syscall</h3>
<p>syscall 为系统调用指令,能够方便我们在Mars上进行预览。<br>
利用syscall输出结果的步骤:<br>
1.在寄存器$v_0$中加载服务器号<br>
2.如果有参数值,在$$a_0,$a_1,$a_2$或者$$f_{12}$中载入参数值<br>
3.发出syscall指令<br>
4.从指定的结果寄存器中检索返回值(如果有)。</p>
<pre><code>la $a0,msg_fv
li $v0,4 //加载服务代码4
syscall //打印$a0里面的字符串
</code></pre>
<p>li 是 MIPS 汇编语言中的一个伪指令,代表“Load Immediate”。它用于立即将一个立即数加载到一个寄存器中。<br>
以下是MIPS中一些常用系统调用的简要概述:</p>
<h5 id="打印整数-print_intprintf">打印整数 (print_int/printf):</h5>
<p>服务代码:1<br>
用法:$v0 = 1, $a0 = 要打印的整数</p>
<h5 id="打印字符串-print_stringputs">打印字符串 (print_string/puts):</h5>
<p>服务代码:4<br>
用法:$v0 = 4, $a0 = 字符串地址</p>
<h5 id="读取整数-read_int">读取整数 (read_int):</h5>
<p>服务代码:5<br>
用法:$v0 = 5, 读取的整数将被存放于 $v0</p>
<h5 id="打印字符">打印字符:</h5>
<p>服务代码:6<br>
用法:$v0 = 6, 打印的字符将被存放于 $v0</p>
<h5 id="读取字符">读取字符:</h5>
<p>服务代码:12<br>
用法:$v0 = 12, 读取的字符将被存放于 $v0</p>
<h5 id="退出程序-exit">退出程序 (exit):</h5>
<p>服务代码:10<br>
用法:$v0 = 10, $a0 = 退出状态码(通常0表示正常退出)<br>
在使用这些系统调用时,程序会暂停执行当前任务,转而执行操作系统提供的服务,完成后控制权再返回到用户程序。</p><br><br>
来源:https://www.cnblogs.com/fmomos/p/18263249
頁:
[1]