Überlauf von Registern und Carry Flag?



  • paar fragen
    -----------

    hi,
    also ich versuche schon seit ein paar tagen asm zu lernen und nun habe ich ein paar fragen(wieder mal) und ich hoffe sie könnt mir beantworten...

    1 : also wenn ich z.b. in dem al register den wert 255 habe(max) und dann al plus 1 nehme, wird ja das carry flag gesetzt ist aber, dann der wert nicht angenommen und al immer noch 255 ? oder hat dann ax den wert 256 ?

    2 : wenn ich adc(add with carry) benutze bekomme ich ja den wert vom carry flag mit addiert, hier mal ne code beispiel :

    mov al, 255
    add al, 1
    adc ah, 0 ;Mhh also wen der Wertebereich übersschritten wurde oben ist ah = 1, right ?

    nun meine frage, was habe ich dann davon wenn ah = 1 ist, kann ich dann mit ax 256 ansprechen ? oder ist es einfach nur zu test zwecken gut ?

    [edit]Der Titel war vorher ein wenig nichtssagend. Bitte mal auf halbwegs aussagekraeftige Titel achten.[/edit]



  • Hi.

    Zu 1:
    al wird 0 gesetzt und - wie du schon sagtest - wird das CF gesetzt.
    ah wird dabei nicht beeinflusst.
    Im Uebrigen klappt das ganze auch andersherum:
    Wenn du in al 0 stehen hast und eins Abziehst, steht 255 in al und das CF wird ebenfalls gesetzt.

    Zu 2:
    Keine Ahnung, was du mit "Testzwecken" oder "mit ax 256 ansprechen" meinst, aber ah wird in deinem Beispielcode nicht zwangslaeufig auf 1 gesetzt.
    Vielmehr wird zu ah der Wert im 2.Operanden (in deinem Beispiel 0) + der Wert von CF (0 oder 1 - je nachdem, ob CF gesetzt ist) addiert.
    Wie und wozu du das nun benutzt, ist deine Sache. 😉


Anmelden zum Antworten