Вопрос № 72599: Привет! На основание чего устанавливается флаг of? Я не имею в виду, что он обозначает, а именно как он устанавливается, исходя из чего процессор определяет, что нужно его установить? Как он это рассчитывает, на основаниие каких разрядов или может др...Вопрос № 72636: Почему Tlink.exe возвращает ошибку "Cannot generate COM file : invalid initial entry point address"
Tasm.exe /z /zi /n /m2
Tlink.exe /x /v /t...Вопрос № 72650: Появился еще вопрос по книги Калашникова.
По описанию должна выводиться рожица , а ее нет.
Уважаемые специалисты обьясните почему....
Вопрос № 72.599
Привет! На основание чего устанавливается флаг of? Я не имею в виду, что он обозначает, а именно как он устанавливается, исходя из чего процессор определяет, что нужно его установить? Как он это рассчитывает, на основаниие каких разрядов или может др. флагов? Как он определяет, что произошла потеря значашего бита? Я , например, знаю, что если сложить -70 и -70, то произойдет установка этого флага из-за того, что -140 не вместится в 1 байт в доп. коде (если рассматривать байтовую операцию). Вопрос, как процессор
это понял?
Отправлен: 25.01.2007, 15:33
Вопрос задал: Oxaid (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 4)
Отвечает: Олег Владимирович
Здравствуйте, Oxaid!
По-моему, его поведение можно описать так:
0, если старший бит результата равен одному из старших битов операндов сложения/вычитания;
1 в противном случае.
Логически:
(ст.бит результата XOR ст.бит первого операнда) AND (ст.бит результат XOR ст.бит второго операнда) = OF
Та самая логическая схема, которую наверняка имел в виду Лысков Игорь Витальевич.
В сдвиговых операциях OF устанавливается в том и только в том случае, если старший бит приёмника изменился. OF = ст.бит до сдвига XOR ст.бит после сдвига.
Вывод: каждая команда по-своему меняет флаги, схема не всюду одинакова.
При умножении, например, просто OF = CF = (старшая половина результата не ноль, что можно представить как (бит0 AND бит1 AND ... AND ст.бит)).
Так что тут изучать и изучать. Удачи!
--------- Факультет ПМ-ПУ - лучший в СПбГУ!
Ответ отправил: Олег Владимирович (статус: 10-ый класс)
Ответ отправлен: 25.01.2007, 16:35 Оценка за ответ: 5 Комментарий оценки: Вот это ближе к тому, что я спрашивал. Появились мысли для исследования.
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Oxaid!
Процессор не знает, что есть числа со знаком и без знака.
Он все считает в двоичной арифметике и уже на программиста ложится задача контроля правильности вычисленных результатов:
флаг cf устанавливается когда есть перенос со старшего бита (7,15,31 и т.д.)
флаг of устанавливается когда есть пернос с бита 6 в 7 или с 14 в 15 или с 30 в 31, так как для для знаковых чисел испульзуется <знак>+<7,15,31 бит числа>,
вот для защиты бита знака существует флаг of
анализируя флаги of и cf можно принимать решение о достоверности результата.
Надеюсь обьяснил.Удачи!
Ответ отправил: Зенченко Константин Николаевич (статус: 1-ый класс)
Ответ отправлен: 25.01.2007, 17:50 Оценка за ответ: 5 Комментарий оценки: Наверно это и есть то, что нужно. Но про cf можно было бы и не упомянать. Проблема в том, что можно использовать что-либо и не знать как оно реализуестя. Так и тут я знаю, что обозначает флаг of, но как это реализовано не понимаю. Отсюда и вопрос - логика событий на основании которых происходит установка флага of.
Вопрос № 72.636
Почему Tlink.exe возвращает ошибку "Cannot generate COM file : invalid initial entry point address"
Tasm.exe /z /zi /n /m2
Tlink.exe /x /v /t
Приложение:
Отправлен: 25.01.2007, 19:47
Вопрос задал: Burzui (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Евгений Иванов
Здравствуйте, Burzui!
Укажи точку запуска:
org 100h
start:
.......
end start
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор) Россия, Нижний Новгород Тел.: +78313145721 Организация: M2Media.ru Адрес: Нижний Новгород, ул.Малая Ямская WWW:Eugene Ivanov ICQ: 214889076 ---- Ответ отправлен: 25.01.2007, 19:52
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Burzui!
забыл поставить точку входа в прграмму,
и сообщение mes нужно поставить после кода
см. приложение
Появился еще вопрос по книги Калашникова.
По описанию должна выводиться рожица , а ее нет.
Уважаемые специалисты обьясните почему.
Приложение:
Отправлен: 25.01.2007, 21:12
Вопрос задал: Burzui (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: ramok
Здравствуйте, Burzui!
изменил вместо
CSEG segment
поставил
CSEG segment para 'code'
assume cs:cseg, ds:cseg, ss:cseg
===
и все работает
Ответ отправил: ramok (статус: Студент)
Ответ отправлен: 25.01.2007, 21:25
Отвечает: Евгений Иванов
Здравствуйте, Burzui!
ты вот так кури.
Begin:
mov ax,1+1+1
int 4*4
mov ax,0B800h
mov es,ax
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор) Россия, Нижний Новгород Тел.: +78313145721 Организация: M2Media.ru Адрес: Нижний Новгород, ул.Малая Ямская WWW:Eugene Ivanov ICQ: 214889076 ---- Ответ отправлен: 25.01.2007, 23:09
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Burzui!
Вы забыли директиву ASSUME
и установить видеорежим
см. приложение
Удачи!