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

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.

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
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.


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

http://subscribe.ru/
E-mail: ask@subscribe.ru
Адрес подписки
Отписаться

В избранное