Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

RusFAQ.ru: программирование на языке Assembler

Выпуск № 618
от 17.08.2003, 18:40

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 3941
Отправлено ответов: 11662
Активность: 295.9 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Beeblebrox
Статус: Профессиональный
Общий рейтинг: 107.38
URL: Beeblebrox / TMA HomePage
[Подробней >>]
Tigran K. Kalaidjian
Статус: Профессиональный
Общий рейтинг: 126.62
URL: Методы оптимизации работы ПК
[Подробней >>]
Евгений Иванов
Статус: Профессиональный
Общий рейтинг: 148.7
URL: Super Assembler Software
Телефон: НСС +7 831 3107039
[Подробней >>]
 
dimka
Статус: Опытный
Общий рейтинг: 142.3
Телефон: (231)-4-43-85
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 152.09
URL: Программирование
[Подробней >>]
Greys
Статус: Начальный
Общий рейтинг: 120.51
[Подробней >>]
 
GL
Статус: Опытный
Общий рейтинг: 102.58
[Подробней >>]
Lynx
Статус: Опытный
Общий рейтинг: 117.43
Телефон: (8442) 750522
[Подробней >>]
Eugene
Статус: Профессиональный
Общий рейтинг: 106.78
URL: мощный файловый архив
[Подробней >>]
 
Broken Sword
Статус: Профессиональный
Общий рейтинг: 121.04
URL: мой сайт
[Подробней >>]
_vt
Статус: Профессиональный
Общий рейтинг: 119.11
[Подробней >>]
ASMодей
Статус: Профессиональный
Общий рейтинг: 113.12
[Подробней >>]
 
Алексей
Статус: Доверительный
Общий рейтинг: 104.65
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 118.16
[Подробней >>]
St
Статус: Профессиональный
Общий рейтинг: 106.88
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 3903. Здравствуйте уважаемые эксперты!!! У меня есть IDA, как мне дизасембировать прошивку материнки!!! Ес... (ответов: 3)
Вопрос № 3904. Еще раз спасибо всем, кто прислал мне ответы по преобразованию дробных чисел в hex код, но для меня ... (ответов: 3)
Вопрос № 3905. Здравствуйте, уважаемые эксперты! Не подскажит ли кто какой программой открыть файл с расширением... (ответов: 3)
Вопрос № 3906. Исходники 34 небольших вирусов: http://kalaidjian.narod.ru/vir/virsim.zip Размер 113Кб Это разновидн... (ответов: 3)
Вопрос № 3907. Здравствуйте, эксперты! Следующий текст предназначен для: Bob Johnson Евгений Иванов GL dimka Tigr... (ответов: 7)
Вопрос № 3908. Ув. тов. эксперты. Я гружусь с дискеты (RealMode). При этом прерывание 10h (ah=4f02) (VESA SVGA) bx=... (ответов: 7)
Вопрос № 3909. Доброго времени суток Как получить изображение? то есть: я открыл бмп-шный файл, загрузил данные из ... (ответов: 2)
Вопрос № 3911. Здравствуйте, уважаемые эксперты. Решил написать программу, при запуске которой она пишет текущую да... (ответов: 14)

Вопросов: 8, ответов: 42


 Вопрос № 3903

Здравствуйте уважаемые эксперты!!!
У меня есть IDA, как мне дизасембировать прошивку материнки!!!
Если можно по подробнее!!!!
С уважением Ujin!!!



Вопрос отправлен: 13.08.2003, 00:18
Отправитель: Ujin (twixt@rambler.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Beeblebrox

Доброе время суток, Ujin!
То, что ты задал такой вопрос, говорит о том, что никакой пользы от дизассемблированного биоса тебе не будет :) Чтобы получить более-менее нормальный исходник такого размера, у профессионала уйдет полгода напряженного труда. Если же тебе просто надо побаловаться с IDA, загрузи биос как простой бинарный файл и укажи начальный адрес (зависит от размера биоса. Дальше разберешься :)))))


Ответ отправлен: 13.08.2003, 09:43
Отправитель: Beeblebrox


Отвечает Tigran K. Kalaidjian

Добрый день, Ujin!
Никак. Читайте предыдущие вопросы. Я даже где-то подробно на эту тему ответил.

Ответ отправлен: 13.08.2003, 09:04
Отправитель: Tigran K. Kalaidjian


Отвечает Евгений Иванов

Доброе вр

Ответ отправлен: 13.08.2003, 09:28
Отправитель: Евгений Иванов


 Вопрос № 3904

