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

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


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

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

Выпуск № 662
от 12.11.2003, 12:30

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


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

Евгений Иванов
Статус: Профессиональный
Общий рейтинг: 143.02
URL: Super Assembler Software
Телефон: НСС +7 831 3107039
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 149.4
URL: Программирование
[Подробней >>]
never_again
Статус: Опытный
Общий рейтинг: 137.77
[Подробней >>]
 
PUSH
Статус: Начальный
Общий рейтинг: 109.25
[Подробней >>]
Orlando
Статус: Начальный
Общий рейтинг: 101.42
[Подробней >>]
_vt
Статус: Профессиональный
Общий рейтинг: 120.49
[Подробней >>]
 
Artemy
Статус: Начальный
Общий рейтинг: 125
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 108.03
[Подробней >>]
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 110.79
[Подробней >>]
 
ASMодей
Статус: Профессиональный
Общий рейтинг: 112.7
[Подробней >>]


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

Вопрос № 4437. Уважаемые эксперты , вопрос у меня прога садится в трей у нее создано всплывающее меню которое вс... (ответов: 2)
Вопрос № 4438. Всем читать: http://nicki-site.narod.ru/... (ответов: 1)
Вопрос № 4440. Уважаемые, господа эксперты. Подскажите, пожалуйста, как пользоваться линейным буфером для вывода гр... (ответов: 1)
Вопрос № 4441. Где взять Windows 98 DDK тлька не MSDN там я за парился искать дайте мне премой путь к этим библеоте... (ответов: 3)
Вопрос № 4443. Ей, Mortus Alighieri! Ты начальный уровень, а пишешь всякую $#$#... > "ii. Tasm32 + Tlink32 для... (ответов: 2)
Вопрос № 4444. Здравствуйте ув.эксперты! Возникла проблема следующего план. Необходимо послать контролеру через RS2... (ответов: 1)
Вопрос № 4445. Здравствуйте эксперты! Осталась нерешенной проблема с графикой под DOS на VC6.0. Проблемы с алгоритм... (ответов: 2)
Вопрос № 4448. Доброе время суток! К сожалению, на мой предыдущий вопрос никто не ответил. Объясню проблему более д... (ответов: 1)
Вопрос № 4449. Здраствуйте все эксперты! Пишет вем саботажник с города Н. Около полугода я в городе занимаюсь диктр... (ответов: 4)
Вопрос № 4450. Здравствуйте! Требуется написать простенькую программку, выводящую на экран(в графическом... (ответов: 2)
Вопрос № 4451. Как перевести строку десятичных чисел в двоичное число?Например, есть строка "4294967295",... (ответов: 2)
Вопрос № 4452. Скажыте уважаемые експерти? Что лудшэ TASM или MASM... (ответов: 5)

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


 Вопрос № 4437

Уважаемые эксперты , вопрос у меня прога садится в трей у нее создано всплывающее меню которое всплывает когда я кликаю по трей иконке правой кнопкой мыши, и вот тут у меня трабл пока я не выберу какой либо пункт меню не исчезает , а мне надо чтобы если я передумал при нажатии на другом окне менюшка исчезала, заранее благодарен....



Вопрос отправлен: 06.11.2003, 10:07
Отправитель: greg

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

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

Здравствуйте, greg!
ebx равен номеру главного окна
MsgNIRbuttonUp:
Call GetForegroundWindow
push eax
Call SetForegroundWindow, ebx
mov esi,ofs pt
Call GetCursorPos,esi
Call GetSubMenu,[hMenuMain],0
Call TrackPopupMenuEx,eax,TPM_LEFTALIGN,[(t POINT esi).x],[(t POINT esi).y],
ebx,0
pop esi
Call IsWindow, esi
or eax, eax
jz @@ExitMsgNI
Call SetForegroundWindow, esi
jmp @@ExitMsgNI
Удачи!
* EMan: -=- Любовь существует! =-=


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


Отвечает Bob Johnson

Доброе время суток, greg!
А как ты меню выводишь? Надо trackpopupmenu.

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


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


 Вопрос № 4438

Всем читать:
http://nicki-site.narod.ru/



Вопрос отправлен: 06.11.2003, 11:55
Отправитель: Eugene Ivanov (sam@mail.com)

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

Отвечает never_again

Добрый день, Eugene Ivanov!
прочитаю.


Ответ отправлен: 06.11.2003, 18:52
Отправитель: never_again


 Вопрос № 4440

Уважаемые, господа эксперты. Подскажите, пожалуйста, как пользоваться линейным буфером для вывода графики. Буду очень признателен за пример с выводом на экран, желательно в режиме 640х480х256 или выше и глубже, хотя бы одной точки (с остальными надеюсь сам разберусь :)) ).



