返回 COMP1521

MIPS 汇编基础

程序结构(.data/.text/.globl main)、常用寄存器($t0–$t9, $v0, $a0–$a3)、核心指令(li/la/add/sub/mul/div/move)、syscall(打印/读入/退出),挑战练习:bad_pun.s 与 gaussian_sum.s。

🖥️ MIPS 汇编 - 第一周必备

bad_pun.s

.data msg: .asciiz "Hello from MIPS!" # 以\0结尾的字符串 .text .globl main main: li $v0, 4 # print_string la $a0, msg # $a0 ← 字符串地址 syscall li $v0, 10 # exit syscall

gaussian_sum.s

# 读入 n,计算 n(n+1)/2 并打印 .data prefix: .asciiz "Sum = " nl: .asciiz "\n" .text .globl main main: # read n li $v0, 5 # read_int syscall move $t0, $v0 # t0 = n # compute n(n+1)/2 -> 两种思路可选 addi $t1, $t0, 1 # t1 = n + 1 mul $t2, $t0, $t1 # t2 = n * (n + 1) sra $t2, $t2, 1 # t2 = t2 / 2 (正数安全) # print "Sum = " li $v0, 4 la $a0, prefix syscall # print number li $v0, 1 move $a0, $t2 syscall # print newline li $v0, 4 la $a0, nl syscall # exit li $v0, 10 syscall

Tips: 可用 div 指令代替右移;注意负数/溢出场景的处理策略。