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

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


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler (Ассемблер)

Выпуск № 752
от 16.05.2007, 18:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 392, Экспертов: 33
В номере:Вопросов: 3, Ответов: 4


Вопрос № 86315: Здравствуйте. Я снова со своей задачей по обработке заданного файла. Один из экспертов посоветовал мне использовать код с циклом по копированию введенной строки, а потом подавать на вход прерыванию 3d скопированную строку. Этот код работает. Но я реш...
Вопрос № 86424: я начинаю изучать ассемблер, но не знаю с чего начать, какую книгу читать, это первый мой язык программирования и ещё я не знаю в какой среде писать ассемблеровские программы....
Вопрос № 86462: Здравствуйте! проблема с кодом асма. не компилируется, в чем дело - непонятно. Данная программа предназначена для шифрования файлов методом исключающего «или». Принцип работы программы прост. Содержимое исходного файла (crypt.txt) кодируется с по...

Вопрос № 86.315
Здравствуйте. Я снова со своей задачей по обработке заданного файла. Один из экспертов посоветовал мне использовать код с циклом по копированию введенной строки, а потом подавать на вход прерыванию 3d скопированную строку. Этот код работает. Но я решил слегка оптимизировать этот код (цикл в листинге закомментирован) и подавать на вход прерыванию 3d введенную строку (без копирования), начиная с 3-го байта. 0 в конце строки уже есть к тому времени.
Модифицированная таким образом программа работает следующим образом: появляется досовское окошко и с бешеной скоростью начинает выводиться фраза "file open error", через строку, многократно и до бесконечности, пока не закроешь. Через строку наверное потому что там стоит
mov ah,9
lea dx,ent
int 21h

Цикл vvod_file выполняется бесконечно, ввести строку программа не дает. То есть прерывание
mov ah,0ah
lea dx,data
int 21h
вообще на самом деле не ждет чтобы я там что-то ввел. Вместо этого программа просто продолжает работу дальше. Естественно, что функция по открытию файла не выполняется. А как такое может быть чтобы пр-е 0ah не дожидалось ввода строки?
Если же исследовать файл в отладчике, то он на прерывании 0ah также не предлагает ввести строку, а продолжает работу дальше.
Если после этого прерывания стоит цикл, то все работает нормально, строку можно ввести. Еще не понятно - КАК ПОСЛЕДУЮЩИЙ КОД МОЖЕТ ВЛИЯТЬ НА ВЫПОЛНЕНИЕ ПРЕДЫДУЩЕГО КОДА? Прерывание же выполняется по-разному в зав. от цикла.
Ну и самое интересное, что эта программа сразу после компиляции работала нормально, и только после перезагрузки компьютера перестала работать. С чего вдруг она так изменила поведение после перезагрузки, что я не учел? И как ее вернуть к нормальной работе?

Приложение:

Отправлен: 10.05.2007, 19:35
Вопрос задал: Blackie (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Sov
Здравствуйте, Blackie!
Действительно можно сделать проще, так, как предложили вы)
Мне кажется что ошибка в том что вы неправильно оформляете массив data
Функция 0ah требует чтобы вы указали максимальную длину строки и выделили под нее соотв. кол-во памяти
например
data db 53,60 dup(0);длина строки не более 53 символов
;и ноль в конец добавлять не придется)
Ответ отправил: Sov (статус: 2-ой класс)
Ответ отправлен: 10.05.2007, 21:18
Оценка за ответ: 5
Комментарий оценки:
Теперь работает, спасибо.


Вопрос № 86.424
я начинаю изучать ассемблер, но не знаю с чего начать, какую книгу читать, это первый мой язык программирования и ещё я не знаю в какой среде писать ассемблеровские программы.
Отправлен: 11.05.2007, 13:51
Вопрос задал: Gvarishvili George Raulievich (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Зенченко Константин Николаевич
Здравствуйте, Gvarishvili George Raulievich!

Книги по ассемблеру Вы можете скачать тут. Есть книги Абеля, Зубкова, Юрова, Калашникова, Жордайна, Рихтера.
Программы на ассемблере пишут в любом простом редакторе типа блокнота, но Вам для начала нужен редактор с подсветкой синтаксиса к примеру: gridinsoft notepad.
Еще Вам понадобится компилятор:
-Тут, тут и тут Вы можете найти МАСМ.
-Тут Вы можете найти ТАСМ.
Удачи!
---------
И только наступив на грабли мы преобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Студент)
Ответ отправлен: 11.05.2007, 16:16
Оценка за ответ: 4

Отвечает: Волков Павел Юрьевич
Здравствуйте, Gvarishvili George Raulievich!
Книжку лучше взять в бумажном виде, у Юрова (учебник, справочник и практическое руководство) очень хорошее описание языка, в справочнике - подробное описание инструкций процессора.

Из компиляторов посоветую FASM(flat assembler), домашняя страница - http://flatassembler.net.
Приемущества:
-компактен (пакет для Windows менее мегабайта);
-в составе пакета есть среда разработки (текстовый редактор, без подсветки, из которого проводится компиляция);
-есть версии как для Windows, так и для DOS,GNU/Linux,*BSD;
-позволяет творить чудеса %)
"Недостатки":
-большинство примеров в книгах приводятся для TASM,MASM (перевод текста для сборки в FASM вызывает трудности только в начале обучения);
-большинство примеров на форуме проекта (http://board.flatassembler.net/);
-мало документации на русском.

За русской документацией, примерами обратитесь на WASM.RU.
Там есть несколько статей, перевод документации
(http://wasm.ru/docs/6/fasm164manualrus.zip)
, на форуме всегда помогут советом.
---------
Век живи, век учись.
Ответ отправил: Волков Павел Юрьевич (статус: Студент)
Ответ отправлен: 11.05.2007, 17:47


Вопрос № 86.462
Здравствуйте!
проблема с кодом асма. не компилируется, в чем дело - непонятно. Данная программа предназначена для шифрования файлов методом исключающего «или». Принцип работы программы прост. Содержимое исходного файла (crypt.txt) кодируется с помощью ключа, используя операцию исключающего «или» побитно. Под ключом понимается текст, вводимый с клавиатуры непосредственно в программе. Следует отметить, что зашифрованная информация записывается в исходный файл(crypt.txt), изменяя его. Для расшифровки требуется перезапуск программы с использованием того же ключа. Особенность такова, что не имея ключа расшифровать информацию практически невозможно. После повторного проведения операции получаем изначальный файл. Программа работает на файлах .exe, .txt, .bmp, .jpg и так далее. Среда - виндоус.

Приложение:

Отправлен: 11.05.2007, 17:45
Вопрос задал: Klaus_Blumenstrauss (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 5)

Отвечает: Зенченко Константин Николаевич
Здравствуйте, Klaus_Blumenstrauss!

cmp dh, \'\\\' ; в этой строке ошибка
cmp dh, ''; так должно быть

Удачи!

Приложение:

---------
И только наступив на грабли мы преобретаем драгоценный опыт!

Ответ отправил: Зенченко Константин Николаевич (статус: Студент)
Ответ отправлен: 11.05.2007, 18:17
Оценка за ответ: 5


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.52 от 02.05.2007
Яндекс Rambler's Top100

В избранное