Вопрос отправлен: 06.11.2003, 19:08
Отправитель: Мирослав Махрук

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

Отвечает PUSH

Доброе время суток, Мирослав Махрук!
Зубкова почитайте, там написано. И пример есть.


Ответ отправлен: 08.11.2003, 07:49
Отправитель: PUSH


 Вопрос № 4441

Где взять Windows 98 DDK тлька не MSDN там я за парился искать дайте мне премой путь к этим библеотекам а то я немогу создать драйвер VXD.
Как перейти в нулевое кольцо RING0 из делфи или как мне использовать прерывание и порты O/I.



Вопрос отправлен: 06.11.2003, 20:16
Отправитель: NikNet

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

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

Приветствую Вас, NikNet!
http://shelek.org.ru/ddk/98ddk.exe
* EMan: -=- Любовь существует! =-=


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


Отвечает Orlando

Здравствуйте, NikNet!
Вот ссылка
http://www.microsoft.com/whdc/ddk/winddk.mspx

Ответ отправлен: 06.11.2003, 21:48
Отправитель: Orlando


Отвечает Bob Johnson

Доброе время суток, NikNet!
1. На все DDK тут проходили ссылки.
2. Некоторая информация по написанию vxd есть на моей странице, сходи если нужно.
3. Это можно сделать способом, используемым в wincih - посмотри его исходник. Но наиболее правильно писать драйвер.

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


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


 Вопрос № 4443

Ей, Mortus Alighieri!
Ты начальный уровень, а пишешь всякую $#$#...
> "ii. Tasm32 + Tlink32 для драйверов не годятся. используй > M$ VC++ или M$ VS.NET/C++"
Это что?
На TASM можно сделать ВСЁ! Всё, что угодно!
Или в крайнем случае использовать FASM, NASM!
А у кого руки не те, нечего пенять на инструмент!!!



Вопрос отправлен: 06.11.2003, 23:23
Отправитель: Eugene Ivanov (super21@ATmail.nnov.ru)

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

Отвечает never_again

Здравствуйте, Eugene Ivanov!
Целиком и полностью поддерживаю твоё мнение о TASM'e

Ответ отправлен: 07.11.2003, 22:25
Отправитель: never_again


Отвечает _vt

Приветствую Вас, Eugene Ivanov!
Годиться TASM для чего угодно - это понятно, но многие вещи, особенно под Win32 гораздо удобнее писать на MASM. А другие ассемблеры из-за отсутствия возможностей отладки, неполной совместимости с MASM и прочих недостатков, можно только в самых простых случаях использовать.

*** E-Man - can help you***


Ответ отправлен: 10.11.2003, 14:36
Отправитель: _vt


 Вопрос № 4444

Здравствуйте ув.эксперты!
Возникла проблема следующего план.
Необходимо послать контролеру через RS232 строку байт.
Посылка происходит нормально, но когда необходимо прочитать что пришло прога вешается на ReadFile.
При открытии дескрипора COM порта не получается комбинация флагов на чтение и запиь. Т.е он либо говорит что не могу открыть COM либо не может записать туда.
В чем мой косяк не могу понять, а нужно очень срочно.
В дальнейшем если все получится буду переделывать на асме.
Заранее спасибо.


Приложение:


Вопрос отправлен: 07.11.2003, 04:23
Отправитель: m0v8lack

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

Отвечает Bob Johnson

Приветствую Вас, m0v8lack!
Открыть порт на чтение и запись одновременно возможно и об этом написано в мсдн (The CreateFile function can create a handle to a communications resource, such as the serial port COM1. For communications resources, the dwCreationDisposition parameter must be OPEN_EXISTING, and the hTemplate parameter must be NULL. Read, write, or read/write access can be specified, and the handle can be opened for overlapped I/O. For more information about communications, see Communications).
Тебе следует указать в качестве параметра share ноль, т.к. порт не расшаривается и доступ к нему может получить только одна программа в один момент времени.

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


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


 Вопрос № 4445

Здравствуйте эксперты!
Осталась нерешенной проблема с графикой под DOS на VC6.0.
Проблемы с алгоритмом вывода линии и точки нет! Проблема заключается в том, что не работает процедура перехода в графический режим 13h.
Пример:
void init() {
_asm {
mov ax, 0a000h
mov es, ax
mov ax, 13h
int 10h
xor di, di
xor ax, ax
mov cx, 320*200
cld
rep stosb
}
}
В тестовом модуле я вызываю эту процедуру и компилятор VC6.0 выводит ошибки (и соотв. не работает).
---
Мне не нужно в принципе реализовывать эти процедуры и если есть граф. библиотека, то скинте ее пожалуйсто!
---
Спасибо за отзывы!



