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

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


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

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

Выпуск № 619
от 19.08.2003, 08:30

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


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

Евгений Иванов
Статус: Профессиональный
Общий рейтинг: 148.92
URL: Super Assembler Software
Телефон: НСС +7 831 3107039
[Подробней >>]
Ramzes
Статус: Профессиональный
Общий рейтинг: 116.52
URL: Microsoft homepage
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 152.2
URL: Программирование
[Подробней >>]
 
Greys
Статус: Начальный
Общий рейтинг: 116.07
[Подробней >>]
Tigran K. Kalaidjian
Статус: Профессиональный
Общий рейтинг: 126.47
URL: Методы оптимизации работы ПК
[Подробней >>]
Lynx
Статус: Профессиональный
Общий рейтинг: 117.66
Телефон: (8442) 750522
[Подробней >>]
 
baldr
Статус: Профессиональный
Общий рейтинг: 111.72
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
masquer
Статус: Профессиональный
Общий рейтинг: 134.92
[Подробней >>]
St
Статус: Профессиональный
Общий рейтинг: 106.83
[Подробней >>]
 
Zedr0n
Статус: Доверительный
Общий рейтинг: 107.91
[Подробней >>]
dimka
Статус: Опытный
Общий рейтинг: 145.51
Телефон: (231)-4-43-85
[Подробней >>]
Maverick
Статус: Профессиональный
Общий рейтинг: 126.17
URL: Эхоконференция по вирмейкингу
Телефон: 89039415024 (BeeLine GSM)
[Подробней >>]
 
[L2]Max
Статус: Доверительный
Общий рейтинг: 121.8
[Подробней >>]
Eugene
Статус: Профессиональный
Общий рейтинг: 106.73
URL: мощный файловый архив
[Подробней >>]
Andrew Vext
Статус: Профессиональный
Общий рейтинг: 105.25
[Подробней >>]
 
_vt
Статус: Профессиональный
Общий рейтинг: 118.74
[Подробней >>]


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

Вопрос № 3912. Здравствуйте. Можно ли в DOS (точнее в w9x через "\\.\vwin32") демонтировать диск? Точнее ... (ответов: 3)
Вопрос № 3913. Здравствуйте. Всегда ли процесс запущенный в памяти привязян к конкретному файлу на диске? Можно ли... (ответов: 5)
Вопрос № 3915. День добрый, уважаемые эксперты! Наверное все из вас начинали изучать ассемблер под дос, только пото... (ответов: 10)
Вопрос № 3916. Добрый день ! Напомните, пожалуйста, номер вопроса, в котором спрашивали про получение работы ассемб... (ответов: 1)
Вопрос № 3918. Здравствуйте все! Возник у меня такой вопрос - как в W9х можно узнать хендл окна завершения работы п... (ответов: 5)
Вопрос № 3919. Здраствуйте уважаемый эксперт! Я напечатал в блокноте progu и когда я начал компилировать ее появила... (ответов: 10)

Вопросов: 6, ответов: 34


 Вопрос № 3912

Здравствуйте.
Можно ли в DOS (точнее в w9x через "\\.\vwin32") демонтировать диск? Точнее сделать так,
чтобы система забыла все что она знала о формате диска и перечитала эту информацию с самого диска
из загрузочного сектора? Получается, что после изменения формата система помнит каким он был до этого
и соответственно обращается с ним.



Вопрос отправлен: 13.08.2003, 21:32
Отправитель: eugene (v_eugene@list.ru)

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

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

Приветствую Вас, eugene!
Нет, только в Linux.
DOS монтирует диски на стадии MBR (загрузки), поэтому надо
перезагружаться.


Ответ отправлен: 14.08.2003, 00:50
Отправитель: Евгений Иванов


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

Приветствую Вас, eugene!
Нет, только в Linux.
DOS монтирует диски на стадии MBR (загрузки), поэтому надо
перезагружаться.


Ответ отправлен: 14.08.2003, 00:51
Отправитель: Евгений Иванов


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

Приветствую Вас, eugene!
Нет, только в Linux.
DOS монтирует диски на стадии MBR (загрузки), поэтому надо
перезагружаться.


Ответ отправлен: 14.08.2003, 00:51
Отправитель: Евгений Иванов


 Вопрос № 3913

Здравствуйте.
Всегда ли процесс запущенный в памяти привязян к конкретному файлу на диске?
Можно ли создать в памяти файл и запустить его на выполнение?
Есть необходимость удалить .exe файл из самого себя. Это нужно сделать немедленно после окончания
его работы не дожидаясь перезагрузки системы.



Вопрос отправлен: 13.08.2003, 21:37
Отправитель: eugene (v_eugene@list.ru)

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

Отвечает Ramzes

Доброе время суток, eugene!
По моему сам себя файл удалить не сможет, т.к. во время выполнения он используется системой.
Первое что приходит в голову это добавить в Scheduled Tasks задачу, которая после выполнения файла запустися и сотрет этот файл.

Ответ отправлен: 14.08.2003, 14:07
Отправитель: Ramzes


Отвечает Bob Johnson

Добрый день, eugene!
> Есть необходимость удалить .exe файл из самого себя. Это нужно сделать немедленно после окончания его работы не дожидаясь перезагрузки системы.
Это возможно только через bat файл, т.е. exe-файл создает на диске bat файл, которому передает управление, а сам завершает выполнение. bat файл дожидается завершения работы exe и удаляет его, после чего и себя (bat файл это может). Он также может удалить каталог, в котором находилась программа.

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


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


Отвечает Greys

Доброе время суток, eugene!
Если необходимо удалить EXE-шник из самого себя, то можно сделать следующую хитрость:
создать процедуру внутри файла, которая создаст some.bat файл со следующим содержанием и запустит его:
@echo off
del "some.exe"
del "some.bat"
Можно через командную строку.
С уважением,Greys!


Ответ отправлен: 14.08.2003, 02:19
Отправитель: Greys


Отвечает Tigran K. Kalaidjian

Здравствуйте, eugene!
Можно сделать так:
Программа (например myprog.exe) создает пакетный BAT-файл в директории, в которой сама находится:
---kuku.bat---------------------
del myprog.exe > nul
del kuku.bat > nul
--------------------------------
Затем завершается, передавая ему управление.

Ответ отправлен: 14.08.2003, 10:34
Отправитель: Tigran K. Kalaidjian


Отвечает Lynx

Здравствуйте, eugene!
А использовать bat файлы не легче???
В обработчик завершения проги пихаешь запуск своего bat файла (напрмер: Delete.bat), а в batник пихаешь:
del proga.exe
del delete.bat


Ответ отправлен: 15.08.2003, 17:05
Отправитель: Lynx


 Вопрос № 3915

День добрый, уважаемые эксперты!
Наверное все из вас начинали изучать ассемблер под дос, только потом переходили на Windows. Вот и настал тот день, когда и я начал (не первый раз). Увидя, сколько шаблонного текста нужно для создания обыкновенного окна, я был немного удивлен.
Вот вы наизусть знаете эту вещь? Просто когда я пишу программу, и в ней находится кусок кода, который написал не я, меня это немного смущает. Нет, конечно, нужно знать из чего состоит эта структура, ведь в ней заложены необходимые параметры создаваемого окна. Но, вы сможете ее сесть и написать "за один раз"? Вот такой странный у меня вопрос. Просто программирование под виндовс сильно отличается от доса. Все же многие языки программирования под дос немного похожи, поэтому ассемблер под него выучить не так уж и сложно. Да, под винды программирование очень похоже Си и Ассемблер. Но я и си под вин. не изучал. Спасибо.



Вопрос отправлен: 14.08.2003, 15:59
Отправитель: a1 (a111_666@mail.ru)

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

Отвечает baldr

Доброе время суток, a1!
Самый авторитетный чувак для меня при программировании в WinApi - Чарльз Петцольд. Он говорит примерно следующее - нет ничего плохого, если вы просто тупо скопируете всю эту ботву про создание окон и кнопок и займетесь более важными вещами вместо того, чтобы исправлять баги в том, что налажали по памяти... :)

Ответ отправлен: 14.08.2003, 18:48
Отправитель: baldr


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

Доброе время суток, a1!

Я один раз это написал и больше писать не буду.
Теперь я добавляю в таблицу сообщения, которые надо обработать и адреса
подпрограмм для их обработки.
Подобная таблица используется и для диалоговых окон, и для обработки
уведомляющих сообщений.
По сути, у меня есть как-бы шаблонный проект, я его беру, копирую все файлы
в другой каталог, и просто добавляю что-то определённое для этого проекта,
и стираю лишнее.

Удачи!


