Pages

Monday, April 26, 2010

Ассемблерийн сүүлийн бие даалт

Юм бичилгүй нэлээд удлаа шүү, хэхэ завтай ч юм шиг завгүй ч юм шиг байлаа...
Энэ удаад уншиж буй хүмүүст зориулаад ассемблерийн сүүлийн бие даалтын ажлаа орууллаа, хэрэгтэй хүндээ багагүй тус болох байх.
Аа нэг юм байгаа юм байна миний бодлогын дугаар 11, бас 20 ширхэг тоо гэснийг нь ерөнхий тохиолдолд шийдсэн болно!!!

Бодлогын даалгавар.
Хэрэглэгчийн оруулсан 20 тоон дотор ямар нэг тооны факториал байгаа эсэхийг олж ямар тооны факториал гэдгийг нь дэлгэцэнд хэвлэнэ.
Биелүүлэлт.
# this code is written by Bayarmagnai /FnaticSase/

.text
.globl main

main:
li $v0, 4
la $a0, entern
syscall
li $v0, 5
syscall
move $t0, $v0 # n
while1:
beq $t0, $zero, end
nop
li $v0, 4
la $a0, enternumber
syscall
li $v0, 5 # m garaas avah
syscall
sub $t0, $t0, 1 # n--
move $t1, $v0 # $t1 = m
move $a0, $v0
li $v0, 1
syscall
checkFact:
li $t4, 1 # fac=1
li $t3, 1 # i=1
while2:
slt $t5, $t1, $t4 # fac>m
bne $t5, $zero, printno
nop
mult $t4, $t3
mflo $t4 # fac=fac*i
beq $t4, $t1, save
nop
addiu $t3, $t3, 1
j while2
nop
printno:
li $v0, 4
la $a0, notfactorial
syscall
j while1
nop
save:
li $v0, 4
la $a0, equals
syscall
move $a0, $t3
li $v0, 1
syscall
li $v0, 4
la $a0, factorial
syscall
j while1
nop
end:
li $v0, 4
la $a0, endp
syscall
li $v0, 10
syscall
nop
.data
entern: .asciiz "enter n = "
enternumber: .asciiz "enter number: "
endp: .asciiz "end of program"
equals: .asciiz " = "
factorial: .asciiz "!\n"
notfactorial: .asciiz " too ymar neg toonii factorial bish\n"

хэрэг болсон гэж найдаж байна. :))

1 comment:

ARJAR said...

Сайн байна уу
асм дээр бичсэн програмаа яаж ажиллуулдаг юм бэ
шинээр суралцах санаатайн
хэлж тусалж байгаарай

Баярлалаа

Post a Comment