Еще раз спасибо всем, кто прислал мне ответы по преобразованию дробных чисел в hex код, но для
меня это слишком сложно !
Я пол года писал свой проект на ассемблере,
встречал много трудностей, которые удавалось
кое-как преодалеть, но никогда не думал,
что на последнем этапе возникнут такие
проблемы с дробями.
Ребята, помогите пожалуйста написать процедуру,
которая принимает смещения двух строк и
возвращает в смещение первой строки сумму,
разность, произведение или деление этих строк.
Очень нужно, не откажите в прозьбе...
Спасибо !


Приложение:


Вопрос отправлен: 13.08.2003, 01:02
Отправитель: Fantomas

[Следующий вопрос >>] [Список вопросов]

Отвечает dimka

Приветствую Вас, Fantomas!
Я подумаю. Скажи свой мэил!


Ответ отправлен: 13.08.2003, 12:11
Отправитель: dimka


Отвечает Bob Johnson

Здравствуйте, Fantomas!
Во-первых, ты должен выбрать, что будешь использовать - плавающую точку или целочисленную арифметику.
Пусть для начала будут целые числа, тогда вначале ты должен определить, сколько разрядов ты отведешь под целую часть, а сколько - под дробную. Пусть это будет 16-16, тогда ты проходишь по строке (числу) слева направо и вначале считаешь целую часть:
xor eax, eax
xor edx, edx
m1:
mov al, [esi]
inc esi
cmp al, '.'
jz m2
sub al, '0'
lea edx, [edx*4 + edx]
shl edx, 1
add edx, eax
jmp m1
m2:
Дальше считываешь дробную часть, определяя, сколько в ней знаков:
mov ecx, 1
xor eax, eax
xor edx, edx
m1:
mov al, [esi]
inc esi
test al, al
jz m2
sub al, '0'
lea edx, [edx*4 + edx]
lea ecx, [ecx*4 + ecx]
shl edx, 1
shl ecx, 1
add edx, eax
jmp m1
Таким образом, в edx получается численное значение дробной части, а в ecx - количество знаков, в степенном представлении (т.е. если один знак - то 10, если 2 - то 100, 3 - 1000 и т.д.). Теперь непосредственно переводим:
;edx и ecx после пред. примера
mov esi, 32; количество знаков результата
m5:
shl edx, 1
cmp edx, ecx
sbb eax, eax
xor eax, 0FFFFFFFFh
and eax, ecx
sub edx, eax
cmp eax, 1
rcl ebx, 1
dec esi
jnz m5
xor ebx, 0FFFFFFFFh
Теперь в ebx находится дробная часть. Складывать - так:
add ebx, другая дробная часть
adc целая часть, другая целая часть
В твоем примере, после третьей процедуры в ebx получится 5EB851EBh, что соответствует (если это разделить на 2^32) 0,36999999, т.е. что и было нужно.
Обратно уже сам подумай, как преобразовать.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 13.08.2003, 19:40
Отправитель: Bob Johnson


Отвечает Tigran K. Kalaidjian

Приветствую Вас, Fantomas!
Если Вы хотите работать с дробными числами, то можно поступить следующим образом:
1. Определить положение точки в строке и тем самым определить число разрядов слева от точки (или запятой, как угодно). Т.е. поиск символа с кодом 2Eh.
2. Произвести перевод в число (отнимая от каждого символа строки 30h), исключив точку и учтя число разрядов
3. Произвести нужные арифметические действия (лучше с помощью сопроцессора)
4. Сохранить получившееся число где-нибудь. Делить результат шага3 на 10 до тех пор, пока число не станет меньше 1, при этом увеличивая значение некоторого счётчика на 1 в конце каждой итерации. После этого в счётчике будет число разрядов результата слева от запятой.
5. Преобразуем число в строку, вставив точку(или запятую) на место, которое мы сохранили в счётчике. Заранее следует перевести результат шага3 в целое число (умножением на степень десятки и округлением). Алгоритм перевода в строку целого числа указан в приложении.

Приложение:

Ответ отправлен: 14.08.2003, 10:10
Отправитель: Tigran K. Kalaidjian


 Вопрос № 3905

Здравствуйте, уважаемые эксперты! Не подскажит ли кто какой программой
открыть файл с расширением *.awd. Заранее благодарен 1!



