Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 747
от 09.07.2004, 17:30
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 5578 Отправлено ответов: 15131 Активность: 271.2 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
Foamplast Статус: Профессиональный Общий рейтинг: 139.27 URL: мой личный сайт [Подробней >>] |
Стас Статус: Опытный Общий рейтинг: 126.93 [Подробней >>] |
Tigran K. Kalaidjian Статус: Профессиональный Общий рейтинг: 194.55 URL: Оптимизация ПК [Подробней >>] |
Dark_Lord Статус: Профессиональный Общий рейтинг: 109.47 [Подробней >>] |
Евгений Иванов Статус: Профессиональный Общий рейтинг: 133.77 URL: Super Assembler Software Телефон: НСС +7 831 3107039 [Подробней >>] |
flasher Статус: Доверительный Общий рейтинг: 105.62 [Подробней >>] |
Ayl Статус: Профессиональный Общий рейтинг: 116.66 [Подробней >>] |
Artemy Статус: Опытный Общий рейтинг: 109.77 Телефон: 8 905 549 38 66 [Подробней >>] |
_vt Статус: Профессиональный Общий рейтинг: 118.02 [Подробней >>] |
St Статус: Профессиональный Общий рейтинг: 104.85 [Подробней >>] |
bocha Статус: Опытный Общий рейтинг: 136.18 [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 5546. Привет. Объясните пожалуйста по подробнее как боот-сектор(floppy) передает управление операционой си... (ответов: 3)
Вопрос № 5547. Не хочет сравнивать две строки используя CMPS. Компилю в масме32. Пишет ошибку на этот CMPS что-то т... (ответов: 4)
Вопрос № 5548. ИЗВИНЯЮСЬ, ДАЛ КОСЯЧНЫЙ АДРЕС. ПОПЫТКА №2. При сравнении двух строк выдает ошибку на CMPS, что-то ти... (ответов: 1)
Вопрос № 5549. Нужно написать универсальный драйвер для пишушего CD-ROM под DOS. 1. Где можно достать список команд... (ответов: 3)
Вопрос № 5550. Уважаемые эксперты! Подскажите, пожалуйста какой-нибудь метод статистического кодирования, вроде Хаф... (ответов: 1)
Вопрос № 5551. Здраствуйте! Есть ли такое информационне окно типа MessageBox, но чтобы после его вызова передавало ... (ответов: 3)
Вопрос № 5552. Здравствуйте, эксперты! У меня следующий вопрос: Установил глобальный хук на клавиатуру. В функции к... (ответов: 3)
Вопрос № 5553. У меня вот какая проблема: Я скачиваю Ассемлер(любой), и он не хочет запускаться, пишет какуето ерун... (ответов: 4)
Вопрос № 5554. Приветсвую ЭКСПЕРТОВ!!! Может кто сможет: Разработать компилятор с заданного языка ассемблера nasm, ... (ответов: 2)
Вопрос № 5555. Как определить находится ли процессор в защищеном режиме? Что такое селектор?... (ответов: 3)
Вопросов: 10, ответов: 27
Вопрос № 5546 |
Привет.
Объясните пожалуйста по подробнее как боот-сектор(floppy) передает управление операционой системе?
Вопрос отправлен: 04.07.2004, 17:33
Отправитель: boot
[Следующий вопрос >>] [Список вопросов]
Отвечает Foamplast
Добрый день, boot!
Как угодно. Бут-сектор - это всего лишь программа 16-разрядного режима длиной в 512 байт, записываемая в первый сектор устройства (диска). И делать она может что угодно. Если надо, могу прислать исходник бут-программы, читающей два сектора (1024 байт) диска в режиме LBA напрямую (по портам) и передающую им (секторам) управление. Номер устройства IDE (от 0 до 3) и адрес первого сектора - константы времени компиляции. Программа меньше 512 байт, так что в середине есть место для ругательств. Язык - NASM. Можно переделать под загрузку любой ОС, указав корректный дисковый адрес и большее количество секторов. Либо вставить дополнительные проверки (например, пароля).
Ответ отправлен: 08.07.2004, 09:04
Отправитель: Foamplast
Отвечает Стас
Здравствуйте, boot!
Boot загружает IO.SYS и прыгает на него.
Что конкретнее тебе нужно?
Ответ отправлен: 04.07.2004, 20:55
Отправитель: Стас
Отвечает Tigran K. Kalaidjian
Здравствуйте, boot!
Загружает ядро с диска в память, а потом прыгает retf. Всё.
Лучшее руководство - прокомментированный исходник. Если нужно, пишите на kalaidjian@pochtamt.ru
Ответ отправлен: 05.07.2004, 22:25
Отправитель: Tigran K. Kalaidjian
Вопрос № 5547 |
Не хочет сравнивать две строки используя CMPS.
Компилю в масме32. Пишет ошибку на этот CMPS что-то типа invalid command.
Заранее спасибо (пол дня сижу :( )
Вот весь код ( 2 проблемных места выделил: ------ ):
.486p
.model flat,STDCALL
include d:masm32includewindows.inc
include d:masm32includekernel32.inc
include d:masm32includeuser32.inc
includelib d:masm32libkernel32.lib
includelib d:masm32libuser32.lib
.DATA?
hand HWND ?
tex db ?
buffer db 512 dup(?)
.DATA
thatcap db "Nero image",0
.CONST
caption db "String",0
.CODE
start:
invoke FindWindow,NULL,NULL
mov hand,eax
invoke SendMessage,hand,WM_GETTEXT,512,ADDR buffer
;-----------------
cld
mov cx,512
lea Esi,buffer
lea Edi,thatcap
repe CMPS ESI,EDI ;!!!!!!
je @1
;------------------------
@:
invoke GetWindow,hand,GW_HWNDNEXT
mov hand,eax
invoke SendMessage,hand,WM_GETTEXT,512,ADDR buffer
;---------------
cld
mov cx,512
lea Esi,buffer
lea Edi,thatcap
repe cmps buffer,thatcap ;!!!!
jne @
;----------------
@1:
invoke MessageBox,NULL,ADDR buffer,ADDR caption,MB_OK
invoke ExitProcess, NULL
end start
Вопрос отправлен: 04.07.2004, 18:39
Отправитель: SanyOK
[Следующий вопрос >>] [Список вопросов]
Отвечает Dark_Lord
Доброе время суток, SanyOK!
Дело в том, что команды cmps несуществует, есть команды cmpsb и cmpsd, первая для сравнения байт, вторая для сравнения двойных слов. Используйте одну из них.
Ответ отправлен: 04.07.2004, 22:40
Отправитель: Dark_Lord
Отвечает Стас
Доброе время суток, SanyOK!
Комманды CMPSB сравнение побайтно.
СMPSW-сравнение словами.
СMPSD-сравнение dwordами.
Нет такой команды CMPS.
Ответ отправлен: 04.07.2004, 20:59
Отправитель: Стас
Отвечает Евгений Иванов
Приветствую Вас, SanyOK!
Пиши просто
REPZ CMPSB
или так
REPZ CMPSB [ds:esi],[es:edi]
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 05.07.2004, 20:08
Отправитель: Евгений Иванов
Отвечает flasher
Приветствую Вас, SanyOK!
Вот 2 способа сравнения строк.
Приложение:
Ответ отправлен: 04.07.2004, 18:49
Отправитель: flasher
Вопрос № 5548 |
ИЗВИНЯЮСЬ, ДАЛ КОСЯЧНЫЙ АДРЕС. ПОПЫТКА №2.
При сравнении двух строк выдает ошибку на CMPS, что-то типа invalid operation. Пробовал писать CMPS edi,esi - то же самое.
Еще раз спасибо.
Выделил проблемные места:
.486p
.model flat,STDCALL
include d:masm32includewindows.inc
include d:masm32includekernel32.inc
include d:masm32includeuser32.inc
includelib d:masm32libkernel32.lib
includelib d:masm32libuser32.lib
.DATA?
hand HWND ?
tex db ?
buffer db 512 dup(?)
.DATA
thatcap db "Nero image",0
.CONST
caption db "String",0
.CODE
start:
invoke FindWindow,NULL,NULL
mov hand,eax
invoke SendMessage,hand,WM_GETTEXT,512,ADDR buffer
;------------------------------
cld
mov cx,512
lea Esi,buffer
lea Edi,thatcap
repe CMPS buffer,thatcap ;!!!!!
je @1
;--------------------------------
@:
invoke GetWindow,hand,GW_HWNDNEXT
mov hand,eax
invoke SendMessage,hand,WM_GETTEXT,512,ADDR buffer
;-----------------------------
cld
mov cx,512
lea Esi,buffer
lea Edi,thatcap
repe cmps buffer,thatcap ;!!!
jne @
;-------------------------------
@1:
invoke MessageBox,NULL,ADDR buffer,ADDR caption,MB_OK
invoke ExitProcess, NULL
end start
Вопрос отправлен: 04.07.2004, 18:52
Отправитель: SanyOK
[Следующий вопрос >>] [Список вопросов]
Отвечает Стас
Доброе время суток, SanyOK!
Да, и пишется просто:
cld
mov cx,512
lea Esi,buffer
lea Edi,thatcap
repe cmpsb
jne @
repz CMPSB без параметров!!! Он и сам знает что нужно CMP DS:[SI++],ES:[DI++]).
Ответ отправлен: 04.07.2004, 21:02
Отправитель: Стас
Вопрос № 5549 |
Нужно написать универсальный драйвер для пишушего CD-ROM под DOS.
1. Где можно достать список команд для работы с CD-ROM через порты (желательно совместимость со всеми сидюками или хотя бы с большинством из них)?
2. Какие могут возникнуть трудности?
Вопрос отправлен: 05.07.2004, 02:26
Отправитель: GREY
[Следующий вопрос >>] [Список вопросов]
Отвечает Евгений Иванов
Добрый день, GREY!
ASPI
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 05.07.2004, 20:09
Отправитель: Евгений Иванов
Отвечает Foamplast
Доброе время суток, GREY!
2. Производители могут не раскрыть ньюансы, нестандартные команды и эффективные методы, если они уже реализованы в их драйверах.
Ответ отправлен: 08.07.2004, 09:04
Отправитель: Foamplast
Отвечает Tigran K. Kalaidjian
Приветствую Вас, GREY!
Давайте свой e-адрес на мой kalaidjian@pochtamt.ru – вышлю доку.
Ответ отправлен: 05.07.2004, 22:24
Отправитель: Tigran K. Kalaidjian
Вопрос № 5550 |
Уважаемые эксперты!
Подскажите, пожалуйста какой-нибудь метод статистического кодирования, вроде Хаффмана, но чтобы в выходной последовательности превалировали нулевые биты при любых входных данных.
Вопрос отправлен: 05.07.2004, 06:49
Отправитель: Blackman
[Следующий вопрос >>] [Список вопросов]
Отвечает Ayl
Приветствую Вас, Blackman!
Если я не ошибаюсь, то такое невозможно в принципе. Кодирование информации направлено на уменьшение энтропии, т.е. в идеале каждый бит закодированной последовательности должен появляться с равной вероятностью. Поэтому преобладание какого-либо бита в последовательности приведет к увеличению энтропии и данная закодированная последовательность сможет быть повторно сжата. А для хороших алгоритмов кодирования этого происходить не должно.
Ответ отправлен: 05.07.2004, 15:14
Отправитель: Ayl
Вопрос № 5551 |
Здраствуйте! Есть ли такое информационне окно типа MessageBox, но чтобы после его вызова передавало управление программе или информационное окно с задержкой на указанное число секунд? Почему MessageBox выводится иногда свёрнутым, что делать, чтобы оно выводилось всегда в нормальном виде?
Вопрос отправлен: 05.07.2004, 10:50
Отправитель: Александр
[Следующий вопрос >>] [Список вопросов]
Отвечает Artemy
Добрый день, Александр!
Создавай свое окно.
Ответ отправлен: 06.07.2004, 11:54
Отправитель: Artemy
Отвечает Foamplast
Доброе время суток, Александр!
1. Создавайте отдельный поток, а в нём вызывайте MessageBox. Это проще, чем кажется.
2. Никогда с этим не встречался, MessageBox всегда по центру экрана поверх родительского окна.
Ответ отправлен: 08.07.2004, 09:05
Отправитель: Foamplast
Отвечает _vt
Приветствую Вас, Александр!
Создавай MessageBox с флагом MB_APPLMODAL и задавай задержку вручную. Выводиться MessageBox свернутым не может.
* Origin : Life begins at 1000Mhz!
Ответ отправлен: 08.07.2004, 21:39
Отправитель: _vt
Вопрос № 5552 |
Здравствуйте, эксперты!
У меня следующий вопрос:
Установил глобальный хук на клавиатуру. В функции клавиатурного хука могу использовать виртуальный код нажатых клавиш для выполнения каких-либо действий (например, по нажатию Control меняю раскладку клавиатуры). Но как мне заменить нажатие одной клавиши другой (например, нажимаю букву Л, а вместо ее на экране М)?
Мне это очень нужно, отнеситесь к вопросу, пожалуйста, серьезно.
И несколько доп. вопросов:
- какой функцией преобразовать виртуальный код клавиши в ASCII?
- как загрузить русскую и английскую раскладку (пример, please). А то у меня в программе я просто загружаю следующую установленую в системе.
Да, все должно работать как под Вин98, так и ХР.
Заранее благодарен, EraSer
Вопрос отправлен: 05.07.2004, 12:58
Отправитель: EraSer (eraser99@tut.by)
[Следующий вопрос >>] [Список вопросов]
Отвечает St
Привет, EraSer!
1) Не знаю насколько это правильно, я подменивал в сообщении ненужный код кодом нуля, а затем, думаю, можно послать окну дополнительно сообщение с нужным кодом.
Ответ отправлен: 05.07.2004, 16:29
Отправитель: St
Отвечает bocha
Здравствуйте, EraSer!
BOOL Get/SetKeyboardState(PBYTE lpKeyState);
Ответ отправлен: 05.07.2004, 15:33
Отправитель: bocha
Отвечает Foamplast
Доброе время суток, EraSer!
1. В Микрософте считают, что WH_KEYBOARD Hook может только следить за сообщениями, либо отклонять их, но не модифицировать. А вот WH_GETMESSAGE Hook получает укзатель на структуру сообщения и может его поменять, то есть заменить Л на М.
2. TranslateMessage(). Только она добавить сообщение с кодом ASCII в очередь вызывающего потока. Поэтому предлагаю забить на коды клавиш и ловить WM_CHAR с помощью WH_GETMESSAGE Hook.
3. LoadKeyboardLayout() и ActivateKeyboardLayout().
4. Если раскладки загружать как в пункте 3, то всё будет работать под всеми Виндами.
Ответ отправлен: 08.07.2004, 09:05
Отправитель: Foamplast
Вопрос № 5553 |
У меня вот какая проблема: Я скачиваю Ассемлер(любой), и он не хочет запускаться, пишет какуето ерунду и сворачивает окто. Работаю я под системой ХР. Подскажите что делать как мне быть.
Вопрос отправлен: 05.07.2004, 13:33
Отправитель: Alex (Sobr-Clon@ukr.net)
[Следующий вопрос >>] [Список вопросов]
Отвечает Artemy
Добрый день, Alex!
Для ответа на вопрос нужно знать какую именно ерунду он пишет.
Для этого запусти программу в консоли.
Ответ отправлен: 06.07.2004, 11:58
Отправитель: Artemy
Отвечает Foamplast
Здравствуйте, Alex!
Прочитайте про консольные программы.
Ответ отправлен: 08.07.2004, 09:05
Отправитель: Foamplast
Отвечает _vt
Приветствую Вас, Alex!
Скачай Negatory Assembler Studio и твои проблемы исчезнут :) А вообще, обычно компиляторы с языка ассемблера работают с командной строкой.
* Origin : Life begins at 1000Mhz!
Ответ отправлен: 08.07.2004, 21:39
Отправитель: _vt
Отвечает Евгений Иванов
Приветствую Вас, Alex!
используй FAR
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 05.07.2004, 20:09
Отправитель: Евгений Иванов
Вопрос № 5554 |
Приветсвую ЭКСПЕРТОВ!!!
Может кто сможет:
Разработать компилятор с заданного языка ассемблера nasm, результатом ра-
боты компилятора должны быть исполняемый файл в формате односегментной
программы для MS-DOS(файл типа *.com).Дополнительным результирующим файлом
должен быть файл листинга.В качестве инструментального языка разработки
допускается ассемблер или Си.
Набор реализуемых команд и директив:
-команды вызова процедур CALL;
-команды выхода из процедуры RET;
-команды вызова системных функций DOS(INT 21h);
-команды пересылки констант в регистр вида MOV рег,число;
-директива ORG, директива SEGMENT;
-команды
MUL рег MOV рег,имя
ADD [рег],рег LOOP метка
имя DD число
Регистры рег в командах предполагаются 32-битные, числа только десятичные.
Программный пакет,состоящий из: файла (файлов) исходных текстов программы-
компилятора, файлов тестовых примеров.
Вопрос отправлен: 05.07.2004, 16:32
Отправитель: FEK (fartfek@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Ayl
Здравствуйте, FEK!
Ну и? Где вопрос-то? Разрабатывайте. С возникающими по мере разработки вопросами - обращайтесь. А писать за вас никто ничего не будет. По крайней мере просто так.
Ответ отправлен: 05.07.2004, 16:55
Отправитель: Ayl
Отвечает Foamplast
Доброе время суток, FEK!
Это будет стоить $100. Срок - две недели. Пиши.
Ответ отправлен: 08.07.2004, 09:06
Отправитель: Foamplast
Вопрос № 5555 |
Как определить находится ли процессор в защищеном режиме?
Что такое селектор?
Вопрос отправлен: 05.07.2004, 17:25
Отправитель: boot
[Следующий вопрос >>] [Список вопросов]
Отвечает Foamplast
Приветствую Вас, boot!
1. Проанализировать флаги.
2. Структура, идентифицирующая дескриптор.
Приложение:
Ответ отправлен: 08.07.2004, 09:06
Отправитель: Foamplast
Отвечает Tigran K. Kalaidjian
Добрый день, boot!
Вроде так.
mov eax, cr0
and eax, 1
jnz zash
real:
…
zash:
…
селектор – это 16-битная структура данных, которая является идентификатором сегмента.
Короче говоря, селектор – это указатель на дескриптор
Ответ отправлен: 05.07.2004, 22:24
Отправитель: Tigran K. Kalaidjian
Отвечает Евгений Иванов
Приветствую Вас, boot!
бит PE в CR0, нулевой бит.
Selector - это переключатель сегмента. Используется для указания описателя сегмента в таблицах GDT и LDT.
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 05.07.2004, 20:10
Отправитель: Евгений Иванов
Форма отправки вопроса |
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
(C) 2002-2003 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (27) C / C++ (14) Perl (4) Builder / Delphi (18) Pascal (28) Basic / VBA (6) Java / JavaScript (5) PHP (13) Криптография (8) WinAPI (12) Радиоэлектроника (12) |
Пользователю Windows 95/98/Me (41) Windows NT/2000/XP (57) "Железо" (38) Поиск информации (16) |
Администратору Windows NT/2000/XP (34) Linux / Unix (16) |
Юристу Гражданское право (9) Семейное право (7) Трудовое право (8) КоАП (6) |
Отправить вопрос всем экспертам выбранной рассылки.
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Адрес подписки |
Отписаться |
В избранное | ||