Ответ отправлен: 15.08.2003, 00:50
Отправитель: Евгений Иванов


Отвечает Bob Johnson

Приветствую Вас, a1!
> Вот вы наизусть знаете эту вещь?
Помнить все это наизусть - это хорошо, но вот запоминать такие вещи специально - это совсем необязательно. На этот случай у тебя под рукой всегда есть MSDN или другой справочник API функций и структур. А когда ты напишешь несколько программ, тогда начнеш автоматически запоминать основные вещи.
> и в ней находится кусок кода, который написал не я, меня это немного смущает
Ну а ты как хотел? Ты же все равно вызываешь API функции или используешь чьи-то библиотеки и это нормально. Нельзя же сесть и с нуля начать писать всю ось, чтобы "ничего не смущало". Кстати, а про какие не твои куски кода ты говоришь?
> Но, вы сможете ее сесть и написать "за один раз"?
Если есть help - то да, без help - неизвестно, зависит от поставленных задач. Под windows реализовано значительно больше функций, чем под дос, так что и знать (помнить) тут надо тоже больше. И бессмысленно все это запоминать специально, главное знать, как это можно быстро найти и где, а основной мыслительный процесс (это - главное) надо направлять при этом не на воспоминания, что где находится, а на составление алгоритма работы программы.

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


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


Отвечает masquer

Здравствуйте, a1!
Это можно один раз сделать, а потом копировать и править, если нужно.

Ответ отправлен: 14.08.2003, 17:37
Отправитель: masquer


Отвечает St

Привет, a1!
Я обычно беру простейший пример из пакета тасма (подправленный конечно) как шаблон и добавляю нужный мне код. Его надо сначала изучить и понять, тогда он не будет казаться чужим :)
Насчет Си - я его тоже не изучал и сам с трудом могу написать на нем хоть что-нибудь, но для перевода кода примеров на асм знать его хорошо и не обязательно - сложные места встречаются достаточно редко.
St

Ответ отправлен: 15.08.2003, 13:39
Отправитель: St


Отвечает Zedr0n

Доброе время суток, a1!
Ну, начнем с того, что это запоминать не надо. Нужно просто иметь MSDN под рукой, который тебе и подскажет, какие параметры, какие структуры и т.д, а вообще под винды я сам чаще использувую диалоговые окна, описываешь в ресурсах и юзаешь, никаких проблем с созданием, да и намного быстрее кодить получается. В принципе, проще юзать консольные приложения, для них окно создавать не надо ;)


Ответ отправлен: 14.08.2003, 16:10
Отправитель: Zedr0n


Отвечает Tigran K. Kalaidjian

Добрый день, a1!
За "один раз" у меня без ошибок не получается ничего и никогда =) А это уж и подавно... Хотя бы потому, что в процессе набора рука слетает и получается уже совсем не то... Т.к. на экран не смотрю, то и не замечаю...8(

Ответ отправлен: 14.08.2003, 16:14
Отправитель: Tigran K. Kalaidjian


Отвечает Lynx

Доброе время суток, a1!
А их не обязательно все помнить.
1. В любом справочнике даны описания этих структур.
2. В заголовочных файлах от любого компилятора их найти тоже можно!!! :)


Ответ отправлен: 15.08.2003, 17:05
Отправитель: Lynx


Отвечает dimka

Доброе время суток, a1!
Так в чём заключается твой вопрос?


Ответ отправлен: 18.08.2003, 10:48
Отправитель: dimka


Отвечает Maverick

Приветствую Вас, a1!
В большинстве тривиальных задач ты все равно не напишешь 100% свое, все уже давно написано, главное понимать то, что ты пишешь, тогда это не тупое передирание.
Я мало на память помню, пользуюсь справочниками и исходниками.


Ответ отправлен: 18.08.2003, 11:13
Отправитель: Maverick


 Вопрос № 3916

Добрый день !
Напомните, пожалуйста, номер вопроса, в котором спрашивали про получение работы ассемблеристом.
В своем архиве и на RusFAQ.ru не получилось найти, ибо не помню ключевых слов.
Заранее спасибо
Тигран Калайджян
P.S. 2Greys: у меня все эти доки есть. Что до Billy Belcebu (в переводе в виде CHM-справки), то я его выкладывал и даже написал сюда, в рассылку:
http://kalaidjian.narod.ru/vir/vgw32.rar



