Hallo , guten Tag. Mein ASM meldet hier einen Fehler. Das Stück stammt auc TurboC : mov ax, (0fh shl 8) + 2 Wie wird das bitte richtig umgesetzt? Danke
Peter B. schrieb: > Hallo , guten Tag. > > Mein ASM meldet hier einen Fehler. > Das Stück stammt auc TurboC : > mov ax, (0fh shl 8) + 2 > > Wie wird das bitte richtig umgesetzt? Kommt darauf an, was "dein ASM" für eins ist. RTFM!
Ist das aus BASM? (Borland Assembler)
Ob S. schrieb: >> Wie wird das bitte richtig umgesetzt? > > Kommt darauf an, was "dein ASM" für eins ist. RTFM! Oder man rechnet es selber aus: mov ax, 0xf02 Geht sogar ohne Taschenrechner. SCNR
Das ist ein Bordland ASM. Danke fürdie Hilfe.
1 | .model tiny |
2 | .code |
3 | start: |
4 | mov ax, (0fh shl 8) + 2 |
5 | ends |
6 | end start |
wird bei mir mit Borland TASM 1.0 problemlos übersetzt.
Peter B. schrieb: > Wie wird das bitte richtig umgesetzt? Wenn man sich das Shiften bzw. Multiplizieren sparen möchte, könnte man schreiben, mov ah, 0F mov al, 02 Rumrechnereien dieser Art macht man hier und da besser mit LEA. Vergessen sollte man auch nicht, dass mit Vorzeichen anders geshiftet wird. In 8 Bit gedacht wäre F0 schon negativ. Bei 16 Bit sind (mit Vorzeichen) alle Zahlen ab 8000 negativ.
> mov ah, 0F > mov al, 02 ist das Gleiche wie MOV AX,0F02
Ben B. schrieb: > ist das Gleiche wie MOV AX,0F02 Klar, nur wenn als Übergabeparameter nur 8 Bit-Werte übergeben werden, dann kann man sich das Geshifte sparen, so war das gemeint. Früher war ja das Shiften auch nicht so dolle schnell.
Rbx schrieb: > Ben B. schrieb: >> ist das Gleiche wie MOV AX,0F02 > > Klar, nur wenn als Übergabeparameter nur 8 Bit-Werte übergeben werden, > dann kann man sich das Geshifte sparen, so war das gemeint. Früher war > ja das Shiften auch nicht so dolle schnell. LOL. Das shiften passiert hier (immediate Werte) bei der Übersetzung des Programms, nicht zur Laufzeit. Wenn du nichtmal das begriffen hast, bist du in dieser Diskussion definitiv völlig fehlplaziert.
Ob S. schrieb: > LOL. Das shiften passiert hier (immediate Werte) bei der Übersetzung des > Programms, nicht zur Laufzeit. Wenn du nichtmal das begriffen hast, bist > du in dieser Diskussion definitiv völlig fehlplaziert. Tja, und wenn du wüsstest, wieviel Leute sich über eine schnelle Übersetzung freuen, hättest du dir auch diesen neunmalklugen Beitrag sparen können.
Ob S. schrieb: > Wenn du nichtmal das begriffen hast Immerhin, Du kannst auch anderes als keine Ahnung haben, zu Deinen Qualifikationen gehört noch das Herumpöbeln. Ja, aus Dir wird noch mal was. Weiter so!
Rbx schrieb: > Tja, und wenn du wüsstest, wieviel Leute sich über eine schnelle > Übersetzung freuen Wie viele Sekunden braucht denn dein Assembler um diese Zeile zu assemblieren? Rbx schrieb: > hättest du dir auch diesen neunmalklugen Beitrag > sparen können. Es ist schon eine wesentliche Information was jetzt der Assembler einmal beim Übersetzen macht, und was später das übersetzte Programm macht. Vor allem da deine Aussage: Rbx schrieb: > Früher war ja das Shiften auch nicht so dolle schnell. ziemlich stark impliziert, dass du dachtest das shiften passiert zur Ausführungszeit des zu übersetzenden Programms.
Udo S. schrieb: > ziemlich stark impliziert, dass du dachtest das shiften passiert zur > Ausführungszeit des zu übersetzenden Programms. Naja, ich dachte eher an "kann kein Asm, kann aber Asm-Code lesen"(was ja auch OK ist) - außerdem spielt das (mit dem Shiften) ja heute auch kaum noch eine Rolle, oder doch? Wirklich gute Leute hätten das hier auch nicht nötig gehabt, zu schlaumeiern - allerdings programmieren hier die meisten guten Leute eher in c (oder Pascal) - und das ist auch gut so. Mein Ziel ist dann mehr, auf unauffällige Weise den ein oder anderen Asm-Hintergrund zu vermitteln, so gut es eben geht - ohne jetzt missionieren zu wollen. Würde auch gar keinen Sinn machen, u.a. weil der ARM-Asm-Code so herrlich uninspirierend ist.
Rbx schrieb: > Würde auch gar keinen Sinn machen, u.a. weil der ARM-Asm-Code so > herrlich uninspirierend ist. Das ist ARM Assembler Code? Hui, und ich dachte über 30 Jahre lang, dass "mov ax, (0fh shl 8) + 2" irgendwas mit 8086 zu tun hätte. Danke, dass du mein Weltbild korrigiert hast.
Peter schrieb: > Danke, dass du mein Weltbild korrigiert hast. Freut mich wenn ich helfen konnte. :) Die Shifterei beim ARM ist, zumindest beim Barrel-Shifter praktisch identisch mit dem C-Code. https://www.davespace.co.uk/arm/introduction-to-arm/barrel-shifter.html
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.