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

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


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

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

Выпуск № 666



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

Bob Johnson
Статус: Профессиональный
Общий рейтинг: 148.35
URL: Программирование
[Подробней >>]
Artemy
Статус: Доверительный
Общий рейтинг: 125
[Подробней >>]
Евгений Иванов
Статус: Профессиональный
Общий рейтинг: 142.13
URL: Super Assembler Software
Телефон: НСС +7 831 3107039
[Подробней >>]
 
Mortus Alighieri
Статус: Доверительный
Общий рейтинг: 105.81
[Подробней >>]
PUSH
Статус: Доверительный
Общий рейтинг: 108.69
[Подробней >>]
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 110.59
[Подробней >>]
 
St
Статус: Профессиональный
Общий рейтинг: 105.87
[Подробней >>]
never_again
Статус: Опытный
Общий рейтинг: 138.09
[Подробней >>]
dr_dolphin
Статус: Опытный
Общий рейтинг: 115.91
[Подробней >>]


 Вопрос № 4488

Уважаемые эксперты.
Благодарен всем, ответившим на вопрос №4383.
Следующие вопросы:
1. При вызове из моей программы (WASM32) c коммандной строки ДОSовской программы появляется черный ДОSовский экран.
Как сделать его окно невидимым? чтобы командная строка обрабатывалась как в Wincmd32 или как в WINDOWS "ПУСК" >> "Выполнить.." ??
2. Также из моей программы (WASM32) необходимо обработать следующую команду: Find /I %1 %2 , где %1 - слово которое нужно найти, а %2 - путь к файлу, в котором ищется слово.
Со вторым параметром проблемм нет. А первый параметр - это слово заключенное в кавычки. К примеру :(Find /I "грунта" С:TEMP1.txt). Как передать в %1 значение, если слово находится в переменной buffer и вторых кавычек установить не получается.??
3. Есть ли готовые функции API, которые сжимают файл (типа ZIP)?
Думаю мое изложение спациалисты поймут.
Заранее благодарен.


Отправитель: Valentin (neofit@swn.boyarka.kiev.ua)
[Следующий вопрос >>]

Отвечает Artemy

Приветствую Вас, Valentin!
>Как передать в %1 значение, если слово находится в
>переменной buffer и вторых кавычек установить не
>получается.??
buffer db 22h, "Parametr", 22h
22h - код кавычки в ASCII и в ANSI.
>Есть ли готовые функции API, которые сжимают файл (типа
>ZIP)?
Есть zip.dll в нем и ищи.

Отправитель: Artemy

 Вопрос № 4489

нужно в delphi создать звуковой анализатор регулятор громкости spinedit и значение частоты через edit с ассемблерской вставкой.
пожалуйста отправти текст программы


Отправитель: тимур
[Следующий вопрос >>]

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

Добрый день, тимур!
Смотри в архиве рассылки про библиотеку звуковую BASS.DLL
Удачи!
* EMan: -=- Любовь существует! =-=


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

Отвечает Mortus Alighieri

Здравствуйте, тимур!
извини, но я ничего не понял. можно подробней?
PS
попробуй задать вопрос на forum www.borda.ru/?coding

Отправитель: Mortus Alighieri

Отвечает Bob Johnson

Приветствую Вас, тимур!
А больше ничего не отправить?

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


Отправитель: Bob Johnson

 Вопрос № 4491

Здаствуйте вселюбимые знатоки!!
кароче у меня прога компилируеца, но при запуске выдает:
"не найдена точка входа функцыи RegisterServiceProcess в kernel32.dll" или чото етого. Што делать??


Отправитель: ol
[Следующий вопрос >>]

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

Приветствую Вас, ol!
А её там нет!
Это или устаревшая или ...
* EMan: -=- Любовь существует! =-=


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

Отвечает Bob Johnson

Здравствуйте, ol!
Значит ты используешь функцию, которой нет в твоей версии ОС. Возможно эта функция для 9х, а ты пытаешься ее использовать в НТ.
Попробуй применить динамическое связывание, т.е. loadlibrary, getprocaddress. И если функция найдена не будет, то не вызывать ее...

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


