在这个汇编语言实验报告中,吴叶赛同学主要实现了用 MIPS 汇编语言编写一个程序,该程序根据给定的伪代码计算并存储一系列数值到数组 Z 中。以下是实验涉及的知识点:
1. **MIPS汇编语言**:MIPS(Microprocessor without Interlocked Pipeline Stages)是一种精简指令集计算机(RISC)架构,广泛用于教学和嵌入式系统。报告中的代码就是基于MIPS指令集的。
2. **伪代码转换**:伪代码是一种类似于自然语言的编程描述方式,用于表达算法或程序流程。在这个实验中,吴叶赛同学将给定的伪代码转换成了MIPS汇编代码。
3. **数据段和代码段**:在计算机内存中,程序通常分为代码段(存放可执行指令)和数据段(存放常量、变量等数据)。报告中指出了程序的内存映像,包括代码段和数据段。
4. **寄存器使用**:MIPS汇编语言中使用了多个寄存器,如$s0, $s1, $s2, $t1, $t2, $t3等,分别用于存储变量K, Y, Z的地址以及临时计算结果。
5. **循环结构**:`loop`标签和`beq`指令(条件分支,当$s0等于50时退出循环)构成了循环结构,通过增加计数器K来遍历数组Z。
6. **移位指令**:在MIPS中,`sll`和`srl`指令分别用于左移和右移操作,这里用于计算乘除法。例如,`sll $t1, $s0, 2`相当于将K左移两位,得到K的4倍。
7. **算术运算**:报告中的代码使用了加法、减法、乘法和除法运算。例如,`add $t3, $t3, 210`和`sll $t3, $t3, 4`组合起来实现了 `(K / 4 + 210) * 16`的计算。
8. **内存访问**:`la`指令用于加载地址到寄存器,`sw`和`lw`指令分别用于存储数据到内存和从内存加载数据。在循环中,`sw $t3, 0($t2)`将计算结果存入Z数组的当前元素。
9. **系统调用**:MIPS汇编语言提供了系统调用来与操作系统交互,如`li $v0,4`和`syscall`组合用于打印字符串,`li $v0,1`和`syscall`用于打印整数。
10. **程序调试与测试**:实验报告中提到了使用QtSpim和Mars两个模拟器进行代码的运行和测试,检查寄存器状态和数据段以验证程序的正确性。
11. **内存映像分析**:报告给出了Z数组在内存中的分布,显示了每个Z[i]的地址和值,这有助于理解程序执行后的内存布局。
通过这个实验,吴叶赛同学不仅掌握了MIPS汇编语言的基本语法和指令,还实践了程序设计、调试和测试的完整流程,加深了对微机原理与接口技术的理解。
评论0