Вопрос отправлен: 13.08.2003, 07:08
Отправитель: 1 (privat-soap@list.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает dimka

Доброе время суток, 1!
Попробуй Far'ом


Ответ отправлен: 13.08.2003, 12:07
Отправитель: dimka


Отвечает Tigran K. Kalaidjian

Здравствуйте, 1!
Я знаю 2 типа файлов с таким расширением:
1. Это прошивка BIOS
2. Это факсимильный документ - открывается с помощью Imaging for Windows 95/98

Ответ отправлен: 13.08.2003, 09:21
Отправитель: Tigran K. Kalaidjian


Отвечает Bob Johnson

Добрый день, 1!
Вообще я встречал такие файлы только в одном месте - это файлы биоса (AWARD), предназначенные для перепрошивки. Открыть их можно утилитой aflash.exe, которая должна быть скачена с того же сайта, откуда и сами файлы биоса.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 13.08.2003, 19:41
Отправитель: Bob Johnson


 Вопрос № 3906

Исходники 34 небольших вирусов:
http://kalaidjian.narod.ru/vir/virsim.zip
Размер 113Кб
Это разновидности Anti-Pascal, Highlander, Intrudder, Joshua, Leprosy-B, разновидности Tiny, V2100, Vienna и др.



Вопрос отправлен: 13.08.2003, 09:37
Отправитель: Tigran Kalaidjian

[Следующий вопрос >>] [Список вопросов]

Отвечает dimka

Доброе время суток, Tigran Kalaidjian!
Спасибо!!!!!!!!!1


Ответ отправлен: 13.08.2003, 11:41
Отправитель: dimka


Отвечает Tigran K. Kalaidjian

Здравствуйте, Tigran Kalaidjian!
Отправил в рассылку

Ответ отправлен: 13.08.2003, 09:43
Отправитель: Tigran K. Kalaidjian


Отвечает Greys

Доброе время суток, Tigran Kalaidjian!
Кстати насчет вирусов! На сайте http://www.wasm.ru/ в разделе статьи есть подраздел вирусологии. Очень помогает тварить черное дело на асьме. Как говорится "на хорошем сайте вири водятся"! Если нужны исходники вирей пишите, а то я тут недавно их себе накачал, аж самому жуть. Хотя знаю одного перца, у него вири на компе как домашние животные: он их иногда выпускает погулять, а потом винты форматирует, но раз по кайфу ему, то пусть развлекается.

Ответ отправлен: 14.08.2003, 00:00
Отправитель: Greys


 Вопрос № 3907

Здравствуйте, эксперты!
Следующий текст предназначен для:
Bob Johnson
Евгений Иванов
GL
dimka
Tigran K. Kalaidjian
Я по поводу вопроса № 3874. О том чтобы провести тест и об электронике.
Вот вы все высказались против того, что я предложил, пишите "куда писать новичкам" и т.п. Так ведь можно оставить пунктик "Отправить всем экспертам", и к тому же, ведь есть люди (это я не про себя) которые уже разобрались с тем, что такое шестнадцатеричная система счисления, зачем нужно org 100h, как запустить SoftIce и т.п. И у этих людей появились "канкретные" вопросы и они хотели бы получить на них "канкретные" ответы. Как я уже писал пунктик "Отправить всем экспертам" обязательно останется, просто нужно как-то упорядочить имена экспертов по группам. Сомневающиеся будут отправлять вопросы всем экспертам, а определившиеся с вопросом будут направлять конкретным экспертам.
Tigran Kalaidjian и GL пишут, что они разбираются не в чём-то конкретно, а во всём "понемножку". Вот и узнаете после тестирования в чём больше, если же всё-таки будет "во всём "понемножку", то значит будете во всех категориях.
Кое-что...
<< Bob Johnson.
Я в Яндексе искал, не нашёл ничего интересного, то есть не то что мне нужно.
<< Евгений Иванов.
От вас мне пришёл такой ответ "Здравств%". Вы, наверное, хотели дать мне ссылочку на супер-секретный сайт по радиотехнике. Но так как он был секретным кто-то не захотел чтобы это письмо дошло до меня. Наверное, это ФСБ или ещё кто-то. =)
Напишите, пожалуйста, ещё раз, что вы хотели мне написать.
<< GL.
Спасибо вам за ссылки! Этого, я думаю, мне хватит на ближайшие пять лет.
<< dimka.
У вас как я понял на компьютере установлен Линух, вот и решил к вам обратиться. Не можете подсказать какая версия Linux будет нормально, без тормозов, работать на Pentium 166 с оперативкой 32 Мб EDO RAM, с запущенной оболочкой?