Отправитель: Bob Johnson

Отвечает PUSH

Приветствую Вас, ol!Думаю только одно,что у вас в kernel32.dll нет функции RegisterServiceProcess
а при компановке используете распространенный import32.lib файл,поэтому
компиляция проходит успешно.Побробуйте с помощью implib создать свой *.lib
файл из kernel32.dll и посмотреть пройдет ли компиляция(компановка).или даже
просто поищите в kernel32.dll строку RegisterServiceProcess.

Отправитель: PUSH

 Вопрос № 4495

Здравствуйте, Господа Эксперты.
Снова обращаюсь к Вам за помощью и надеюсь на Ваши советы.
Такая проблема, как организовать в диалоговой процедуре работу с акселераторами ? Я знаю , что в оконной процедуре вызывается ф-ия TranslateAccelerators ,а вот как быть в диалоге не пойму. Где и как загрузить акселераторы ? Какие сообщения надо ловить , чтобы узнать о нажатии акселерато- ра ?
И ещё вопрос: как определить какая клавиша нажата в строке редактирования ? У меня в диалоге три строки редактирования и я хочу сделать , чтобы при нажатии стрелок вверх/вниз перемещать курсор из строки в строку , но как узнать о нажатии не пойму.

Благодарю за Ваши ценные ответы.


Отправитель: Luc (luc@netman.ru)
[Следующий вопрос >>]

Отвечает Dark_Lord

Добрый день, Luc!
Используйте RegisterHotKey и UnRegisterHotKey и обрабатывайте сообщение WM_HOTKEY!

Отправитель: Dark_Lord

Отвечает St

Привет, Luc!
1) Акселераторы определяются в ресурсах и имеют СВОИ ID, а сообщения ловятся также как и от других контролов - WM_COMMAND.
St

Отправитель: St

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

Добрый день, Luc!
Call LoadAccelerators,esi,MyAccel1
xchg eax,ebx
lea edi,[@@msg1]
@@GetNext:
Call GetMessage,edi,0,0,0
or eax,eax
jz @@Exit
mov eax, [hdlgMain]
or eax, eax
jz @@NoCreatedDlg
Call IsDialogMessage, [hdlgMain], edi
or eax, eax
jnz @@GetNext
@@NoCreatedDlg:
Call TranslateAccelerator,[hwndMain],ebx,edi
or eax,eax
jnz @@GetNext
Call TranslateMessage,edi
Call DispatchMessage,edi
jmp @@GetNext
@@Exit:
Лови BN_ и другие подобные...
Ну а клавиши - это WM_KEYUP
Бывай!
* EMan: -=- Любовь существует! =-=


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

 Вопрос № 4496

Здравствуйте!
Подскажите где можно почитать о WMI?
P.S. Вроде и не оффтопик, а вроде и он :)


Отправитель: Илья (b.i@date.by)
[Следующий вопрос >>]

Отвечает never_again

Доброе время суток, Илья!
в интернете.

Отправитель: never_again

 Вопрос № 4497

Уважаемые эксперты, вопрос такой как более правильно построить обработку событий от окна в Win32, в проекте где организуется работа с несколькими окнами , и если можно c примером , а то мои поиски не увенчались успехом, заранее благодарен...


Отправитель: greg
[Следующий вопрос >>]

Отвечает Bob Johnson

Добрый день, greg!
Если идет работа с несколькими окнами одного класса, то основное правило построение процедуры окна этого класса - не использовать глобальных переменных (т.е. только локальные и параметры, переданные процедуре). Далее - обычно:
mov eax, [umsg]
cmp eax, WM_...
jz ...
...

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


Отправитель: Bob Johnson

 Вопрос № 4498

Здравствуйте эксперты.
Мне надо написать прогу исполнения мелодии, сам алгоритм проигрывания мелодии
у меня есть, подскажите где можно скачать саму мелодию, т.е. цифирки типа
dw 122,333 ,443, 443, 12 dup(12)
Заранее благодарен.


Отправитель: Gvozdok (brothers@atnet.ru)
[Следующий вопрос >>]

