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

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


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

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

Выпуск № 572
от 19.06.2003, 17:30

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


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

Bob Johnson
Статус: Профессиональный
Общий рейтинг: 151.93
URL: Программирование
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 122.05
URL: мой сайт
[Подробней >>]
Дмитрий
Статус: Профессиональный
Общий рейтинг: 141.2
Телефон: 8-903-985-66-27 (Билайн-GSM)
[Подробней >>]
 
Hayk
Статус: Опытный
Общий рейтинг: 114.18
URL: Perosnal Web Page which has been created long ago.
[Подробней >>]
masquer
Статус: Профессиональный
Общий рейтинг: 137.61
[Подробней >>]
_vt
Статус: Опытный
Общий рейтинг: 122.34
[Подробней >>]
 
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 112.49
[Подробней >>]
Zedr0n
Статус: Начальный
Общий рейтинг: 113.04
[Подробней >>]
Tigran K. Kalaidjian
Статус: Опытный
Общий рейтинг: 118.75
URL: Методы оптимизации работы ПК
[Подробней >>]
 
St
Статус: Опытный
Общий рейтинг: 107.67
[Подробней >>]
Lynx
Статус: Опытный
Общий рейтинг: 124.17
Телефон: (8442) 750522
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 118.61
[Подробней >>]
 
Ramzes
Статус: Профессиональный
Общий рейтинг: 125.78
URL: Microsoft homepage
[Подробней >>]
Maverick
Статус: Профессиональный
Общий рейтинг: 130.74
URL: Эхоконференция по вирмейкингу
Телефон: 89039415024 (BeeLine GSM)
[Подробней >>]
baldr
Статус: Профессиональный
Общий рейтинг: 112.28
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
 
Knignick
Статус: Опытный
Общий рейтинг: 109.37
URL: Мой каталог ссылок по программированию
[Подробней >>]


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

Вопрос № 3469. Доброго времени суток, уважаемые эксперты. У меня опять проблемма с защитным режимом. Таперь смог в ... (ответов: 1)
Вопрос № 3470. Добрый день ! На тему принтера. Поискал, замкул, сперва потрещало, а потом и дым пошел. Под овации о... (ответов: 3)
Вопрос № 3471. Привет! Снова я. Спасибо за ответ на вопрос номер 3400(См. приложение). Для MozgC. Проблема в том, ... (ответов: 1)
Вопрос № 3474. По поводу №3452 Наверное вопрос следует уточнить... Допустим резиденту нужно выгрузить себя из памят... (ответов: 1)
Вопрос № 3475. Здравствуйте! Оцените пожалуйста качество кодинга, и укажите на мои ошибки, с точки зрения оптимизац... (ответов: 1)
Вопрос № 3476. Привет всем Экспертам! Подскажите как использовать макросредства. Необходимо создать сегмент данных,... (ответов: 3)
Вопрос № 3477. Всем здрасте ф-ция FindFirstFile ищет и файлы и subдиректории. При этом заполняется структура WFD. Т... (ответов: 1)
Вопрос № 3479. Здравствуйте эксперты! Написал программу на ассемблере под DOS в которой есть меню, но не знаю как п... (ответов: 5)
Вопрос № 3480. Уважаемые эксперты, не могли бы вы подсказать где я могу найти материал о всех прерываниях и функция... (ответов: 8)
Вопрос № 3481. Народ, помогите с описанием как разложит звук на спектр я плохой математик (мягко сказать) надо на а... (ответов: 2)

Вопросов: 10, ответов: 26


 Вопрос № 3469

Доброго времени суток, уважаемые эксперты.
У меня опять проблемма с защитным режимом. Таперь смог в него переходить и т.п. В нём у меня есть дискриптор 64кбайтового сегмента с базой 0B8000h, я заполняю его нулями (ax=0730h) и перехожу обратно в реальный режим. Если я запускался из vc, то он ещё работает, но при попытке что-либо запустить пише your program caused a divide overflow error... С чем это может быть связано!?



Вопрос отправлен: 14.06.2003, 13:31
Отправитель: Dark_Lord (Dark_Lord@RusFAQ.ru)

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

Отвечает Bob Johnson

Доброе время суток, Dark_Lord!
А ты заполняешь 64 кб, или только весь экран - может быть затираешь что-то?
Еще попробуй перезагрузить все сегментные регистры и сделать far jump.