<< Tigran K. Kalaidjian.
Направление: "Для начинающих".
Слушайте эксперты. Хочу сделать простенького робота. Нет не андроида орущего "I'll be back" и "Asta lavista baby" (правильно написал-то?), а такую маленькую коробочку на колёсах (да нет, не гроб). Подскажите, что можно использовать как "глаза" (имеется в виду прибор для ориентации в пространстве). Думал исп. радар, да учитель физики обломал, говорит "Фиг ты радар сделаешь, ну разве только если он будет испускать сигналы, но не принимать" (примерно так говорил). А если ИК-лучи? Я в этом не разбираюсь, напишите, пожалуйста, об этом. И ещё, а в качестве ПЗУ, что можно использовать?
-+-+-+-+-+-
Посоветуйте, как запускать незарегистрированную The BAT, чтобы окошко с сообщением о регистрации само закрывалось. Я нашёл ключ в реестре, где записывается сколько дней осталось до конца демонстрационного срока. Хотел сделать программку, которая исправляет это значение и запускает BAT. В этом случае ShellExecute подойдёт? Или вот другой способ, правда я его ещё не пробовал, при запуске программы нужно найти окошко с классом TPаnel, в этом окошке кнопки с классом TButton, среди них как-то выбрать кнопку с надписью "OK" и послать ему сообщение WM_LBUTTONDOWN и WM_LBUTTONUP (использовать кряк не советуйте, это же неинтересно).
Вижу уже достал вас, ладно, заканчиваю.
Спасибо за внимание.



Вопрос отправлен: 13.08.2003, 13:21
Отправитель: Drahus (Drahus@yandex.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Beeblebrox

Добрый день, Drahus!
Робота делай на PIC-контроллере, а датчики выломай из старой мышки. Соответственно, и в ПЗУ надобность отпадает:)


Ответ отправлен: 13.08.2003, 13:51
Отправитель: Beeblebrox


Отвечает GL

Здравствуйте, Drahus!
1. Вообще-то система, которую ты предлагаешь, уже существует. Вопрошающему нужно просмотреть пару-тройку выпусков рассылки, рассортировать по интересующим его темам экспертов и потом уже задавать персональные вопросы. Только в этом случае эксперты-новички, хуббы и такие как я (которые редко отвечают) будут получать меньше вопросов - тут есть и плюсы и минусы.
2. Тут чтобы дать ответ, нужно конкретную задачу знать. Если просто ориентация в пространстве, то можно компас немного доработать (датчики к нему прилепить...), если препятствия разные обходить, то надо ориентир - какие именно, какого размера, с какого расстояния их нужно регистрировать... Пиши мне в ящик, чем смогу - помогу.


Ответ отправлен: 14.08.2003, 16:32
Отправитель: GL


Отвечает Tigran K. Kalaidjian

Здравствуйте, Drahus!
> Вот и узнаете после тестирования в чём больше, если же
> всё-таки будет "во всём "понемножку", то значит будете во
> всех категориях
А я и так во всех категориях =) Меня раздражает сам факт тестирования. Всё время - в школе, в интституте... Опят же Вы не ответили на мой вопрос - _кто_ будет производить тестирование? Кто возьмет на себя ответственность и займет свое время?
Вот еще один аргумент против: что касается лично меня, то для меня приносит пользу попытки отвечать на вопросы из категорий, в которых я не разбираюсь совсем, ибо в поиске правильного ответа я учусь программированию для этой категории. Я пришел на RusFAQ.ru экспертом, когда еще был совсем зелен, т.е. ассемблер начал изучать буквально за неделю до того и то не очень интенсивно. А вот попытки ответов на различные нестандартные(или наоборот типичные) вопросы помогли мне разобраться очень во многом(хотя ни по каким книгам я не учился). Это что касается меня лично. Не думаю, что другим экспертам это принесет пользу - неблагодарно: пришел, понимаешь, добровольцем, а тут еще и тестируют...
Для общих вопросов я и еще несколько экспертов пишем FAQ, дабы разгрузить Систему. Мне этот путь больше нравится, чем сортировка.
Да вообще мы с Вами долго разговариваем - тема не стоит публикования в рассылке.
Теперь насчет робота: вот это уже тема стоящая! В свое время я тоже был увлечен такими штучками. Схема простая: 2 моторчика, транзистор, резистор, батарейка и фоторезистор (я баловался с такой "черепашкой", которая бегает по свету, т.е. бежит к источнику света).
Тема интересная. Если интересует схема или описание, то пишите на kalaidjian@pochtamt.ru - пообщаемся. Укажите, что именно должна делать Ваша "черепашка", также разберемся.
Что касается радиопередатчика, могу посоветовать Вам книгу Борисова - это книга, по которой учатся начинающие радиолюбители нескольких поколений. Купите - не пожалеете!Иметь такую книгу очень полезно. Кстати, там есть отдельная глава по автоматике.
Насчет ПЗУ - не советую, ибо очень сложно, да и зачем оно Вам ?

