Archiv verlassen und diese Seite im Standarddesign anzeigen : Assembler
Import-Script
19.05.2003, 11:57
Hi! <BR> <BR>ich sollte für unser schulprojekt (ein kleines Spiel) einen Zufallsgenerator in assembler (sim68k) programmieren, aber ich komme überhapt nicht damit klar und alle algorithmen die ich gefunden habe sind für andere assembler und die helfen mir auch nicht wirklich weiter! <BR>ich hoffe ihr könnt mir ein wenig helfen!
Import-Script
19.05.2003, 17:18
mmmhm, 68k klingt nach 68000 CPU. Schön. Hast Du irgendeinen Timer zur Verfügung? oder einen Interrupt im System laufen? wo ab und zu mal was los ist?
Import-Script
20.05.2003, 13:47
nein ich habe keine 68000 CPU, es ist nur ein Programm, mit welchem man wie auf einem 68000 CPU programmieren kann (Sprache identisch, und da habe ich keine Interruptlogik, und ob ich da einen Timer hab weiß ich auch nicht!
Import-Script
20.05.2003, 14:02
Hi, <BR> <BR>am einfachsten ist es, wenn der Zufallswert durch ein Ereignis von Außen generiert werden kann. Z.B. nach einem tastendruck gebraucht wird. Während des tastendrucks ein Register schnell hochzählen. Beim Loslassen stoppen und man hat einen zufälligen Wert drin stehen. Der Benutzer kann ja nicht so schnell wieder loslassen als ein kleines Register zum mehrmalígen Überlauf braucht. <BR> <BR>Natürlich können die Zufallswerte auch vorher schon generiert werden, wenn das Spiel mit tastendrücken gestartet wurde. So kann man sich auch ein hübsches Array mit Zufallswerten beschreiben. Jeder Tastendruck ergänzt es um einen neuen Wert. <BR> <BR>Gruß <BR>Elmar
Import-Script
20.05.2003, 14:49
Ich hoffe, man kann es erkennen, so läuft das mit Pseudo Zufall in Hardware. 31Bit Schieberegister, dann an Bit 13 und 31 per exor abgreifen und invertiert auf den Eingang zurück. Reset und Clock interessiert uns nicht weiter, ggf. noch so ein Register, dass dann angibt wieviel Schleifendurchläufe, und das am Besten gegensinnig. Geht auch mit kleineren Registern, man muss nur Primzahlen als Abgriff verwenden, also z.B. Bit 17 noch mit dazu oder 64 Bit und dann Bit 59. <BR> <BR>OK, das Ganze mal in "Pseudo 68000" Register hat 32 Bit, das ist schon schön, also alles per move.L, shift.L usw. also Langwortzugriff. Register sei D0, wir erzeugen 10000 Zahlen (in D1). <BR> <BR> <BR>loop: <BR>move.L #10000,D1 ; D1 mit 10000 laden <BR> <BR>dbf d1,loop ; äussere Schleife (clock) <BR> <BR>in der Schleife folgendes mit D0 machen. <BR>asl.L D0 ; arithmetisch links schieben, also Carry mit reinshiften. siehe Sprung Weiter: <BR>Im Carry muss nun die exor Verknüpfung stehen, also Hilfsregister zum ausmaskieren:D2 für Bit13 und D3 für Bit31. <BR>move.L D0,D2 <BR>and.L #%000000000000100000000 ; 13.Bit <BR>und dann 13mal rechts schieben, damit es an 1.Position steht. <BR>lsr.L D3, #13 <BR>Gleiches mit D3 <BR>move.L D0,D3 <BR>and.L #%100000000000000000000 ; 31.Bit <BR>lsr.L D3 #31. <BR>nachgezählt hab ich jetzt nicht, Ende vom Lied ist aber dass in D2 bzw D3 jetzt eine 1 oder 0 je nach Bit in D0 steht, der Rest it mit Nullen gefüllt wegen logical-shift, statt arithmetik. <BR>also: <BR>xor.L D2,D3; setzt das Carry wenn XOR erfüllt ist. <BR>Jetzt so ein weiter Konstrukt um Carry invers zu bekommen <BR>BCS clearcarry; <BR> Bra Weiter; <BR>Clearcarry: CLC; dann Carry clear und weiter <BR> BRA Weiter; <BR> SEC; wenn nicht, seten und weiter <BR>Weiter: asl D0,#1 ; 1mal Clocken und Carry ggf mit reinschieben. <BR> <BR>Das sieht jetzt fürchterlich aus, weil wieder alle Leerzeichen usw. ineinanderproportionalisiert wurden, aber ich hoffe, das Prinzip ist klar. <BR><img src="http://progshop.com/elektronik/diskussion/messages/4982/7208.jpg" alt="Schieberegister für Pseudo Zufallszahl">
Import-Script
20.05.2003, 16:41
ich sag euch mal danke, wenn wir das nächste mal zeit haben am projekt weiterzuarbeiten, werden wir das mal versuchen! <BR>Danke!!!
Import-Script
20.05.2003, 22:40
<font color="ff0000"><font size="+1">OOPS..</font></font> <BR>Das war zuviel jetzt... <BR>HMMM... <BR>mfg. <BR>Dr. Senft Dazu <BR>:-) <BR>
Import-Script
20.05.2003, 23:46
Hey Snoop? Was ist los. Zuviel Loriot "Papa ante Portas"??? <BR>"Ich bin der Ronnie und ich kaufe jetzt hier ein"; <BR>3 Paletten Senft!!! - oder hast Du eine bessere Idee, einem Assembler-Simulator-Newcomer auf einer A5 Seite via Mailbox das irgendwie zu verklickern... <BR>
Powered by vBulletin® Version 4.1.12 Copyright ©2012 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.