Таким образом, если MSB результата равен 1, тогда флаг знака = 1 или флаг знака = 0. Я прав?
Вы правы в отношении флага знака, отражающего наиболее значимый бит результата, , но в вашем добавлении add ax, bx
вы добавляете 2 слова, и в этом вся разница.
Рассмотрим добавление байтов :
mov al, 20h
mov bl, 80h
add al, bl ; -> AL = 20h + 80h = A0h
Результат в AL
имеет старший значащий бит (бит 7) , установленный и поэтому SF = 1
Рассмотрим добавление слов :
mov ax, 0020h
mov bx, 0080h
add ax, bx ; -> AX = 0020h + 0080h = 00A0h
Результат в AX
имеет старший значащий бит (бит 15) , очищенный , поэтому SF = 0
Совет
Это может помочь написать шестнадцатеричные числа с таким количеством цифр, которое может содержать регистр.
Напишите mov ax, 0020h
вместо mov ax, 20h
.