· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› Overflow flag

Посл.отвђт Сообщенiе


Дата: Июл 18, 2003 02:39:53 · Поправил: Безпощадный даос

sorry, я только учусь (может вопрос глупый)
// NASM

[BITS   16]

[ORG    100h]

        mov     ax, 127
        add     ax, 2

        jo      overflow

        mov     ah, 09h
        mov     dx, message_not_overflow
        int     21h

        int     20h

overflow:
        mov     ah, 09h
        mov     dx, message_overflow
        int     21h

        int     20h

message_overflow        db  'overflow', 13, 10, '$'
message_not_overflow    db  'not overflow', 13, 10, '$'


так вот, во всех книжках написано, что должен ставиться флаг переполнения, а он в отладчике не ставится и почему-то ставится флаг четности (хотя младший байт = 1 - всего один установленный бит). Отлаживал в AFD и TD.

Может я не так все понял ;( помогите плз...


Дата: Июл 18, 2003 03:25:11

Перейди на HEX систему исчисления, Будет устанавливаться
флаг знака SF, а флаг CF если я тебя правильно понял,
установиться при переходе через границу 255 или 0FFh


Дата: Июл 18, 2003 03:28:35

Ты не понял - CF (Carry Flag) - флаг переноса. С ним нет проблем. Я про OF (Overflow flag). Он должен устанавливаться (как я понимаю).


Дата: Июл 18, 2003 03:42:45

Я извиняюсь, не заметил что регистр ax, а не al
Итак флаг переполнения будет установлен если результат превысит 32767 (7FFFh), а не 7Fh.


Дата: Июл 18, 2003 03:43:52

poprobuy vmesto
mov ax,127
add ax,2

mov ax,127
add ah,2
Pri dobavlenii k 127 2 v ax ne proishodit ni kokogo
overflow tak kak on 16 bit


Дата: Июл 18, 2003 03:47:21

OF переполнение - Результат превысил положительный
или отрицательный предел для чисел. Это из описания,
16 бит верхний предел 32767


Дата: Июл 18, 2003 04:01:32

Спасибо. Я ДУРАК. Но это от отсутствия опыта.
еще раз ОЧЕНЬ благодарен.


Дата: Июл 18, 2003 04:11:20

learner Я же тоже ошибся давая первый ответ.
Это нормально для если програмируеш на ассемблере.


Дата: Июл 18, 2003 06:52:36

OF
Это когда перенос в SF <> переносу в CF
пример с 127+2 установит OF если операнд будет 8 бит.
Например
mov al,127
add al,2

Пример когда при двух случаях нулевого результата
в одном установится OF а в другом - нет.
al = 80h (10000000b)
sub al,al (10000000 - 10000000 = 00000000)
al = 0
SF = 0 в CF тоже небыло перноса - значит OF = 0

add al,al (1000 0000+1000 0000=1вCF|0000 0000)
SF = 0 а в CF = 1 (перенос в несуществующий разряд)
al опять 0 но SF<>CF получаем OF.


Дата: Июл 26, 2003 10:57:46

Да вот маленькая обучалка для понимания как флаги работают и ассоциацию реального положения флагов с мнемонмками

1432264715__tttn.zip


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.084