При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Выпуск № 358
от 31.01.2006, 21:30
Администратор: | Калашников О.А. |
В рассылке: | Подписчиков: 252, Экспертов: 22 |
В номере: | Вопросов: 4, Ответов: 9 |
Вопрос № 34.108 |
После прочтения 8 и 9 глав книги возник такой вопрос: В этих главах идет описание процедур по работе с файлами. Что означает "открыть файл", который мы впоследствии закрываем? Т.е. если я введу путь к какому-то текстовому файлу, то где он должен открыться? Что значит открыть файл для "записи"? Как я могу изменить файл если он не открывается явно? |
Отправлен: 25.01.2006, 22:25 Вопрос задал: Еrshik (статус: Посетитель) Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 5) |
Отвечает: Карандашов Сергей Здравствуйте, Еrshik! После того как файл открыт можно в него писать/читать информацию (в зависимости от режима открытия), так же можно его проецировать в память, т.е. к нему можно обращаться как к участку памяти. Вобще при помощи "открыть файл" можно открывать доступ не только к файлам, но и другим ус-вам не имеющим к файлу ни какого отношения. Кстати, "открыть файл" не есть именно открыть: CREATE_NEW - создать файл, если он есть, то ошибка CREATE_ALWAYS - создать ф-л даже если он есть OPEN_EXISTING - открыть ф-л, если нет, то ошибка OPEN_ALWAYS - открыть, если нет, то создать TRUNCATE_EXISTING - открыть и усечь его до нуля. Система после Вашего открытия подготавливает среду для работы с этим файлом (в частности буфер в памяти), а после закрытия освобождает ресурсы. Для прочих пр-м открытый Вами файл может быть полностью/частично недоступен, при закрытии он опять свободен Без "открыть файл" система Вам не даст его изменить |
Ответ отправил: Карандашов Сергей (статус: 1-ый класс) Отправлен: 26.01.2006, 06:54 |
Отвечает: Sager Здравствуйте, Еrshik! Ты в данном случае неправильно понимаешь слово открыть. Открыть файл - это не значит нажать (напр в винде) на него правой кнопкой и выбрать открыть с помощью (напр Блокнота) и он откроется в блокноте. В данном случае происходит следующее: запускается Блокнот, ему передается параметр(-ы), в качестве имени файла, кот хочешь просмотреть, Блокнот берет и открывает этот файл, т.е. получить доступ к файлу, чтобы система подготовила ресурсы для его использования и выдала хэндл, по кот ты можешь "различать" файлы. Затем Блокнот считывает инфу из файла и выводит ее на экран. Файлы можно открывать для записи, чтения, чтения/записи. Если ты откроешь его для записи, то сможешь записывать в файл любую инфу. А если откроешь для чтения, то сможешь читать из файла любую инфу, а вот если напр захочешь что-нибудь записать - то ничего не получится. Если под словом явно ты имеешь ввиду "показывание файла в блокноте", то думаю теперь все уже понятно. И изменять можно так, как показано в рассылке! |
Ответ отправил: Sager (статус: Студент) Отправлен: 26.01.2006, 10:49 Оценка за ответ: 5 |
Отвечает: newinfo2005 Здравствуйте, Еrshik! 1)"открыть файл" - означает, что впоследсвие ты можешь обращаться к этому файлу через определенный его индефикатор. 2) без разницы к какому файлу. остальное я сказал в пункте 1. 3) "запись" - означает что будем только туда записывать(AL=1) 4) открывай файл для чтениязаписи (AL=2) --------- "Спасибо" - нет такой валюты. |
Ответ отправил: newinfo2005 (статус: 6-ой класс) Отправлен: 26.01.2006, 12:24 Оценка за ответ: 5 |
Вопрос № 34.130 |
И всё-таки объясните мне пожалуйста по-подробнее, нафига нужен виндовый асм если всю работу можно сделать на VC++ (VC++ .NET) при необходимости с __asm{вставками}? |
Отправлен: 26.01.2006, 09:30 Вопрос задал: Яковлев Сергей Павлович (статус: Посетитель) Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0) |
Отвечает: Лысков Игорь Витальевич Здравствуйте, Яковлев Сергей Павлович! На вкус и цвет товарища нет :) Кому-то достаточно С++, а кто-то хочет сам все написать, и чтобы было компактно, тем более, что все-равно приходится вызывать стандартные API-шные функции, так что задача стоит практически в том, чтобы более рационально увязать между собой стандартные "кирпичики". Кроме того, существует класс задач, которые эфективнее реализовывать только на АСМ-е, например, драйвера, защита, да мало ли еще что! --------- Удачи! |
Ответ отправил: Лысков Игорь Витальевич (статус: Студент) Отправлен: 26.01.2006, 10:01 |
Отвечает: Карандашов Сергей Здравствуйте, Яковлев Сергей Павлович! "нет плохих языков, есть плохие программисты". То что я увидел в асме хорошее: - логика мышления развивается быстрее чем на остальных языках: проще изучить асм, потом можно браться за почти любой язык. на оборот получается со "скрипом" - изучение заняло меньше времени (!): на асме реально испульзуется пару десятков команд + справочник по API. Для С нужен тот же справочник API + знание почти 1000 команд - почувствовать власть над компом опять же проще всего только на асме, а это не передоваемые очучения - Попробуйте решить на С формулу Ламе численным методом: числа длиной до 1000 знаков (дробные), сложений около 20, вычитаний столько же, умножений ~10 и 2 деления. всё это надо 20000 раз в секунду провернуть. При чем, все цифры значимые!. - По скорости написания: если делать что нить серьезное, маленький язык программирования например, опять же ЯВУ поставят много гвоздей, а асм полностью без костей. все это делал сам ... и еще много всего. просто мне асм понравился больше, а так каждому свое |
Ответ отправил: Карандашов Сергей (статус: 1-ый класс) Отправлен: 26.01.2006, 10:20 |
Отвечает: Sager Здравствуйте, Яковлев Сергей Павлович! Ты знаешь, если начать размышлять, то можно прийти к выводу, что в принципе-то и не нужен и привести кучу аргументов. И в ЯВУ можно обойтись вставками. НО! Ты знаешь мне это чем-то напоминает Linux vs Windows(Assembler vs ЯВУ). Должна быть свобода выбора - кому-то нравится ассемблер и его полностью устраивают те преимущества и недостатки, кот в нем имеются. Тоже самое и в ЯВУ. Но ведь это не означает, что нужно специально избавиться например от ассемблера(я бы с радостью избавился от Делфей). Чем больше у тебя возможностей, тем свободнее ты себя чувствуешь. Вот представь можно сказать так: зачем другие графические пакеты, если фотошоп рулез форева, все остальное в трэш, уничтожить и забыть и не вспоминать! Возможно немного грубое сравнение. Но все же. Да и еще хочу добавить, что при низкоуровневом кодинге твоя прога на С будет одной большой асм-вставкой(или большая асм-вставка с "С-вставками":-))(особенно при кодинге ОС, некот драйверов). Да и ошибки искать в винегрете асма-С намного сложнее - особенно при отладке. + На асме можно писать самые маленькие проги(самый маленький PE-файл выводящий MessageBox размером 153(!) байта)+ вирусы и крэки пишут на асме. И Crackme тоже на чистом асме - чтобы новичкам было легче постигать азы крэкинга..... |
Ответ отправил: Sager (статус: Студент) Отправлен: 26.01.2006, 11:09 |
Вопрос № 34.155 |
Zdravstvuyte.Prostite za translit,ya vinujden.Nachal uchit Assembler,chitayu pro 'debug',pitayus vivesti luboy simvol ASCII ili ANSI ne pomnu uje,no pri popitke zapuska "G", Windows vivodit okoshko s knopkami "close","ignor" i tekstom:"Command Prompt - DEBUG The NTVDM CPU has encountered an illegal instruction. CS:0000 IP:0077 OP:f0 37 05 14 02 Choose'Close'...".Kak ya ponimayu problema s processorom.Pomogite plz.Zaraneye blagodaru.(pentium4 '2.4',WinXPpac2,RAM512,cho yesho tam ???YESHO RAZ SORRY ZA TRANSLIT!!! Приложение: |
Отправлен: 26.01.2006, 15:14 Вопрос задал: Zuli (статус: Посетитель) Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1) |
Отвечает: Seamanmur Здравствуйте, Zuli! Под Виндой разрешены далеко не все инструкции. Она тебе и написала, что ты выполняешь запрещенную инструкцию. Какую конкретно - нужен код программы. Но вообще запрещены выводы в порты, многие инструкции защищенного режима. NTVDM - это виртуальная машина ДОС, работающая под XP |
Ответ отправил: Seamanmur (статус: 2-ой класс) Отправлен: 26.01.2006, 16:07 |
Вопрос № 34.174 |
ОбЪясните, как пользоваться отладчиком AFDPRO |
Отправлен: 26.01.2006, 20:31 Вопрос задал: Kont kontovich (статус: Посетитель) Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1) |
Отвечает: Лысков Игорь Витальевич Здравствуйте, Kont kontovich! http://ermak.cs.nstu.ru/makarpage/asm/afdpro.zip --------- Удачи! |
Ответ отправил: Лысков Игорь Витальевич (статус: Студент) Отправлен: 26.01.2006, 21:10 Оценка за ответ: 5 Комментарий оценки: Большое спасибо! |
Отвечает: Sager Здравствуйте, Kont kontovich! А что непонятного-то? Там же все просто. F1 - пошаговая трассировка с заходом в прерывания и процедуры, F2 - тоже самое, но без захода в процедуры и прерывания. Вверху находятся регистры общего назначения. Чуть правее отображается состояние стека(что в нем лежит), еще правее находится регистр флагов, где отображается состояние того или иного флага(напр ZF - флаг нуля), справа и сниху находятся дампы памяти. Тута можешь посмотреть что находится в памяти по определенному сегменту и смещению. Чтобы перемещаться и изменять, напр регистры, дамп памяти, используй клавиши F7(вверх), F8 (вниз),F9(влево),F10 (вправо). Если хочешь увидеть,например, надпись Hello World(предварительно создав такую и запустив под отладчиком), то посмотри, что заносится в dx перед вызовом int 21h, нажми F8 и после ds укажи это число и правом нижнем углу увидишь Hello World. Чтобы выйти из отладчика, введи quit и нажми И еще это почитай: http://kis-kiev.narod.ru/lab/tasm/tsm1.htm |
Ответ отправил: Sager (статус: Студент) Отправлен: 27.01.2006, 11:00 Оценка за ответ: 5 Комментарий оценки: Большое спасибо! Разобрался. И адрес помог |
© 2001-2006, Портал RusFAQ.ru, Россия, Москва. Идея, дизайн, программирование: Калашников О.А. Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31 Авторские права | Реклама на портале | |
Subscribe.Ru
Поддержка подписчиков Другие рассылки этой тематики Другие рассылки этого автора |
Подписан адрес:
Код этой рассылки: comp.soft.prog.faq Архив рассылки |
Отписаться
Вебом
Почтой
Вспомнить пароль |
В избранное | ||