Вопрос № 27468: Здравствуйте, уважаемые, эксперты!
Начал изучать ассемблер с азов.
Возник вопрос, а для чего нужен и обрытный код, и дополнительный код представления чисел? Сразу уточню, не чем они отличаются, а к чему они оба нужны. ...Вопрос № 27499: Здравствуйте, уважаемые, эксперты! Неоднократно встречал информацию, что в ассемблерной программе, работающей под Windows XP, не выполняются команды IN AX, 3FCh ; OUT 3FCh, AX. Но не могу понять почему. Разъясните, пожалуйста. Подскажите, что нужно с...
Вопрос № 27.468
Здравствуйте, уважаемые, эксперты!
Начал изучать ассемблер с азов.
Возник вопрос, а для чего нужен и обрытный код, и дополнительный код представления чисел? Сразу уточню, не чем они отличаются, а к чему они оба нужны.
Отвечает: Boriss
Здравствуйте, Демченко Артем!
Да нет, отличаются - Вы были невнимательны, когда читали об этом :))
Чтобы убедиться в этом, напишите такой код и посмотрите в отладчике
not ax - получается обратный код
neg ax или mov ax,-10 - дополнительный
С использованием дополнительного кода в процессоре избавились от операции вычитания
Получением обратного кода вместе с операцией and можно, например, снять бит
Да и видел я графопостроитель, которому нужно было задавать отрицательные перемещения в обратном коде (давно списан и разобран уже)
Приложение:
--------- Прорвемся! (Быть может :(( )
Ответ отправил: Boriss (статус: Профессор)
Отправлен: 10.10.2005, 11:43 Оценка за ответ: 4 Комментарий оценки: Спасибо. Но вопрос был не про отличия.
Отвечает: P0pdb
Здравствуйте, Демченко Артем!
Начал изучать ассемблер с азов.
Возник вопрос, а для чего нужен и обрытный код, и дополнительный код представления чисел? Сразу уточню, не чем они отличаются, а к чему они оба нужны
Ответ!
Обратный код нужен для того чтобы в вирусных или неправильных прогах востанавливать регистры которые вы задействывали если это com проги! Ясно?
--------- Что посеешь то и пожмешь!
Ответ отправил: P0pdb (статус: 2-ой класс)
Отправлен: 10.10.2005, 21:38 Оценка за ответ: 5 Комментарий оценки: Спасибо!
Отвечает: Лысков Игорь Витальевич
Здравствуйте, Демченко Артем
Дополнительный код нужен для представления отрицательных чисел, чтобы сумма знакового числа и его дополнительного кода была равна нулю (как 2+(-2) = 0). Используется чаще всего в знаковой арифметике.
Обратный же код нужен для инвертирования всех бит беззнакового числа. Используется чаще всего для формирования масок.
Здравствуйте, уважаемые, эксперты! Неоднократно встречал информацию, что в ассемблерной программе, работающей под Windows XP, не выполняются команды IN AX, 3FCh ; OUT 3FCh, AX. Но не могу понять почему. Разъясните, пожалуйста. Подскажите, что нужно сделать, чтобы выполнялись.
Отвечает: P0pdb
Здравствуйте, Zaruba Vyacheslav!
Уважаемый пришлите мне на внутренюю почту скрипт этой проги и я попробую скампить его!
Но у меня есть большое подозрение что вы не правилно написали каманды IN и OUT я лично таких еще не встречал!
--------- Что посеешь то и пожмешь!
Ответ отправил: P0pdb (статус: 2-ой класс)
Отправлен: 10.10.2005, 14:32 Оценка за ответ: 4
Отвечает: Евгений Иванов
Здравствуйте, Zaruba Vyacheslav!
Это вроде com-порт.
для win-систем вообще-то нужно создавать драйвер.
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 10.10.2005, 14:37 Оценка за ответ: 3
Отвечает: Лысков Игорь Витальевич
Здравствуйте, Zaruba Vyacheslav!
Дело в том, что команды IN, OUT и ряд других являются привилигированными. В защищенном режиме работы процессора (в котором иработает Windows) эти команды работатают только в, так называемом, нулевом кольце защиты. Другими словами они свободно доступны только драйверам. Пользовательские программы, которые работают в третьем кольце защиты, не могут их просто так использовать.
Но не все так плохо, как я уже отвечал в вопросе 27026 :)
Неплохим вариантом считаю использование специального драйвера, задача которого состоит в подправке специальной таблицы, в результате чего твоя программа сможет оперировать с портами, как в старом, добром ДОС-е
Если надо, пиши, вышлю.
PS. Если хочешь разобраться, читай про защищенный режим процессора.
--------- Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: 4-ый класс)
Отправлен: 10.10.2005, 15:20 Оценка за ответ: 5
Отвечает: Юра Устинов
Здравствуйте, Zaruba Vyacheslav!
Во-первых, работа с портами, если вы пишите под WINDOWS, можно реализовать только на уровне драйвера.
Во-вторых, если вы пишите под ДОС, то с некоторыми портами WINDOWS запрещает общаться, например, вы можете запрограммировать динамик, но не можете клавиатуру. Попробуй запустить это в ДОСе.
И вот ещё, что, если тебе нужно сделать запись или чтение из порта можно обойтись без асмы.
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1126
Зайди по этой ссылке и ты узнаешь как сделать твою задачу.
--------- Спасём Россию!!!
Ответ отправил: Юра Устинов (статус: 2-ой класс)
Отправлен: 12.10.2005, 05:49 Оценка за ответ: 5