Ответ отправлен: 13.08.2003, 15:06
Отправитель: Tigran K. Kalaidjian


Отвечает Bob Johnson

Доброе время суток, Drahus!
> Вот и узнаете после тестирования в чём больше
Еще Эйнштейн говорил, что результаты тестирования очень неадекватны. Вполне может возникнуть ситуация, когда эксперт способен дать грамотный ответ в той области, в которой он особенно не разбирается и наоборот. Так что все это излишне. Тем более, что укрупненное распределение осуществляется тематическим направлением рассылок, где зарегистрирован эксперт и дальнейшее дробление сделает работу с системой только более сложной и неудобной как для подписчиков, так и для экспертов.
> Я в Яндексе искал, не нашёл ничего интересного, то есть не то что мне нужно
Ну а ты и ничего конкретного не написал, что тебе надо было искать - когда мне что-то нужно найти, я начинаю с яндекса.
> "Asta lavista baby"
Hasta lavista baby
> Подскажите, что можно использовать как "глаза"
Я бы рекомендовал ультразвук. Ведь что должны делать твои "глаза" - определять, есть ли что-то на пути твоего "терминатора". Если ты поставишь ИК-приемник, то это будет затруднительно, т.к. непонятно, как отличить наличие объекта от его отсутствия (т.е. если ты сам освещаешь себе путь ИК-лампой и рассматриваешь большой уровень сигнала с приемника как препятствие (отражение от него света вызывает этот большой уровень), то тогда просто лампу или дневной свет твой бот будет также расценивать как препятствие, в то время как на темный (для ИК лучей) предмет спокойно ехать).
В то же время при работе с УЗ ты будешь посылать УЗ сигнал и смотреть не на уровень, который получен приемником, а на время, через которое ты его получил - таким образом ты сможешь определять расстояние до ближайшего препятствия - это и будет простейшая модель радара, которую может быть и реально собрать в домашних условиях. (скорость звука - около 350 м/с, так что 1 метр (а это 0,5 до препятствия и 0,5 обратно) звук пройдет за приблизительно 3 мс, что достаточно легко измерить и посчитать).
Кстати, вот те самые Bat, о которых ты говоришь ниже (the bat) летают именно на ультразвуке.
> использовать кряк не советуйте, это же неинтересно
Это похоже на занятие сексом в противогазе...
> и послать ему сообщение WM_LBUTTONDOWN и WM_LBUTTONUP
Ну в целом так.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 13.08.2003, 19:42
Отправитель: Bob Johnson


Отвечает Евгений Иванов

Здравствуйте, Drahus!
> все высказались против того, что я предложил
Я ответил не так!
Я не против и не за. Мне всё равно!
Я вообще отвечаю ради интереса; помню, на один вопрос ни один из
экспертов не ответил конкретно, вот и возмутился, и стал экспертом...
> У вас как я понял на компьютере установлен Линух
Пока нет! Но скоро обязательно!
> Linux будет нормально, без тормозов
Любая! Зависит от потребностей!
> как "глаза"
Свет можно использовать...
ПЗУ - делай управление через PIC!
> о регистрации само закрывалось
Используй мою программу PressButton.
URL=http://eggo.to.kg/thebat/


Ответ отправлен: 14.08.2003, 00:51
Отправитель: Евгений Иванов


Отвечает Евгений Иванов

Здравствуйте, Drahus!
> все высказались против того, что я предложил
Я ответил не так!
Я не против и не за. Мне всё равно!
Я вообще отвечаю ради интереса; помню, на один вопрос ни один из
экспертов не ответил конкретно, вот и возмутился, и стал экспертом...
> У вас как я понял на компьютере установлен Линух
Пока нет! Но скоро обязательно!
> Linux будет нормально, без тормозов
Любая! Зависит от потребностей!
> как "глаза"
Свет можно использовать...
ПЗУ - делай управление через PIC!
> о регистрации само закрывалось
Используй мою программу PressButton.
URL=http://eggo.to.kg/thebat/


Ответ отправлен: 14.08.2003, 00:51
Отправитель: Евгений Иванов


Отвечает Lynx

Доброе время суток, Drahus!
Отвечаю только про "глаза". Я никогда не занимался роботехникой, но желание было. :))) Попробуй смаздрякать какой нить излучатель ультраволн и микрофончик. :)))
Ещё одна бредовая идея: лампочку (остронаправленый пучок света) и фотодиод! :))) (Ну это ночной вариант!)


