gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
version 0.81
[asm2wsl.git] / samples / fakt.asm
diff --git a/samples/fakt.asm b/samples/fakt.asm
new file mode 100644 (file)
index 0000000..ba7454f
--- /dev/null
@@ -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
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner