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

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.

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
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.


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


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

В избранное