Es gibt ja 3 16- Bit Register, (X=R27:R26, Y=R29:R28, Z=R31:R30) ich möchte nun ein solches Register mit einer 16- Bit Zahl laden und danach bearbeiten, d.h. ich muss vom 16- Bit Register verschiedene Subtraktionen durchführen!!! Wie kann ich dieses 16- Bit Register laden, und bearbeiten??? Muss ich da immer das L_Byte und H_Byte einzeln laden??? IZOARD
Das sind keine richtigen 16Bit-Register sondern wie von dir schon geschrieben zwei 8Bit-Register. Entweder du lädst die Werte in Xhigh, Xlow ein oder über R27,R28. Kommt das gleiche heraus. X,Y und Z sind mehr als Adresspointer zu verstehen.
Ah Ok, aber wenn ich z.B. 1'000 von meiner zusammengestellten 16- Bit Zahl abziehen will, wie muss ich das denn machen??? muss ich die 1'000 mit dem z.B. Z- Register darstellen und abziehen, oder muss ich das in mehreren Schritten tun, so dass ich z.B. 10 * 100 in einer Schlaufe abziehe???? thanks izoard
das geht wie folgt: die zahl sollte im hex format vorliegen: 1000 = 0xE38. deine register seien XH und XL. du ziehst nun einfach (mit sub oder subi) 0x38 (der LOW teil von 1000) von XL ab. Hierbei wird das Carry flag gesetzt, sollte Xl unterlaufen (d.h. XL<0x38). nun ziehst du von XH 0x0E ab. Hierfür verwendest du SBC oder SBCI. Diese funktion zieht dann zusätzlich das carry-flag von XH ab (also XH = XH-1, wenn das C-Flag gesetzt ist). schon biste fertig.
Vielen Dank. Jetzt habe ich noch eine Frage, ich muss eine Abfrage realisieren, bei der ich springe, wenn das X- Register grösser oder gleich 1000 ist, kann man das mit cpi Befehlen realisieren??? Ich habe es schon versucht, doch es wird ziemlich unübersichtlich, gibt es da einen besseren Weg???
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.