Neue Antwort erstellen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

Unsere Datenschutzerklärung wurde aktualisiert. Mit der Nutzung unseres Forums akzeptierst Du unsere Datenschutzerklärung. Du bestätigst zudem, dass Du mindestens 16 Jahre alt bist.

Neu erstellte Beiträge unterliegen der Moderation und werden erst sichtbar, wenn sie durch einen Moderator geprüft und freigeschaltet wurden.

Die letzte Antwort auf dieses Thema liegt mehr als 365 Tage zurück. Das Thema ist womöglich bereits veraltet. Bitte erstellen Sie ggf. ein neues Thema.

Informationen
Frage Bitte beantworten Sie die untenstehende Frage bzw. lösen Sie die untenstehende Aufgabe.
Nachricht
Internet-Adressen werden automatisch erkannt und umgewandelt.
Smiley-Code wird in Ihrer Nachricht automatisch als Smiley-Grafik dargestellt.
Sie können BBCodes zur Formatierung Ihrer Nachricht nutzen.

Vorherige Beiträge 168

  • Am Ende dieses Themenfadens (aka "Thread") das übliche Inhaltsverzeichnis zu ALGORITHMEN UND LEHRREICHES TEIL XII.
    Gruss

    Spoiler anzeigen

    INHALT von ALGORITHMEN TEIL XII: Cogito errare est
    (lat. für ´Ich denke man irrt sich")

    Profan-Eigenheiten, Utilities
    =============================
    12__003 Prog.: Grenzverhalten des set(´´decimals´´, )-Befehls
    12__008 Prog.: Dateidaten direkt im Programmtext
    12__010 Prog.: Implode
    12__014 Prog.: Font 1-Rahmen zeichnen
    12__031 Abt. Scroll mal wieder: Prog.: Halbwegs guter Textscroller!
    12__031 Link zu älteren Profan-Demos
    12__032 Einfache Fill-Algorithmen: Prog.: FLOODFILL
    12__033 M.Wodrich: Prog.: Eingebauter Fill braucht Begrebzungsfarbe
    12__046 Prog.: BinSearch im Zahlenfeld
    12__145 Frage Mehrfach-Returnwerte?
    12__146 Jubiläum: Profan 25 Jahre alt.
    12__147 RGH gibt 25.07.1992 als Geburstag von Profan als Shareware an.
    12__150 M.Wodrich zur Methode, Parameter mehrfach über 1 spezielle Systenvariablen zu übergeben
    12__150 M.Wodrich: Beispiel-Prog. MinMax.inc
    12__151 Lustige Programmzeilen
    12__153 Jede Menge Sonderzeichen für Variablen
    12__154 Prog. ´Alberner Flattertext´
    12__157 Prog.: Ersatz- und Steuerzeichen erzeugen/austesten

    Hardware
    ========
    12__107 Kurznachrichten von Hardware-Herstellern

    Physik
    ======
    12__002 Prog.: Was wiegt ein schnelles Elektron?
    12__004 Der Physik-Nobelpreis 2016
    12__166 Euler-Wobbelscheibenformel (Rotierende Münze)

    Chemie, Biologie, Medizin
    =========================
    12__005 Der Chemie-Nobelpreis 2016
    12__005 Der Nobelpreis für Medizin 2016

    Mathematik
    ==========
    12__006 Fields-Medaille 2014: Der höchste Mathematik-Preis
    12__029 Abt. Dumm gelaufen: Prog.: Die Macht der Formeln
    12__044 Abt. Trunkierbare Primzahlen
    12__139 Prog. Teil 1: Komplexe Funktionen mit Komplexen Zahlen
    12__140 Prog. Teil 2: Komplexe Funktionen mit Komplexen Zahlen
    12__141 Link: Erklärende Internetseite zu Komplexen Funktionen
    12__158 Prog.: Komplexe Gamma-Funktion

    Rätselecke
    ==========
    12__011 _Rätselecke Nr. 38 ´Dritter Donnerstag´
    12__013 Lösung 38
    12__013 _Rätselecke Nr. 40: ´Papierquadrat´
    12__014 Lösung 40
    12__015 _Rätselecke Nr. 41: ´Regelmäßige Vielecke´
    12__016 _Rätselecke Nr. 42: ´Dreiziffrig´
    12__017 Lösungsprogramm zu Rätsel 42
    12__018 _Rätselecke Nr. 43: ´Quadrate sind auch Rechtecke´
    12__019 Prog.: Lösung zu Nr. 43 Unterbestimmtes Gleichungssystem
    12__020 Wurzel im Kopf
    12__021 _Rätselecke Nr. 44: ´Tod des Winzerkönigs´
    12__024 Lösung zu Nr. 44
    12__025 _Rätselecke Nr. 45: ´Und Hopp!´ Jumpy & Hoppy
    12__027 _Abt. Rätselecke Nr. 46: ´Billige Uhren!´
    12__028 Lösung zu Nr. 46
    12__028 _Abt. Rätselecke Nr. 47: ´Verfressene Gören´
    12__030 _Abt. Rätselecke Nr. 48: ´Keuch´
    12__030 _Rätselecke Nr. 49: ´Alois auf Erkundung´
    12__031 Lösung zu Rätsel 48
    12__031 Lösung zu Rätsel 49
    12__035 _Rätselecke Nr. 50: ´Eindeutiges Alter´
    12__035 _Rätsel 51: ´Medikation´
    12__035 _Rätsel 52: ´Einer-Teilbar´
    12__035 _Rätsel 53: ´Eineinhalb Hühner´
    12__035 _Rätsel 54: ´Sub-Traktion´
    12__036 Heinz Brill: Lösung zu 54
    12__037 Prog.: Lösung von H.Brill nun in XProfan-11.2a
    12__040 _Rätsel Nr. 55: ´Vier Karten´
    12__041 Lösung zu Nr. 50, 51, 52, 53
    12__042 Lösung zu Nr. 55
    12__043 _Rätselecke Nr. 56: ´Sonnwendfest´
    12__057 _Abt. Rätselecke Nr. 57: ´Mit Ziffern 1 bis 5´
    12__059 _Rätselecke Nr. 58: ´Vier von sieben Kätzchen´
    12__060 Lösung zu Nr. 58

    Informatik
    ==========
    12__007 Nevanlinna-Preis für theoretische Informatik

    Kultur, Philosophie
    ===================
    12__009 Prog.: Beliebteste Taufnamen 2016 (D)
    12__034 Philosophisches: Die Geschichte des Nichts



    ***********************************************
    * Profan-Preprocessing und Inline-ASSEMBLER *
    ***********************************************

    XProfan 11.2a mit Inline-Assembler XPIA von Frank Abbing
    ==========================================================
    12__062 Xpia-Prog.: Index aufsetzen per xpia-Assembler mit Profan-11.2a

    XProfan und XPSE von David Strutz (iF)
    ======================================
    12__113 Forderung nach Kompatibilität mit XPIA bzw. XPSE
    12__113 Link auf JRPC, den Pre-Präkompiler für xpse von Jens-Arne Reumschüssel für XProfan ab X2

    XProfan und die FASM.DLL (Erzeugung von relokatiblem Maschinencode aus Assemblerbefehlen)
    ============================================================
    12__114 H.Brill findet Link auf die FASM-DLL und board.flatassembler.net/topic.php?t=6239
    12__115 Link: Informative x86-64 CPU-OpCodes-Internetseite, sehr gut gegliedert!
    12__116 Volkmar bringt FASM.DLL zum laufen
    12__122 RGH stellt Syntax des Inline-Assemblers XASM vor: ASM ´Name´, Anz_Paramerter
    12__124 Prog.: Dank RGH-Tipp läuft FASM.DLL nun auch in XProfan-11
    12__128 RGH entschlüsselt 64 und 66-Prefixes für 16nbit-Kompatibilität
    12__129 RGH bringt FASM.DLL mit USE32 dazu, 32bit-Code zu erzeugen!
    12__129 RGH-Prog. fasmtest.prf; erste Zeile muß USE32 sein
    12__130 Anpassung von fasmtest.prf an XProfan-11
    12__133 Volkmar: Prog. nutzt Datei-Einlesefunktion der FASM.DLL, gibt Maschinencode in Hex aus
    12__135 Volkmar: Stimmt, muss alles relocatibel sein

    XProfan X4 mit Inline-Assembler XASM
    =====================================
    12__047 Prog.: &Index-Benchmarking
    12__050 Heinz Brill: fordert Assembler-Indexierungsprogramm
    12__051 RGH: Entschluß, Inline-Assembler für X4 zu programmieren
    12__053 Xpse-Prog. als Ersatz für Mat Var[]-Indexbelegung
    12__058 H.Brill: Vorschläge für weitere MAT-Befehle
    12__061 Links: INTEL Prozessoren seit 2015
    12__061 Link zum ´Intel CPUs Cheat Sheet´
    12__061 Link zum ´AMD Cheat sheet´ (etwas älter)
    12__061 Link zu einer guten Anfänger-Befehlsübersicht ASM
    12__063 Assembler-Erinnerungschart
    12__063 Link: Vollständige Beschreibung der Makros
    12__063 Link: Double Precision Floatingpoint Befehle in Assembler
    12__063 Link: FPU (Floating Point Unit) Programmierung ´Simply FPU´ von Raymond Filiatreault
    12__065 RGH auf Anregung von H.Brill: Mini-Inline-Assembler
    12__066 H.Brill Link: runtimebasic.net/Assembler:Funktionen:OpCode
    12__068 P.Specht: Skepsis: xpia = Formel-1 Bolide, auf Trabbi quälen?
    12__068 Link: Das aktuelle Intel x86-64 Manual - kennt 11.244 Befehlskombinatoinen!
    12__070 H.Brill: Link Online-Disassembler: defuse.ca/online-x86-assembler.htm#disassembly
    12__071 Hinweis auf Problem mit Absoluten Adressen: Code muss relokatibel sein!
    12__072 Prog.: Konverter ´Hex in C-Style´
    12__074 RGH: Erste Ideen für den Inline-Assembler
    12__077 Erstes lauffähiges Programm mit Inline-Maschinencode
    12__079 Erstes Maschinencode-Programm nach XProfan-11 portiert
    12__080 H.Brill: Wunsch nach Parameterlliste und Labels
    12__083 Volkmar: Relative Sprungdistanzen wichtig
    12__084 M.Wodrich: Parameter-Zahl dem ASM bekanntgeben (für sauberen Rücksprung)
    12__085 Auswahl der wichtigsten Assemberbefehle, Links zu Herstellern
    12__085 Link: Intel programmers manual; AMD programmers reference, VIA (nicht mehr aktiv)
    12__094 Link: Alte Opcodes, die noch funktionieren dürften
    12__095 RGH: Aktueller Syntax-Entwurf ASM - ENDASM
    12__096 H.Brill: Link: Online-Debugger
    12__097 Volkmar: Link auf Asm-Codes
    12__098 Link auf Intel Code table und Version für XProfan einlesbar
    12__100 H.Brill: Online-Assembller wäre am einfachsten, Link zu FASM.dll
    12__104 M.Wodrich: Link auf ref.x86asm.net/ hat auch die 64-Bit-Befehle: Komplett!
    12__122 Ankündigung "RET n" mit n = 4*(Zahl der Parameter Par1...ParN)
    12__131 RGH: Inline-Assembler läuft jetzt im Debug Mode (Prog. ASM & Erläuterung der Funktion)
    12__131 ´ASM´ ersetzt ´PUSH EBP´ und ´MOV EBP,ESP´, ENDASM das ´MOV ESP,EBP:POP EBP:RET x´
    12__132 RGH: Prog.: Komplexeres Beispiel mit ASM
    12__138 Link auf RGH Veröffentlichungsadresse von Xprofan-X4alpha mit Inline Assembler
    12__159 Erster Entwurf für ein Merkblatt Schleifen und Bedingungen in Assembler
    12__160 M.Wodrich: Auszug Merkblatt aus Stackoverflow,com mit Assemblercodes
    12__161 RGH: Inline-Label:: möglich
    12__157 Link: Auszug aus Win32.chm API-Hilfe
    EX12__013 DB n1 :DB n2 :DW nn :DD nnnn :DS ´´Text\z´´ 'Escape-Zeichen werden unterstützt.
    EX12__028 Setfunktion ASMMODE steuert Debugausgabe: 0 keine, 1 Assemblerlisting.lst, 2 Hauptfenster
    EX12__032 Neu: CALL @name und Call label: statt FCALL name_ohne_anführungszeichen
    EX12__036 DH ´´CDE50C68´´ entspricht DS ´´\xCD\xE5\x0C\x68´´
    EX12__042 DM nnnn füllt ab Label: mit nnnn Nullbytes, @name ermittelt Call-Adresse nnnn der Funktion name
    EX12__042 JMP Label führt jetzt Near-Jump (+-2147483647) aus, Call label auch Near-Bereich

    XProfan X4_a Sprach-Neuerungen
    ==============================
    12__065 Vorberlegung von Arrays mit ´MAT Var[] < n´,vermutlich auch mit dynamischen Arrays
    12__065 Neue Befehle: ZIP und UNZIP, einschl. Unterverzeichnisse
    12__155 Parameter-Einstellung von LemonEd zum Starten des XProfan-Programmes: (D)
    12__162 RGH zu ´Dingen die nicht im Handbuch stehen´: x² und x³ als Kuriositäten
    12__163f Grenzen der x³ und x²-´Geistervariablen´. In der Praxis stets an Doku halten!
    12__161 Ankündigung Label:: (inmitten der Zeile),
    12__162 Nicht offiziell in Xprofan X4a: var x²=54-bit-Integer,var x³ = Vorbereitung Single precision float!
    EX12__032_Link: Assemblercodes für das neue X4
    EX12__016 db(´´slxxx´´, ....): Unterstützung von SQLite-Datenbanken (SQLITE.DLL im Pfad)
    EX12__016 db( Wenn für Select (Set(´SQLFile´,...)) Ergebnisdatei Name.xml, wird XML-Datei erzeugt.
    EX12__028 fAddr(´Name´) liefert 0 oder CALL-Adresse der ASM ´Name´ oder ImportFunc oder ImportDLL
    EX12__028 Die 8 Funktionen für die COM-Schnittstelle sind in der Kontainer-Funktion "COM" gelandet.
    EX12__033 MAT x![] < 1.005 klappt!

    Philosophisches
    ==========
    12__167 Abschlußarbeiten: Eine Ära geht zu Ende, Zukunftsforschung, Prognose Prof. Dueck

    P.S.: HIER gibts auch noch ein geziptes Suchprogramm für ALLE BISHERIGEN TEILE I bis XII der Reihe "ALGORITHMEN UND LEHRREICHES". Dabei gilt: I = 01__, III = 03__
  • Abt. Abschlußarbeiten: Eine Ära geht zu Ende
    ============================
    Laut Zukunftsforscher Prof. Dr. Gunther Dueck wird kein Stein auf dem anderen bleiben. Auch andere Prognostiker sehen eine völlig neue Welt auf uns zukommen.

    a - Herkömmliche Firmenhierarchien werden obsolet, alle Verwaltungstätigkeiten (auch staatliche) in den nächsten 7 Jahren vollautomatisiert,
    b - Computer werden Beratungstätigkeiten wo auch immer vollständig übernehmen, denn die jungen "Digital Natives" verlassen sich nicht mehr auf menschliche Berater, weil diese gegenüber Internet-Surfen keinen Mehrwert mehr bieten können,
    c - auch mittlere und höhere SachbearbeiterInnen-Jobs werden (spätestens durch Industrie 4.0 und die Herstellung von Kompatibilität aller Systeme) unnötig werden

    Ich persönlich sehe es heute noch kritischer:

    d - Home Electronics bis hin zur Kaffeemaschine mit Internetanschluß stellen sich auf Lebensgewohnheiten ihrer Besitzer ein, melden Abweichungen aber auch dem Staatsschutz ("Präsident Trump" hat gerade den Datenschutz von US-Bürgern drastisch aufgeweicht und private Verhaltensdaten zum handelbaren Gut gemacht!)
    e - Big Data gibt großen Welt-Firmen riesige Informationsvorsprünge vor kleineren,
    f - selbstfahrende Autos brauchen kein Lenkrad mehr, die Autoindustrie wird voll durchrobotisiert, das Transportwesen (auch die Lagerlogistik) benötigt keine Menschen mehr
    g - Quantencomputing mit >2000 qbit lässt bisherige Cryptographiesysteme blass aussehen,
    h - der Computer wird die bilddiagnostische Medizin auch in der Auswertung revolutionieren,
    i - Drohnen und UBoot-Drohnen erhalten AI und Entscheidungsgewalt über Leben und Tod, der Krieg wird vollautomatisiert

    Kurz gesagt:
    j - Alles wird für einige Auserwählte besser. Der Rest der Gesellschaft wird von einer computerisierten Sozialindustrie de facto in Pension geschickt, freilich ohne dass das so genannt werden darf:
    k - Ziel wird die Ruhigstellung von Protesten und Demonstrationen sein, z.B. durch staatlich subventionierte geschützte Sektoren sowie andere Scheinarbeitsplätze in ebendieser Sozialindustrie.
    L - Das Leben wird ein ausgeweiteter Spielplatz für Halberwachsene, unsere Schulen werden für unkomplizierte Menschen sorgen.
    m - Und bei zuviel Adrenalin gibts dann Prozac.

    Gruss

    P.S.: ... und dann geht uns das Öl aus. Gute Nacht!
  • Abt. Münzen rotieren lassen
    ==================
    Gerade gelernt: Die berühmte Euler-Formel für die Wobbelscheibe:
    Drehwinkel_der_Markierung_pro_Sekunde = Wobbelrate_[Hz] *(1/cos(Scheibensteilheitswinkel)-1)
    Gruss

    P.S.: ... = Vorarbeiten, um einen virtuellen Kreisel realistisch rotieren zu lassen
  • Anmerkung: Obige Grenzwerte waren theoretisch. Die Grenzwerte der aktuellen Alpha-Version des X4-Interpreters sind für Integerwerte x² = +/-(2^53), darüber treten Lücken auf...
  • Meine Meinung: ...

    Abt. Kleiner Integerbereiche-Vergleich (Bei Floats: "Löcherloser" Bereich)
    ===============================================
    x³ (+ /- & 24 bit) = -16.777.216 ... +16.777.215 (Aber Float 6.5-stellige Genauigkeit)
    x& ( +/- & 31 bit) = -2.147.483.648 ... +2.147.483.647 (4-Byte signed Integers = sInt)
    x_! (+/- & 53 bit) = -/+ 9.007.199.254.740.992 (Ganzzahlbereich von Doubleprecision-Floats)
    x² ( +/- & 63 bit) = -9.223.372.036.854.775.808 ... +9.223.372.036.854.775.807 (8-Byte sInt)
    Gruss

    P.S.: Leider wird x³=val("-1e3") zu Null...
  • Noch etwas aus der Rubrik "Dinge, die so nicht im Handbuch stehen":

    Quellcode

    1. cls
    2. declare x³, y²
    3. x³ = 5.56
    4. y² = $1FFFFFFFFFFFFFFF
    5. print 8*sizeof(x³);"Bit Single:",x³
    6. print 8*sizeof(y²);"Bit Quad: ",y²
    7. waitinput
    8. end
    Hintergrund: Für die ersten Versuche, die Variablentypen Single und Quadint einzuführen, habe ich bequemlichkeitshalber zunächst am Postfix-System festgehalten. Das gefiel mir aber nicht und dann habe ich halt die Variablenverwaltung umgeschrieben und die Typbezeichner eingebaut.

    Gruß
    Roland
  • p. specht schrieb:

    P.S.: Hat es je jemand geschafft, einen funktionierenden Label: mitten in einer Zeile zu platzieren?
    Nein, das geht (noch) nicht. Ein Label muss am Ende der Zeile stehen.

    In X4 wird es ab der nächsten Testversion dann auch innerhalb der Zeile gehen. Nach dem Doppelpunkt des Labels folgt dann direkt (!) der Doppelpunkt zum Beenden der logischen Zeile! Aber das bleibt unter uns. Denn wirklich übersichtlicher wird ein Programm dadurch nicht. ;-)

    Gruß
    Roland
  • Ja, so ähnlich habe ich das auch.
    Spoiler anzeigen

    Brainfuck-Quellcode

    1. ------------------------------------------------------------------------------
    2. aus StackOverflow: http://stackoverflow.com/questions/14267081/difference-between-je-jne-and-jz-jnz
    3. Op Code | mnemonic | Description
    4. -----------|-----------|-----------------------------------------------
    5. 74 cb | JE rel8 | Jump short if equal (ZF=1).
    6. 74 cb | JZ rel8 | Jump short if zero (ZF=1).
    7. 0F 84 cw | JE rel16 | Jump near if equal (ZF=1). Not supported in 64-bit mode.
    8. 0F 84 cw | JZ rel16 | Jump near if 0 (ZF=1). Not supported in 64-bit mode.
    9. 0F 84 cd | JE rel32 | Jump near if equal (ZF=1).
    10. 0F 84 cd | JZ rel32 | Jump near if 0 (ZF=1).
    11. 75 cb | JNE rel8 | Jump short if not equal (ZF=0).
    12. 75 cb | JNZ rel8 | Jump short if not zero (ZF=0).
    13. 0F 85 cd | JNE rel32 | Jump near if not equal (ZF=0).
    14. 0F 85 cd | JNZ rel32 | Jump near if not zero (ZF=0).
    15. ------------------------------------------------------------------------------
    16. CMP <reg>, <reg>
    17. CMP <reg>, wert
    18. JE Label zf=1
    19. JZ Label zf=1
    20. JNE Label zf=0
    21. JNZ Label zf=0
    22. FLAGS - https://en.wikipedia.org/wiki/FLAGS_register
    23. ------
    24. CF Carry = Übertrag (z.B. aus Addition)
    25. PF Parity = Parität (signalisiert, ob Anzahl der Einsen gerade/ungerade [even/odd]) - https://en.wikipedia.org/wiki/Parity_flag
    26. AF Adjust = auch Auxiliary flag, wird bei BCD-Arithmetik verwendet
    27. ZF Zero = Wert ist Null oder mit Vergleich identisch
    28. SF Sign = Vorzeichen. Gesetzt bei negativen Werten. Hier habe ich in den Tabellen oft S<>0 gefunden, aber da ein Bit ja "nicht so viele" Zustände annehmen kann, stelle ich es als S=1 dar.
    29. DF Direction = Richtung bei Stringoperationen.
    30. OF Overflow = Überlauf. Soll zeigen, das die Register zu klein für die durchgeführte Operation sind. Abhilfe: Die gleiche Operation mit größeren Registern erneut durchführen. (oder vorher besser debuggen)
    31. Das Sprungziel liegt entweder im DB-/DW-/ oder DD-Bereich -128..+127 / -32768..+32767 / oder größer
    32. Vergleich hier mit AL 0..255 / -128..127
    33. Befehl (Bedeutung) Flags
    34. JC (JMP if c) C=1 Jump if Carry
    35. JNO (JMP ifnot o) O=0 Jump on Not Overflow
    36. JNS (JMP ifnot s) S=0 Jump on Not Sign
    37. JO (JMP if o) O=1 Jump on Overflow
    38. JP (JMP if p) P=1 Jump on Parity
    39. JS (JMP if s) S=1 Jump on Sign
    40. CLC C=0
    41. CLD D=0 Löscht das Direction-Flag. String-Befehle arbeiten dann von kleiner zu großer Adresse.
    42. CMC C=Not(c)
    43. STC C=1
    44. STD D=1 Setzt das Direction-Flag. Stringbefehle beginnen dann an der hohen Adresse und laufen Richtung kleiner Adresse.
    45. POPF Lädt die auf dem Stack befindlichen Flags zurück ins Flag-Register (2 Bytes)
    46. PUSHF Lädt den Inhalt des Flag-Registers auf den Stapel (2 Bytes)
    47. Konvertierung: CWD (AX -> DX:AX)
    48. Stringbefehle:
    49. CMPSB Flags = byte [EDI] - [ESI] : ADD EDI,1 : ADD ESI,1 (bei df=1 ist es SUB) bei REP wird ECX als Zähler verwendet
    50. CMPSW Flags = word [EDI] - [ESI] : ADD EDI,2 : ADD ESI,2
    51. CMPSD Flags = dword [EDI] - [ESI] : ADD EDI,4 : ADD ESI,4
    52. (src #zu# Dest: < JB,JL; <= JBE,JLE; > JA,JG; >= JAE,JGE; = JE,JE; <> JNE,JNE)
    53. LODSB AL = [ESI] : ADD ESI,1 REP unsinnig, da Ziel ja ständig überschrieben wird
    54. LODSW AX = [ESI] : ADD ESI,2
    55. LODSD EAX = [ESI] : ADD ESI,4
    56. MOVSB byte [EDI] = [ESI] : ADD ESI,1 : ADD EDI,1 bei REP wird ECX als Zähler verwendet
    57. MOVSW word [EDI] = [ESI] : ADD ESI,2 : ADD EDI,2
    58. MOVSD dword [EDI] = [ESI] : ADD ESI,4 : ADD EDI,4
    59. SCASB AL vgl [EDI] : ADD EDI,1 bei REPE/REPNE wird ECX als Zähler verwendet
    60. SCASW AX vgl [EDI] : ADD EDI,2 (bis CX=0 oder ZF seinen Zustand ändert)
    61. SCASD EAX vgl [EDI] : ADD EDI,4
    62. STOSB [EDI] = AL : ADD EDI,1 bei REP wird ECX als Zähler verwendet (es wird immer der gleiche Wert geschrieben)
    63. STOSW [EDI] = AX : ADD EDI,2
    64. STOSD [EDI] = EAX : ADD EDI,4
    65. Befehl (Bedeutung) Flags
    66. JMP Unconditional Jump
    67. JCXZ (JMP if CX=0) Jump if CX=0
    68. LOOP (DEC CX : JMP if CX<>0) DEC CX : Jump if (CX<>0)
    69. LOOPE (DEC CX : JMP if CX<>0, z=1) Z=1 DEC CX : Jump if (CX<>0) and (z=1)
    70. LOOPNE (DEC CX : JMP if CX<>0, z=0) Z=0 DEC CX : Jump if (CX<>0) and (z=0)
    71. REP (DEC CX : Repeat if CX<>0) Präfix für einen Stringbefehl
    72. REPE (DEC CX : Repeat if CX<>0, z=1) Z=1 (REPZ)
    73. REPNE (DEC CX : Repeat if CX<>0, z=0) Z=0 (REPNZ)
    74. Befehl (Bedeutung) Flags vorzch Äquivalent
    75. JA (JMP if >) C=0, Z=0 n JNBE (JMP ifnot <=) Jump on Above
    76. JAE (JMP if >=) C=0 n JNB (JMP ifnot <) Jump on Above or Equal
    77. JB (JMP if <) C=1 n JNAE (JMP ifnot >=) Jump on Below
    78. JBE (JMP if <=) C=1, Z=1 n JNA (JMP ifnot >) Jump on Below or Equal
    79. JE (JMP if =) Z=1 JZ (JMP if z) Jump on Equal
    80. JG (JMP if >) Z=0, S=0 J JNLE (JMP ifnot <=) Jump on Greater
    81. JGE (JMP if >=) S=0 J JNL (JMP ifnot <) Jump on Greater or Equal
    82. JL (JMP if <) S=1 J JNGE (JMP ifnot >=) Jump on Less
    83. JLE (JMP if <=) Z=1, S=1 J JNG (JMP ifnot >) Jump on Less or Equal
    84. JNE (JMP if <>) Z=0 JNZ (JMP ifnot z) Jump on Not Equal
    Alles anzeigen
  • Abt. Schleifen und Bedingungen in Assembler
    ============================
    Sehr sattelfest bin ich in Assembler nicht und habe mich deshalb oft auf Makrobefehle wie .IF .ENDIF .WHILE .ENDWHILE .BREAK .CONTINUE .REPEAT .UNTIL verlassen (MASM, JWASM via xpia), oder überhaupt die schnellen, an XProfan-angelehnten Funktionen des xpse benutzt.

    Seit es gelungen ist, auch FASM in XProfan einzubinden, insbesondere aber seit XProfan X4 mit dem Inline-Assembler (RGH-XASM) angekündigt ist, ist es vorbei mit diesen Schwimmflügeln und Taucherflossen: Jetzt muss man selber ran an die Maschinenlogik!

    Dazu habe ich mir ein (sicher noch fehlerbehaftetes) pdf-Merkblatt zu Schleifen und Bedingungen gebastelt, bin aber erst dabei, die aus dem Englischen übersetzten Fakten selbst auszuprobieren. Für Meldungen und Hinweise auf Verbesserungsnotwendigkeiten wäre ich dankbar. Inzwischenn handelt es sich um Work-in-Progress, also ohne selbst groß ausgetestet zu haben.
    Gruss