Taking Inputs from User

Kategori: MIPS , 14 Ekim 2019 , JanFranco


Kullanıcıdan input alma işlemi, konsola, ekrana veri bastırma işlemine çok benzer. Aynı şekilde $v0 registerını kullanarak yapacağız. Fakat bu sefer değerler değişecek. Integer değerlerde 5, float değerlerde 6 vs. İlgili tablo aşağıdadır:


read integer	5	 	$v0 contains integer read
read float	    6	 	$f0 contains float read
read double	    7	 	$f0 contains double read
read string	    8		$a0 = address of input buffer
				        $a1 = maximum number of characters to read
Örnek görelim:


	.data

msg: .asciiz "\nEnter the number: "
msg2: .asciiz "\nEnter a string: "
inputS: .space 20

	.text

# Taking integer input and printing it
li $v0, 4
la $a0, msg
syscall

li $v0, 5
syscall

move $a0, $v0
li $v0, 1
syscall

# Taking float input and printing it
li $v0, 4
la $a0, msg
syscall

li $v0, 6
syscall

add.s $f12, $f12, $f0
li $v0, 2
syscall

# Taking string input and printing it
li $v0, 4
la $a0, msg2
syscall

li $v0, 8
la $a0, inputS
li $a1, 20
syscall

li $v0, 4
syscall
.data bölümünde msg ve msg2 adında iki string tanımladık. Bu stringler input alma işlemini kullanıcının görmesi içindir. Ayrıca inputS adında bir string açtık ve 20 karakterlik yer ayırttık. .text kısmında ilk olarak v0 registerının değerini 5 yaptık ve syscall diyerek integer input aldık. Alınan integer input v0 registerında saklandığı için, v0 registerındaki değeri a0 registerına taşıdık. Daha sonra bu değeri bastırdık. Aynı işlemleri float bir değer için de yaptık. Bu sefer v0 registerının değerini 6 yaptık. Alınan input f0 registerında saklandı. Bunu bastırabilmek için f12 değerine taşımamız gerekiyor. move instruction floating sayılarda çalışmamakta. Bu nedenle add.s instructionı ile $f12 = $f12 + $f0 işlemini yaptık. Float sayılarda işlem yaparken add instruction da çalışmaz, add.s kullanılır. Daha sonra bastırdık. Son olarak string değer input almak için v0 registerının değerini 8 yaptık. String değerleri input almak için iki parametre gerekir. a0 ve a1. a0 registerına, inputu saklayabileceğimiz bir stringin adresini atadık. a1 registerına ise boyutu atadık. Daha sonra syscall ile inputu aldık. li $v0, 4, syscall diyerek de ekrana bastırdık.


Sonraki Yazı: If Statements
Yorumlar

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