Flagi procesora są ustawiane przez wiele różnych instrukcji, nie tylko cmp
czy sub
. Podobnie z flag korzystają nie tylko instrukcje skoku, ale też np adc
czy sbb
. Dla procesora nie ma specjalnie znaczenia gdzie i jaka instrukcja ustawia flagi, a jaka je wykorzystuje (oprócz tego, że może mieć wewnętrzne optymalizacje np dla popularnej sekwencji cmp+jnz). Instrukcje ustawiające flagi często nie ustawiają wszystkich flag, więc aktualny stan rejestru flag procesora może zależeć od wielu wcześniejszych instrukcji zmieniających flagi.
Natomiast jeśli chodzi o dzielenie to też wystarczy zajrzeć do listingów i sprawdzić opis instrukcji div
. Np w listingu podanym przez forumowicza @elwis jest taka strona:
http://x86.renejeschke.de/html/file_module_x86_id_72.html
DIV r/m16 Unsigned divide DX:AX by r/m16, with result stored in AX = Quotient, DX = Remainder.
Jest tam też opisane, że jeśli wynik dzielenia nie zmieści się w docelowym rejestrze to dostaniesz wyjątek procesora (a więc nastąpi kosztowne przerwanie).