Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 635
от 08.09.2003, 13:50
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 4105 Отправлено ответов: 12141 Активность: 295.7 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
Broken Sword Статус: Профессиональный Общий рейтинг: 120.63 URL: мой сайт [Подробней >>] |
Bob Johnson Статус: Профессиональный Общий рейтинг: 152.3 URL: Программирование [Подробней >>] |
Greys Статус: Доверительный Общий рейтинг: 119.68 [Подробней >>] |
_vt Статус: Профессиональный Общий рейтинг: 122.1 [Подробней >>] |
vitya Статус: Профессиональный Общий рейтинг: 108.05 [Подробней >>] |
masquer Статус: Профессиональный Общий рейтинг: 133.99 [Подробней >>] |
Евгений Иванов Статус: Профессиональный Общий рейтинг: 147.32 URL: Super Assembler Software Телефон: НСС +7 831 3107039 [Подробней >>] |
Ayl Статус: Профессиональный Общий рейтинг: 117.69 [Подробней >>] |
St Статус: Профессиональный Общий рейтинг: 106.69 [Подробней >>] |
Beeblebrox Статус: Профессиональный Общий рейтинг: 107.29 URL: Beeblebrox / TMA HomePage [Подробней >>] |
Никита Статус: Начальный Общий рейтинг: 103.12 [Подробней >>] |
Gibbel Статус: Профессиональный Общий рейтинг: 107.23 URL: Savage Metal Club - жизнь в стиле рок-н-ролл Телефон: +7 901 710 3146 [Подробней >>] |
Lynx Статус: Профессиональный Общий рейтинг: 116.2 Телефон: (8442) 750522 [Подробней >>] |
GL Статус: Опытный Общий рейтинг: 102.52 [Подробней >>] |
Eugene Статус: Профессиональный Общий рейтинг: 106.39 URL: мощный файловый архив [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 4074. Доброго время суток! У меня програма переходит в защ. реж. и GDT загружатся по адресу 0100h:0000h. К... (ответов: 3)
Вопрос № 4075. Уважаемые эксперты! Мой вопрос как продолжение и уточнение к вопросу № 4001. Я работаю с Windows Me ... (ответов: 1)
Вопрос № 4076. Здравствуйте, Эксперты!!!!!!!!! 0) Как дела? По Direct3Drm: 1) Где взять докуме... (ответов: 1)
Вопрос № 4077. Здравствуйте, уважаемые эксперты! В VC++6.0 пытаюсь создать файл асм вставкой (в приложении). Не пол... (ответов: 5)
Вопрос № 4078. Хлопцы, подскажите как в МАСМЕ подавить подчеркивание перед функциями и в конце функций ставит подле... (ответов: 3)
Вопрос № 4079. Почему при вызове функции DOS 48h (выделение блока памяти), всегда происходит ошибка #8 (нехватка па... (ответов: 5)
Вопрос № 4080. Ув. эксперты помогите Мне нужна версия 1.5 программы Help Development Studio, либо ключ к версии 1.8... (ответов: 1)
Вопрос № 4081. Уважаемые, Эксперты , есть надобность на ассемблере написать программу которая садится в трей , даже... (ответов: 1)
Вопрос № 4082. Интервью с разработчиками сайса: http://www.fcenter.ru/articles.shtml?interview/7386... (ответов: 2)
Вопрос № 4083. Приветствую глубокоуважаемых экспертов ! Такая проблемка - валяется в WINNT файлик со странным имене... (ответов: 2)
Вопрос № 4084. Здравствуйте, Эксперты! Можно ли (и если да, то как - ключи линкера) с помощью ТАСМ 5 (5.3) получить... (ответов: 4)
Вопросов: 11, ответов: 28
Вопрос № 4074 |
Доброго время суток!
У меня програма переходит в защ. реж. и GDT загружатся по адресу 0100h:0000h.
Как при этом мне загружать GDTr?
Спасибо за ответы!
Вопрос отправлен: 02.09.2003, 18:38
Отправитель: Madman (yo-ho@km.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Broken Sword
Здравствуйте, Madman!
если точно по этому адресу, то тогда GDT base должно быть равно 1000h, а лимит - какой получиться.
Т.е. вот такая структура у тебя в программе
gdt_size = $-GDT ; идет после GDT
gdtr dw gdt_size-1
dd 1000h
а загружать GDTR нада так: lgdt fword ptr lgdt
на письмо отвечу чуть позже
Ответ отправлен: 03.09.2003, 00:18
Отправитель: Broken Sword
Отвечает Bob Johnson
Доброе время суток, Madman!
В реальном режиме адрес 0100h:0000h соответствует адресу 01000h. Вот его и загружай в GDTR.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 03.09.2003, 00:34
Отправитель: Bob Johnson
Отвечает Greys
Приветствую Вас, Madman!
; Загрузка регистра GDTR:
lgdt [gd_reg]
gd_reg:
dw 8192 ;предел(размер GDT-1)
dd gdt;адрес GDT
С уважением,GREYS!
Ответ отправлен: 04.09.2003, 22:50
Отправитель: Greys
Вопрос № 4075 |
Уважаемые эксперты!
Мой вопрос как продолжение и уточнение к вопросу № 4001.
Я работаю с Windows Me и установил SoftIce v 4.05. При запуске Symbol Loader появляется строка “SoftICE is not active. Symbols cannot be loaded.” Понятно, что незагружен winice.exe. На любые попытки загрузить winice из командной строки или используя реестр появляется сообщение “Enhanced Windows 386 is already running”. Понятно мне сообщают, что SoftIce должен быть загружен до системы, но как это сделать. Подскажите возможен запуск SoftIce из Windows Me.
Спасибо.
Александр.
Вопрос отправлен: 02.09.2003, 20:29
Отправитель: Александр (tavo@permonline.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает _vt
Доброе время суток, Александр!
Очень плохо помню ME, вроде как он не обрабатывает autoexec.bat по умолчанию... Но так как в NT-системах в реестре есть параметр ParseAutoexec, который можно выставить в 1, и autoexec будет обрабатываться, могу предположить, что такая фича есть и в МЕ... Пропиши в autoexec.bat (возможно установщик сайса прописал там запуск сам, но обработка autoexec отключена, вот и не грузится...)
---===*** Updated E-Man 1.5 - it's cool!***===---
Ответ отправлен: 02.09.2003, 22:49
Отправитель: _vt
Вопрос № 4076 |
Здравствуйте, Эксперты!!!!!!!!!
0) Как дела?
По Direct3Drm:
1) Где взять документацию по программированию 3D графики через DirectX в режиме Retained Mode, т.е. описание функций, констант На русском или английском?
2) Как в Retained Mode "натягивать" текстуры на Mesh-объекты?
По Hook:
3) Как можно с помощью ловушки ловить ВСЕ нажимаемые клавиши (также и в консольных приложениях)?
4) Как отловить сообщение о завершении(перезагрузке) работы Windows.
P.S.: Тигран молодец - наиболее популярные вопросы собрал вместе.
Конечно, это все общие простые вопросы, ориентированные на asm'овцов, но там есть, что почитать всем.
Особенно закономерным был ответ Тиграна на вопрос "Зачем нужен ASM?" - он, как всегда, повернул в сторону портов и "самопальных" устройств.
Ответ на этот извечный вопрос Боба на его сайте немного менее предвзятый, т.е. "ASM позволяет лучше понять/узнать устройство компьтера"...
Это просто заметка.
Ещё хотел бы Евгению Иванову передать привет и сказать, чтобы он как можно реже использовал светлые цвета в ответах, а то читать невозможно.
Спасибо.
Вопрос отправлен: 02.09.2003, 22:07
Отправитель: URiS (urisff@inbox.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Приветствую Вас, URiS!
> 1) Где взять документацию...
Ну даже не знаю, но ты яндекс спрашивал? Вот, например, одна ссылка: http://www.programme.ru/archive/2001/5/052001_4_1.phtml, а вот - другая: http://pmg-ru.narod.ru/russian/rm02.htm...
Вообще же эта информация есть в MSDN и в DirectX SDK (тут я думаю тебе нужна версия 6). Кстати, а зачем тебе этот режим, ведь он - отстой?
> 3) Как можно с помощью ловушки ловить ВСЕ нажимаемые клавиши
Используй другой тип хука (под НТ есть WH_KEYBOARD_LL, который работает везде).
> 4) Как отловить сообщение о завершении(перезагрузке) работы Windows.
Тебе (твоему окну) придет сообщение WM_QUERYENDSESSION.
> P.S.: Тигран молодец - наиболее популярные вопросы собрал вместе.
Согласен.
> Конечно, это все общие простые вопросы, ориентированные на asm'овцов
:) Ну так и faq-то по асму! Да и в faq всегда вносят именно простые вопросы...
> Ответ на этот извечный вопрос Боба на его сайте немного менее предвзятый
Не понял - это мой извечный вопрос? Да ну, я никогда его не задавал ни себе, ни кому-либо другому, потому что считаю, что асм должен лежать в начале иерархической лестницы изучаемых языков программирования. Другое дело, что изучать асм ради этого обычный юзерский программер вряд ли станет, но в этой ситуации его программы будут хуже, чем если бы он его все-таки изучил.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 03.09.2003, 00:35
Отправитель: Bob Johnson
Вопрос № 4077 |
Здравствуйте, уважаемые эксперты!
В VC++6.0 пытаюсь создать файл асм вставкой (в приложении). Не получается. Если использовать Сишную строчку CreateFile ((char*)&filename, и тд) то все получается, а вот асм вставка выдает какую то ошибку при отладке: "Unhandled exception in prog.exe: 0xC00..05: Access Violation" Вот так ;(
Пасибо
Приложение:
Вопрос отправлен: 03.09.2003, 11:59
Отправитель: Faraon (faraon@hotmail.kz)
[Следующий вопрос >>] [Список вопросов]
Отвечает vitya
Здравствуйте, Faraon!
1. сначала надо push esi
2. потом не советую передавать как второй параметр 0.
Ответ отправлен: 04.09.2003, 13:19
Отправитель: vitya
Отвечает masquer
Доброе время суток, Faraon!
Может
mov esi, filename
и у меня только так получилось
mov eax, [CreateFile]
call eax
Ответ отправлен: 03.09.2003, 12:17
Отправитель: masquer
Отвечает _vt
Приветствую Вас, Faraon!
Как не пытался добиться от VC6 каких-то результатов - исключение "Privileged instruction" :-((
А вот С++ Builder 6 ("борландовская поделка", как некоторые говорят :-)) нормально отреагировал - и запускается и файл создается... :-)
---===*** Updated E-Man 1.5 - it's cool!***===---
Ответ отправлен: 03.09.2003, 13:52
Отправитель: _vt
Отвечает Bob Johnson
Доброе время суток, Faraon!
В VC++ надо писать:
Call dword ptr [CreateFile]
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 03.09.2003, 14:32
Отправитель: Bob Johnson
Отвечает Евгений Иванов
Добрый день, Faraon!
Проблема с адресами...
Ответ отправлен: 03.09.2003, 23:34
Отправитель: Евгений Иванов
Вопрос № 4078 |
Хлопцы, подскажите как в МАСМЕ подавить подчеркивание перед функциями и в конце функций ставит подлец - @0. Т.е. public функция MyFunc в OBJ выглядит как _MyFunc@0
Спасибо
Вопрос отправлен: 03.09.2003, 13:02
Отправитель: имя
[Следующий вопрос >>] [Список вопросов]
Отвечает _vt
Здравствуйте, имя!
А тебе не все равно? Вроде так положено у M$, если будешь пользовать TASM - всё будет в нормальном виде...
*** Updated E-Man 1.5 - it's cool! Join to us, if you're a real rusfaq expert! :-()***
Ответ отправлен: 03.09.2003, 20:23
Отправитель: _vt
Отвечает Ayl
Приветствую Вас, имя!
Похоже, что MASM не поддерживает такую опцию, только опции с регистрозависимыми именами.
Попробуй в свем коде заменить все PUBLIC и EXTRN таким образом:
Было: PUBLIC MyFunc
Стало: PUBLIC Pascal MyFunc
Было: EXTRN MyFunc
Стало: EXTRN Pascal MyFunc
Правда, в этом случае он переведет все идентификаторы к заглавные буквы. Но, думаю, это не страшно.
А насчет @0 я не знаю... Как тебе удалось это получить? Хотя бы пример прислал, что ли. И командную строку для компиляции.
Хотя возможно, что указание паскаль-соглашения поможет и в этом случае.
Ответ отправлен: 03.09.2003, 13:58
Отправитель: Ayl
Отвечает Евгений Иванов
Доброе время суток, имя!
Языковые вещи: или С++, или Windows.
Попробуй STDCALL.
Ответ отправлен: 03.09.2003, 23:33
Отправитель: Евгений Иванов
Вопрос № 4079 |
Почему при вызове функции DOS 48h (выделение блока памяти), всегда происходит ошибка #8 (нехватка памяти), а в BX - 0 ?
Sysinfo 6 показывает более 300 кб памяти.
Заранее спасибо!
Вопрос отправлен: 03.09.2003, 15:46
Отправитель: AlX
[Следующий вопрос >>] [Список вопросов]
Отвечает St
Привет, AlX!
Может быть вы забыли сначала освободить память ненужную вашей программе, но принадлежащую ей?
St
Ответ отправлен: 04.09.2003, 20:11
Отправитель: St
Отвечает Beeblebrox
Приветствую Вас, AlX!
А ты перед этим освободил память? Ведь у тебя, небось, COM-файл?
Ответ отправлен: 03.09.2003, 16:12
Отправитель: Beeblebrox
Отвечает Ayl
Здравствуйте, AlX!
Стандартная ошибка. Файл небось типа COM? При загрузке таких файлов ДОС выделяет процессу всю доступную на данный момент память, поэтому выделить "еще немножко" уже не может. Для того, чтобы в процессе работы можно было выделять память, надо при старте программы освободить незанятую. Как это может выглядеть - см.в Приложении.
Сначала прога выводит максимальный объем доступной памяти после загрузки программы. Потом переносит свой стек и освобождает память по максимуму. Снова выводит размер максимального блока. Потом пытается выделить 34h параграфа. Если получается - выводит сообщение, что память выделена, иначе - что памяти нет. В конце опять выводит размер блока памяти.
Неболшое замечание. ДОС выделяет не всю доступную память, а весь блок памяти, в который загружается прога. Например, если запустить командную строку ДОС и выполнить мою прогу, то результат будет такой:
Свободно: 0000
Свободно: 8FF9
Память выделена успешно!
Свободно: 8FC4
Все происходит, как и должно быть. Прога загрузилась и захватила всю память (свободно - 0 параграфов). Потом освободила ненужное (получили 8FF9 свободных параграфов, около 575К), потом выделили 34h параграфов и получили свободное место в 8FC4 параграфа. Замечу, что 8FF9 - 8FC4 = 35 = 34 + 1. Один лишний параграф расходуется на заголовок в цепочке MCB - Memory Control Block.
Но если потом запустить, например, keyrus, то результат изменится:
Свободно: 0007
Свободно: 8D31
Память выделена успешно!
Свободно: 8CFC
То есть ДОС имеет свободный кусок памяти размером в 7 параграфов после запуска программы! Происходит это из-за того, что keyrus, будучи резидентной программой, после своей загрузки освобождает часть памяти, занимаемой загрузчиком. Но этот освобожденный блок не привязывается к блоку, в который загружается моя прога. В результате он по-прежнему остается свободным.
Приложение:
Ответ отправлен: 03.09.2003, 16:59
Отправитель: Ayl
Отвечает _vt
Доброе время суток, AlX!
А откуда ты ее вызываешь?? По умолчанию, при запуске вся свободная DOS-память уже отдана программе, и для выделения блока памяти надо переопределить эти размеры функцией 4Eh(realloc - в языке С)... Ужимаешь память основной программы этой функцией и уже потом выделяешь блок памяти функцией 48h... Думаю, пример приводить не стоит - если не понятно - архив рассылки по DOS
*** Updated E-Man 1.5 - it's cool! Join to us, if you're a real rusfaq expert! :-()***
Ответ отправлен: 03.09.2003, 20:23
Отправитель: _vt
Отвечает Bob Johnson
Добрый день, AlX!
Потому что изначально вся свободная память отдается твоей программе. Ты прежде всего должен изменить размер выделенного тебе блока на нужный (кажется 4Ah) а уже потом дополнительно выделять еще память.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 03.09.2003, 21:09
Отправитель: Bob Johnson
Вопрос № 4080 |
Ув. эксперты помогите
Мне нужна версия 1.5 программы Help Development Studio,
либо ключ к версии 1.8
Приложение:
Вопрос отправлен: 04.09.2003, 00:06
Отправитель: lonfst
[Следующий вопрос >>] [Список вопросов]
Отвечает Никита
Приветствую Вас, lonfst!
смотри DownLoad.ru - недавно видел.
Бывай.
Ответ отправлен: 04.09.2003, 16:58
Отправитель: Никита
Вопрос № 4081 |
Уважаемые, Эксперты , есть надобность на ассемблере написать программу которая садится в трей , даже желательно чтобы в панель задач не садилась иконка программы только в трей, желательно только костяк программы без лишних деталей ,чтобы легче было понять механизм работы, заранее благодарен.....
Вопрос отправлен: 04.09.2003, 08:03
Отправитель: greg
[Следующий вопрос >>] [Список вопросов]
Отвечает Евгений Иванов
Добрый день, greg!
mov esi, ofs nid_0
mov [(t NOTIFYICONDATA esi).hWnd], ebx
mov eax, [wc.hIcon]
mov [(t NOTIFYICONDATA esi).hIcon], eax
Call Shell_NotifyIcon, NIM_ADD, esi
;-------------
Call Shell_NotifyIcon, NIM_DELETE, ofs nid_0
Ответ отправлен: 05.09.2003, 16:44
Отправитель: Евгений Иванов
Вопрос № 4082 |
Интервью с разработчиками сайса:
http://www.fcenter.ru/articles.shtml?interview/7386
Вопрос отправлен: 04.09.2003, 08:53
Отправитель: Broken Sword (brokensword@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Gibbel
Здравствуйте, Broken Sword!
Спасибо. Отправляю в рассылку. ;-)
Ответ отправлен: 04.09.2003, 13:18
Отправитель: Gibbel
Отвечает Lynx
Приветствую Вас, Broken Sword!
Отправил в массы.
Ответ отправлен: 04.09.2003, 22:02
Отправитель: Lynx
Вопрос № 4083 |
Приветствую глубокоуважаемых экспертов !
Такая проблемка - валяется в WINNT файлик со странным именем "?" и не открывается даже на чтение. Весьма интересно было бы получить идентификатор или хендл процесса открывшего этот загадочный файл. Может кто подскажет как ?
Вопрос отправлен: 04.09.2003, 10:35
Отправитель: Beetle
[Следующий вопрос >>] [Список вопросов]
Отвечает GL
Доброе время суток, Beetle!
Скандиск запустить бы для начала, ведь знак "?" запрещён в имени файла. Может это сбой в структуре каталога.
Ответ отправлен: 04.09.2003, 14:01
Отправитель: GL
Отвечает Eugene
Здравствуйте, Beetle!
А чем ты видишь этот файлик? Это очень похоже на то, как Total Commander показывает файлы, в именах которых есть нестандартные символы. Попробуй посмотреть explorer'ом на этот файл и удалить из него же. Если это не поможет посмотреть какие файлы используются помогут утилы от Sysinternals -> www.sysinternals.com
Ответ отправлен: 04.09.2003, 11:08
Отправитель: Eugene
Вопрос № 4084 |
Здравствуйте, Эксперты!
Можно ли (и если да, то как - ключи линкера) с помощью ТАСМ 5 (5.3) получить
*.exe для работы в win2000 (Nt)?
Вопрос отправлен: 04.09.2003, 13:44
Отправитель: Anatoly (tolathome@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает St
Привет, Anatoly!
Что-то вроде:
tasm32 /zi /ml /m2 $(NAME).asm
tlink32 /Tpe /aa /c /x /V4.0 /v $(OBJS),$(NAME),, $(IMPORT), $(DEF)
St
Ответ отправлен: 04.09.2003, 20:15
Отправитель: St
Отвечает _vt
Приветствую Вас, Anatoly!
Тебе надо, чтобы программа работала в версиях виндов не ниже 5.0 ???(Win2000=NT5)
Тогда попробуй добавь в ниже приведенную строку ключ /V5.0
Если ты имеешь в виду просто под Win32 любой версии(95/98/ME/NT4/2000/XP), тогда так:
tasm.exe /m /ml prog.asm
tlink32.exe /Tpe /aa /c /x prog.obj
*** Updated E-Man 1.5 - it's cool! Join to us, if you're a real rusfaq expert! :-()***
Ответ отправлен: 04.09.2003, 23:24
Отправитель: _vt
Отвечает Bob Johnson
Приветствую Вас, Anatoly!
Можно, а почему нет? Ключи такие: tlink32 -x -Tpe -ap -c -V4.0
Если хочешь, зайди ко мне на страницу - там в разделе faq есть полный пример батника для компиляции win32 приложения.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 05.09.2003, 14:46
Отправитель: Bob Johnson
Отвечает Евгений Иванов
Здравствуйте, Anatoly!
tasm32.exe /mv40 /m9 /t /ml /kh200000 /ie:\asm\include main.asw,main.obj >_errors.obj
tlink32.exe /P /V4.0 /Af:512 /x /Tpe /aa /c main.obj ,main.exe,,,main.def,main.res
Ответ отправлен: 05.09.2003, 16:44
Отправитель: Евгений Иванов
Форма отправки вопроса |
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
(C) 2002-2003 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (35) C / C++ (28) Perl (5) Builder / Delphi (17) Pascal (21) Basic / VBA (7) Java / JavaScript (10) PHP (10) Криптография (8) WinAPI (15) |
Пользователю Windows 95/98/Me (48) Windows NT/2000/XP (63) "Железо" (41) Поиск информации (23) |
Администратору Windows NT/2000/XP (29) Linux / Unix (10) |
Юристу Гражданское право (8) Семейное право (5) Трудовое право (6) КоАП (5) |
Отправить вопрос всем экспертам выбранной рассылки.
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||