* EMan1.3: ---===*** The Eternal Power ***===---


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


 Вопрос № 3470

Добрый день !
На тему принтера.
Поискал, замкул, сперва потрещало, а потом и дым пошел. Под овации он скончался.
Теперь другой вопрос - где найти дешевый принтер?(струйный), возможно б/у, черно-белый. Какой посоветуете? Из-за того, что это - оффтопик, лучше пишите на мыло.
Заранее благодарю
Тигран


Приложение:


Вопрос отправлен: 14.06.2003, 17:27
Отправитель: Tigran Kalaidjian (kalaidjian@pochtamt.ru)

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

Отвечает Broken Sword

объявляется минута молчания...

Ответ отправлен: 14.06.2003, 18:32
Отправитель: Broken Sword


Отвечает Дмитрий

Здравствуйте, Tigran Kalaidjian!
Бывает! Эх, сколько я микросхем попалил, прежде чем у меня заработал контроллер дисковода для Спекки. Кстати, когда что-то горит с треском и дымом, то это скорее всего связано с силовыми цепями. Печатные дорожки обычно покрываются лаком и при коротыше бывает отслаиваются-отгорают. Посмотри на те дорожки, которые ты коротил. Обычно горит в тонком месте.
P.S.: А к низкоуровневому программированию это все-равно имеет самое непосредственное отношение. И ПЗУ там есть, стопудово! Иначе как внутренний проц управляет всем своим добром? (те-же шрифты!) Другое дело, что это все может быть реализовано как микроконтроллер. В любом случае перепрошивка ПЗУ дала бы громадный опыт. Я уже не говорю о том, что скорее всего в самой прошивке есть процедурка управления вышеупомянутым датчиком. И если ПЗУ все-равно перешивать... Предлагаю заняться поиском инфы на эту тему!


Ответ отправлен: 16.06.2003, 11:43
Отправитель: Дмитрий


Отвечает Hayk

Приветствую Вас, Tigran Kalaidjian!
Говорил - агония :-))

Ответ отправлен: 16.06.2003, 12:14
Отправитель: Hayk


 Вопрос № 3471

Привет!
Снова я.
Спасибо за ответ на вопрос номер 3400(См. приложение).
Для MozgC. Проблема в том, что размеры плат могут быть каждый раз разные.
Для masquer. Искал алгоритм Монте-Карло несколько дней. К сожалению, выходит все что хочешь, но только не то, что я ищу. Если Вам не трудно, могли бы Вы бросить пару конкретных ссылок?
Заранее спасибо.
Best regards
alexneta.


Приложение:


Вопрос отправлен: 14.06.2003, 18:46
Отправитель: alexneta (alexneta@bezeqint.net)

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

Отвечает masquer

Доброе время суток, alexneta!
Через гугл ищи, по слову "алгоритм Монте-Карло" около 1000 ссылок, первые просмотрел - вроде оно.

Ответ отправлен: 15.06.2003, 11:59
Отправитель: masquer


 Вопрос № 3474

По поводу №3452
Наверное вопрос следует уточнить...
Допустим резиденту нужно выгрузить себя из памяти,
тогда нужно сделать примерно следующее:
; ------------------------------
; Проверить текущий вектор на совпадение с моим,
; если не совпадает не выгружать...
; Иначе:
lds dx,dword ptr cs:dwTrueVector
mov ax,25xxh
int 21h
; ------------------------------
Вопрос: какие действия мне нужно предпринять дальше,
чтобы корректно осводить память и не повесить прерываемый
процесс. Если несложно, пару строк кода...



Вопрос отправлен: 15.06.2003, 02:10
Отправитель: shade

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

Отвечает Bob Johnson

Добрый день, shade!
Вроде нужно просто освободить блок памяти, занимаемый программой и переменными окружения (сначала переменные, затем - программа). Функция 49h.

* EMan1.3: ---===*** The Eternal Power ***===---


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


 Вопрос № 3475

Здравствуйте!
Оцените пожалуйста качество кодинга, и укажите на мои ошибки, с точки зрения оптимизации по быстродействию, так же подскажите где можно сделать короче не теряя в эффективности.
Спасибо всем потратившим на это свое время.


