Rev Author Line No. Line
4985 kaklik 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5 <title> words/doplusloop.asm </title>
6 <meta name="keywords" content="amforth programming language Forth ATmega ATMEL">
7 <meta name="description" content="amforth - laguage Forth for ATMEL ATmega">
8 <!-- AUTOINCLUDE START "Page/Head.en.ihtml" DO NOT REMOVE -->
9 <link rel="StyleSheet" href="../../../../Web/CSS/MLAB.css" type="text/css" title="MLAB Basic Style">
10 <link rel="StyleSheet" href="../../../../Web/CSS/MLAB_Print.css" type="text/css" media="print">
11 <link rel="shortcut icon" type="image/x-icon" href="../../../../Web/PIC/MLAB.ico">
12 <script type="text/javascript" src="../../../../Web/JS/MLAB_Menu.js"></script>
13 <!-- AUTOINCLUDE END -->
14 </head>
15  
16 <body lang="en">
17  
18 <!-- AUTOINCLUDE START "Page/Header.en.ihtml" DO NOT REMOVE -->
19 <!-- ============== HEADER ============== -->
20 <div class="Header">
21 <script type="text/javascript">
22 <!--
23 SetRelativePath("../../../../");
24 DrawHeader();
25 // -->
26 </script>
27 <noscript>
28 <p><b> JavaScript is required for including of the header </b></p>
29 </noscript>
30 </div>
31 <!-- AUTOINCLUDE END -->
32  
33 <!-- AUTOINCLUDE START "Page/Menu.en.ihtml" DO NOT REMOVE -->
34 <!-- ============== MENU ============== -->
35 <div class="Menu">
36 <script type="text/javascript">
37 <!--
38 SetRelativePath("../../../../");
39 DrawMenu();
40 // -->
41 </script>
42 <noscript>
43 <p><b> JavaScript is required for including of the menu </b><p>
44 </noscript>
45 </div>
46 <!-- AUTOINCLUDE END -->
47  
48 <!-- ============== TEXT ============== -->
49 <div class="Text">
50  
51 <h1> words/doplusloop.asm </h1>
52  
53 <p>
54 <input type=button onClick="history.back()" value="Back">
55 <input type=button onClick="history.forward()" value="Forward">
56 <a href="../WordList.en.html">Jump to Vocabulary</a>
57 </p>
58  
59 <pre>
60 ; ( n1 -- )
61 ; R(llimit counter -- limit counter+n1|)
62 ; runtime of +loop
63 ;VE_DOPLUSLOOP:
64 ; .db 7, &quot;(+loop)&quot;
65 ; .dw VE_HEAD
66 ; .set VE_HEAD = VE_DOPLUSLOOP
67 XT_DOPLUSLOOP:
68 .dw PFA_DOPLUSLOOP
69 PFA_DOPLUSLOOP:
70 pop zl
71 pop zh
72 add zl, tosl
73 adc zh, tosh
74 loadtos
75 PFA_DOPLUSLOOP4: ; entry point for (loop)
76 pop temp2
77 pop temp3
78 cp zl, temp2
79 cpc zh, temp3
80 sbrs tosh, 7 ; if msb is set, increment is negative. in that case skip the next instruction
81 rjmp PFA_DOPLUSLOOP2 ; jump to test for positive overflow
82 brlt PFA_DOPLUSLOOP1 ; exit if underflow
83 rjmp PFA_DOPLUSLOOP3
84 PFA_DOPLUSLOOP2:
85 brge PFA_DOPLUSLOOP1 ; exit if overflow
86 PFA_DOPLUSLOOP3:
87 ; next iteration
88 push temp3
89 push temp2
90 push zh
91 push zl
92 rjmp PFA_DOBRANCH ; read next cell from dictionary and jump to its destination
93 PFA_DOPLUSLOOP1:
94 pop temp0
95 pop temp1 ; remove leave destination
96 adiw xl, 1 ; skip branch-back address
97 rjmp DO_NEXT
98 </pre>
99  
100 <p>
101 <input type=button onClick="history.back()" value="Back">
102 <input type=button onClick="history.forward()" value="Forward">
103 <a href="../WordList.en.html">Jump to Vocabulary</a>
104 </p>
105  
106 </div>
107  
108 <!-- AUTOINCLUDE START "Page/Footer.en.ihtml" DO NOT REMOVE -->
109 <!-- ============== FOOTER ============== -->
110 <div class="Footer">
111 <script type="text/javascript">
112 <!--
113 SetRelativePath("../../../../");
114 DrawFooter();
115 // -->
116 </script>
117 <noscript>
118 <p><b> JavaScript is required for including of the footer </b></p>
119 </noscript>
120 </div>
121 <!-- AUTOINCLUDE END -->
122  
123 </body>
124 </html>