Вопрос отправлен: 14.08.2003, 16:09
Отправитель: Tigran Kalaidjian

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

Отвечает dimka

Доброе время суток, Tigran Kalaidjian!
?????!!!!!


Ответ отправлен: 18.08.2003, 10:52
Отправитель: dimka


 Вопрос № 3918

Здравствуйте все!
Возник у меня такой вопрос - как в W9х можно узнать хендл окна завершения работы программы (которое вызывается тремя кнопками). Пробовал FindWindow, в качестве имени окна передавал "Завершение работы программы" - а возвращается 0. :((
Вообще, мне это надо, чтобы своей программой закрывать его (например, по событию таймера). Может, есть какой-то более простой способ (например, отслеживание нажатия этих кнопок)?
Заранее благодарен :))
ЗЫ: по предложению Тиграна - вещь полезная, если у кого времени на это хватит - будет прекрасно :))



Вопрос отправлен: 15.08.2003, 06:35
Отправитель: Ренат (renatka_f@mail.ru)

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

Отвечает Bob Johnson

Приветствую Вас, Ренат!
Ты имеешь ввиду окно, которое открывается по Ctrl-Alt-Del? Нууу... Во время его появления на экране системная виртуальная машина больше ничего и не делает, кроме как обрабатывает это окно... Попробуй запусти winamp, а потом нажми на 3 кнопки - у тебя winamp начнет сразу заикаться (т.е. повторять тот участок буфера, который был у него на момент перед нажатием этих трех кнопок).
В то время, как на экране отображается это окно может работать только
DOS задача. А из нее ты вряд ли что сделаешь...
А вообще - для чего тебе это надо? Чтобы не
"сняли" твою программу? Тогда уж лучше используй RegisterServiceProcess, тогда твоя программа вообще не появится в этом списке.
Но в любом случае любая другая программа, которая позволяет завершать процессы (а это не сложно -
TerminateProcess и все дела), FAR, например или WinTop из KernelToys смогут твой процесс убить. А чтобы и их обламать, надо уже патчить ToolHelp32, а это уже гораздо сложнее...

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


Ответ отправлен: 15.08.2003, 16:26
Отправитель: Bob Johnson


Отвечает Ramzes

Доброе время суток, Ренат!
Странно, FindWidow должна была найти окно...
может там какая-то проблема с русским текстом ?

Ответ отправлен: 15.08.2003, 16:32
Отправитель: Ramzes


Отвечает [L2]Max

Добрый день, Ренат!
Отслеживать нажатие кнопок это есьм HOOK метод, а alt-ctrl-del это системный хук и отловить его трудоемко, посмотри в справочнике (на крайняк зайди на firststep.ru), и посмотри функцию что то типа завершение работы

Ответ отправлен: 15.08.2003, 09:31
Отправитель: [L2]Max


Отвечает Greys

Доброе время суток, Ренат!
Зачем отлавливать хендл окна,а потом его закрывать, когда все намного проще, запрети, точнее подови действие трех веселых кнопочек. В user32.dll есть хорошая функция, которая заставляет винду забыть о этом злосном сочетании кнопок, хотя винда и забывает комбинации alt-tab и ctrl-esc, но и конечно же ctrl-alt-del. Т.е. вызываешь эту функцию SystemParametersInfoA(97,1,0,0), а разрешить злостнные кнопочки можно этой же функцией, но с другим вторым параметром SystemParametersInfoA(97,0,0,0). Так что думайте как ее лучше вызвать, можно даже через командную строку или ShellExecute или...
P.S. В скобочках указаны параметры!!!
С уважением, Greys!

Ответ отправлен: 15.08.2003, 21:55
Отправитель: Greys


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

Доброе время суток, Ренат!
Насчёт кнопок не получится...
А так это ООчень системное окно и его достать будет трудно!..



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


 Вопрос № 3919

Здраствуйте уважаемый эксперт!
Я напечатал в блокноте progu и когда я начал компилировать ее появилась ошибка:
ml Proga.asm /AT
Microsoft Macro Assembler Version 6.11
Copyright Microsoft Corp 1981-1993. All rights reserved.
Assembling: Proga.asm
fatal error A1000: cannot open file: Proga.asm
И какую бы программу я не начал бы компилировать появляется эта ошибка.
А в TASM"е то же не получается.Когда я ввожу: TASM.EXE hello-1.asm то пишется что C:Windows asm.exe не является приложением Win32 и пишется что отказано в доступе.Тогда я пишу : TASM32.EXE hello-1.asm и появляется ошибка:
...
**Fatal** Command line: Can"t locate file: hello-1.asm
Error messages: 1
Warning messages: None
Passes: 1



