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

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


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

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

Выпуск N 005

Вопросы, которые поступили от подписчиков рассылки
"Ассемблер? Это просто! Учимся программировать"

Дата выхода: 2001-05-20


Вопрос

Тема такая - поиск, открытие файла и чтение из него...

Нашел, открыл и прочитал, вывожу на экран - наряду с текстом файла на экран вываливается разная ерунда - разные символы и псевдографика, словно в конце выводимой строки, объявленной через db символ $ не поставил... Увеличиваю размер буфера считывания - ерунда пропадает, чисто все, но ясно что вся эта чистота - результат заполнения пробелами т.к файл маленький а буфер гораздо больше его, а если размер буфера уменьшить, то "левых" символов на экране становится уж совсем много...

Пробовал выводить потом через функцию 40H (вроде сама определяет конец файла и до конца лишь выводит), все одно - ботва разная лезет..

db 500 dup (' ') - так вот буфер объявляю...



так mov dx, offset buffer, либо вот так lea dx,buffer перед выводом адрес его в dx загоняю... Ну и вывожу потом...



Вопрос: Так откуда же эта чушь берется и как с ней бороться?

Ответ

Уважаемый Андрей!

Причин здесь может быть несколько. Я, правда, не совсем понял, что именно происходит и как такое вообще может быть.

Существует несколько способов вывода на экран содержимого файла. Рассмотрим два основных:

1. ПЕРВАЯ ПРОГРАММА (см. приложение).
Читаем файл в буфер, сохраняя кол-во прочитанных байт. Выводим при помощи функции 40h, указав в CX количество выводимых байт (символов).

2. ВТОРАЯ ПРОГРАММА (см. приложение).
Также читаем файл в буфер, который изначально содержит символы '$'. Выводим же все функцией 09h прерывания 21h. Данный способ имеет существенный недостаток: прочитать и вывести на экран можно только один файл (или больше, если каждый последующий будет большего размера, чем предыдущий). Либо после каждого вывода файла инициализировать буфер (т.е. "забивать" его символами '$').

Также обращаю Ваше внимание на такой момент: будьте внимательны и следите за размером читаемого файла, т.к. может произойти переполнение буфера (т.е. файл окажется большего размера, чем сам буфер). В нашем примере (см. приложение) буфер имеет размер 500 байт. Т.е. прочитать можно файл размером до 500 байт.

Удачи!

Прилагаемая программа:


Отправил: Олег Калашников (http://www.Kalashnikoff.ru - Сайт подписчиков)

Вопрос

Обратный адрес: dalexs@email.kht.ru

Здарова, у меня все таже беда:

После инсталляции пакета MASM (предположим в директорию по умолчанию), я хочу попасть в редактор, чтобы там можно было компилировать код. Но я не могу понять как это сделать(а именно: как создать проект, как его откомпилировать и запустить). Вы сказали, что все необходимые программы (файлы) находятся в папке BIN , но там я нашел только единственный запускающийся файл Cref.exe. Не могли бы вы ответить на этот вопрос!!!

Ответ

Уважаемый Александр!

Как уже отмечалось, основные файлы (для ассемблирования) находятся в каталоге BIN. Обратите внимание, что в нем должены быть в обязательном порядке следующие файлы:
1. MASM.EXE
2. ML.EXE

и др.
Если у Вас нет этих файлов, то придется переустановить MASM, т.к., скорее всего, они "потерялись".

Теперь, допустим, Вы хотите написать программу и получить com-файл.
Для этого запустите любой текстовый редактор (например, NC), наберите в нем программу, затем сохраните в каталог BIN, скажем, с именем prog.asm и запустите MASM с такими параметрами:
ml.exe prog.asm /AT

Если ошибок не будет, то Вы получите prog.com. Это и есть программа.


Отправил: Олег Калашников (http://www.Kalashnikoff.ru - Рассылки по Ассемблеру и Законодательству РФ)

Вопрос

Увожаемый эксперт, я понимаю что уже достал вас своим вопросом, но не могли бы вы сжав зубы ответить на еше один вопрос (может быть и глупый)!!!!!!!!!!!!!

********************************Вопрос:******************************

1) Предположим я хочу написать программу- для этого в любом текстовом файле пишу программу, затем перевожу из текстового файла (который я написал) в обьектный- посрецтвом (...Bin\Masm.exe) MASM.EXE (который по каким то причинам у меня не загружается, наверное я чето не так делаю?), после того как я создал (который я так и не создал) из к примеру primer.asm-->primer.obg(опять же вопрос я не могу в (предположим) блакноте создать файл с расшерением .asm чтобы перевести его в .obg, значит мне нужно воспользоваться программой которая есть в пакете MASM pwb-ну а как там создать такой файл?)мне нужно зайти в коталог Binr где находится файл link.exe который из primer.obg зделает primer.exe или primer.com (по моему желанию).



2) Другой вариант, что я зайду в (...Bin\Masm.exe) Masm.exe напечатав такую команду (в якобы загрузившемся файле Masm.exe, а не выходившем сразу после того как я в него вошол!!!)ml.exe primer.asm/AT



P.S. Буду ждать ответа (с нетерпением)!!!!!!!!!!!!!!!!!!!!!!!!!!

Ответ

ЭХ!
Я не пойму одного! зачем вам для таких программ , тем более для доса использовать МАСМ... берити качайте тасм и пишите без проблем!! у меня с ним никогда проблем не было , да и не будет.


Отправил: sasha

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

Рассылки 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. Авторское право принадлежит Калашникову О.А. Публичное размещение материала из рассылки, а также его использование полностью или частично в коммерческих или иных подобных целях без письменного согласия автора влечет ответственность за нарушение авторских прав.

List Banner Exchange lite
Реклама на сайте Калашников.ru


http://subscribe.ru/
E-mail: ask@subscribe.ru

В избранное