При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Ассемблер? Это просто! Учимся программировать (FAQ)
Выпуск N 019 |
Вопросы, которые поступили от подписчиков рассылки
"Ассемблер? Это просто! Учимся программировать"
Дата выхода: 2001-06-13
Вопрос №89
Vsem privet ! :)
-----------------------------------------------------------
U menea tut vopros:
1) Gde ia mogu naiti raskladku hedera EXE-failov pod WINDOWS
(starting cs:ip,relocations,i vse ostalinoe) ?
2) Gde mojno skaciati Tasm i Tlink dlia sozdania
EXE-failov pod WINDOWS ?
U menia tut toliko pod DOS. A dlia WIN ni4ego konkretnogo :(
-----------------------------------------------------------
Zaranee spasibo.
Evgenii (eugeniumus@chat.ru)
Ответ
Привет! Молодец, что под вынь писать собрался :)
Насчет формата PE-Headera... В инете - полно файлов по этому делу. Но если уж совсем в облом искать, то пиши сюда: codebuilder@chat.ru - я тебе формат PE файлов вышлю. Могу даже дать Win98DDK - дока по выню для разработчиков драйверов . Там куча всего. Скажу честно, я без этой штуки как без рук . Там и описание всех VXD, рассказано как VXD самому написать. Ну вобщем - классная вещь. Пиши. Насчет асемблера под вынь - то это Turbo Assembler 5.0 и TLINK32. В инете - есть. Если тоже облом искать самому - то тоже могу прислать.
Успехов!
Вопрос №95
Zdravstvujte
Skazite, kak ya mogu prochitat s klaviaturi vremya v formate hh:mm:ss,tak chtobi potom dannie raspredelilis po variable hour, minutes,seconds
Zaranee spasibo
Ответ
для этого:
1) читаете строку AH=0Ah int 21h
2) читаете введенную строку по символу и переводите символы в цифры, распределяя по соответствующим переменным
см. программу
Приложение:
Вопрос №93
Vsem privet ! :)
-----------------------------------------------------------
U menea tut vopros:
1) Gde ia mogu naiti raskladku hedera EXE-failov pod WINDOWS
(starting cs:ip,relocations,i vse ostalinoe) ?
2) Gde mojno skaciati Tasm i Tlink dlia sozdania
EXE-failov pod WINDOWS ?
U menia tut toliko pod DOS. A dlia WIN ni4ego konkretnogo :(
-----------------------------------------------------------
Zaranee spasibo.
Evgenii (eugeniumus@chat.ru)
Ответ
TASM можешь взять тут http://hi-tech.nsys.by:8101/download/compilers/assembler/tasm/tasm50.zip
Но под Windows лучше использовать MASM, а чтобы проще было работать скачай с www.avtlab.ru программу ASM Editor for Windows, тогда сможешь компилировать программы нажатием одной кнопки.
Вопрос №97
Здравствуйте, эксперты.
Подскажите, пожалуйста, где хранится серийный номер винчестера.
К чему лучше всего привязывать программу для защиты от записи на другие РС ?
Можно ли где скачать SoftIce ?
Ответ
Привет! Серийный номер винчестера хранится в Boot Sector'е, но читать его оттуда напрямую я не рекомендую. Есть более приятный способ:
У сервиса прерывания 21h есть функция 69h - get/set disk serial number
Вот как надо загружать регистры пр ииспользовании этой ф-ии:
AH=69h (естественно)
AL=0, если читаем серийный номер
AL=1, если пишем серийный номер
BL ->содержит диск, у которого берем или на который пишем сер. номер
диски обозначаются так:
BL=0 - текущий диск
BL=1 - drive A
bl=2 - drive B
bl=3 - drive C
ну и так далее
DS:DX = адрес структуры, куда функция вернет/возьмет информацию
Формат структуры:
+00h word уровень информации (установите равным нулю)
+02h double word серийный номер диска
+06h 11 bytes метка тома или "NO NAME ",если нету
+11h 8 bytes файловая система - "FAT12","FAT16","FAT32"
Возврашает:
CF=0 - успех
CF=1,ошибка, AX=код ошибки.
Данная функция недокументирванна.
Я думаю, что привязываться к серийному номеру вполне разумно :)
*** Замечание ***
> Вы зарегистрированы в подгруппе "Модели, виды и типы компьютеров (hard)". В данную подгруппу
> поступил следующий вопрос под номером 99:
>
> Дяди:-))), скажите пожайлусто, как разогнать компьютер.
> Отправитель: Denis (hacker@hacker......)
По-моему, вопрос №99 заслуживает того, чтобы его поставить в пример
как НЕ надо задавать вопросы. Честно говоря так и подмывает
посоветовать человеку выучить вначале русский, потом научиться
собирать компьютер на скорость с закрытыми глазами или хотя бы выучить
наизусть из чего он состоит. А помотрев на почтовый ящик я вообще
пришел в щенячий восторг! Может тебе на сайте перед формой для
вопросов экспертам всем без исключения IQ-тест проходить? А то вопросы
иногда просто безобразные попадаются.
С Уважением, Эксперт Александр
Вопрос №105
У меня пара небольших вопросов:
1. В чем различее между Tasm/Masm/Wasm?
Что и почему,на ваш взгляд,лучше?
2. Где найти хороший туториал по SiftIce for Windows?
Именно для Windows! Желательна ссылка.
Заранее благодарен.
Ответ
Мнемоники в ассемблерах в основном идет оригинальные, интелевские, так что здесь разницы нет. Кстати что за wasm такой?
Различие заключается в основном в директивах компилятора, описания сегментов, условные директивы.
Вопрос №107
Увожаемые эксперты, ответте на такой вопрос!
Во всех программах вы используете прирывания и функции: Dos, Bios. Тем самым программа теряет переносимость. К примеру на Спектруме нет этих функций и прирываний, а если ктото использует какие-то иные платформы (без этих функций и прирываний), что тогда?
Ведь Assembler- это машинный код и он должен быть универсален для всех платформ.
Ответ
Ага, щаз...
Какраз ассемблер - это самая непереносимая часть во всех мультиплатформенных проектах!
Си - на здоровье! а ассемблер у каждого процессора свой!
Ничего не поделаешь!
Вопрос №105
У меня пара небольших вопросов:
1. В чем различее между Tasm/Masm/Wasm?
Что и почему,на ваш взгляд,лучше?
2. Где найти хороший туториал по SiftIce for Windows?
Именно для Windows! Желательна ссылка.
Заранее благодарен.
Ответ
TASM and MASM имеют некоторые различия. А с Васм я вообще никогда не работал. Лично я люблю ТАСМ, так как он: поддерживает два режима IDEAl и MASM. Я просто не могу говорить что лучше-чтохуже. Любой может со мной поспорить, но лично я отдал свое предпочтения ТАСМу. Как для ДОС так и для вин32.
Самая лучшая дока - это оффициальная. Обычно она идет вместе с Айсом. Но там чисто технический английский. У меня есть дока. iluh_1@mail.ru
Вопрос №107
Увожаемые эксперты, ответте на такой вопрос!
Во всех программах вы используете прирывания и функции: Dos, Bios. Тем самым программа теряет переносимость. К примеру на Спектруме нет этих функций и прирываний, а если ктото использует какие-то иные платформы (без этих функций и прирываний), что тогда?
Ведь Assembler- это машинный код и он должен быть универсален для всех платформ.
Ответ
Привет Во первых, ассемблер НЕ УНИВЕРСАЛЕН. У каждого семейства процессоров - свой ассемблер, Тот ассемблер, про который ты говоришь - это ассемблер для процов семейства Intel 80x86, А есть и другие процессоры - например Z80 - (проц который в Spectrume ) имеет абсолютно другие мнемоники, они кодируются в другие байты и у него абсолютно другой набор регистров и все они 8 битные. Так что у каждого семейства процов - свой ассемблер. А насчет соаместимости ассемблерных программ со всеми ОS, такого добиться можно. Для этого нужно работать не используя сервисов OS и BIOS, а это значит -- общение с железом через порты, у тебя не будет доступа к файлам как в досе, ты будешь читать диск по секторам и анализировать сектор на предмет принадлежности к файлу. То есть грубо говоря твоя универсальная программа будет содержать DOS и BIOS внутри своего кода.
Вопрос №107
Увожаемые эксперты, ответте на такой вопрос!
Во всех программах вы используете прирывания и функции: Dos, Bios. Тем самым программа теряет переносимость. К примеру на Спектруме нет этих функций и прирываний, а если ктото использует какие-то иные платформы (без этих функций и прирываний), что тогда?
Ведь Assembler- это машинный код и он должен быть универсален для всех платформ.
Ответ
в последнем предложении вопроса вы противоречите сами себе :))
везде написано, что одним из недостатков ассемлера, и ОЧЕНЬ серьезных, является то, что он практически НЕ переносим.
даже программа написанная для одного и того же процессора, но для одной операционной системы НЕ будет работать в другой. а вы хотите, с 80х86 на Спектрум... хе :))
Вопрос №103
Здравствуйте, эксперты !
Подскажите, можно ли отлаживать программу в TurboDebugere, которая вызывается функцией 4B00 INT 21h. У меня не получается. Компьютер виснет при попытке пошаговой отладки процедуры прерывания.
Ответ
программу которая вызывается можно. а вот процедуру прерывания можно, но, как вы это уже заметили, возможно все будет виснуть. просто не всегда можно остановить выполнение очередной команды процедуры прерывания, да еще что-то свое выполнить (т.е. то, что делает отладчик: сделать дамп памяти, показать все на экран и т.п.). это из-за того, что в процедурах прерываний используется самый низкоуровневый доступ, т.е. порты ввода/вывода, и поэтому послав на как-то порт команду, возможно мы должны сразу принять ответ, отладчик об этом не заботится. можете попробовать еще отладчик debug.exe, но скорее всего это тоже не поможет. если вам очень интересно/надо, то лучше сделайте дамп памяти того участка, который вас интересует и дизассеблируйте его.
Подписаться на рассылки
Регистрация в качестве эксперта
Ведущий рассылки,
Калашников Олег:
Assembler@Kalashnikoff.ru
ICQ No.: 68951340
URL сайта подписчиков:
http://www.Kalashnikoff.ru
______________
По вопросам сотрудничества, рекламы и спонсорства обращайтесь:
(C) Москва, 2001. Авторское право принадлежит Калашникову О.А. Публичное размещение материала из рассылки, а также его использование полностью или частично в коммерческих или иных подобных целях без письменного согласия автора влечет ответственность за нарушение авторских прав. |
http://subscribe.ru/
E-mail: ask@subscribe.ru | Отписаться | Рейтингуется SpyLog |
В избранное | ||