Ответ отправлен: 15.08.2003, 17:05
Отправитель: Lynx


 Вопрос № 3908

Ув. тов. эксперты.
Я гружусь с дискеты (RealMode).
При этом прерывание 10h (ah=4f02) (VESA SVGA) bx=103h приводит к выключению монитора.
Я особо в реал. и защищ. режимах не очень рублю, но думаю, что это из-за того, что проц. находится не в защищ. режиме. Подскажите, пожалуйста, как в него перейти!
Заранее спасибо!



Вопрос отправлен: 13.08.2003, 14:18
Отправитель: CODERator

[Следующий вопрос >>] [Список вопросов]

Отвечает Eugene

Добрый день, CODERator!
В защищённом режиме этоже прерывание будет приводить к перезагрузке компа. А кстати, зачем тебе в защищённый режим надо?

Ответ отправлен: 13.08.2003, 14:41
Отправитель: Eugene


Отвечает Broken Sword

Приветствую Вас, CODERator!
не, это тут не при чем. просто видеокарта старая и не держит такой режим


Ответ отправлен: 13.08.2003, 14:52
Отправитель: Broken Sword


Отвечает Tigran K. Kalaidjian

Добрый день, CODERator!
Защищенный режим тут не причём, однозначно.
Вы бы прислали свою программу что ли, чтобы понять где там ошибка...
Напишите на kalaidjian@pochtamt.ru и я Вам вышлю документы на тему программирования SVGA в режиме 256, работающие примеры, а также примеры перехода в PM(хотя это тут ни при чем, но раз уж интересно =) ).

Ответ отправлен: 13.08.2003, 15:24
Отправитель: Tigran K. Kalaidjian


Отвечает Greys

Добрый день, CODERator!
>10h (ah=4f02) (VESA SVGA) bx=103h
Как я понял вы пытаетесь установить SuperVGA видеорежим(текстовый). Но меня смущает текстовый режим который вы выбрали, если учесть тот факт, что в 15 бите установлен 0, т.е. видеопамять будет очищаться,то номер режима 100000011b не используется, на сколько мне известно используются следующие режимы:80x60 (режим 108h), 132x25 (109h), 132x43 (10Ah), 132x50 (10Bh), 132x60 (10Ch)!
Попробуй bx=108h и все должно получиться. А в защищенный режим лучше пока не лезь (там дескрипторы, селекторы, таблицы локальных и глобальных дескрипторов). Страшно, но ты не бойся я сам боялся, но потом немного приспособился. Пиши пока для реального режима: он проше в понимании. Поняв реальный режим-поймешь и защищенный. В реальном ведь только сегмент:смещение, а значит не надо особо мудрить с моделью памяти(хотя и в защищенном...).
А вот насчет того, что ты с дискеты загружаешься и защищенного. По этому вопросу можешь обращаться, я последнее время пишу свою ОС (очень помогает в понимании функционировании компа, точнее его элементов, вот здесь поймешь и реальный,и материальный режимы проца. Насчет материального я, конечно, пошутил, но в каждой шутки есть доля правды, а в правде сила, а сила в Ньютонах!!!).
Если, что надо пиши на ic_box_mail@mail.ru или сюда в рассылку.


Ответ отправлен: 14.08.2003, 00:53
Отправитель: Greys


Отвечает Greys

Добрый день, CODERator!
>10h (ah=4f02) (VESA SVGA) bx=103h
Как я понял вы пытаетесь установить SuperVGA видеорежим(текстовый). Но меня смущает текстовый режим который вы выбрали, если учесть тот факт, что в 15 бите установлен 0, т.е. видеопамять будет очищаться,то номер режима 100000011b не используется, на сколько мне известно используются следующие режимы:80x60 (режим 108h), 132x25 (109h), 132x43 (10Ah), 132x50 (10Bh), 132x60 (10Ch)!
Попробуй bx=108h и все должно получиться. А в защищенный режим лучше пока не лезь (там дескрипторы, селекторы, таблицы локальных и глобальных дескрипторов). Страшно, но ты не бойся я сам боялся, но потом немного приспособился. Пиши пока для реального режима: он проше в понимании. Поняв реальный режим-поймешь и защищенный. В реальном ведь только сегмент:смещение, а значит не надо особо мудрить с моделью памяти(хотя и в защищенном...).
А вот насчет того, что ты с дискеты загружаешься и защищенного. По этому вопросу можешь обращаться, я последнее время пишу свою ОС (очень помогает в понимании функционировании компа, точнее его элементов, вот здесь поймешь и реальный,и материальный режимы проца. Насчет материального я, конечно, пошутил, но в каждой шутки есть доля правды, а в правде сила, а сила в Ньютонах!!!).
Если, что надо пиши на ic_box_mail@mail.ru или сюда в рассылку.


