Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 430
от 30.11.2002, 03:50
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 1993 Отправлено ответов: 6120 Активность: 307.0 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
Bob Johnson Статус: Профессиональный Общий рейтинг: 153.87 [Подробней >>] |
St Статус: Опытный Общий рейтинг: 115.68 [Подробней >>] |
Maverick Статус: Профессиональный Общий рейтинг: 136.26 URL: Задачи по ассемблеру Телефон: 89039415024 (BiLine GSM) [Подробней >>] |
Остапенко александр Статус: Начальный Общий рейтинг: 104.84 [Подробней >>] |
Sensey Статус: Профессиональный Общий рейтинг: 122.63 URL: Страничка рассылки по Паскалю Телефон: +38 (0572) 41-76-04 дом. [Подробней >>] |
ASMодей Статус: Профессиональный Общий рейтинг: 119.34 [Подробней >>] |
masquer Статус: Профессиональный Общий рейтинг: 151.3 [Подробней >>] |
Gibbel Статус: Профессиональный Общий рейтинг: 108.68 URL: Страничка обо мне и моих друзьях [Подробней >>] |
Ayl Статус: Профессиональный Общий рейтинг: 117.39 [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 1930. Вопрос 1877 Спасибо Bob Johnson !... (ответов: 1)
Вопрос № 1931. Здравствуйте, эксперты! Пишу прогу, которая выводит выводит клавишу, только что нажатую на клаве (ти... (ответов: 5)
Вопрос № 1933. Мир Вам Эксперты! Возникла необходимость реализовать рабочий стол аля Windows в интерфейсе MDI. КАК... (ответов: 1)
Вопрос № 1934. Доброе время суток Bob Johnson! К Вам был отправлен вопрос Вопрос № 1848, по поводу написания драйве... (ответов: 1)
Вопрос № 1935. Привет эксперты. при заказе бесплатного диска с winDDK с сайта MS при его доставке в РФ взималась л... (ответов: 1)
Вопрос № 1936. Добрый день, уважаемые эксперты. У меня возникла проблема. Делаю диалог с owner-draw кнопками. Так в... (ответов: 1)
Вопрос № 1937. > Отвечает ASMодей > Добрый день, Bob Johnson! > А ты Win переустанавливать пробовал? Я еще не вст... (ответов: 1)
Вопрос № 1938. Как сделать корректную ссылку, не цепляя другие регистры(размазать легко)? Мне надо обратиться fs:[c... (ответов: 3)
Вопрос № 1939. Уважаемые эксперты, подскажите пожалуйста, как на Win32Asm перевести число из целого в вещественное ... (ответов: 2)
Вопрос № 1941. Наваял тут прогу (по поиску бинарных отношений перебором, если кому интересно). Она просчитывает 2^2... (ответов: 1)
Вопрос № 1942. >Насколько я понял, есть адрес (A), записанный по адресу cs:DataOffs. >А тебе нужно обратиться по ад... (ответов: 1)
Вопрос № 1943. Хай, эксперты. Вопрос: как в WinAPI создать регион произвольной формы, например, под готовый jpg - ... (ответов: 3)
Вопрос № 1944. вопрос к Ayl привет. получил твою программу , но она постоянно выдаёт ошибки и не работает... (ответов: 2)
Вопрос № 1945. Большое спасибо всем кто ответил на мой вопрос.У меня есть еше один.Мне нужно написать прогу которая... (ответов: 2)
Вопросов: 14, ответов: 25
Вопрос № 1930 |
Вопрос 1877
Спасибо Bob Johnson !
Вопрос отправлен: 25.11.2002, 04:18
Отправитель: Valera
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Здравствуйте, Valera!
Пожалуйста ... :-)
Ответ отправлен: 26.11.2002, 15:10
Отправитель: Bob Johnson
Вопрос № 1931 |
Здравствуйте, эксперты! Пишу прогу, которая выводит выводит клавишу, только что нажатую на клаве (типа "Текстовый редактор"), но когда нажимаю клавишу первый раз, символ светится подряд не один, а много(3 с небольшим строки) раз, последующие символы также занимают за собой это пространство экрана. Как убрать эту фигню?
Приложение:
Вопрос отправлен: 25.11.2002, 06:34
Отправитель: Elm Thasa
[Следующий вопрос >>] [Список вопросов]
Отвечает St
Привет, Elm Thasa!
Вот так работает вроде работает
je exit
mov cx,1 ;!!!!!!!
mov ah,0ah
mov bh,00
int 10h
Внимательнее читайте справочник по прерываниям.
St
Ответ отправлен: 25.11.2002, 18:15
Отправитель: St
Отвечает Maverick
Добрый день, Elm Thasa!
Че то я не понял твой код, че ты хотел.
Не стал разбираться. Вот написал тебе с комментариями в приложении.
Приложение:
Ответ отправлен: 25.11.2002, 11:13
Отправитель: Maverick
Отвечает Остапенко александр
Доброе время суток, Elm Thasa!
попробуй написать в конце вывода "HELT"
И он у тебя потом еще долго вааще ничо выводить не будет.
И еще, попробуй выводить 21-ым прерыванием..
Ответ отправлен: 25.11.2002, 08:56
Отправитель: Остапенко александр
Отвечает Sensey
Доброе время суток, Elm Thasa!
Ф-ция вывода символа требует указания в CX кол-ва повторений
Ответ отправлен: 25.11.2002, 12:24
Отправитель: Sensey
Отвечает ASMодей
Приветствую Вас, Elm Thasa!
Функция 0Ah прерывания INT 10h может повторять вывод символа,
а количество повторений передается функции в регистре CX. Запиши
в CX 1 и все будет в порядке.
Ответ отправлен: 26.11.2002, 06:21
Отправитель: ASMодей
Вопрос № 1933 |
Мир Вам Эксперты!
Возникла необходимость реализовать рабочий стол аля Windows в интерфейсе MDI. КАК?
(парентом чилдам ListView уже давал, визуально все работает, но формы ведут себя очень не правильно)
Я программирую на Delphi, но так как вопрос системный послал профи в Ассемблер.
С надеждой. Maus.
Вопрос отправлен: 25.11.2002, 11:41
Отправитель: Maus (byterus@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Приветствую Вас, Maus!
Как ты представляешь ответ на вопрос о том что "формы ведут себя очень не правильно". Тут мало быть профи...
Ответ отправлен: 25.11.2002, 12:23
Отправитель: masquer
Вопрос № 1934 |
Доброе время суток Bob Johnson!
К Вам был отправлен вопрос Вопрос № 1848, по поводу написания драйверов для Win.
Не могли бы Вы мне выслать инфу по этому моводу.
Заранее благодарю, Рифат.
Вопрос отправлен: 25.11.2002, 11:50
Отправитель: Рифат (abriofh@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Приветствую Вас, Рифат!
Высылаю...
Ответ отправлен: 26.11.2002, 15:10
Отправитель: Bob Johnson
Вопрос № 1935 |
Привет эксперты.
при заказе бесплатного диска с winDDK с сайта MS при его доставке в РФ взималась ли с кого-нибудь(кто заказывал) delivery-fee (плата за доставку)? и если да,то чему она была равна?
Вопрос отправлен: 25.11.2002, 11:56
Отправитель: dxf
[Следующий вопрос >>] [Список вопросов]
Отвечает Gibbel
Добрый день, dxf!
Следуя информации, предоставляемой самой Microsoft она состовляет для Москвы порядка 20 убитых енотов.
Ответ отправлен: 25.11.2002, 12:44
Отправитель: Gibbel
Вопрос № 1936 |
Добрый день, уважаемые эксперты.
У меня возникла проблема. Делаю диалог с owner-draw кнопками. Так вот, как запретить перемещение по кнопкам с помощью стрелок или хотя бы реагирование на нажатие клавиши пробел??? Странно, но ни одна из кнопок не имеет стиль WS_GROUP, но тем не менее кнопки действую как если бы были включены в группу. Сабклассинг кнопок можно, но не очень хорошо.
Как я понимаю, событие WM_KEYDOWN будет посылаться в оконную процедуру кнопки, а не в диалоговую процедуру главного окна (и даже не его оконную процедуру, которая собственно вызывает диалоговую процедуру). Почему-то винда трактует все кнопки, не принадлежащие какой-либо группе, как принадлежащие одной глобальной группе окна диалога. Тогда такой вопрос: адреса оконных процедур всех одинаковых кнопок в диалоге будут одинаковыми или у каждой кнопки может быть своя оконная процедура??? Мне это нужно знать, чтобы в моей оконной процедуре для кнопок вызывать нужный оригинальный обработчик.
Заранее большое спасибо!!!
Вопрос отправлен: 25.11.2002, 13:14
Отправитель: Nize G (nizeg@beep.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Здравствуйте, Nize G!
Каждое окно, а кнопка таковым и является, может иметь и собственную очередь сообщений и, соответственно, процедуру для их обработки
Ответ отправлен: 25.11.2002, 18:52
Отправитель: masquer
Вопрос № 1937 |
> Отвечает ASMодей
> Добрый день, Bob Johnson!
> А ты Win переустанавливать пробовал? Я еще не встречал такой
> ситуации, чтобы после замены какой-нибудь железки, Win работала бы
> как ни в чем не бывало.
Да, конечно - т.к. ни один из старых Windows (это были 98 и ХР) не стали работать на новом железе просто так.
Да нет, тут системы обе стоят нормально - т.к. обычные игры работают. Проблема именно в том, что некоторые программы почему-то находят на моем п4 northwood поддержку 3DNow! (т.к. на п3 эти же драйвера для двуковой карты работали нормально).
А вообще, каким образом определяется эта поддержка (ну вот MMX, SSE и SSE 2 - по CPUID), а 3DNow как?
Вопрос отправлен: 25.11.2002, 13:40
Отправитель: Bob Johnson (bobjohn@newmail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает ASMодей
Здравствуйте, Bob Johnson!
3DNow! тоже определяется по CPUID, только в EAX нужно передавать
числа от 80000000h и выше. Описание есть и в Зубкове (немного) и
в Interrupt List. В частности поддержка именно 3DNow! определяется
битом 31 регистра EDX, при посылке EAX=80000001h.
Ответ отправлен: 26.11.2002, 06:22
Отправитель: ASMодей
Вопрос № 1938 |
Как сделать корректную ссылку, не цепляя другие регистры(размазать легко)? Мне надо обратиться
fs:[cs:Ссылка на память + const]
а вместо этого получается в коде
fs:[адрес ссылки в cs + const]
при операции типа
mov ax,fs:[cs:DataOffs+2]
Вопрос отправлен: 25.11.2002, 14:16
Отправитель: Vladimir
[Следующий вопрос >>] [Список вопросов]
Отвечает Sensey
Приветствую Вас, Vladimir!
Поскольку в вопросе сказано: "не цепляя другие регистры", осмелюсь поправить эксперта Ayl:
xchg bx, cs:[DataOffs]
mov ax, fs:[bx+2]
xchg bx, cs:[DataOffs]
но это слишком долго - гораздо быстрее сохранить в стеке регистр bx
Ответ отправлен: 25.11.2002, 17:34
Отправитель: Sensey
Отвечает Ayl
Здравствуйте, Vladimir!
Что-то у тебя хитрое такое.
Насколько я понял, есть адрес (A), записанный по адресу cs:DataOffs.
А тебе нужно обратиться по адресу fs:(A+2)?
Одной командой фиг получится. Надо вот так:
mov bx, cs:[DataOffs]
mov ax, fs:[bx+2]
Или я неправильно тебя понял?
Ответ отправлен: 25.11.2002, 15:27
Отправитель: Ayl
Отвечает Bob Johnson
Здравствуйте, Vladimir!
Т.е. тебе надо выполнить:
fs:[cs:[ссылка] + const] - да?
Так никак без других регистров... Процессор от интела пока не поддерживает двойную косвенную адресацию.
Если проблемы с регистрами, то в твоем примере можно так:
xor eax, eax
mov ax, cs:[DataOffs]
mov ax, fs:[eax + 2]
фишка тут в том, что по регистру ax адресоваться нельзя, а по eax - можно.
Ответ отправлен: 26.11.2002, 15:11
Отправитель: Bob Johnson
Вопрос № 1939 |
Уважаемые эксперты, подскажите пожалуйста, как на Win32Asm перевести число из целого в вещественное и наоборот. Интересует как сама программа, так и алгоритм перевода. А может быть такая функция API есть?
Заранее спасибо.
Вопрос отправлен: 25.11.2002, 14:40
Отправитель: Konstantin
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Здравствуйте, Konstantin!
Если не заморачиваться, то используй wsprintf.
Ответ отправлен: 25.11.2002, 14:52
Отправитель: masquer
Отвечает Bob Johnson
Добрый день, Konstantin!
Такую функцию для тебя FPU выполнит!
fild dword ptr [_integer_]
fstp qword ptr [_double_] или
fstp dword ptr [_float_]
Ответ отправлен: 26.11.2002, 15:11
Отправитель: Bob Johnson
Вопрос № 1941 |
Наваял тут прогу (по поиску бинарных отношений перебором, если кому интересно). Она просчитывает 2^27 вариантов + 8 проверок на каждыю в течение 1мин.07 сек. на моем Celeron 1400. Хотелось бы это дело ускорить, т.к. без вывода найденых вариантов перебор занимает 39 секунд. Может быть у кого-нибудь есть какие идеи по этому поводу? Как вы могли понять из вопроса, необходима оптимизация по скорости, а не по размеру...
PS: Просьба не ругать за корявость проги, писал поздней ночью...
Приложение:
Вопрос отправлен: 25.11.2002, 18:04
Отправитель: Дмитрий
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Доброе время суток, Дмитрий!
Самое первое - забудь про дос и 16-бит. Только 32-бита. Алгоритм не разбирал, но если есть возможность - переведи все на MMX (SSE). Как можно меньше переходов. Выравнивай данные и код по границе 8 или 16 байт. Рассчитай так обработку, чтобы данные в кеш попадали сразу. Распарируй команды (pairing), если есть возможность - избегай циклов (loop unrolling).
У интела есть документация по оптимизации кода, подробности там ищи. Ну, вкратце так...
Ответ отправлен: 25.11.2002, 18:40
Отправитель: masquer
Вопрос № 1942 |
>Насколько я понял, есть адрес (A), записанный по адресу cs:DataOffs.
>А тебе нужно обратиться по адресу fs:(A+2)?
>Одной командой фиг получится. Надо вот так:
>mov bx, cs:[DataOffs]
>mov ax, fs:[bx+2]
>Или я неправильно тебя понял?
Правильно. Программа BC+Tasm (на СИ интерфейсная часть), ассемблерная часть оптимизирована под операции с регистрами, поэтому чтобы не менять постоянно DS я хочу заменить DS на FS, а SI(значение смещения DS +0,20,40,80) заменить на смещение сегмента (вот это самое cs:[DataOffs]).
Таких замен добрая сотня, некоторые обращения были типа [si+bx], а есть и [si+bx+const], регистры использованы под завязку. Поэтому либо добавлять push-pop (разбухнет код), либо что-то придумывать.
Вот смотрю, может di получится под это дело освободить... Освободил, вроде без особого ущерба, теперь новая болячка: при вызове СИ функции из ассемблерной части CS не меняется, в результате попадаю не туда. Как развязать вызовы туда-обратно?
И еще: у одного из экспертов увидел "благодарностей 0" (я за него огорчился). А куда их вообще отправлять? В рассылку как-то неудобно.
Вопрос отправлен: 25.11.2002, 18:40
Отправитель: Vladimir
[Следующий вопрос >>] [Список вопросов]
Отвечает Ayl
Приветствую Вас, Vladimir!
При взаимодействии Си-Ассемблер необходимо придерживаться следующих правил обращения с регистрами:
- при входе в процедуру обязательно (!) сохранение регистров bx, bp, si, di, sp, ds, ss (ebx, ebp, esi, edi, esp) при их использовании
- при выходе - восстанавливать
Дело в том, что эти регистры жизненно важны для Си, т.к. регистры si и di используются для хранения регистровых переменных, bp - и так понятно, кадр стека, sp - без комментариев, bx - не помню, возможно, тоже регистровый. Кстати, в книжках написано, что bx можно использовать, но я на этом уже однажды погорел. Возможно, правда, что это была особенность компилятора.
Вызов сишной функции из асма должен быть FAR. Для этого в ассемблерном блоке должна быть директива
extrn _C_Func:PROC (обрати внимание на ведущий знак подчеркивания). Проверь соответствия моделей памяти в Си-программе и в ассемблерном модуле. Возможно, вместо PROC надо будет явно прописать FAR.
Параметры помещаются в стек в обратном порядке (с конца, то есть если прототип выглядит как c_func (int a, b, c), то помещать их надо так: push c b a).
Очистку стека при возврате делает вызывающая процедура. Например, командой add sp, n (в предыдущем примере add sp, 6).
Насчет благодарностей - пока это не реализовано, но вроде Олег Калашников обещает, что скоро сделает форму для этого.
Ответ отправлен: 26.11.2002, 12:56
Отправитель: Ayl
Вопрос № 1943 |
Хай, эксперты. Вопрос: как в WinAPI создать регион
произвольной формы, например, под готовый jpg - чёрные
точки в регион не включаются. Интересно просто - овальные
или многоугольниковые(неужели В НИХ решение?) а по картинке - нет!
Вопрос отправлен: 25.11.2002, 21:54
Отправитель: Yury Lunev (koolkhel@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает St
Привет, Yury Lunev!
Просто отвечаю.
Наверное можно, но только если вы сами сделаете такую процедуру. И интересно как это всё при значительных неровностях картинки будет тормозить.
St
Ответ отправлен: 26.11.2002, 13:08
Отправитель: St
Отвечает masquer
Доброе время суток, Yury Lunev!
Дырявая у тебя картинка получится. Если знаешь как хранится изображение в jpg, поймешь - почему. Теоретически - возможно, а практически прийдется преобразовывать и дополнительно фильтровать полученное изображение.
Ответ отправлен: 26.11.2002, 13:12
Отправитель: masquer
Отвечает Bob Johnson
Здравствуйте, Yury Lunev!
Можно использовать функции CreatePolygonRgn, CreatePolyPolygonRgn и все остальные, а потом - CombineRgn. Под готовый jpeg ты так создашь его сам - можешь по строке проходить файл и создавать прямоугольные регионы.
Ответ отправлен: 27.11.2002, 15:09
Отправитель: Bob Johnson
Вопрос № 1944 |
вопрос к Ayl
привет. получил твою программу , но она постоянно выдаёт ошибки и не работает. В какой версии ассемблера ты её компилил и напиши, пожалуйста, версию твоего ассемблера. Ив какой системе ты ее делал. Заранее спасибо.
Вопрос отправлен: 25.11.2002, 23:03
Отправитель: evgen
[Следующий вопрос >>] [Список вопросов]
Отвечает Ayl
Здравствуйте, evgen!
Какие ошибки? Хоть бы пример привел. У меня работает.
Пользуюсь:
TASM 3.2i, TLINK 5.1
Компилю с ключами:
tasm prog /m2 /la
tlink prog /m /t /s
Режим компиляции MASM (установка по умолчанию).
Ответ отправлен: 26.11.2002, 13:04
Отправитель: Ayl
Отвечает Bob Johnson
Приветствую Вас, evgen!
Скорее всего нет нужных include файлов.
Ответ отправлен: 27.11.2002, 15:10
Отправитель: Bob Johnson
Вопрос № 1945 |
Большое спасибо всем кто ответил на мой вопрос.У меня есть еше один.Мне нужно написать прогу которая будет подщитывать мой текущий трафик в инете тоесть простой счетчик.Я незнаю как мне сделать так чтобы она загружалась сразуже как я выхожу в сеть.
И еще если конечго такое возможно я хочу чтобы в иконке возле часов куда будет сворачиваться окошко бежали цифры отображающие мой текущий счет.
Вопрос отправлен: 25.11.2002, 23:08
Отправитель: WiX (www.rasdv@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает St
Привет, WiX!
Сорри, как сделать не знаю.
Но такая программа уже есть - называется Tick. Это не звонилка а именно счетчик времени, денег, Мб и тд. Грузится с виндами и при соединении показывает небольшое окошко с информацией.
St
Ответ отправлен: 26.11.2002, 13:14
Отправитель: St
Отвечает Bob Johnson
Доброе время суток, WiX!
По поводу счетчика - есть такая функция Shell_NotifyMessage - она позволяет добовлять и изменять иконки в systemtray. Вот ее и используй, только предварительно ты эту иконку сам рисуешь в памяти как тебе нужно.
Ответ отправлен: 27.11.2002, 15:10
Отправитель: Bob Johnson
Форма отправки вопроса |
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
© 2002 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (41) C / C++ (29) Perl (9) Delphi (15) Pascal (23) Basic / VBA (10) Java / JavaScript (15) PHP (10) MySQL / MSSQL (9) |
Пользователю Windows 95/98/Me (35) Windows NT/2000/XP (22) "Железо" (27) Поиск информации (16) |
Администратору Windows NT/2000/XP (12) Linux / Unix (17) |
Юристу Гражданское право (9) Семейное право (3) Трудовое право (5) КоАП (3) |
Отправить вопрос всем экспертам выбранной рассылки.
© 2002 Россия, Москва. Авторское право: RusFAQ.ru |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||