Ü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.