Seite 1 von 1

if... then... or... Assembler

Verfasst: 19.04.2025 23:46
von Dr. Irata
Ich habe gerade folgende Logik in Assembler:

wenn a=10 oder b=10 oder c=10 oder d=10
dann f=111

In Assembler habe ich eine Anweisungsstruktur dafür, die 78 Bytes braucht... das geht doch sicherlich deutlich kürzer und schneller... wer hat kreative Ideen??

Re: if... then... or... Assembler

Verfasst: 20.04.2025 00:32
von Kveldulfur
Hallo!

Also da käme mir folgendes in den Sinn...

Code: Alles auswählen

          LDA #10                ; Mit 10 vergleichen
          CMP VarA
          BEQ true                ; Wenn A = 10 dann true
          CMP VarB
          BEQ true                ; Wenn B = 10 dann true
          CMP VarC
          BEQ true                ; Wenn C = 10 dann true
          CMP VarD
          BEQ true                ; Wenn D = 10 dann true
false:
          JMP Irgendwohin
true:
          LDA #111
          STA VarF
          ...
Grüße
Janko

Re: if... then... or... Assembler

Verfasst: 20.04.2025 00:43
von Dr. Irata
... perfekt ...

Re: if... then... or... Assembler

Verfasst: 22.07.2025 08:05
von Renében
Hallo! Statt jede Variable einzeln zu vergleichen, könntest du die Werte in einem Register addieren und dann prüfen, ob eine davon 10 ist, z.B. mit Subtraktion und einem Sprung bei Null. Oder du nutzt eine Schleife, die die Werte nacheinander überprüft, um Code zu sparen. Bitmasken helfen hier weniger, da Zahlenwerte verglichen werden. Ohne genauen Assemblertyp schwer zu sagen, aber meistens sind kurze Vergleiche im Register und bedingte Sprünge effizienter als lange If-Ketten.