Witam ponownie :)
Rozumiem inne podstawowe flagi, ale mam drobny problem z OF, i CF
Na początek OF
W googlach spotkałem się z teorią, że przekroczenie wartości 8000h ustawia OF na 1, w takim razie czemu owy kod tego nie czyni?
; TEST
mov ax, 8000h
add ax, 1
NOP
I czy OF nie polega na przekroczeniu ilości bitów danego rejestru? Tzn. czy flaga OF będzie zależna od (np dodanej przez "add") wartości dla EAX, AX, AL?
Jak to jest w procesorach 64bitowych? EAX przyjmuje 32bity? Ciocia wikipedia powiedziała o 64bitowych rejestrach poprzez odwoływanie się z "R", no RAX, ale MASM32 tego nie trawi (trywialnym tokiem myślenia można sugerować się po nazwie :P)
a teraz odnośnie flagi CF
Dodatkowo znalazłem użyteczny PDF
http://www.jegerlehner.ch/intel/IntelCodeTable.pdf
C: Carry result of unsigned op. is too large or below zero. 1 = carry/borrow
O: Overflow result of signed op. is too large or small. 1 = overflow/underflow
Czegoś tu nie rozumiem, flaga CF=1 dla "result of unsigned op", to jak wartość może być poniżej zera?! Może, i mi mózg zardzewiał o tej godzinie, ale wartości unsigned nie mogą być poniżej zera... Da się zmienić pierwszy bit dodając wartość? W tym przypadku wygląda to tak, jak by flaga CF zmieniała się zawsze z flagą OF
Dodatkowo opcjonalne pytanie: Da się w ollydbg ustawić monitorowanie rejestrów AL, AX, itp? W prawym oknie są 32bitowe