Ассемблер? Это просто! Учимся программировать (FAQ)
______________________________________
Выпуск N 007
Вопросы, которые поступили от подписчиков рассылки "Ассемблер? Это просто! Учимся программировать"
Дата выхода: 2001-05-28
Новости
Прошу прощения за некоторые неполадки в работе и "мусор" в рассылке.
Постараюсь, чтобы такого больше не повторялось. А так вроде все идет
неплохо...
ГЛАВНАЯ НОВОСТЬ: наша рассылка переведена в разряд "Серебряных"!
Остальные новости:
1. Теперь в каждой рассылке присутствует 5 вопросов / ответов.
2. Регистрация нового эксперта автоматически анонсируется на сайте в разделе "Новости сайта и рассылок".
3. Выход данной рассылки также автоматически анонсируется на сайте.
4. Новому эксперту высылается письмо с регистрационными данными.
5. В форме подачи вопроса отображается количество зарегистрированных экспертов в соответствующей группе.
6. После ответа эксперта приводится следующая информация:
* количество отвеченных вопросов эксперта; * экспертная группа, в которой зарегистрирован эксперт.
Последнее Вам, уважаемые подписчики, поможет лучше ориентироваться в названиях экспертных групп (кому задавать тот или иной вопрос).
Просьба к экспертам: пожалуйста, постарайтесь избегать появления в рассылке жаргонных выражений!
Просьба к подписчикам, задающим вопросы: пожалуйста, постарайтесь отправлять один вопрос ОДНОЙ экспертной группе, а не нескольким одновременно!
Эксперты Yuriy, Sonny и Oleg! Вы не зарегистрированы ни в одной экспертной группе! Подписаться можно в вашей регистрационной карте с вашим именем и паролем!
Калашников Олег.
Вопрос
Здравствуйте, эксперты.
При выполнении примера из части I возникла проблема следующего рода:
Набрал в Edit прогу (приведена ниже), сохранил ее. Далее в командной строке DOS ввел: ml.exe prog.asm /at. Результат:
Assembling: prog.asm
warning A4017:invalid command-line option: /at
Далее идет перечисление того, что было создано (.exe,obj,lst,...)
Link: warning L4021: no stack segment.
Судя по приложению 1 должен был получиться файл.com, а получился .exe и .obj.
Объясните ,пожалуйста, в чем ошибка. Спасибо. Жду ответа.
Ответ
Уважаемый Дмитрий!
Это типичная ошибка многих начинающих программистов.
В командной строке нужно указывать так:
ml.exe prog.asm /AT
Заметьте: AT должны быть ЗАГЛАВНЫМИ символами!!! MASM отличает в командной строке ЗАГЛАНЫЕ и строчные символы! Будьте внимательны!
Уважаемый эксперт,
я понимаю, что уже достал вас своим вопросом, но не могли бы вы сжав зубы ответить на еще один вопрос (может быть и глупый)!!!!!!!!!!!!!
1) Предположим, я хочу написать программу. Для этого в любом текстовом файле пишу программу, затем перевожу из текстового файла (который я написал) в обьектный посредством (...Bin\Masm.exe) MASM.EXE (который по каким-то причинам у меня не загружается. Наверное, я че-то не так делаю?), после того, как я создал (который я так и не создал) из к примеру primer.asm-->primer.obj (опять же -вопрос - я не могу в (предположим) Блокноте создать файл с расшерением .asm, чтобы перевести его в .obg, значит, мне нужно воспользоваться программой, которая есть в пакете MASM (pwb) (а как там создать такой файл?), мне нужно зайти в коталог Bin где находится файл link.exe, который из primer.obj зделает primer.exe или primer.com (по моему желанию).
2) Другой вариант, что я зайду в (...Bin\Masm.exe) Masm.exe, напечатав такую команду (в якобы загрузившемся файле Masm.exe, а не выходившем сразу после того как я в него вошел!!!) ml.exe primer.asm/AT
P.S. Буду ждать ответа (с нетерпением)!
Ответ
Уважаемый Александр!
Честно говоря, я не совсем понял оба вопроса. Тем не менее, постараюсь дать ответ.
1. Мне не совсем понятно, почему Вы не можете создать файл в Блокноте (Windows). Он может сохранять файлы с любым расширением (в т.ч. и asm).
Однако, я советую все-таки воспользоваться DOS Navigator'ом, NC, VC и т.п. оболочками DOS.
Создаете обычный текстовый файл с расширением asm (допустим, имя ему будет prog.asm). Переносите его в каталог с ML.EXE и ассемблируете: ml.exe prog.asm /AT
Обратите внимание, что после prog.asm идет <пробел>, а затем уже /AT.
В итоге Вы сразу получите prog.com (если не будет ошибок).
Если Вы ипытываете сложности с работой в ОС MS-DOS, то Вам сперва нужно научиться работать как пользователь с этой операционной системой, иначе Вы ничего не поймете в программировании на Ассемблере.
Где взять файл из предыдущищ рассылок Virus13.rar?
С уважением Алексей.
Ответ
На сайте www.Kalashnikoff.ru :))
http://www.kalashnikoff.ru/Assembler/Programs/Lessons/Virus13.rar
С Уважением,
Андрей Беженарь.
Отправил: BELTSY
Вопрос
Буду признателен,если поможете студенту Карагандинского Металлургического Института избавиться от домоганий глюкнутого казахского профессора по поводу написания програмки на Ассемблере:"Определение числа элементов меньше предыдущего на единицу".
Рахмет.
Ответ
Вот, пожалуйста, программа...
Поясню: элементы в массиве - байты, если надо слова, то не сложно
программу немного модифицировать.
Вместо сравнения cmp al,1 делаю dec al и jnz, так как это быстрее
и меньше памяти занимает. Пожалуй все.
С Уважением,
Андрей Беженарь.
Приложение:
Отправил: BELTSY Эксперт отправил ответов (всего): 2
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос
Расскажите пожалуйста каким образом разбить жесткий диск на логические. И сохранится ли при этом информация на нём?
Ответ
Уважаемый Максим!
Ваш вопрос не совсем относится к программированию на Ассемблере, но, тем не менее, постараюсь дать ответ на него.
Все, что мне известно - это то, что разбивка винчестера осуществляется при помощи программы fdisk.exe, которая входит в стандартный набор Windows и DOS. При этом ВСЯ информация теряется. Добавлю также, что интерфейс программы достаточно сложный. Если Вы не разу не пользовались ей раньше и не представляете, что это такое, то лучше обратиться к специалистам. Так будет быстрее и надежней.
Также слышал, что существует некоторая программа, позволяющая разбивать диски без потери информации на них. Но как она называется - не помню.
Удачи!
Отправил: Олег Калашников (http://www.Kalashnikoff.ru - Рассылки по Ассемблеру и Законодательству)
Эксперт отправил ответов (всего): 26
(C) Москва, 2001. Авторское право принадлежит Калашникову О.А.
Публичное размещение материала из рассылки, а также его использование
полностью или частично в коммерческих или иных подобных целях без письменного
согласия автора влечет ответственность за нарушение авторских прав.