24 Mart 2010 Çarşamba

SAL(Simple Abstract Language) ile Palindrom Kontrolünü Yapan Kod

		.data
str1:		.asciiz "Bir string girin ve sonunda da \n girin"
str2:		.asciiz "Girilen string palindrom degil"
str3:		.asciiz	"Girilen string palindrom dur"
yeniSatir:	.byte	'\n'
stringimiz:	.byte	0:200
girilen:	.byte	0
uzunluk:	.word
adres:		.word
adres1:		.word
adres2:		.word
			.text
__strat:	puts 	str1
		la	adres,stringimiz
		get	girilen
		beq	girilen,yeniSatir,endwhile1
while1:		move	m[adres],girilen
		add	adres,adres,1
		get	girilen
		bne	girilen,yeniSatir,while1
endwhile1:	la	adres1,stringimiz
		move	adres2,adres
		sub	adres2,adres2,1
		bge	adres1,adres2,cikis
while2:		bne	m[adres1],m[adres2],palindromDegil
		sub	adres2,adres2,1
		blt	adres1,adres2,while2
		puts	str3
		b	cikis
palindromDegil:	puts	str2
cikis:		done

stringimiz: .byte 0:200 –>Boyutu 200 olan bir dizi belirtir ve sıfır ile doldurur. girilen: .byte 0 –>girilen isminde bir degisken ve degeri sıfırdır. la  adres,stringimiz –>stringin başlangıç adresini adres değişkenine atar.Dizinin ismi diznin başlangıç adresi olduğu için.while1 ile girilen değerleri diziye ekler. move m[adres],girilen –>girilen ismindeki değişkenin değerini dizinin o anki konumuna ekler.mesela m[3]=’A’ gibi.endwhile1 ile de diziye string girilmemişse sonlandırır. while2 ile de dizinin elemanları kontrol edilir.Polindrom tersten okunuşu da ynı olan strignlerdir.Mesela 19155191 veya asdsa veya EthemehtE while2 ile asdsa daki ilk a ile son ondan sonraki s ile sondan 2 deki s karşılaştırılıyor.Eğer eşit olmayan bir harf varsa palindromdegil e branch eder ve palindrom değil yazar.Eğer uyuşursa str3 ile girilen string palindromdur yazar.

Hiç yorum yok:

Yorum Gönder