MIPS汇编语言SYSCALL指令的用法

SYSCALL functions available in MARS

Introduction

A number of system services, mainly for input and output, are available for use by your MIPS program. They are described in the table below.

MIPS register contents are not affected by a system call, except for result registers as specified in the table below.

How to use SYSCALL system services

Step 1. Load the service number in register $v0.
Step 2. Load argument values, if any, in $a0, $a1, $a2, or $f12 as specified.
Step 3. Issue the SYSCALL instruction.
Step 4. Retrieve return values, if any, from result registers as specified.

Example: display the value stored in $t0 on the console
    li  $v0, 1           # service 1 is print integer
    add $a0, $t0, $zero  # load desired value into argument register $a0, using pseudo-op
    syscall

Table of Available Services

ServiceCode in $v0ArgumentsResult
print integer1$a0 = integer to print 
print float2$f12 = float to print 
print double3$f12 = double to print 
print string4$a0 = address of null-terminated string to print 
read integer5 $v0 contains integer read
read float6 $f0 contains float read
read double7 $f0 contains double read
read string8$a0 = address of input buffer
$a1 = maximum number of characters to read
See note below table
sbrk (allocate heap memory)9$a0 = number of bytes to allocate$v0 contains address of allocated memory
exit (terminate execution)10  
print character11$a0 = character to printSee note below table
read character12 $v0 contains character read
open file13$a0 = address of null-terminated string containing filename
$a1 = flags
$a2 = mode
$v0 contains file descriptor (negative if error). See note below table
read from file14$a0 = file descriptor
$a1 = address of input buffer
$a2 = maximum number of characters to read
$v0 contains number of characters read (0 if end-of-file, negative if error). See note below table
write to file15$a0 = file descriptor
$a1 = address of output buffer
$a2 = number of characters to write
$v0 contains number of characters written (negative if error). See note below table
close file16$a0 = file descriptor 
exit2 (terminate with value)17$a0 = termination resultSee note below table
Services 1 through 17 are compatible with the SPIM simulator, other than Open File (13) as described in the Notes below the table. Services 30 and higher are exclusive to MARS.
time (system time)30 $a0 = low order 32 bits of system time
$a1 = high order 32 bits of system time. See note below table
MIDI out31$a0 = pitch (0-127)
$a1 = duration in milliseconds
$a2 = instrument (0-127)
$a3 = volume (0-127)
Generate tone and return immediately. See note below table
sleep32$a0 = the length of time to sleep in milliseconds.Causes the MARS Java thread to sleep for (at least) the specified number of milliseconds. This timing will not be precise, as the Java implementation will add some overhead.
MIDI out synchronous33$a0 = pitch (0-127)
$a1 = duration in milliseconds
$a2 = instrument (0-127)
$a3 = volume (0-127)
Generate tone and return upon tone completion. See note below table
print integer in hexadecimal34$a0 = integer to printDisplayed value is 8 hexadecimal digits, left-padding with zeroes if necessary.
print integer in binary35$a0 = integer to printDisplayed value is 32 bits, left-padding with zeroes if necessary.
print integer as unsigned36$a0 = integer to printDisplayed as unsigned decimal value.
(not used)37-39  
set seed40$a0 = i.d. of pseudorandom number generator (any int).
$a1 = seed for corresponding pseudorandom number generator.
No values are returned. Sets the seed of the corresponding underlying Java pseudorandom number generator (java.util.Random). See note below table
random int41$a0 = i.d. of pseudorandom number generator (any int).$a0 contains the next pseudorandom, uniformly distributed int value from this random number generator's sequence. See note below table
random int range42$a0 = i.d. of pseudorandom number generator (any int).
$a1 = upper bound of range of returned values.
$a0 contains pseudorandom, uniformly distributed int value in the range 0 <= [int] < [upper bound], drawn from this random number generator's sequence. See note below table
random float43$a0 = i.d. of pseudorandom number generator (any int).$f0 contains the next pseudorandom, uniformly distributed float value in the range 0.0 <= f < 1.0 from this random number generator's sequence. See note below table
random double44$a0 = i.d. of pseudorandom number generator (any int).$f0 contains the next pseudorandom, uniformly distributed double value in the range 0.0 <= f < 1.0 from this random number generator's sequence. See note below table
(not used)45-49  
ConfirmDialog50$a0 = address of null-terminated string that is the message to user$a0 contains value of user-chosen option
0: Yes
1: No
2: Cancel
InputDialogInt51$a0 = address of null-terminated string that is the message to user$a0 contains int read
$a1 contains status value
0: OK status
-1: input data cannot be correctly parsed
-2: Cancel was chosen
-3: OK was chosen but no data had been input into field
InputDialogFloat52$a0 = address of null-terminated string that is the message to user$f0 contains float read
$a1 contains status value
0: OK status
-1: input data cannot be correctly parsed
-2: Cancel was chosen
-3: OK was chosen but no data had been input into field
InputDialogDouble53$a0 = address of null-terminated string that is the message to user$f0 contains double read
$a1 contains status value
0: OK status
-1: input data cannot be correctly parsed
-2: Cancel was chosen
-3: OK was chosen but no data had been input into field
InputDialogString54$a0 = address of null-terminated string that is the message to user
$a1 = address of input buffer
$a2 = maximum number of characters to read
See Service 8 note below table
$a1 contains status value
0: OK status. Buffer contains the input string.
-2: Cancel was chosen. No change to buffer.
-3: OK was chosen but no data had been input into field. No change to buffer.
-4: length of the input string exceeded the specified maximum. Buffer contains the maximum allowable input string plus a terminating null.
MessageDialog55$a0 = address of null-terminated string that is the message to user
$a1 = the type of message to be displayed:
0: error message, indicated by Error icon
  • 11
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值