Вывод из add / sub переходит в CF, флаг переноса в EFLAGS.
Операндом sub al, 1
является AL, а не EAX. На старшие 24 бита EAX не может повлиять инструкция с размером 8-битного операнда.
Если вы хотите перевернуть весь EAX на все, вам понадобитсяиспользовать sub eax, 1
. (или not eax
, или dec eax
). sub al, 1
- это другая инструкция, и отличие состоит в том, что она влияет только на AL (и EFLAGS), а не на любые биты вне AL. .
Нет. В дополнении 2 -1
представлено числом со всеми установленными битами. Например, в 8-битном это 0xFF
, в 32-битном это 0xFFFFFFFF
. Если бит 0
находится внизу, он будет означать, что -2
.
будет просто заполнен единицами AL или будет также переноситься в AX и EAX.
Просто АЛ. Вы могли бы просто попробовать это сами (а затем попросить объяснить результат, если вы все еще были озадачены).