Вопрос отправлен: 07.11.2003, 19:14
Отправитель: kuper

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

Отвечает Artemy

Доброе время суток, kuper!
попробуй запомнить и восстановить регистры ES и DI
и лучше используй ДОСовый компилятор.

Ответ отправлен: 10.11.2003, 11:21
Отправитель: Artemy


Отвечает vitya

Доброе время суток, kuper!
Dos графика по определению не возможна из под vc6.0, так как он поддерживает липшь win32 приложения.

Ответ отправлен: 10.11.2003, 08:08
Отправитель: vitya


 Вопрос № 4448

Доброе время суток!
К сожалению, на мой предыдущий вопрос никто не ответил. Объясню проблему более детально.
Написал программу и dll к ней, которая вешает хук на клавиатуру. Когда запускаешь ее мышкой она работает нормально (то есть ведет лог и выдает окошко на каждое нажатие клавиши для проверки).
А если программа (ехе) запускается из реестра, то сама она в памяти висит, а лог не ведется и окошки не вылазят по нажатию клавиш. В реестре программу записывал в HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionRun и в HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun. Потом попробовал записать его в win.ini... Но все одно: лог не ведется, окошко не выскакивает, но программа висит в памяти.
Оптимальным выходом из ситуации был бы запуск программы вручную при каждой загрузке, но... программа пишется с учетом запуска вместе с WINDOWS без участия пользователя.
Спасибо!



Вопрос отправлен: 07.11.2003, 22:39
Отправитель: Faraon (faraon@hotmail.kz)

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

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

Добрый день, Faraon!
А при чём тут Ассемблер??!!
Дело в путях...
* EMan: -=- Любовь существует! =-=


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


 Вопрос № 4449

Здраствуйте все эксперты!
Пишет вем саботажник с города Н.
Около полугода я в городе занимаюсь диктруктивными действиями! В основном в информационной сфере! Сначала саботировал в инфо сфере с помощью Bat файлов, затем перешел на VB сейчас перехожу на АСМ.
У меня в программе такая ошибка:
'Near jump or call to different CS!
Также ищу единомышленников!
Пока!!!!!


Приложение:


Вопрос отправлен: 08.11.2003, 11:22
Отправитель: Saboter (neonit@list.ru)

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

Отвечает _vt

Приветствую Вас, Saboter!
Так как ты пишешь в стандартном синтаксисе MASM, не используя упрощенную форму объявления сегментов, тебе надо вручную указывать какой сегментный регистр на какой сегмент указывает. Делается это с помощью директивы assume: после org 100h вставь строку assume cs:cseg,ds:cseg,ss:cseg.

*** E-Man - can help you***


Ответ отправлен: 10.11.2003, 14:37
Отправитель: _vt


Отвечает Artemy

Здравствуйте, Saboter!
пиши: assume cs:cseg

Ответ отправлен: 10.11.2003, 11:22
Отправитель: Artemy


Отвечает Dark_Lord

Приветствую Вас, Saboter!
Near jump or call to different CS - означает попытку ипользования внутрисегментного прижка или внутрисегментного вызова функции для достижения другого сегмента. Можно сказать, что это не ассемблерная ошибка, а ошибка соглашений, тоесть в зависимости от компилятора надо писать на соответсвующем синтаксе. Так как не знаю, каким компилятором пользуешься могу посоветовать следующее:
jmp near $
jmp cs:$
jmp short $

Ответ отправлен: 09.11.2003, 12:20
Отправитель: Dark_Lord


Отвечает ASMодей

Приветствую Вас, Saboter!
Поставь после org 100h директиву assume cs:cseg и все пройдет.

Ответ отправлен: 10.11.2003, 06:48
Отправитель: ASMодей


 Вопрос № 4450

Здравствуйте!
Требуется написать простенькую программку, выводящую
на экран(в графическом режиме) бегущую волну с регистром
цвета(волна должна иметь вид графика y=sin(x) или y=cos(x)).
Цвет волны, соответственно, со временем изменяется.



Вопрос отправлен: 08.11.2003, 11:40
Отправитель: Boris

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

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

Здравствуйте, Boris!
Специально для тебя выложил на мой сайт:
http://superforest.narod.ru/rar/waves.rar
* EMan: -=- Любовь существует! =-=


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


