Lösung für gleichmässig beschleunigte Bewegung in Johnny Simluator
Berechnung der Zeit für das Zurücklegen einer Strecke mit einer gleichmässig beschleunigten Bewegung.
t=(2s/a)^(1/2)
TAKE Holt einen Befehl aus dem RAM.
ADD Addiert einen Wert zum Wert, der sich im Akkumulator befindet.
SUB Subtrahiert einen Wert zum Wert, der sich im Akkumulator befindet.
SAVE Speichert den Wert im Akkumulator an der angegebenen Speicherstelle.
JMP Springt an eine bestimmte Stelle im RAM. Ermöglicht Schleifen.
TST Testet eine Speicherstelle auf den Wert 0. Ist dieser Test positiv, überspringt der PC den nächsten Befehl.
INC Nimmt einen Wert und addiert den Wert 1 dazu.
DEC Nimmt einen Wert und subtrahiert den Wert 1.
NULL Überschreibt eine bestimmte Speicherstelle mit dem Wert 000.
HLT Bricht das Programm ab.
Speicherstelle | Befehl | Parameter | Kommentar |
---|---|---|---|
0 | TAKE | 900 | In diesem Abschnitt werden alle Zahlen aus der |
1 | ADD | 900 | Ausgangsformel zu einem Bruch zusammengefasst. |
2 | ADD | 901 | Es wird auch schon das Glied A0 gebildet. |
3 | SAVE | 950 | |
4 | TAKE | 901 | |
5 | ADD | 901 | |
6 | SAVE | 951 | |
7 | TAKE | 950 | ggT |
8 | SAVE | 910 | Um den Ausgangsbruch zu kürzen wird von Nenner und |
9 | TAKE | 951 | von Zähler nun der grösste gemeinsame Teiler gesucht. |
10 | SAVE | 911 | |
11 | TAKE | 910 | |
12 | SUB | 911 | |
13 | SAVE | 912 | |
14 | TST | 912 | |
15 | JMP | 22 | |
16 | TAKE | 911 | |
17 | SAVE | 912 | |
18 | TAKE | 910 | |
19 | SAVE | 911 | |
20 | TAKE | 912 | |
21 | SAVE | 910 | |
22 | NULL | 912 | |
23 | TAKE | 910 | |
24 | SUB | 911 | |
25 | SAVE | 912 | |
26 | TST | 912 | |
27 | JMP | 22 | |
28 | JMP | 39 | |
29 | TAKE | 910 | |
30 | SUB | 911 | |
31 | SAVE | 912 | |
32 | TST | 912 | |
33 | JMP | 28 | |
34 | JMP | 31 | |
35 | TAKE | 912 | |
36 | SAVE | 910 | |
37 | JMP | 22 | |
38 | TAKE | 911 | |
39 | SAVE | 912 | |
40 | TAKE | 910 | |
41 | SAVE | 911 | |
42 | TAKE | 912 | |
43 | SAVE | 910 | |
44 | NULL | 912 | |
45 | JMP | 4 | |
46 | NULL | 911 | |
47 | NULL | 912 | |
48 | TAKE | 910 | ggT=1? |
49 | SAVE | 911 | Ist der grösste gemeinsame Teiler 1,so muss man den Bruch |
50 | DEC | 911 | nicht kürzen. Man kann das Kürzen in diesem Fall |
51 | TST | 911 | überspringen. |
52 | JMP | 54 | |
53 | JMP | 78 | |
54 | NULL | 911 | |
55 | TAKE | 950 | Mithilfe des ggT wird nun der Bruch gekürzt. |
56 | SAVE | 911 | |
57 | TAKE | 951 | |
58 | SAVE | 912 | |
59 | NULL | 913 | |
60 | INC | 913 | |
61 | TAKE | 911 | |
62 | SUB | 910 | |
63 | SAVE | 911 | |
64 | TST | 911 | |
65 | JMP | 5 | |
66 | TAKE | 913 | |
67 | SAVE | 950 | |
68 | NULL | 913 | |
69 | INC | 913 | |
70 | TAKE | 912 | |
71 | SUB | 910 | |
72 | SAVE | 912 | |
73 | TST | 912 | |
74 | JMP | 14 | |
75 | TAKE | 913 | |
76 | SAVE | 951 | |
77 | NULL | 913 | |
78 | NULL | 911 | Es wird nun aus dem Glied N das Glied N+1 gebildet. |
79 | TAKE | 900 | Das Ergebnis wird nicht am gleichen Ort gespeichert, damit |
80 | SAVE | 910 | es später zum Glied N addiert werden kann. |
81 | DEC | 910 | |
82 | TAKE | 911 | |
83 | ADD | 951 | |
84 | SAVE | 911 | |
85 | TST | 910 | |
86 | JMP | 3 | |
87 | TAKE | 911 | |
88 | SAVE | 952 | |
89 | TAKE | 950 | |
90 | SAVE | 953 | |
91 | TAKE | 952 | ggT |
92 | SAVE | 910 | Um den Ausgangsbruch zu kürzen, wird von Nenner und |
93 | TAKE | 953 | von Zähler nun der grösste gemeinsame Teiler gesucht. |
94 | SAVE | 911 | |
95 | TAKE | 910 | |
96 | SUB | 911 | |
97 | SAVE | 912 | |
98 | TST | 912 | |
99 | JMP | 22 | |
100 | TAKE | 911 | |
101 | SAVE | 912 | |
102 | TAKE | 910 | |
103 | SAVE | 911 | |
104 | TAKE | 912 | |
105 | SAVE | 910 | |
106 | NULL | 912 | |
107 | TAKE | 910 | |
108 | SUB | 911 | |
109 | SAVE | 912 | |
110 | TST | 912 | |
111 | JMP | 22 | |
112 | JMP | 39 | |
113 | TAKE | 910 | |
114 | SUB | 911 | |
115 | SAVE | 912 | |
116 | TST | 912 | |
117 | JMP | 28 | |
118 | JMP | 31 | |
119 | TAKE | 912 | |
120 | SAVE | 910 | |
121 | JMP | 22 | |
122 | TAKE | 911 | |
123 | SAVE | 912 | |
124 | TAKE | 910 | |
125 | SAVE | 911 | |
126 | TAKE | 912 | |
127 | SAVE | 910 | |
128 | NULL | 912 | |
129 | JMP | 4 | |
130 | NULL | 911 | |
131 | NULL | 912 | |
132 | TAKE | 910 | ggT=1? |
133 | SAVE | 911 | Ist der grösste gemeinsame Teiler 1, so muss man den Bruch |
134 | DEC | 911 | nicht kürzen. Man kann das Kürzen dann überspringen. |
135 | TST | 911 | |
136 | JMP | 138 | |
137 | JMP | 162 | |
138 | NULL | 911 | |
139 | TAKE | 952 | Kürzen |
140 | SAVE | 911 | Mithilfe des ggT wird nun der Bruch gekürzt. |
141 | TAKE | 953 | |
142 | SAVE | 912 | |
143 | NULL | 913 | |
144 | INC | 913 | |
145 | TAKE | 911 | |
146 | SUB | 910 | |
147 | SAVE | 911 | |
148 | TST | 911 | |
149 | JMP | 5 | |
150 | TAKE | 913 | |
151 | SAVE | 952 | |
152 | NULL | 913 | |
153 | INC | 913 | |
154 | TAKE | 912 | |
155 | SUB | 910 | |
156 | SAVE | 912 | |
157 | TST | 912 | |
158 | JMP | 14 | |
159 | TAKE | 913 | |
160 | SAVE | 953 | |
161 | NULL | 913 | |
162 | TAKE | 951 | Es wird von den beiden Nennern das Brüche der ggT |
163 | SAVE | 910 | ermittelt, damit sie später gleichnamig gemacht werden |
164 | TAKE | 953 | können. Dazu wird aber noch das kleinste gemeinsame |
165 | SAVE | 911 | Vielfache dieser zwei Zahlen benötigt. Dies wird aus dem |
166 | TAKE | 910 | ggT und dem Produkt der zwei Zahlen ermittelt. |
167 | SUB | 911 | |
168 | SAVE | 912 | |
169 | TST | 912 | |
170 | JMP | 22 | |
171 | TAKE | 911 | |
172 | SAVE | 912 | |
173 | TAKE | 910 | |
174 | SAVE | 911 | |
175 | TAKE | 912 | |
176 | SAVE | 910 | |
177 | NULL | 912 | |
178 | TAKE | 910 | |
179 | SUB | 911 | |
180 | SAVE | 912 | |
181 | TST | 912 | |
182 | JMP | 22 | |
183 | JMP | 39 | |
184 | TAKE | 910 | |
185 | SUB | 911 | |
186 | SAVE | 912 | |
187 | TST | 912 | |
188 | JMP | 28 | |
189 | JMP | 31 | |
190 | TAKE | 912 | |
191 | SAVE | 910 | |
192 | JMP | 22 | |
193 | TAKE | 911 | |
194 | SAVE | 912 | |
195 | TAKE | 910 | |
196 | SAVE | 911 | |
197 | TAKE | 912 | |
198 | SAVE | 910 | |
199 | NULL | 912 | |
200 | JMP | 4 | |
201 | NULL | 911 | |
202 | NULL | 912 | |
203 | TAKE | 910 | |
204 | SAVE | 954 | |
205 | SAVE | 955 | |
206 | Null | 910 | |
207 | TAKE | 951 | Multiplikation. |
208 | SAVE | 956 | Für das kgV wird nun das Produkt der beiden Nenner |
209 | NULL | 957 | gebildet. |
210 | DEC | 956 | |
211 | TAKE | 957 | |
212 | ADD | 953 | |
213 | SAVE | 957 | |
214 | TST | 956 | |
215 | JMP | 3 | |
216 | TAKE | 957 | Bildung des kgV mit dem ggT und dem Produkt. |
217 | SAVE | 910 | |
218 | NULL | 911 | |
219 | INC | 911 | |
220 | TAKE | 910 | |
221 | SUB | 955 | |
222 | SAVE | 910 | |
223 | TST | 910 | |
224 | JMP | 3 | |
225 | TAKE | 911 | |
226 | SAVE | 955 | |
227 | TAKE | 955 | Gleichnamig machen und Addition. |
228 | SAVE | 957 | Die Brüche werden nun gleichnamig gemacht und |
229 | NULL | 958 | addiert. Aus zwei Brüchen wird einer. |
230 | TAKE | 958 | |
231 | ADD | 950 | |
232 | SAVE | 958 | |
233 | TAKE | 957 | |
234 | SUB | 951 | |
235 | SAVE | 957 | |
236 | TST | 957 | |
237 | JMP | 3 | |
238 | TAKE | 958 | |
239 | SAVE | 950 | |
240 | TAKE | 955 | |
241 | SAVE | 957 | |
242 | NULL | 958 | |
243 | TAKE | 958 | |
244 | ADD | 952 | |
245 | SAVE | 958 | |
246 | TAKE | 957 | |
247 | SUB | 953 | |
248 | SAVE | 957 | |
249 | TST | 957 | |
250 | JMP | 16 | |
251 | TAKE | 958 | |
252 | SAVE | 952 | |
253 | TAKE | 955 | |
254 | SAVE | 951 | |
255 | SAVE | 953 | |
256 | NULL | 955 | |
257 | NULL | 958 | |
258 | TAKE | 950 | |
259 | ADD | 952 | |
260 | SAVE | 950 | |
261 | NULL | 952 | |
262 | NULL | 953 | |
263 | TAKE | 951 | *1/2 |
264 | ADD | 951 | Um das Glied n+1 zu erhalten wird noch mit 2 dividiert. |
265 | SAVE | 951 | |
266 | TAKE | 950 | ggT |
267 | SAVE | 910 | Um den Ausgangsbruch zu kürzen, wird von Nenner und |
268 | TAKE | 951 | von Zähler nun der grösste gemeinsame Teiler gesucht. |
269 | SAVE | 911 | |
270 | TAKE | 910 | |
271 | SUB | 911 | |
272 | SAVE | 912 | |
273 | TST | 912 | |
274 | JMP | 22 | |
275 | TAKE | 911 | |
276 | SAVE | 912 | |
277 | TAKE | 910 | |
278 | SAVE | 911 | |
279 | TAKE | 912 | |
280 | SAVE | 910 | |
281 | NULL | 912 | |
282 | TAKE | 910 | |
283 | SUB | 911 | |
284 | SAVE | 912 | |
285 | TST | 912 | |
286 | JMP | 22 | |
287 | JMP | 39 | |
288 | TAKE | 910 | |
289 | SUB | 911 | |
290 | SAVE | 912 | |
291 | TST | 912 | |
292 | JMP | 28 | |
293 | JMP | 31 | |
294 | TAKE | 912 | |
295 | SAVE | 910 | |
296 | JMP | 22 | |
297 | TAKE | 911 | |
298 | SAVE | 912 | |
299 | TAKE | 910 | |
300 | SAVE | 911 | |
301 | TAKE | 912 | |
302 | SAVE | 910 | |
303 | NULL | 912 | |
304 | JMP | 4 | |
305 | NULL | 911 | |
306 | NULL | 912 | |
307 | TAKE | 910 | ggT=1? |
308 | SAVE | 911 | Ist der grösste gemeinsame Teiler 1, so muss man den Bruch |
309 | DEC | 911 | nicht kürzen. Man kann das kürzen dann überspringen. |
310 | TST | 911 | |
311 | JMP | 313 | |
312 | JMP | 337 | |
313 | NULL | 911 | |
314 | TAKE | 950 | Kürzen |
315 | SAVE | 911 | Mithilfe des ggT wird nun der Bruch gekürzt. |
316 | TAKE | 951 | |
317 | SAVE | 912 | |
318 | NULL | 913 | |
319 | INC | 913 | |
320 | TAKE | 911 | |
321 | SUB | 910 | |
322 | SAVE | 911 | |
323 | TST | 911 | |
324 | JMP | 5 | |
325 | TAKE | 913 | |
326 | SAVE | 950 | |
327 | NULL | 913 | |
328 | INC | 913 | |
329 | TAKE | 912 | |
330 | SUB | 910 | |
331 | SAVE | 912 | |
332 | TST | 912 | |
333 | JMP | 14 | |
334 | TAKE | 913 | |
335 | SAVE | 951 | |
336 | NULL | 913 | |
337 | DEC | 999 | Der letzte Teil ist eine Schleife, die je nach Wert an der Stelle |
338 | TST | 999 | 999 das Programm beendet oder einen weiteren |
339 | JMP | 78 | Durchgang einleitet. |
340 | HLT | 0 |