Chciałbym również zalecamy stosowanie D86 (which comes with A86) gdyż pozwala wpisać w 8086 instrukcją interaktywny, dzięki czemu można zobaczyć, co dzieje się z wszystkich rejestrów i flag po każdej instrukcji.
Kod ten (jak inne podkreśliło):
MOV AL, F2h
ADD AL, 20h
wpłynie tylko flagi i rejestr AL. Nie wpłynie to na żaden inny ośmioboczny rejestr (nawet AH). AX zmieni chociaż, ponieważ składa się z AH i AL, więc jeśli AH był 42h:
Code AL AH AX
MOV AL,F2h F2 42 42f2
ADD AL,20h 12 42 4212
Wynikiem tej konkretnej operacji ustawi flagę carry i flaga parzystości i usunąć przepełnienie, zero, znak i flagi pomocnicze.
Możesz myśleć, że flaga przepełnienia powinna być ustawiona, ale flaga przepełnienia traktuje wartości jako wartości oznaczone (w tym przypadku -14 i 32), a dodanie nie przekracza maksymalnej wartości podpisanej (127).Flaga przenoszenia traktuje wartości jako niepodpisane wartości (242 i 32), a dodanie przekracza maksymalną wartość bez znaku: 242 + 32 = 274, która jest większa niż 255, więc przeniesienie jest ustawione.
Ponieważ jest to rejestr 8-bitowy, czy zostanie ustawiona flaga przenoszenia? – xtofl
Tak, zostanie ustawiony, ponieważ występuje przepełnienie rejestru AL. – Macmade
Dziękuję bardzo Macmade, teraz rozumiem podstawy ASM znacznie lepiej. :-) – Tal