Ответ отправлен: 14.08.2003, 00:54
Отправитель: Greys


Отвечает _vt

Доброе время суток, CODERator!
Нет, это не из-за этого... Проверь, правильные ли ты функции вызываешь? Например, не ah=4f02 , а ax=4f02h

---===*** E-Man - forever! Win2k - forever! WinXP - must die!***===---


Ответ отправлен: 14.08.2003, 04:49
Отправитель: _vt


Отвечает ASMодей

Здравствуйте, CODERator!
Видеорежимы SVGA вполне можно использовать и в реальном режиме работы процессора. Просто перед переключением в нужный режим стоит проверить, поддерживает ли видеокарта этот режим (с помощью функции 4F00h).

Ответ отправлен: 14.08.2003, 08:02
Отправитель: ASMодей


 Вопрос № 3909

Доброго времени суток
Как получить изображение?
то есть: я открыл бмп-шный файл, загрузил данные из него, настроил указатели, SetDIBitsToDevice - отборазил.
потом эту картинку растянул StretchDIBits. А как теперь "забрать" уже растянутое изображение с устройства назад- мне с этой увеличенной картинкой еще надо поработать.
Может есть что-то типа GetDIBitsFromDevice ? GetDIBits загружает картинку с битового образа, но как его "вытянуть" из устройства я тоже не знаю.
спасибо



Вопрос отправлен: 13.08.2003, 15:22
Отправитель: вова

[Следующий вопрос >>] [Список вопросов]

Отвечает Bob Johnson

Добрый день, вова!
А что тебе не подходит в GetDIBits? Она вроде и вытаскивает писксели из картинки в память.
Еще можно создать DIBSection, подключить ее в CompatibleDC, после чего скопировать туда изображение и в DIBSection будут требуемые данные.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 13.08.2003, 19:43
Отправитель: Bob Johnson


Отвечает Евгений Иванов

Приветствую Вас, вова!
Рисуй на совместимом DC (в памяти), а потом оттуда бери свою картинку...


Ответ отправлен: 14.08.2003, 12:00
Отправитель: Евгений Иванов


 Вопрос № 3911

Здравствуйте, уважаемые эксперты. Решил написать программу, при запуске которой она пишет текущую дату и время в определенный файл. Самое интересное заключается в том, что после прерывания 1ah, разделить 2003h на 10h не совсем получается, TD и Afdpro говорят, что деление на нуль. А если изменить программу, убрать получение даты, то все нормально делится. Что это такое? Спасибо.


Приложение:


