habe ein Problem, wo ich alleine nicht weiter komme. Ich erhalte laufend Operandenfehler, obwohl ich der Meinung bin, das die Wortbreite der Bezeichner ok ist.
Zum Beislpiel hier:
Code: Alles auswählen
MOV AH,BL
SHR EBX,3
AND AH,07h
MOV pascalvar,EAX
POP EAX
Dass pascalvar hier 4 Byte lang sein muss, weiß ich.
Was ich aber nicht weiß:
- muss die longint oder longword sein?
- oder hängt das mit der Anweisung vorher zusammen? Da wurde ja nur AH, nicht EAX belegt?
Wer kann mir weiter helfen?
Asmmode ist auf Intel eingestellt. Assemblerausgabe sollt ja egal sein, ich weill ja diesen Code übersetzen, in ausführbaren Maschinencode. Meine CPU ist von AMD und versteht 80x86 Code 32 Bittig.
Ich will auch keine sonstigen Prozessorabhängigkeiten, sonst fange ich bei einem Rechnerneukauf oder bei der Portierung auf einen Nachfolgeprozessor wieder von vorne an. Daher soll einfach nur Code dieser Art korrekt übersetzt werden.
Warum klappt das nicht, obwohl pascalvar schon 32 Bit breit ist? Was muss ich noch beachten?
Laut Assemblerbefehlsliste darf ich doch einen Registerinhalt an eine Speicherzelle zuweisen. Warum geht das dann hier nicht?
.