Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 665
от 21.11.2003, 15:40
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 4504 Отправлено ответов: 12977 Активность: 288.1 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
Евгений Иванов Статус: Профессиональный Общий рейтинг: 142.87 URL: Super Assembler Software Телефон: НСС +7 831 3107039 [Подробней >>] |
Bob Johnson Статус: Профессиональный Общий рейтинг: 149.05 URL: Программирование [Подробней >>] |
_vt Статус: Профессиональный Общий рейтинг: 120.05 [Подробней >>] |
Andrew Vext Статус: Профессиональный Общий рейтинг: 103.91 [Подробней >>] |
never_again Статус: Опытный Общий рейтинг: 138.99 [Подробней >>] |
Portnov Статус: Профессиональный Общий рейтинг: 108.1 URL: Мой сайтик... [Подробней >>] |
ASMодей Статус: Профессиональный Общий рейтинг: 112.7 [Подробней >>] |
St Статус: Профессиональный Общий рейтинг: 106.03 [Подробней >>] |
Artemy Статус: Доверительный Общий рейтинг: 128.75 [Подробней >>] |
PUSH Статус: Начальный Общий рейтинг: 109.09 [Подробней >>] |
dr_dolphin Статус: Доверительный Общий рейтинг: 117.82 [Подробней >>] |
Mortus Alighieri Статус: Доверительный Общий рейтинг: 110.66 [Подробней >>] |
Gibbel Статус: Профессиональный Общий рейтинг: 106.44 URL: Savage Metal Club - жизнь в стиле рок-н-ролл Телефон: +7 901 710 3146 [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 4475. Мы продолжаем КВН. Снова этот ненормальный по вопросу 4390 && 4416. Перестаньте отвечать про lea. Я... (ответов: 5)
Вопрос № 4476. Уважаемые эксперты ,вопрос как узнать из приложения каталог из которого оно было запущено ну напр... (ответов: 3)
Вопрос № 4477. Здравствуйте! Где можно найти инфу про файловую систему FAT 16/32. Описание структуры итд. ... (ответов: 1)
Вопрос № 4478. Здравствуйте, уважаемые эксперты! Подскажите pls как при отладке программы под турбо-дебагером-... (ответов: 3)
Вопрос № 4480. Доброе время суток, уважаемые эксперты. Возникла у меня надобность запустить одну программу, работаю... (ответов: 1)
Вопрос № 4481. Здравствуйте уважаемые эксперты. Я совсем недавно начал изучать ассемблер. И столкнулся со следующей... (ответов: 4)
Вопрос № 4482. Haire. Подскажите, существует ли ассемблер под win32 с синтаксисом AT&T?... (ответов: 2)
Вопрос № 4484. ПРИВЕТ.Введите с клавиатуры массив z(5)в котором каждый элемент состоит из двух символов.В каждом эл... (ответов: 1)
Вопрос № 4485. Уважаемые эксперты. Как выключить компьютер под W2000? А точнее как включать привилегии? Желательно ... (ответов: 1)
Вопрос № 4486. Добрый день ув.Эксперты! Вопрос такой (cвязан с Visual Basic'ом). Есть в dll строка Failure db "... (ответов: 1)
Вопрос № 4487. Есть окно , в нём выведены координаты мыши (при запуске равны 0,0) нужно при движении изменять эти к... (ответов: 7)
Вопросов: 11, ответов: 29
Вопрос № 4475 |
Мы продолжаем КВН. Снова этот ненормальный по вопросу 4390 && 4416.
Перестаньте отвечать про lea. Я почти понял.
Вот помню я что в какой-то рассылке был пример, о котором я уже 2 раза писал. Кажется нашел. (весь вечер тормошил винт. А ведь давал себе слово, что почитаю лекции вечером. Сессия не за горами. А и успел только прогу для курсовой пописать и найти этот самый пример)
Рассылка lowlevwl.ru. Опять пишут ОСь. Номер 8. (Интересно почитать такие вещи. Задумываешся о глобальном). Пошел пример boot-сектора. И написано:"текущий код(находящийся по адресу 0x0:0x7c00) будет переписан загруженными с дискеты данными". Здесь как мы видим 7c00 фигурирует как компонента смещения. Далее это самый boot-сектор копируется куда-то в другое место. Не важно куда. А важно как. Конечно с помощью rep movsd.( Выбрали movsd - их дело.) Но вот что же у нас в далее грузится ds. А как раз 7c00. Обнуляется si. Т.е. образуется пара 7c00:0000. И с этого адресочка и копируется. Т.о. один и тот же адрес сначала представлен как 0000:7c00, а потом 7c00:0000. Так вы мне скажите: 0000:7c00 и 7c00:0000 - это одно и тоже. Если да, то почему.
Считаем:
0x0000*0x10 + 0x7c00 =0x07c00
0x7c00*0x10 + 0x0000 = 0x7c000
Что-то не сильно совпадают.
(а то что это работает - косвенно доказывает, что это правильно)
Не люблю я эту практику отвечать отдельно каждому эксперту. Но у вас возможность меня передернуть есть. Пусть она будет и у меня. (честное слово, ерундой занимаемся. Придираемся как кто ответил)
Portnov:
Дык я тоже не говорю, что 7e00:0=0:7c00. Я же сказал, что 512 байт разницы не важны.
never_again:
А все потому, что Карлсон по крышам бегает. Моторчик у него сломался. Насколько я знаю, в реальном режиме надо циферку в сегментной составляющей shl на 4. А потом прибавить смещение. Вы же просто складываете. Про коммутативность сложения чисел я знаю.
Bob Johnson:
Ма-ма, ма-ма-рихуана. Правильно сделали, что не читали первый вопрос. Так еще лучше отвечать. Экстремальнее. Ничего не знаю, вопрос не читал, но отвечаю.
Блин. А ведь самый уважаемый мной человек в рассылке.
Привет я этим людям передал. Предложили мне передать вам несколько слов. Но по этическим соображениям отказался.
Евгений Иванов:
"Схоластика - тип филосовствований, при котором средствами человеческого разума пытаются обосновать принятые на веру идеи и формулы. Отлич. черта - острая борьба реализма и номинализма...". Может вы и правы в чем-то насчет схоластического спора. Повторяюсь, но насчет lea мне уже ответили. Дружно про него забудем.
И кстати(IMHO), MyIE2 - попытка, всего лишь имея движок IE подогнать Ослика под Оперу. Единственное, что в нем хорошо, так это динамическая смена прокси-сервера. Но Опера все-равно лучше.(Прошу прощения у модератора, что пишу всякий бред. Но промолчать не могу.)
_vt:
Ух. Обожаю читать доки на английском. Серьезно. Как-то больше доверия. А ведь попросил же не рассказывать мне правила формирования физического адреса в RM. Предвидел. Может и судьбу умею предсказывать. Надо попробовать.
Насчет offset погорячился. Все кроме _vt. Прелюдно прошу прощения.
Кроме того. Я так и не увидел ISBN и издательство книги Зубкова. А ведь много его цитируют. Что лень посмотреть(это относится к тем, у кого он есть. Просьба остальным не реагировать).
Человек по вопросу 4411 об авторских правах на написанную программу. Попробуй спросить на www.internet-law.ru. На форуме. Там больше шансов, что тебе ответят.
Вопрос отправлен: 11.11.2003, 11:36
Отправитель: Dead Krolik
[Следующий вопрос >>] [Список вопросов]
Отвечает Евгений Иванов
Добрый день, Dead Krolik!
Я ещё раз повторю - здесь Ассемблер и ничего более.
Спрашивайте поконкретней!
А насчёт 7C00 - схоластический спор!
Говорим об одном и том же, но по разному думаем и спорим до хрипоты!
Хорош!!!
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 11.11.2003, 16:58
Отправитель: Евгений Иванов
Отвечает Bob Johnson
Доброе время суток, Dead Krolik!
> Так еще лучше отвечать. Экстремальнее. Ничего не знаю, вопрос не читал, но отвечаю.
Вот именно. А в чем проблема?
> Блин. А ведь самый уважаемый мной человек в рассылке.
Людей надо принимать такими, как они есть... А ты "Блин"...
> Предложили мне передать вам несколько слов. Но по этическим соображениям отказался.
А зря. Было бы интересно услышать их мнения. Еще можно поискать тех, кто программирует на МК-61 и услышать их мнения ну и т.д.
> Обожаю читать доки на английском. Серьезно. Как-то больше доверия.
Вот это правильно.
> А ведь попросил же не рассказывать мне правила формирования физического адреса в RM
Да не, ну если бы ты был уверен в этих правилах, то не задавал бы такого вопроса. А ты не уверен... А уверенность это то, что нам нужно.
Еще раз (для закрепления) - сегмент умножается на 16 и к этому числу прибавляется смещение. Более чем уверен, что процессор не вызывает для умножения команду mul, а просто сдвигает сегмент на 4 разряда влево.
Так вот, все это дым вот той самой марихуаны. Посмотри, может быть там имелся ввиду сегмент 07C0? Тогда да, получился тот же самый адрес.
Просто 8086 и его реальный режим был настолько давно, что даже российские ученые умеют уже делать такие процессоры (методом копирования, конечно). Так что сомниваться в адресации повода нет. Кстати, ты бы мог сам и проверить - налабать программку дело 5-ти минут.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 11.11.2003, 22:57
Отправитель: Bob Johnson
Отвечает _vt
Приветствую Вас, Dead Krolik!
Именно в восьмом выпуске этой рассылки все правильно: ты внимательно читаешь? Там написано так
mov ax, 0x07c0
mov ds, ax
т.е. адрес равен 07с0:0000, что при преобразовании к нормализованному адресу (о чем написано в приведенном мной отрывке из книги) будет как раз равно 7с00h. Если плохо знаешь английский - купи словарь, и попытайся перевести приведенный мной кусок.
*** E-Man - can help you***
Ответ отправлен: 11.11.2003, 17:09
Отправитель: _vt
Отвечает Andrew Vext
Доброе время суток, Dead Krolik!
1. По-видимому только я просмотрел рассылку lowlewel. Там в ds загружается 0x07c0. А это в результате и дает 0x7c00. То есть адрес загрузочного сектора (который уже в памяти).
2. В интернете везде лежит отсканированный мной вариант книги Зубкова (обещали многие - а вот до конца сканирования добрался только я :-)
Если она вам нужна, то заходите на сайт www.netlib.narod.ru (или www.netlib.wallst.ru), идете по ссылке МАГАЗИН в верхнем меню, переходите в раздел Ассемблер, оформляете заказ и максимум через 2 дня у вас уже есть электронная версия книги (абсолютно бесплатно).
Кстати, там есть и ISBN и издательство.
Ответ отправлен: 11.11.2003, 13:39
Отправитель: Andrew Vext
Отвечает never_again
Добрый день, Dead Krolik!
Во-первых.
кто сказал, что 7e00:0=0:7c00?
Во-вторых.
Допустим это опечатка и должно быть 7е00:0=0:7е00.
Если ты попадаешь на один и тот же адрес, при разных значениях сегмента и смещения, это ещё ничего не значит.
отойди от своего 7e00:0000 на 0ffffh и попадёшь в конец сегмента. Сделай то же только от 0000:7е00 и вылетишь, на хрен, за границы сегмента, а вернее попадешь на один байт назад т.е. на 0000:7dff. Вот тебе и разница, умник, и нефиг на Карлсона незжать.
название: Assembler для DOS, Windows и UNIX
ISBN: 5-94074-003-0
издательство: ДМК
Ответ отправлен: 12.11.2003, 00:12
Отправитель: never_again
Вопрос № 4476 |
Уважаемые эксперты ,вопрос как узнать из приложения каталог из которого оно было запущено ну например где-то у меня лежит экзешник и эта папка входит в переменую окружения Path , естественно он стартует из любой директории , но приложение изначально точно не знает где оно будет лежать, как определить ту папку , где оно лежит на момент запуска , заранее благодарен...
Вопрос отправлен: 11.11.2003, 14:01
Отправитель: greg
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Здравствуйте, greg!
GetModuleFileName (0, ...) - вернет тебе полное (с путем) имя запущенного файла.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 11.11.2003, 22:58
Отправитель: Bob Johnson
Отвечает Евгений Иванов
Приветствую Вас, greg!
Для DOS:
;Ищет в окружении имя исполняемого файла и записывает каталог в FullName;
;OUT -> DI-адрес нуля в FullName;
proc GetDirExe ;
USES ds
mov ds,[ds:2Ch] ;Сегмент окружения
sub si,si
m10d2:
lodsb
or al,al
jnz m10d2
lodsb
or al,al
jnz m10d2
inc si
inc si
push si
m15d2:
lodsb
or al,al
jnz m15d2
dec si
dec si
std
m20d2:
lodsb
cmp al,''
jnz m20d2
cld
mov bptr [si+2],0
pop si
mov di,FullName
mov dx,di
call CopySiToDi
dec di
ret
endp
proc CopySiToDi ;
lodsb
stosb
or al,al
jnz CopySiToDi
ret
endp
Для Окон:
;----------------------------------------------------------
; Создаёт строку "путь (каталог),где запустилась программа"
; OUT=> EAX=адрес строчки; 0-ошибка
; ECX-длина строчки без нуля
proc CreateFullPathExe
USES esi,edi,ebx
Call GlobalAlloc,GPTR,MAX_PATH
or eax,eax
jz @@exit
xchg esi,eax
Call GetModuleFileName,[hInst],esi,MAX_PATH
or eax,eax
jz @@exit
xchg ebx,eax
@@m0:
dec ebx
mov al,[esi+ebx]
cmp al,''
jz @@m1
or ebx,ebx
jnz @@m0
xchg eax,ebx
jmp @@exit
@@m1:
inc ebx
mov [byte esi+ebx],0
mov [LenFullPathExe],ebx
mov eax,ebx
inc eax
Call GlobalReAlloc,esi,eax,GMEM_MOVEABLE
mov ecx,ebx
@@exit:
ret
endp
Удачи!
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 11.11.2003, 17:00
Отправитель: Евгений Иванов
Отвечает Portnov
Приветствую Вас, greg!
Под какую ось?
Если под винды, то GetModuleFileName(), а потом от полученного пути отрезаешь последнюю часть - имя файла.
Если под ДОС, то...
Команда, которой реально запущена программа (вместе с путем) находится после окружения. Надеюсь знаете, что окружение лежит по XY:0, где XY - это слово по адресу PSP:2Ch. Пример см. в приложении. Сделайте маленькую прожку с его использованием и посмотрите в дебаггере, как оно работатет. Только учтите, что там писался COM-файл, где PSP=CS.
С уважением, Portnov.
Приложение:
Ответ отправлен: 11.11.2003, 15:28
Отправитель: Portnov
Вопрос № 4477 |
Здравствуйте!
Где можно найти инфу про файловую систему FAT 16/32. Описание структуры итд.
Вопрос отправлен: 11.11.2003, 20:46
Отправитель: Ivan
[Следующий вопрос >>] [Список вопросов]
Отвечает never_again
В Интернете.
Ответ отправлен: 11.11.2003, 23:14
Отправитель: never_again
Вопрос № 4478 |
Здравствуйте, уважаемые эксперты!
Подскажите pls как при отладке программы под турбо-дебагером-32 поставить
точки останова, так чтобы отладчик останавливался на них, если имеется лишь
сама программа и загружаемые при ее запуске библиотеки. Ни исходного кода,
ни отладочных символов нет. Точки останова я поставил, но отладчик на них
не останавливается. Неужели обязательно необходимы отладочные символы. Как
же тогда исследовать программы для которых этих символов нет. Система W2k.
Конечно можно использовать и SI, но хотелось бы знать как в такой ситуации
работать с td32. Заранее благодарен 1!
Вопрос отправлен: 11.11.2003, 23:16
Отправитель: 1 (privat-soap@list.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает ASMодей
Приветствую Вас, 1!
Если дебаггер не останавливается на точках останова, то это значит, что до них не доходит управление. Может это вообще не команды, а какие-нибудь данные?
Ответ отправлен: 12.11.2003, 07:16
Отправитель: ASMодей
Отвечает Евгений Иванов
Добрый день, 1!
BreakPoint.
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 12.11.2003, 05:34
Отправитель: Евгений Иванов
Отвечает St
Привет, 1!
TD останавливается на брейкпойнтах и в программах без отладочной информации. Видимо вы устанавливаете брейкпойнты на тех участках кода, которые не используются в момент вашей работы с программой. Программирование под Windows основано на функциях обработки сообщених, поэтому в незнакомых программах иногда трудно найти код отвечающий за нужную операцию, он может быть в любом месте программы.
St
Ответ отправлен: 12.11.2003, 12:15
Отправитель: St
Вопрос № 4480 |
Доброе время суток, уважаемые эксперты. Возникла у меня надобность запустить одну программу, работающую в защищённом режиме (написано не мной и работает с расширителем Phar Lap) под Windows 2000. Беда в том, что эта программа требует прямого доступа к последовательному порту компьютера, а Win2K, сами знаете, этого не позволяет.
Возможно, многие из вас сталкивались с драйвером GIVEIO.SYS, который, собственно, и позволяет получить прямой доступ к физическим портам компьютера. Но он работает только с конкретным процессом, который он должен узнать по его ID, получаемому, например, по GetCurrentProcessId.
В общем, вопрос мой таков: как под Win2K я могу узнать ID моей DOS-программы, работающей к тому же в защищённом режиме?
Вопрос отправлен: 12.11.2003, 11:03
Отправитель: Джамаль (s_man80@inbox.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Artemy
Добрый день, Джамаль!
Ничего подобного мне делать не приходилось, но
попробуй запустить свою программу с помощью
CreateProcess, имхо, сможешь получить его ID из
структуры PROCESS_INFORMATION.
Там есть dwProcessId.
Ответ отправлен: 12.11.2003, 18:25
Отправитель: Artemy
Вопрос № 4481 |
Здравствуйте уважаемые эксперты. Я совсем недавно начал изучать ассемблер. И столкнулся со следующей проблемой. Ассемблирование в Tasm проходит нормально пишет, что всё в порядке. Но расширение asm на obj не сменяется, а при попытке компоновки при помощи Tlink пишет следующее "Fatal:No program entry point". Если вас не затруднит ответьте в чём моя ошибка. С уважением Сергей.
P.S. исходный текст программы самый элементарный взятый из какого-то учебника по Ассемблеру. Сводится к выводу сообщения на экран.
Вопрос отправлен: 12.11.2003, 15:50
Отправитель: Сергей (seyvor@rambler.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает PUSH
Добрый день, Сергей!Должен появиться новый файл *.obj а не поменяться расширение.Файл *.asm
должен остаться.
Ответ отправлен: 13.11.2003, 05:03
Отправитель: PUSH
Отвечает never_again
Доброе время суток, Сергей!
Kod prishli. esli object file ne sozdaetsia zna4it ne vsio tak gladko kak ty govorish.
Ответ отправлен: 12.11.2003, 16:36
Отправитель: never_again
Отвечает Евгений Иванов
Добрый день, Сергей!
В конце поставь:
end begin
Метка begin должна быть.
С неё начнётся выполнение программы.
Бывай!
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 12.11.2003, 22:20
Отправитель: Евгений Иванов
Отвечает Artemy
Добрый день, Сергей!
А ты случайно не .asm файл компоновать
пытаешься? :-)
Расширение файла не должно меняться, а должен
создаться новый файл .obj его и надо компоновать
tkink-ом
Ответ отправлен: 12.11.2003, 16:44
Отправитель: Artemy
Вопрос № 4482 |
Haire.
Подскажите, существует ли ассемблер под win32 с синтаксисом AT&T?
Вопрос отправлен: 12.11.2003, 17:31
Отправитель: JarTur
[Следующий вопрос >>] [Список вопросов]
Отвечает Artemy
Доброе время суток, JarTur!
Да существует.
NASM
GAS
http://netlib.wallst.ru/library/book0005/ch11_01.htm
Ответ отправлен: 12.11.2003, 18:12
Отправитель: Artemy
Отвечает dr_dolphin
Доброе время суток, JarTur!
Конечно, например gas из пакета DJGPP for Win32///
Всего хорошего !
Ответ отправлен: 13.11.2003, 07:34
Отправитель: dr_dolphin
Вопрос № 4484 |
ПРИВЕТ.Введите с клавиатуры массив z(5)в котором каждый элемент состоит из двух символов.В каждом элементе привезти к единице биты под четным номероми вывезти на экран двоичное изоюражение.
Здесь нужно использовать маскирацию.
Двоичное изображение-напр.0101.....
СПОСИБО.
Вопрос отправлен: 13.11.2003, 11:39
Отправитель: ARZU RAQIMOVA (PLUTONKA@list.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает never_again
Доброе время суток, ARZU RAQIMOVA!
я на этот вопрос уже отвечал дважды!!! третий раз я отвечу лишь потому, что вы девушка. третий - последний.
.model small
.stack 100h
.data
z dw 5 dup(?)
.code
assume ds:@data
start:
push @data
pop ds
push ds
pop es
; введём массив z и одновременно приведём к 1 чётные биты.
mov cx,10 ; 5 элементов по 2 символа - 5*2=10
mov ah,01 ; функчия для ввода одного символа с клавиатуры
; с ожиданием и эхо. (07 если нужно без эхо)
lea di,z ; di указывает на массив z
input:
int 21h ; принять символ в al
stosb ; сохранить символ в [di] и увеличить di на 1
or [di-1],01010101b ; привести к единице чётные биты.
loop input ; повторить операцию ввода
; а теперь распечатаем на экране то, что получилось.
mov cx,10 ; 5 элементов по 2 символа - 5*2=10
lea si,z ; si указывает на массив z
output:
lodsb ; положить в al число из [si] и увеличить si
; на 1
call outbin ; вывести на экран двоичное чило находящееся
; в al не повредив al
loop output
mov ah,07h ; подождать нажатия на любую клавишу
int 21h ; перед выходом из программы
mov ax,4c00h ; выйти из программы
int 21h
; эта функция печатает на экране число из al в двоичном
; представлении.
outbin proc
push ax ; сохранить регистр ах
push cx ; сохранить регистр сх
mov cx,8
ob_loop:
shl ax,1 ; положить в ah MSB of al
mov dl,ah ;
or dl,30h ; перевести цифру в ASCII символ
mov ah,02h ; отпечатать её (цифру) на экране
int 21h ;
loop ob_loop ; повторить операцию.
pop cx ; восстановить сх
pop ax ; восстановить сх
ret
outbin endp
end start
Ответ отправлен: 13.11.2003, 13:35
Отправитель: never_again
Вопрос № 4485 |
Уважаемые эксперты.
Как выключить компьютер под W2000? А точнее как включать привилегии?
Желательно поподробнее, а лучше пример кода. А то я мучаюсь и ничего не получается.
Заранее спасибо. Rust_br.
Вопрос отправлен: 13.11.2003, 17:46
Отправитель: Rust_br (rust_br@rambler.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает St
Привет, Rust_br!
Я тоже тут пытался как-то сделать такую программу, на Тасме вроде были какие-то проблемы, а на Масме помнится получилось (см Приложение (в путях наверное пропадут обратные слеши))
St
Приложение:
Ответ отправлен: 13.11.2003, 18:42
Отправитель: St
Вопрос № 4486 |
Добрый день ув.Эксперты!
Вопрос такой (cвязан с Visual Basic'ом).
Есть в dll строка
Failure db "Cannot load ",0Ah,0Dh
db "Yours system must be Win 95/98/ME ",0
Нужно,чтобы эта строка была в строковой переменной в VB
Dim TEXT as String
***************
В VB делаю так .......
Declare Function Myk Lib "bibl.dll" (ByRef Text As String) As Long
Public Function Show()
Dim TXT As String
Myk TXT
MsgBox TXT
End Function
А в dll делаю так.................
==============================
Myk proc krug:DWORD
xor eax,eax
xor ecx,ecx
mov eax,krug
lea ecx,[Failure]
mov [eax],ecx
mov eax,1
ret
Myk endp
===============================
И так.................
Myk proc krug:DWORD
invoke lstrlen,addr Failure
mov dword ptr ecx,krug
push edx
lea edx,Failure
invoke RtlMoveMemory,ecx,edx,eax
pop edx
mov eax,1
ret
Myk endp
Ничего не выходит....
Буду очень признателен если кто скажет в чём дело.....
[pAcU]
pacu@mail.ru
Вопрос отправлен: 13.11.2003, 18:08
Отправитель: pAcU (pacu@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Mortus Alighieri
Добрый день, pAcU!
IMHO, VISUAL BASIC & ASM = несовместимые вещи.
Бросай ты это дело!
Ответ отправлен: 17.11.2003, 17:50
Отправитель: Mortus Alighieri
Вопрос № 4487 |
Есть окно , в нём выведены координаты мыши (при запуске равны 0,0) нужно при движении изменять эти координаты в окне тоесть динамически показывать координаты мыши =)
Как это можно сделать ?
Я ловлю сообщение WM_MOUSEMOVE , lParam должен содержать какраз координаты мыши , но как это всё дело выводить в окно ??? и вообще объясните как выводить с помощью API значения переменных в окно !!!
Вопрос отправлен: 17.11.2003, 15:30
Отправитель: xCoRe
[Следующий вопрос >>] [Список вопросов]
Отвечает never_again
Приветствую Вас, xCoRe!
Вот функция которая писалась под 16 бит и была переделана под 32.
уверен, что есть подходящий API, который это делает, но эта тоже работает не плохо.
потом просто hex_to_string_buf отпечатываешь где хочешь и как хочешь.
;-----------------TURNS THE HEXADECIMAL NUMBER STORED IN ЕAX TO STRING
; eax = hex number to print
; no registers are affected
hex_to_string proc
apush
mov ebp,esp
mov ecx,10 ; number of posible decemal digits in number
; stored in eax
mov ebx,0
to_zero:
mov byte ptr hex_to_string_buf[ebx],0h
inc ebx
loop to_zero
mov ebx,10 ; decimal base
to_loop:
xor edx,edx
div ebx
push edx
cmp eax,0h
jnz to_loop
mov ebx,0h
to_prt: pop edx
or dl,30h
mov hex_to_string_buf[ebx],dl
inc ebx
cmp ebp,esp
jnz to_prt
apop
ret
.data?
hex_to_string_buf db 10 dup(?)
.code
hex_to_string endp
;-----------------END HEX TO STRING
Ответ отправлен: 17.11.2003, 21:01
Отправитель: never_again
Отвечает Mortus Alighieri
Здравствуйте, xCoRe!
всё это есть в примерах с TASM 5.0
Ответ отправлен: 17.11.2003, 17:49
Отправитель: Mortus Alighieri
Отвечает Artemy
Здравствуйте, xCoRe!
Используй API SetWindowText или посылай WM_SETTEXT нужному
окну.
Ответ отправлен: 17.11.2003, 15:55
Отправитель: Artemy
Отвечает Gibbel
Доброе время суток, xCoRe!
Создай в окне два контрола static, для x и y соответственно. И задавай им значения функцией SetDlgItemInt(). Либо же формировать строку функцией wsprintf(), и потом ее уже выводить на экран.
P.S.:Для вопросов по WinAPI создана отдельная рассылка. Пожалуйста, задавайте вопросы туда.
Ответ отправлен: 17.11.2003, 16:13
Отправитель: Gibbel
Отвечает Евгений Иванов
Здравствуйте, xCoRe!
Ну наконец-то заработал сайт!
УРА!
А это ветвь по Ассемблеру, а не по Win.
Но на радостях можно и ответить... :-)
Преобразуешь с помощью wsprintf в текст, а потом WM_SETTEXT или что-то подобное (SetWindowText).
УСЁ!
Чао.
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 17.11.2003, 15:47
Отправитель: Евгений Иванов
Отвечает ASMодей
Добрый день, xCoRe!
Странный вопрос. Ты пишешь: "Есть окно , в нём выведены координаты мыши..." и в конце спрашиваешь: "как выводить значения переменных в окно?". А ты что уже забыл как ты вывел начальные координаты?
Ну если забыл, то скажу. Чтобы вывести текст в любом месте окна используй функции API TextOut или DrawText(Ex). А преобразовать число в строку поможет функция wsprintf.
Ответ отправлен: 18.11.2003, 07:13
Отправитель: ASMодей
Отвечает Bob Johnson
Доброе время суток, xCoRe!
Вначале преобразуешь число в строку - wsprintf (buf, "%i", num), затем выводишь строку на экран - GetDC, TextOut, ReleaseDC.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 19.11.2003, 01:15
Отправитель: Bob Johnson
Форма отправки вопроса |
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
(C) 2002-2003 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (29) C / C++ (23) Perl (4) Builder / Delphi (20) Pascal (20) Basic / VBA (7) Java / JavaScript (10) PHP (15) Криптография (8) WinAPI (11) |
Пользователю Windows 95/98/Me (43) Windows NT/2000/XP (58) "Железо" (35) Поиск информации (22) |
Администратору Windows NT/2000/XP (38) Linux / Unix (18) |
Юристу Гражданское право (12) Семейное право (9) Трудовое право (10) КоАП (7) |
Отправить вопрос всем экспертам выбранной рассылки.
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||