Приложение:


Вопрос отправлен: 15.06.2003, 05:49
Отправитель: 0ff

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

Отвечает Bob Johnson

Доброе время суток, 0ff!
1. У тебя код 16-разрядный, переходи на 32.
2. В процессорах, начиная с пентиума, команды могут "спариваться" и выполняться одновременно, но только в том случае, если они используют разные регистры, например твой код:
mov bp,sp
mov dx,[bp]
dec dx
dec dx
mov ax,si
mov bp,di
add bp,7
mov ch,8

лучше бы переписать как:

mov bp, sp
mov ch, 8
mov dx, [bp]
mov ax, si
mov bp, di
dec dx
add bp, 7
dec dx
и т.д.
еще, с точки зрения скорость лучше заменить 2 dec dx на один sub dx, 2, т.к. они выполняются одинаково быстро (по 1 такту), но sub dx, 2 занимает больше места в памяти.

* EMan1.3: ---===*** The Eternal Power ***===---


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


 Вопрос № 3476

Привет всем Экспертам!
Подскажите как использовать макросредства.
Необходимо создать сегмент данных, в котором бы размещалась секция сообщений.(Сообщения разделены на секции)
Создаётся макро (@int21).Макру передаются параметры.
Первый параметр Номер функции.
Второй параметр Сообщение.
...Не работает ->(в макро выдаёться ошибка (похоже что - то с оffset).
И необходимо чтобы не(!) все сообщения влазили в сегмент данных,а только те которые используються этим макро.
(Пишу как в мануалах описано.)
?...
Спасибо!


Приложение:


Вопрос отправлен: 15.06.2003, 09:25
Отправитель: Yuri

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

Отвечает _vt

Приветствую Вас, Yuri!
1) У меня работает так: (см. приложение)
2)
> необходимо чтобы не(!) все сообщения влазили в сегмент данных,а только те которые используються этим макро
Так не бывает... Чтобы не влазили, не описывай их...(если я правильно понял вопрос)

---===*** E-Man 1.2 - Powerful toy***===---


Приложение:

Ответ отправлен: 15.06.2003, 19:29
Отправитель: _vt


Отвечает Dark_Lord

Добрый день, Yuri!
Дело в том, что в макросе нельзя использовать offset, если нужно сделать что-либо с offsetom это задаётся в параметрах!
@int21 9,offset string

Ответ отправлен: 15.06.2003, 10:45
Отправитель: Dark_Lord


Отвечает Zedr0n

Добрый день, Yuri!
Что-то похожее у меня получилось, но макрос у меня принимает 3 параметр, длину
строки. Я думаю, что посчитать длину строки можно каким-то способом, но не
знаю как. Вся проблема для меня заключается в том, что внутри макроса сложно
ставить метки, так как при использовании макроса повторно, появляется еще одна
такая же метка, и, соответственно, Tasm начинает ругаться.
К слову, сегмент данных я не использую, но пока у меня возникла
только такая идея. Я еще подумаю, но вот полноценно работающий пример:
.model tiny
.data
.code
@int21 macro num,string,length
mov ah,&num&
jmp $+&length&+1 ; перепрыгнуть через данные
db &string&,'$'
mov dx,offset $-&length&-1 ; dx теперь указывает на строку
int 21h
endm
.386
org 100h
Start:
@int21 9,"Hello, World!",13
@int21 9,"Hello, You!",11
@int21 9,"Hurray!!!",9
ret
end Start


Ответ отправлен: 15.06.2003, 11:27
Отправитель: Zedr0n


 Вопрос № 3477

