Printing Integers, Chars, Floatings, Strings

Kategori: MIPS , 12 Ekim 2019 , JanFranco


Konsola veri bastırmak için syscall anahtar kelimesini kullanırız. syscall anahtar kelimesi system call'dan gelir. syscall kerneldeki bir servisi kullanmak için request yani istek atan bir fonksiyon gibi düşünebiliriz. String, float sayı, karakter basan bir program yazalım:


	.data

myMsg: .asciiz "Hello World\n"
myChar: .byte 'a'
PI: .float 3.14

	.text

la $a0, myMsg
li $v0, 4
syscall

la $a0, myChar
#li $v0, 4
syscall

li $a0, 12
li $v0, 1
syscall

lwc1 $f12, PI
li $v0, 2
syscall
.data bölümünde myMsg adında bir string, myChar adında bir karakter ve PI adında bir float number tanımladık. .text bölümünde ise la anahtar kelimesi ile myMsg stringinin adresini $a0 registerına atadık. Verileri ekrana bastırırken her zaman $a0 registerını kullanırız. Floating sayılarda ise $f12 registerını kullanırız. $a0 veya $f12 registerına attıktan sonra li anahtar kelimesi ile $v0 registerına değer atıyoruz. Fark ediliyor ki stringlerde, karakterlerde 4, integer değerlerde 1, float değerlerde 2 değerleri kullanılmış. Bu değerleri kafamıza göre değil bir tabloya göre veriyoruz. Tablo aşağıdadır:


print integer	1	$a0 = integer to print	 
print float	2	$f12 = float to print	 
print double	3	$f12 = double to print	 
print string	4	$a0 = address of null-terminated string to print
v0 registerına değer atadıktan sonra syscall anahtar kelimesi ile kernel'a istek atıyoruz ve konsola verilerimiz basılmış oluyor.


Sonraki Yazı: Load Immidiate, Load Adress, li, la
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın