Я также рекомендовал бы использовать D86 (which comes with A86) как это позволяет ввести в 8086 инструкции в интерактивном режиме, так что вы можете увидеть, что происходит со всеми регистров и флагов после каждой команды.
Этот код (как и другие указали):
MOV AL, F2h
ADD AL, 20h
будет влиять только на флаги и регистр AL. Никакой другой восьмибитовый регистр не будет затронут (даже AH). AX будет меняться, хотя, так как он состоит из AH и AL, так что если AH был 42ч:
Code AL AH AX
MOV AL,F2h F2 42 42f2
ADD AL,20h 12 42 4212
В результате этой конкретной операции будет установлен флаг переноса и флаг четности и очистить переполнение, ноль, знак и вспомогательные флаги.
Вы можете подумать, что флаг переполнения должен быть установлен, но флаг переполнения обрабатывает значения как знаковые значения (в данном случае -14 и 32), и добавление не превышает максимальное значение со знаком (127).Флаг переноса обрабатывает значения как значения без знака (242 и 32), а добавление превышает максимальное значение без знака: 242 + 32 = 274, которое больше 255, поэтому перенос установлен.
Поскольку это 8-битный регистр, будет ли флаг переноса установлен? – xtofl
Да, он будет установлен, так как происходит переполнение регистра AL. – Macmade
Большое спасибо Macmade, я сейчас понимаю основы ASM намного лучше. :-) – Tal