Всем здрасте
ф-ция FindFirstFile ищет и файлы и subдиректории. При этом заполняется структура WFD. Так вот где-то в конце структуры должно содержаться имя найденного файла.
Вопрос: почему когда находится subдиректория то вместо ее имени мы видим какой то бред?
(так, если задать маску "С:*", то находится RECYCLED, а если сделать например поиск в "C:MASM32*" то судя по атрибуту найдена директория (10h), EAX содержит хэндл поиска для FindNextFIle, но в поле ИМЯ найденного файла мы видим какой то бред! Почему? Где имя найденной subдиректории?



Вопрос отправлен: 15.06.2003, 12:22
Отправитель: Broken Sword (brokensword@mail.ru)

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

Отвечает Hayk

Приветствую Вас, Broken Sword!
Так вот где-то в конце структуры должно содержаться имя найденного файла.
Точнее начиная с байта удалённого на 2A от начала структуры. Проверил, нормально работает
то судя по атрибуту найдена директория (10h).

вернее побитовая комбинация с 10h.Ну у меня вроде всё нормально работает.


Ответ отправлен: 16.06.2003, 12:01
Отправитель: Hayk


 Вопрос № 3479

Здравствуйте эксперты!
Написал программу на ассемблере под DOS в которой есть меню, но не знаю как подсоединить мышь так что-бы с помощью нее делать выбор в меню программы.
Подскажите пожалуйста как это сделать.
Лучше всего если пришлете простенький пример программы.
Заранее благодарен.
Алексей.



Вопрос отправлен: 15.06.2003, 16:07
Отправитель: Alexey (lexa67@mail.ru)

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

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

Добрый день, Alexey!
Отслеживаете положение указателя мыши на экране с помощью прерывания int33h(ф-ция 03h), проверяете нажата ли левая кнопка мыши, если нажата, то проверяете в какой области экрана(т.е. с каким пунктом меню)находится в данный момент указатель. В зависимости от положения выполняете нужную Вам ф-цию. Как отследить статус см. во вложении, остальное см. в почтовом ящике.

Приложение:

Ответ отправлен: 15.06.2003, 19:49
Отправитель: Tigran K. Kalaidjian


Отвечает _vt

Доброе время суток, Alexey!
Работа с мышью идет через прерывание 33h. Смотри функции этого прерывания в справочниках...

---===*** E-Man 1.2 - Powerful toy***===---


Ответ отправлен: 16.06.2003, 19:39
Отправитель: _vt


Отвечает St

Привет, Alexey!
У меня есть пример, моя старая незаконченная программа - попытка сделать досовский редактор: http://st23.narod.ru/MAKE.ZIP (почему-то хочет именно большими буквами)
Можете попытаться понять что-нибудь (я тогда только учился, так что наверняка много не самых лучших решений). Работают только 3 меню (и на нажатие, и на нажатие, протаскивание и отпускание), а в них пункты - выход и открыть... (и еще квадратик в верхнем левом углу)
Надеюсь что вы возьмете оттуда только сам алгоритм.
St

Ответ отправлен: 17.06.2003, 13:12
Отправитель: St


Отвечает Lynx

Здравствуйте, Alexey!
Я тут давно писал одному парню по той же самой проблемме, поэтому просто переправляю это письмо тебе.


Ответ отправлен: 18.06.2003, 16:41
Отправитель: Lynx


Отвечает Ayl

Приветствую Вас, Alexey!
Мышь работает через интерфейс 33-го прерывания. У тебя должен быть подключен драйвер мыши (если ты будешь тестироваться под чистым DOS'ом, под виндами он и так работает). Вначале инициализируешь мышь (AX=0/int33h).
Курсор мыши выключен и находится в центре экрана. Ну а далее - как фантазия позволит. Например, отслеживаешь нажатия на кнопки и проверяешь текущую позицию мышки. Если в нужной области - активируешь пункт меню.

Ответ отправлен: 16.06.2003, 13:46
Отправитель: Ayl


 Вопрос № 3480

Уважаемые эксперты, не могли бы вы подсказать где я могу найти материал о всех прерываниях и функциях DOS!!!



Вопрос отправлен: 15.06.2003, 17:15
Отправитель: Ujin (twixt@mail.nnov.ru)

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

Отвечает Ramzes

Здравствуйте, Ujin!
Поищи TechHelp

Ответ отправлен: 16.06.2003, 17:39
Отправитель: Ramzes


Отвечает _vt

Приветствую Вас, Ujin!
http://www.pobox.com/~ralf

---===*** E-Man 1.2 - Powerful toy***===---


Ответ отправлен: 16.06.2003, 19:39
Отправитель: _vt


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

Приветствую Вас, Ujin!
Список прерываний Ральфа Брауна:
http://www-2.cs.cmu.edu/~ralf/files.html

Ответ отправлен: 15.06.2003, 20:16
Отправитель: Tigran K. Kalaidjian


Отвечает Maverick

Доброе время суток, Ujin!
Ищи в интеренете список прерываний Ральфа Брауна, проблем не возникнет.


Ответ отправлен: 16.06.2003, 04:59
Отправитель: Maverick


Отвечает Дмитрий

Добрый день, Ujin!
Справочник Ральфа Брауна. Ссылок в поисковиках - море.

Ответ отправлен: 18.06.2003, 09:01
Отправитель: Дмитрий


Отвечает baldr

Добрый день, Ujin!
В принципе, на моем сайте http://www.dospage.by.ru есть справочник прерываний. Но он немного староват, хотя тебе хватит. :)
А вообще, таблица прерываний Ральфа Брауна рулит!

Ответ отправлен: 16.06.2003, 10:07
Отправитель: baldr


Отвечает Lynx

Доброе время суток, Ujin!
Последний раз я видел на www.codenet.ru


Ответ отправлен: 18.06.2003, 16:41
Отправитель: Lynx


Отвечает Bob Johnson

Приветствую Вас, Ujin!
Ralf Braun Interrupt List... :)

* EMan1.3: ---===*** The Eternal Power ***===---


Ответ отправлен: 16.06.2003, 20:33
Отправитель: Bob Johnson


 Вопрос № 3481

Народ, помогите с описанием как разложит звук на спектр я плохой математик (мягко сказать) надо на ассемблере для motorola hc11 и под builder 6 но самое главное описание как это делается исходники есть но по исходникам просто не доходит.



Вопрос отправлен: 15.06.2003, 17:23
Отправитель: Роман Окульский (okulski@cheroil.irknp.ru)

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

Отвечает Knignick

Приветствую Вас, Роман Окульский!
С точки зрения нахождения спектра неважно что за сигнал: звук или не звук. Все делается при помощи преобразования Фурье, конеретнее - дискретного преобразования Фурье (DFT) и, как правило, применяется один из вариантов его быстрой(оптимизированной) реализации - быстрое преобразование Фурье (FFT). Очень просто и доходчиво про все это написано в книге "Руководство программиста по работе со звуком" Тима Кинтцеля. В кратце логика DFT такая: значения отсчетов сигнала умножаются на значения отсчетов синусоиды определенной частоты(w) и произведения складываются. Чем больше сумма - тем больше вклад (амплитуда) гармоники с частотой w в исходном сигнале. Перебирая диапазон w - получаешь спектр. А FFT - просто позволяет оптимизировать вычисления.

Ответ отправлен: 15.06.2003, 18:56
Отправитель: Knignick


Отвечает Bob Johnson

Приветствую Вас, Роман Окульский!
С помощью рядов Фурье. БПФ (быстрое преобразование Фурье) я тебе по памяти не смогу написать, но принцип такой: пусть f(x) - исходная функция, тогда
a(w) = int (0, t) (cos (wt)*f(x))
b(w) = int (0, t) (sin (wt)*f(x))
здесь w - частота = 2*пи*f, a(w) и b(w) - амплитуда синусоидальных и косинусоидальных составляющих гармоники частоты w в функции f(x). Полная амплитуда А(w) = sqrt (a(w)^2 + b(w)^2).
int (0, t) - интеграл, определенный, от 0 до t. Тебе надо будет брать какой-либо отрезок (0, t) (его размер определяется наименьшей частотой, которую требуется отловить) и вычислять интеграл переодически. cos (wt) - косинус и т.д.
Но раз тебе надо это реализовывать, подойдет только БПФ, т.к. оно значительно менее ресурсоемко, чем обычное преобразование Фурье.

* EMan1.3: ---===*** The Eternal Power ***===---


Ответ отправлен: 16.06.2003, 20:33
Отправитель: Bob Johnson



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

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

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

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (36)
C / C++ (27)
Perl (5)
Builder / Delphi (17)
Pascal (28)
Basic / VBA (9)
Java / JavaScript (11)
PHP (5)
MySQL / MSSQL (6)
Пользователю
Windows 95/98/Me (30)
Windows NT/2000/XP (25)
"Железо" (19)
Поиск информации (13)
Администратору
Windows NT/2000/XP (12)
Linux / Unix (6)
Юристу
Гражданское право (7)
Семейное право (3)
Трудовое право (4)
КоАП (3)

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




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


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


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

В избранное