gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
version 0.81
[asm2wsl.git] / samples / rek-gcd-input.asm
diff --git a/samples/rek-gcd-input.asm b/samples/rek-gcd-input.asm
new file mode 100644 (file)
index 0000000..1ea80a1
--- /dev/null
@@ -0,0 +1,59 @@
+.model      small     \r
+ASSUME DS:data\r
+;recursive version of GCD, input from terminal\r
+data segment\r
+  strNZD db "        "\r
+  tempStr db "        "\r
+  prompt  db "num?$"\r
+  promptr db "RES $"\r
+  m     dw  0\r
+  n     dw  0\r
+data ends\r
+;#macros-removed-from-listing
+\r
+.code\r
+\r
+start:              \r
+    mov ax,@data\r
+    mov ds,ax\r
+    print_str prompt\r
+    read_num m      \r
+    print_new_line\r
+    print_str prompt\r
+    read_num n\r
+    print_new_line\r
+\r
+    push n\r
+    push m\r
+    call gcd\r
+    pop n    \r
+    print_str promptr\r
+       print_num n\r
+; print out a result\r
+    end_execution\r
+\r
+\r
+;volatile procedure, ruins ax,bx,cx\r
+gcd proc\r
+       ;get params\r
+       pop ax\r
+       pop bx\r
+       cmp ax,bx\r
+       je endequal\r
+       ja greatera\r
+       ;ensure ax is greater\r
+       xchg ax,bx          \r
+greatera:\r
+       sub ax,bx\r
+       push bx\r
+       push ax\r
+       call gcd\r
+       pop ax;result\r
+    \r
+endequal:\r
+       push ax; result\r
+       ret\r
+gcd endp \r
+\r
+.stack\r
+end start\r
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner