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

Ассемблер? Это просто! Учимся программировать (FAQ)


Служба Рассылок Subscribe.Ru проекта Citycat.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. В инете - есть. Если тоже облом искать самому - то тоже могу прислать.
Успехов!


Отправил: Евгений
Эксперт отправил ответов (всего): 2

Экспертная группа: Общие вопросы по программированию на Ассемблере под Win32

Вопрос №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) читаете введенную строку по символу и переводите символы в цифры, распределяя по соответствующим переменным
см. программу

Приложение:


Отправил: BELTSY
Эксперт отправил ответов (всего): 13

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №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, тогда сможешь компилировать программы нажатием одной кнопки.


Отправил: Anatol
Эксперт отправил ответов (всего): 2

Экспертная группа: Пользовательская работа с 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=код ошибки.

Данная функция недокументирванна.

Я думаю, что привязываться к серийному номеру вполне разумно :)



Отправил: Евгений
Эксперт отправил ответов (всего): 3

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

*** Замечание ***

> Вы зарегистрированы в подгруппе "Модели, виды и типы компьютеров (hard)". В данную подгруппу > поступил следующий вопрос под номером 99:
> > Дяди:-))), скажите пожайлусто, как разогнать компьютер.
> Отправитель: Denis (hacker@hacker......)

По-моему, вопрос №99 заслуживает того, чтобы его поставить в пример как НЕ надо задавать вопросы. Честно говоря так и подмывает посоветовать человеку выучить вначале русский, потом научиться собирать компьютер на скорость с закрытыми глазами или хотя бы выучить наизусть из чего он состоит. А помотрев на почтовый ящик я вообще пришел в щенячий восторг! Может тебе на сайте перед формой для вопросов экспертам всем без исключения IQ-тест проходить? А то вопросы иногда просто безобразные попадаются.

С Уважением, Эксперт Александр


Вопрос №105

У меня пара небольших вопросов:

1. В чем различее между Tasm/Masm/Wasm?

Что и почему,на ваш взгляд,лучше?

2. Где найти хороший туториал по SiftIce for Windows?

Именно для Windows! Желательна ссылка.

Заранее благодарен.

Ответ

Мнемоники в ассемблерах в основном идет оригинальные, интелевские, так что здесь разницы нет. Кстати что за wasm такой?
Различие заключается в основном в директивах компилятора, описания сегментов, условные директивы.


Отправил: Dron
Эксперт отправил ответов (всего): 23

Экспертная группа: Работа с MASM/TASM

Вопрос №107

Увожаемые эксперты, ответте на такой вопрос!

Во всех программах вы используете прирывания и функции: Dos, Bios. Тем самым программа теряет переносимость. К примеру на Спектруме нет этих функций и прирываний, а если ктото использует какие-то иные платформы (без этих функций и прирываний), что тогда?

Ведь Assembler- это машинный код и он должен быть универсален для всех платформ.

Ответ

Ага, щаз...

Какраз ассемблер - это самая непереносимая часть во всех мультиплатформенных проектах!

Си - на здоровье! а ассемблер у каждого процессора свой!
Ничего не поделаешь!


Отправил: Dron
Эксперт отправил ответов (всего): 24

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №105

У меня пара небольших вопросов:

1. В чем различее между Tasm/Masm/Wasm?

Что и почему,на ваш взгляд,лучше?

2. Где найти хороший туториал по SiftIce for Windows?

Именно для Windows! Желательна ссылка.

Заранее благодарен.

Ответ

TASM and MASM имеют некоторые различия. А с Васм я вообще никогда не работал. Лично я люблю ТАСМ, так как он: поддерживает два режима IDEAl и MASM. Я просто не могу говорить что лучше-чтохуже. Любой может со мной поспорить, но лично я отдал свое предпочтения ТАСМу. Как для ДОС так и для вин32.

Самая лучшая дока - это оффициальная. Обычно она идет вместе с Айсом. Но там чисто технический английский. У меня есть дока. iluh_1@mail.ru


Отправил: K.A. NiCK
Эксперт отправил ответов (всего): 4

Экспертная группа: Работа с MASM/TASM

Вопрос №107

Увожаемые эксперты, ответте на такой вопрос!

Во всех программах вы используете прирывания и функции: Dos, Bios. Тем самым программа теряет переносимость. К примеру на Спектруме нет этих функций и прирываний, а если ктото использует какие-то иные платформы (без этих функций и прирываний), что тогда?

Ведь Assembler- это машинный код и он должен быть универсален для всех платформ.

Ответ

Привет Во первых, ассемблер НЕ УНИВЕРСАЛЕН. У каждого семейства процессоров - свой ассемблер, Тот ассемблер, про который ты говоришь - это ассемблер для процов семейства Intel 80x86, А есть и другие процессоры - например Z80 - (проц который в Spectrume ) имеет абсолютно другие мнемоники, они кодируются в другие байты и у него абсолютно другой набор регистров и все они 8 битные. Так что у каждого семейства процов - свой ассемблер. А насчет соаместимости ассемблерных программ со всеми ОS, такого добиться можно. Для этого нужно работать не используя сервисов OS и BIOS, а это значит -- общение с железом через порты, у тебя не будет доступа к файлам как в досе, ты будешь читать диск по секторам и анализировать сектор на предмет принадлежности к файлу. То есть грубо говоря твоя универсальная программа будет содержать DOS и BIOS внутри своего кода.


Отправил: Евгений
Эксперт отправил ответов (всего): 4

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №107

Увожаемые эксперты, ответте на такой вопрос!

Во всех программах вы используете прирывания и функции: Dos, Bios. Тем самым программа теряет переносимость. К примеру на Спектруме нет этих функций и прирываний, а если ктото использует какие-то иные платформы (без этих функций и прирываний), что тогда?

Ведь Assembler- это машинный код и он должен быть универсален для всех платформ.

Ответ

в последнем предложении вопроса вы противоречите сами себе :))
везде написано, что одним из недостатков ассемлера, и ОЧЕНЬ серьезных, является то, что он практически НЕ переносим.
даже программа написанная для одного и того же процессора, но для одной операционной системы НЕ будет работать в другой. а вы хотите, с 80х86 на Спектрум... хе :))


Отправил: BELTSY
Эксперт отправил ответов (всего): 14

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №103

Здравствуйте, эксперты !

Подскажите, можно ли отлаживать программу в TurboDebugere, которая вызывается функцией 4B00 INT 21h. У меня не получается. Компьютер виснет при попытке пошаговой отладки процедуры прерывания.

Ответ

программу которая вызывается можно. а вот процедуру прерывания можно, но, как вы это уже заметили, возможно все будет виснуть. просто не всегда можно остановить выполнение очередной команды процедуры прерывания, да еще что-то свое выполнить (т.е. то, что делает отладчик: сделать дамп памяти, показать все на экран и т.п.). это из-за того, что в процедурах прерываний используется самый низкоуровневый доступ, т.е. порты ввода/вывода, и поэтому послав на как-то порт команду, возможно мы должны сразу принять ответ, отладчик об этом не заботится. можете попробовать еще отладчик debug.exe, но скорее всего это тоже не поможет. если вам очень интересно/надо, то лучше сделайте дамп памяти того участка, который вас интересует и дизассеблируйте его.


Отправил: BELTSY
Эксперт отправил ответов (всего): 15

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Подписаться на рассылки

Рассылки Subscribe.Ru
Ассемблер? Это просто! Учимся программировать
Ассемблер? Это просто! Учимся программировать (FAQ)

Задать вопрос экспертам

Регистрация в качестве эксперта


Ведущий рассылки,

Калашников Олег: Assembler@Kalashnikoff.ru
ICQ No.:
68951340
URL сайта подписчиков: http://www.Kalashnikoff.ru

______________

По вопросам сотрудничества, рекламы и спонсорства обращайтесь:

  1. Публичное размещение материала из рассылки: Cooperation@Kalashnikoff.ru
  2. Реклама на сайте, в книге и рассылках: http://www.Kalashnikoff.ru/Reklama.html, Reklama@Kalashnikoff.ru
  3. Издание книги (спонсорство): Sponsor@Kalashnikoff.ru

Рассылка 'Ассемблер? Это просто! Учимся программировать (FAQ)' Рассылка 'Ассемблер? Это просто! Учимся программировать'


(C) Москва, 2001. Авторское право принадлежит Калашникову О.А. Публичное размещение материала из рассылки, а также его использование полностью или частично в коммерческих или иных подобных целях без письменного согласия автора влечет ответственность за нарушение авторских прав.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться Рейтингуется SpyLog

В избранное