Sie sind nicht angemeldet.

1

Samstag, 16. Oktober 2021, 12:19

AVR8ASM : Das Two's complement overflow flag ( V-Flag )

Hallo zusammen,

das Verständnis zum V-Flag war eine ziemliche Tortur. Aus der Logikschaltung, die zeigt wie dass V-Flag zustande kommt, geht hervor dass das V-Flag gesetzt wird, wenn beide Operatoren dass gleiche Vorzeichen haben, aber dass Resultat ein anderes. Dabei gilt es zu beachten, dass der AVR8-uC eine Subtraktion als Addition mit dem Zweierkomplement durchführt, aber die Flags natürlich, wie bei einer Subtraktion beeinflußt werden. Die Zweierkomplementdarstellung von -127 ist $81 bzw. 129.
Die Subtraktion als Addition mit dem Zweierkomplement, erklärt die Funktion der Logikschaltung, es ist aber unbedingt zu berücksichtigen, dass das H-Flag richtigerweise gesetzt wird und nicht dass C-Flag, da ja eine Subtraktion ausgeführt wird. Das Ergebnis ist natürlich falsch, da der vorzeichenbehaftete Zahlenbereich ( -128 bis +127 ) mit -129 verlassen wurde, was mit V=1 angezeigt wird.

Um den Zustand des V-Flags bestimmen zu können, ist es am besten dezimal zu rechnen und zu gucken, ob dass Resultat den vorzeichenbehafteten Zahlenbereich verlassen hat.



_Machtwas_
CRS Robotics A255, TRONXY X3A, TinkerCAD, c´t-Lab, ProfiLab Expert, AVR8 Assembler

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Machtwas« (16. Oktober 2021, 18:57)