Отвечает Bob Johnson

Приветствую Вас, Gvozdok!
Возьми midi файл, а точнее один трек из него и попробуй. Или напиши сам.

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


Отправитель: Bob Johnson

Отвечает never_again

Доброе время суток, Gvozdok!
ну знаешь ли... таких алгоритмов просто куча есть. у меня например алгоритм требует два массива один с нотами другой с длительностью и бежит до тех пора пока не остановишь или пока на ноль не нарвётся...

Отправитель: never_again

 Вопрос № 4499

Здравствуйте уважаемые эксперты. Я только начал изучать Asm.
Мне знакомый дал задачку: дан массив из 10000 слов, надо его заполнить
и отсортировать. Помогите мне пожайлусто, ведь это мне поможет изучить Assembler.


Отправитель: Fedor
[Следующий вопрос >>]

Отвечает Artemy

Добрый день, Fedor!
call Zapolnit
call Otsortirovat
ret
Очень расплывчато сформулировано задание :-(
1. Как именно заполнить?
Ввести с клавиатуры? :-)
2. Как понимать слово "СЛОВ"?
В данном контексте это строка символов или
16 бит информации?
3. Каким методом отсортировать?

Отправитель: Artemy

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

Добрый день, Fedor!
Создаёшь массив размером необходимым.
Потом создаёшь слова и адреса на эти строчки записываешь в этот массив.
Потом сортируешь...
Можно по алфавиту или по длине слов...
* EMan: -=- Любовь существует! =-=


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

Отвечает never_again

Добрый день, Fedor!
а можно по подробнее. как заполнить, рандомально вводить с клавиатуры?
как сортировать, по возрастанию или наоборот?
да и как ты собираешься учить асм если за тебя всё эксперты сделают? попробуй сначала сам что-либо наваять, а потом, если не сработает, спроси где ошибки...

Отправитель: never_again

 Вопрос № 4500

Как можно переслать значение из регистра(например ax) по определённому адресу в оперативной памяти?(например записать значение по адресу a000:0000h)
Конечно, всё происходит в реальном режиме работы процессора.


Отправитель: Алексей

Отвечает Dark_Lord

Добрый день, Алексей!
ax to [SEG:OFFS]
push ds
push SEG
pop ds
mov ds:[OFFS],ax
pop ds

Отправитель: Dark_Lord

Отвечает Bob Johnson

Приветствую Вас, Алексей!
Вообще, для этого есть команда:
push 0A000h
pop es
mov es:[0], ax
Но тасм ее почему-то не хочет компилировать. Здесь можно сделать так:
xor di, di
mov es:[di], ax
Или забить команду по db.
Также можно описать сегмент, который будет находиться по заданному адресу (директива at, кажется) - в нем описать переменную типа word и уже в нее занести ax. В результате будет точно такая же команда, как в первом случае, но тасм это откомпилит.

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


Отправитель: Bob Johnson

Отвечает dr_dolphin

Приветствую Вас, Алексей!
Например так:
mov es,0xa000
xor bx,bx
mov ax,что-то
mov [es:bx],ax //Синтаксис Nasm
Пока !

Отправитель: dr_dolphin

Отвечает Artemy

Приветствую Вас, Алексей!
mov bx,0A000h ; сегмент
mov es,bx
mov bx,0000h ; смещение
mov es:[bx],ax ; значение

Отправитель: Artemy

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

Добрый день, Алексей!
push ds
push 0A000h
pop ds
mov [word ptr ds:0],ax
pop ds
* EMan: -=- Любовь существует! =-=


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

Отвечает never_again

Доброе время суток, Алексей!
а вот так:
push 0a000h
pop es ; es = 0а000h
xor di,di ; di = 0000h
mov es:[di],ax ; es:[di] = 0a000:0000
удачи.
кстати, 0а000Н - это адрес экранной области, так, что результат увидишь в виде двух пикселей в левом верхнем углу экрана. (если конечно ah и al содержат не чёрный цвет)

Отправитель: never_again

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+.

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



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

В избранное