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

Moderator: Rockford

Antworten
Benutzeravatar
Dr. Irata
Beiträge: 1284
Registriert: 24.08.2021 14:40
Has thanked: 186 times
Been thanked: 432 times
Kontaktdaten:

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

Beitrag 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??

Benutzeravatar
Kveldulfur
Beiträge: 1058
Registriert: 17.08.2021 02:32
Has thanked: 496 times
Been thanked: 453 times
Kontaktdaten:

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

Beitrag 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
Meine Projekte findest Du hier...

Benutzeravatar
Dr. Irata
Beiträge: 1284
Registriert: 24.08.2021 14:40
Has thanked: 186 times
Been thanked: 432 times
Kontaktdaten:

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

Beitrag von Dr. Irata »

... perfekt ...

Renében
Beiträge: 9
Registriert: 08.05.2025 05:55
Been thanked: 1 time
Kontaktdaten:

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

Beitrag 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.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast