Hallo! EIne Frage kann ich mir nicht beantworten. Angenommen, ich möchte mit Assembler -1 im Speicher ablegen. Wie sieht diese -1 im Speicher aus? Ich stelle mir vor, dass der Wert nach den Zweierkomplementregeln 11 11 11 11 heißt. Irgendwann hol ich den Wert aus dem Speicher zurück. Woher weiß der Controller, dass es sich um den Wert -1 handelt, und nicht um den Wert 0xff? Wie sagt man ihm also, wie er welchen Wert zu interpretieren hat? Oder muss ich diese Interpretationsinformation mit ablegen? ? Wahrscheinlich dumme Frage, aber ich bin Assembleranfänger. Bei C wird das durch das Schlüsselwort "unsigned" schon irgenwie geregelt.
Der uC weiss es in der Tat nicht -- er "sieht" nur die 8 Bit, die in einem Register stehen. Er weiss nicht von sich aus, wie er die Bits bzw. das Byte interpretieren soll. Es könnte signed oder unsigned sein, oder ein Buchstabe, eine Adresse oder vieles mehr. Aber Du als Programmierer weisst es, oder solltest es wissen. Du merkst es Dir durch den Namen der Variablen und eventuell einen Kommentar, und verwendest nur Operationen, die zu dem Datentyp passen. Bei C ist es nicht viel anders. Nur dass der Compiler etwas aufpasst und z.B. nicht ohne weiteres zulässt, dass Du völlig unsinnige Operationen mit Deinen Datentypen machst.
Bei C macht es der Compiler, bei Assembler macht das dein Kopf ;-)
richtig, Du musst selber drauf achten! Der Wertebereich einer solchen (8bit) Zahl kann ja auch nur -128 bis +127 sein! Beispiel: 80h = -128d C0h = -64d 7Fh = +127d 40h = +64d Deine Software muss das entsprechend berücksichtigen
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.