$a0 - $a3
— Chứa các tham số cho thủ tục con. Thủ tục con có thể thay đổi
các thanh ghi này.
$v0 - $v1
— Chứa các giá trị trả về từ thủ tục con.
o Thủ tục
main
trả điều khiển bằng cách sử dụng hàm exit của hệ thống.
Thiết lập các tham số trong menu Simulator -> Settings:
Bare
Machine OFF, Allow Pseudo Instructions ON, Load Trap File ON,
Delayed
Branches ON, Delayed Loads ON, Mapped IO ON,
Quiet OFF
Sau đây là chương trình đọc 3 số nguyên và in ra tổng của chúng:
# read in three integers and print their sum
#
.text
.globl main
main:
jal pread # read first integer
nop #
branch delay slot
move $s0,$v0 # save it in $s0
jal pread # read second integer
nop # branch delay slot
move $s1,$v0 # save it in $s1
jal pread #
read third integer
nop # branch delay slot
move $s2,$v0 # save it in $s2
addu $s0,$s0,$s1 # compute the sum
addu $a0,$s0,$s2
li $v0,1 #
print the sum
syscall
li $v0,10 # exit
syscall
# pread -- prompt for and read an integer
# on entry:
# $ra -- return address
# on exit:
# $v0 -- the integer
.text
.globl pread
pread:
la $a0,prompt #
print string
li $v0,4 # service 4
syscall
li $v0,5 # read int
syscall # service 5
jr $ra # return
nop # branch delay slot
.data
prompt:
.asciiz "Enter an integer: "