gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control systemdiff --git a/samples/fakt.asm b/samples/fakt.asm
--- /dev/null
+++ b/samples/fakt.asm
@@ -0,0 +1,57 @@
+; Evolucija Softvera\r
+; Racunanje faktoriela pomocu sateka i sabiranja\r
+\r
+.286\r
+.model small\r
+\r
+sseg segment stack\r
+ db 256 dup (?)\r
+sseg ends\r
+\r
+.data\r
+n dw 5 ; racunamo faktoriel od 7\r
+niz db 5,4,3,2,1\r
+\r
+.code\r
+ mov dx, @data\r
+ mov ds, dx\r
+ ; Direktno indeksno - pomocu labela[DI] i labela[SI]\r
+ ;rezultat u dx\r
+ mov ax, 0\r
+ mov bx, 0\r
+ mov cx,0\r
+ mov dx,0\r
+ mov dl, niz[bx] ;ubacuje najveci clan n koji ce biti sabran n-1 put\r
+ inc bx ;krece od drugog clana \r
+ \r
+petlja:\r
+ mov cl, niz[bx] ; citaj clan niza\r
+ cmp cx,1 ; da li je ax=1?\r
+ je kraj ; ako jeste, idi na kraj\r
+ \r
+ubaci: ;ubacuje na stek prethodni rezultat n-1 put\r
+ cmp cx,1\r
+ je pom\r
+ push dx\r
+ dec cx\r
+ jmp ubaci\r
+ \r
+pom: \r
+ mov cl, niz[bx] ;uzima vrednost da koliko puta skida sa steka\r
+ \r
+mnozenje:\r
+ cmp cx,1\r
+ je sledeci\r
+ pop ax\r
+ add dx,ax\r
+ dec cx\r
+ jmp mnozenje\r
+ \r
+sledeci: \r
+ inc bx\r
+ jmp petlja\r
+\r
+kraj:\r
+ print_num dx ;ispisi rezultat na kraju\r
+ nop\r
+ end\r