Отвечает Dark_Lord

Добрый день, Boris!
Так напиши. И вообще вопрос ставь правильнее и не надейся, что всё за тебя сделают, так ничему сам не научишься.
Цвет можно брать из текущей секунды, синус/косинус можно высчитовать при помощи соответсвующих директив FPU, fsin, fcos. причём лучше вычислить всё это один раз, а потом сдвигать!

Ответ отправлен: 09.11.2003, 12:24
Отправитель: Dark_Lord


 Вопрос № 4451

Как перевести строку десятичных чисел в двоичное число?Например, есть строка "4294967295", должны получить dx = 0FFFFh, ax = 0FFFFh.
Нашел здесть прогу:
mov ah,0ah
mov dx,offset Chislo
int 21h
xor ax, ax
xor bx, bx
xor cx, cx
cwd
lea si, Chislo + 2
mov cl, Chislo [1]
mov di, 10
@@loop:
mov bl, [si]
inc si
sub bl, 30h
mul di
add ax, bx
adc dx, 0
loop @@loop
Chislo db 10, ? 10 dup (?)
но она работает не правильно.



Вопрос отправлен: 08.11.2003, 12:05
Отправитель: Artem

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

Отвечает Bob Johnson

Добрый день, Artem!
Это просто - проходишь строку слева направо. На каждой цифре умножаешь результат на 10 и добавляешь текущую цифру.
Процедура работает неправильно из-за того, что она во-первых не рассчитана на числа больше 65535, а так в ней есть еще пара мелких деталей.

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


Ответ отправлен: 11.11.2003, 21:59
Отправитель: Bob Johnson


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

Приветствую Вас, Artem!
Смотри исходник Хранителя Экрана на моём сайте. Там есть подпрограмма
atoui.
;---------------------
; Преобразует "строковое число" в число
;
proc atoui
USES esi, edi, ebx
ARG @@StrNum :dword
mov edx, [@@StrNum]
sub eax, eax
@@m1:
mov cl, [edx]
cmp cl, 30h ; '0'
jl @@ret
cmp cl, 39h ; '9'
jg @@ret
movsx ecx, cl
lea eax, [eax+eax*4]
inc edx
lea eax, [ecx+eax*2-30h]
jmp @@m1
@@ret:
ret
endp
Удачи! (Наташа, гляди веселей и пиши мне письма почаще!)

* EMan: -=- Любовь существует! =-=


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


 Вопрос № 4452

Скажыте уважаемые експерти? Что лудшэ TASM или MASM



Вопрос отправлен: 08.11.2003, 12:24
Отправитель: ol

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

Отвечает Bob Johnson

Доброе время суток, ol!
Я использую тасм (и под винды, и под дос).

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


Ответ отправлен: 11.11.2003, 21:59
Отправитель: Bob Johnson


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

Доброе время суток, ol!
Я привык к TASM и его режиму IDEAL. Пишу уже на подсознательном уровне, не задумываясь на грамматике :)
По сути, в любом Ассемблере можно сделать что угодно, хотя есть исключения...
* EMan: -=- Любовь существует! =-=


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


Отвечает never_again

Доброе время суток, ol!
смотря где и когда, а вообще "муж и жена - одна сатана"


Ответ отправлен: 08.11.2003, 21:23
Отправитель: never_again


Отвечает Orlando

Доброе время суток, ol!
Для начала пойдет TASM (под DOS), ну а при программировании под Windows целесообразнее использовать MASM, всеже компилятор от Microsoft, а они лучше разбираются в своих осях..

Ответ отправлен: 08.11.2003, 22:34
Отправитель: Orlando


Отвечает Dark_Lord

Добрый день, ol!
Хороший вопрос, о нём человечество спорит со времём первого 86086 процессора. Вопрос в том, для чего он тебе нужен, под дос советую тасм, под windows - масм.

Ответ отправлен: 09.11.2003, 12:28
Отправитель: Dark_Lord



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

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

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

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (31)
C / C++ (26)
Perl (4)
Builder / Delphi (20)
Pascal (19)
Basic / VBA (7)
Java / JavaScript (9)
PHP (14)
Криптография (9)
WinAPI (13)
Пользователю
Windows 95/98/Me (41)
Windows NT/2000/XP (59)
"Железо" (36)
Поиск информации (24)
Администратору
Windows NT/2000/XP (36)
Linux / Unix (17)
Юристу
Гражданское право (11)
Семейное право (8)
Трудовое право (8)
КоАП (8)

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




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


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


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

В избранное