Вопрос отправлен: 15.08.2003, 08:26
Отправитель: Олег

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

Отвечает Bob Johnson

Добрый день, Олег!
У тебя компилятор не может найт файл proga.asm - а куда ты его сохранил после того, как напечатал в блокноте? Я бы рекомендовал тебе использовать для начала FAR - в нем видно, в каком каталоге ты создал файл, путь к каталогу, где у тебя находится ml.exe (tasm.exe) пропиши в переменную PATH, а для компиляции - используй батники (bat файлы).

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


Ответ отправлен: 15.08.2003, 16:11
Отправитель: Bob Johnson


Отвечает dimka

Добрый день, Олег!
Компилируй при помощи TasmX


Ответ отправлен: 15.08.2003, 10:36
Отправитель: dimka


Отвечает Bob Johnson

Добрый день, Олег!
У тебя компилятор не может найт файл proga.asm - а куда ты его сохранил после того, как напечатал в блокноте? Я бы рекомендовал тебе использовать для начала FAR - в нем видно, в каком каталоге ты создал файл, путь к каталогу, где у тебя находится ml.exe (tasm.exe) пропиши в переменную PATH, а для компиляции - используй батники (bat файлы).

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


Ответ отправлен: 15.08.2003, 16:11
Отправитель: Bob Johnson


Отвечает Ramzes

Доброе время суток, Олег!
Наверное компилятор и исходник у тебя находятся в разных каталогах и поэтому компилятор не может найти файл.

Ответ отправлен: 15.08.2003, 16:27
Отправитель: Ramzes


Отвечает Bob Johnson

Добрый день, Олег!
У тебя компилятор не может найт файл proga.asm - а куда ты его сохранил после того, как напечатал в блокноте? Я бы рекомендовал тебе использовать для начала FAR - в нем видно, в каком каталоге ты создал файл, путь к каталогу, где у тебя находится ml.exe (tasm.exe) пропиши в переменную PATH, а для компиляции - используй батники (bat файлы).

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


Ответ отправлен: 15.08.2003, 16:11
Отправитель: Bob Johnson


Отвечает Eugene

Доброе время суток, Олег!
Если у тебя Win9x, то в файле C:\autoexec.bat найди переменную PATH и добавь в неё путь к файлам компиляторов. И тогда после перезагрузки компа пиши тоже самое, что писал, но в той папке, где лежит твоя прога.

Ответ отправлен: 15.08.2003, 09:47
Отправитель: Eugene


Отвечает Andrew Vext

Здравствуйте, Олег!
Либо поместите файл с программой в тот же каталог, что и masm, либо указывайте полный путь к файлу. Например
ml c:/my_programs/proga.asm
Для tasm то же самое.

Ответ отправлен: 15.08.2003, 11:42
Отправитель: Andrew Vext


Отвечает [L2]Max

Доброе время суток, Олег!
Читай по англ, ФАТАЛЬНАЯ ОШИБКА - не найден файл ****
Ты путь не правильно указал


Ответ отправлен: 15.08.2003, 09:33
Отправитель: [L2]Max


Отвечает _vt

Доброе время суток, Олег!
Файл proga.asm должен быть в текущем каталоге...

---===*** Testing E-Man 1.5 ...***===---


Ответ отправлен: 15.08.2003, 21:22
Отправитель: _vt


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

Здравствуйте, Олег!
Текущий каталог не тот.
Ты запускаешь где?
В FAR?
Или в "выполнить"? :-)
Если второе, тогда всё ясно...
Установи FAR и будь счастлив!


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



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

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

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

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (39)
C / C++ (30)
Perl (3)
Builder / Delphi (21)
Pascal (27)
Basic / VBA (12)
Java / JavaScript (9)
PHP (8)
Криптография (10)
WinAPI (18)
Пользователю
Windows 95/98/Me (48)
Windows NT/2000/XP (56)
"Железо" (44)
Поиск информации (27)
Администратору
Windows NT/2000/XP (27)
Linux / Unix (11)
Юристу
Гражданское право (10)
Семейное право (6)
Трудовое право (7)
КоАП (5)

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




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


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


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

В избранное