You are on page 1of 12

Syscall in MIPS

Xinhui Hu
Yuan Wang

MARS
What is MARS?
MIPS simulator

How to get it?


http://courses.missouristate.edu/KenVo
llmar/Mars/download.htm
Java based

How to use it?


Use the tutorial in the website
Assemble->execute->step-by-step
execute

Format of a MIPS program


Every line contains at most one
instruction
# marks beginning of comment
assembly language program require
more comments!
at least one per line!

Parts of a MIPS program


Identify data segment and text (code) segment
.data
.text
.globl main
main:

# start of code

On simulator, data segment starts at


0x10010000

Data segment
Identify data segment and text (code) segment
.data
.word 7
.word 3
.text
.globl main
main:

#one word with initial value 7


#one word with initial value 3
# start of code

On simulator, data segment starts at


0x10010000

Data and labels


Locations in data section can be
marked with label
Label represents the address of where
the data is in memory
.data
first: .word 7 #one word with initial value 7
last: .word 3 #one word with initial value 3

System calls
syscall instruction is used for calls to the
operating systems
input
output

Basic operation
load $v0 with command to execute
put output value in $a0 (or $f12)
get input result from $v0 (or $f0)

Useful syscall Commands


Command
(in $v0)
1
2
4
5
6
8
10
11

Event

Arguments

print int
print float
print string
read int
read float
read string
exit program
print byte

$a0 = integer
$f12 = float
$a0 = pointer to string

Result

$a0 is printed out


$f12 is printed out
string is printed out
$v0 holds integer read
$f0 holds float read
$a0 = buffer,a1 = length string is read from console
$a0 = byte

byte is printed out

Printing an integer
Command is 1
Command must be in register
Value to print must be in register a0
Example: print the value 10
addi $v0, $v0, 1 # command to print integer
addi $a0, $a0, 10 # value to print
syscall

Strings for output


Define in data section of program
Use labels to identify different strings
Labels represent addresses in memory

Strings are C strings (end with 0)


.data
prompt: .asciiz "Enter in an integer: "
str1:
.asciiz "The integer is: "
newline: .asciiz "\n "
hello:
.asciizHello, students of CSE230!

Printing a string
Command is 4
$v0 must hold command
$a0 must hold address of string to print
Example: print hello
li
$v0, 4
la
$a0, hello
syscall

#command to print string


# load address of string

Reading input
Command is 5
$v0 must hold command
$v0 get result
Example: read number
li
$v0, 5
syscall
move $t0, $v0

# command to read integer


# result saved in $t0

You might also like