Forum: Mikrocontroller und Digitale Elektronik Verständnisfrage SUBI und anschließend BRMI


von Tubie (Gast)


Lesenswert?

Bin gerade dabeio eine kleine ASM Routine zu schreiben(Mega16), um den
Inhalt eines Registers auf dem LCD anzeigen zu lassen. Dabei habe ich
ein Problem, dessen Ursache ich nicht verstehe...

ldi r16,227
subi temp,100
brmi weiter

ergebnis = 127    negative und singned flag gelöscht

ldi r16,229
subi temp,100
brmi weiter

ergebnis = 129    negative und singned flag gesetzt


wenn ich das richtig verstanden habe, wird doch das singned + negative
flag nur gesetzt, wenn die 0 durchlaufen wird, oder? Wie es hier
aussieht, wird es anscheinend schon gesetzt, wenn das ergebnis einer
subtraktion zwischen 128 und 255 liegt.

Gruß,
Tubie

von Tubie (Gast)


Lesenswert?

ist zwar nicht die feine Art, allerdings geht es jetzt...

ldi r16,227
ldi r17,0
subi r16,100
sbc r17,r17
brmi weiter


habe aus der 8-Bit subtraktion eine 16-Bit subtraktion gemacht.

Gruß,
Tubie

von D. W. (dave) Benutzerseite


Lesenswert?

SUBI setzt Z,C,N,V,H und
BRMI führt sich dann aus: if (N = 1) then PC ← PC + k + 1

N: R7
Set if MSB of the result is set; cleared otherwise.


Wie wäre es vielleicht mit BRCC und BRCS (BRSH und BRLO).
ldi r16, 99
subi r16, 100
brlo test  ; = brcs

Der wird hier sicher springen.

von Tubie (Gast)


Lesenswert?

Manchmal sieht man den Wald vor lauter Bäumen nicht. Habe mich ziemlich
auf BRMI versteift.

Vielen Dank

Gruß,
Tubie

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
Noch kein Account? Hier anmelden.