4. Utskrift till konsolen med hjälp av systemanrop

Detta kapitel är en överkurs eftersom systemanrop som en instruktion inte brukar tagas upp i DatorTeknik -kursen. Systemanrop i MISSE fungerar däremot bra som hjälpmedel när det gäller någon form av output från det simulerade programmet, vare sig man vill skriva ut heltal, flyttal eller rent av text. Likaså ger systemanrop möjligheten till input från tangenbordet.

Systemanrop kallas med instruktionen syscall utan argument. För att systemet (i detta fall MISSE) skall veta vad det är man vill åstadkomma med syscall så använder man istället registrena till hjälp. Register $v0 väljer funktionen ifråga, $a0 och $a1 fungerar som inparametrar för operationen medan resultatet, ifall sånt genereras, kommer att lagras i register $v0.

Nedan en tabell över ett par systemanropsfunktioner som implementerats i MISSE :
Funktion Systemanrop kod ($v0) Argument Resultat
skriv ut heltal 1 $a0 = heltal
skriv ut teckensträng 4 $a0 = adressen till strängen
läs in heltal 5 heltalet lagras i $v0
läs in teckensträng 8 $a0 = adressen dit teckensträngen lagras
$a1 = max. längden för strängen
Även andra systemanrop kommer att tillsättas i framtiden.

Nedan ett exempel som illustrerar utskrift till Console fönstret :
	.data

string:	.asciiz	"Hello World"

	.text
	.globl main
main:

	lui	$a0, %hi_addr(string)		# Lagrar adressen för "Hello World" i $a0.
	ori	$a0, $a0, %lo_addr(string)

	addi	$a1, $zero, 11			# Max 11 tecken skall skrivas ut.
	addi	$v0, $zero, 4			# 4 = funktionen för att skriva ut en textsträng.

	syscall					# Utför

	jr	$ra				# Avsluta programmet
	nop

Du borde nu se texten "Hello World" i Console fönstret.


<--- Tillbaka

MIPS is a registered trademark of MIPS Technologies, Inc.             Senast uppdaterad 23.11.2004