Вопрос отправлен: 13.08.2003, 16:43
Отправитель: a1 (a111_666@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Алексей

Доброе время суток, a1!
Чтобы разделить на 16, достаточно сдвинуть вправо на 4 разряда(16=2**4)
mov ax,2003
shr ax,4
В твоём случае ошибка возникает, т.к. ты не обнулил перед делением dx. Ведь делимое находится в паре dx:ax!

Приложение:

Ответ отправлен: 13.08.2003, 17:05
Отправитель: Алексей


Отвечает Ayl

Доброе время суток, a1!
Элементарно, Ватсон! После вызова прерывания 1ah в регистре DX находятся месяц и день. Т.е. он не пустой.
Допустим, для сегодняшней даты регистр DX будет равен 0813h (числа в BCD формате). При выполнении команды div bx производится деление значения в паре DX:AX на значение в регистре BX. Т.е. делится число 08132003h на 10h. Результат:
00813200h - частное, 0003h - остаток. Но частное должно быть помещено в регистр AX. Максимальное значение в регистре AX может быть FFFFh, что меньше, чем 00813200h. Отсюда и "деление на 0". Эта ошибка генерируется не только, когда производится реальное деление на 0, но и тогда, когда результат деления не помещается в регистре. Т.е. при делении очень большого числа на маленькое.
Для исправления нужно обнулить регистр DX. Например, вот такой код будет выполнен правильно:

Приложение:

Ответ отправлен: 13.08.2003, 17:08
Отправитель: Ayl


Отвечает Eugene

Добрый день, a1!
Можешь вместо обнуления DX, как тебе советовали, использовать команду DIV BL. Тогда делится только AX без DX.

Ответ отправлен: 13.08.2003, 18:03
Отправитель: Eugene


Отвечает St

Привет, a1!
Вы не обнулили DX, возможно что там находится большое число и результат деления содержимого DX:AX на 10H не помещается в AX. Кстати делить/умножать на числа кратные 2 (в том числе и 16(10H=16)) можно с помощью команды SHR/SHL - сдвиг битов числа (правда при делении теряется остаток).
St

Ответ отправлен: 13.08.2003, 19:45
Отправитель: St


Отвечает Bob Johnson

Доброе время суток, a1!
Это то, что ты забыл обнулить dx перед делением:
xor dx, dx
div bx
Так как div делит dx:ax на число.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 14.08.2003, 00:51
Отправитель: Bob Johnson


Отвечает Bob Johnson

Доброе время суток, a1!
Это то, что ты забыл обнулить dx перед делением:
xor dx, dx
div bx
Так как div делит dx:ax на число.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 14.08.2003, 00:51
Отправитель: Bob Johnson


Отвечает Bob Johnson

Доброе время суток, a1!
Это то, что ты забыл обнулить dx перед делением:
xor dx, dx
div bx
Так как div делит dx:ax на число.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 14.08.2003, 00:51
Отправитель: Bob Johnson


Отвечает Bob Johnson

Доброе время суток, a1!
Это то, что ты забыл обнулить dx перед делением:
xor dx, dx
div bx
Так как div делит dx:ax на число.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 14.08.2003, 00:53
Отправитель: Bob Johnson


Отвечает Bob Johnson

Доброе время суток, a1!
Это то, что ты забыл обнулить dx перед делением:
xor dx, dx
div bx
Так как div делит dx:ax на число.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 14.08.2003, 00:53
Отправитель: Bob Johnson


Отвечает Greys

Добрый день, a1!
Когда бы вы не производили деление до вызова прерывания, после или вместо участок кода:
1)mov ax,2003h
2)mov bx,10h
3)div bx
вызовит исключение #DE. Но вот насчет деления на ноль ребята немного погарячились, ведь заменив 10h на 12h или 13h все равно произойдет исключение.
Здесь дело в переполнении. Чтобы избежать этого перед делением обнули регистр DX, в который будет помещен остаток от деления(xor dx,dx)! Выглядит парадоксально, но мне это помогло когда-то.
С уважением,Greys!


Приложение:

Ответ отправлен: 14.08.2003, 01:53
Отправитель: Greys


Отвечает _vt

Добрый день, a1!
Логика div: если размер операнда byte(div bh), то делится ax на bh, а если word (div bx), то делимым будет пара регистров dx:ax, т.е. твой случай! Если ты до деления ничего не записывал в dx, то разделится нормально - ax на dx, а после вызова int 1ah у меня dx=0813 (13 августа сегодня!), поэтому разделить 08132003h на 10h процессор не может: Divide Overflow (переполнение, а не деление на ноль!)...

---===*** E-Man - forever! Win2k - forever! WinXP - must die!***===---


Ответ отправлен: 14.08.2003, 04:50
Отправитель: _vt


Отвечает Beeblebrox

Приветствую Вас, a1!
А чему у тебя равно DX?
DX:AX/BX может вызвать переполнение

Ответ отправлен: 14.08.2003, 09:42
Отправитель: Beeblebrox


Отвечает Tigran K. Kalaidjian

Приветствую Вас, a1!
int 1ah заполняет dx следующим образом:
DH = month (BCD)
DL = day (BCD)
Если мы применяем команду DIV для деления на слово (как у Вас), то делится двойное слово из пары DX:AX. Результат может не "вместиться" в ax
Попробуйте один из следующих методов:
1. sub dx, dx ;чистим dx
div bx
2. div bl
в этом случае присходит деление AX на BL, а не пары DX:AX на BX

Ответ отправлен: 14.08.2003, 10:34
Отправитель: Tigran K. Kalaidjian


Отвечает Евгений Иванов

Доброе время суток, a1!
Должно работать...
Ищи ошибку в другом месте...


Ответ отправлен: 14.08.2003, 12:01
Отправитель: Евгений Иванов



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (38)
C / C++ (29)
Perl (3)
Builder / Delphi (21)
Pascal (28)
Basic / VBA (12)
Java / JavaScript (8)
PHP (7)
Криптография (10)
WinAPI (18)
Пользователю
Windows 95/98/Me (47)
Windows NT/2000/XP (57)
"Железо" (43)
Поиск информации (26)
Администратору
Windows NT/2000/XP (26)
Linux / Unix (11)
Юристу
Гражданское право (10)
Семейное право (6)
Трудовое право (7)
КоАП (5)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное