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

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


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

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

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

Выпуск № 1004
от 24.03.2008, 08:35

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

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 127976: Задание: Ввести с клавиатуры символ и выводить его на экран, пока не нажата клаваша или не будет 300 символов. Не могу остановть цикл....
Вопрос № 127981: Здравствуйте Я ЛАМЕР. Только что начал изучать assebmler. Начал с простейшей программы (компилятор TASM). Не могли бы вы мне расшифровать каждую строчку данной программы, please....

Вопрос № 127.976
Задание: Ввести с клавиатуры символ и выводить его на экран, пока не нажата клаваша или не будет 300 символов. Не могу остановть цикл.
Отправлен: 18.03.2008, 17:50
Вопрос задала: 07mmeshka (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

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

Переделал Ваш код из форумов.
Ваши ошибки:
-получение результатов функции 01 прерывания 21Н,результат в AL, а не в AH;
-не запоминали результаты счетчика (установить - установили, после этого сбросили, когда использовали функцию 86Н прерывания 15Н и потом не проверяли).
Удачи!

Приложение:

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

Ответ отправил: Зенченко Константин Николаевич (статус: Профессионал)
Украина, Киев
Тел.: +380958380164
Адрес: Украина г.Киев
----
Ответ отправлен: 18.03.2008, 18:20
Оценка за ответ: 5

Отвечает: Trulala
Здравствуйте, 07mmeshka!

Вы забыли удалить из буфера клавиатуры символ нажатой клавиши выхода из цикла.

Приложение:

Ответ отправил: Trulala (статус: 1-ый класс)
Ответ отправлен: 19.03.2008, 21:55


Вопрос № 127.981
Здравствуйте Я ЛАМЕР. Только что начал изучать assebmler. Начал с простейшей программы (компилятор TASM). Не могли бы вы мне расшифровать каждую строчку данной программы, please.

Приложение:

Отправлен: 18.03.2008, 18:26
Вопрос задал: Смирнов Михаил Владимирович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Зенченко Константин Николаевич
Здравствуйте, Смирнов Михаил Владимирович!

Код с коментариями в приложении.
Если использовать MODEL TINY, то не нужно указывать другие сегменты.
Удачи!

Приложение:

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

Ответ отправил: Зенченко Константин Николаевич (статус: Профессионал)
Украина, Киев
Тел.: +380958380164
Адрес: Украина г.Киев
----
Ответ отправлен: 18.03.2008, 19:06

Отвечает: Кудинов Антон Павлович
!!!
Здравствуйте, Смирнов Михаил Владимирович!
MODEL TINYМодель TINY - это максимум 64кб для программы, данных и стека
STACK 256
DATASEG
Hellostr DB 'Hello First Step Site '
CODESEG

start: метка ветвленияметка начала программы или точка входа в программу, операторов сравнения тут нет.

mov ax,@data помещение в ax адреса сегмента выделеного для сегмента програмы data при ее загрузке, нужно для косвеной адресации к переменым в data. Собачка - понтыэти "понты" заменяют директиву SEG.
(синонимы .data-data-dataseg code-code-codeseg)

mov ds,ax помещение в ds ax, теперь через [x] обращаемся к переменой x

mov bx,1 помещение в bx 1Зачем? Есть дескрипоры по умолчанию stdin=0, stdout=1, stderr=3

mov cx,21 помещение в сx 1 очевидно длина строки для передачи в обработчик строк Какой обработчик строк - это стандартная процедура DOS записать в файл N байт

mov dx,offset Hellostr помещение в dx смещения относительно начала сегмента указаного в assume ds:useseg, в даном случае строка отсутствует и в зависимости от компилятора либо ошибка "не привязан ds" или "привязан по умолчанию к ds dataseg". Команда подготавливает к передаче даных: передается адрес стороки hellostr в удаленные процедурына момент выполнения функции сегментный регистр УЖЕ определен

mov ah,40h команда подготавливет номер субпроцедуры процедуры обработки прерывания следующего за ней. (очевидно субфункция 40 вывода на экран строки)для вывода на экран строки, есть 09Н функция

int 21h прерывание 21 "дос вектор", "дос прерывание" большой набор функций для прикладных програм доступен через вызов этого прерывания с указанием номера ф. в ах, и даных в остальных регистра х даных

mov ah, 04Ch функция завершения програмы и передачи управления в дос.
int 21h

end start конец файла с указанием метки которой будет присвоено звание точки входа в програму (она в люом месте кода программы, но если здесь то и в програме иначе вход в начале сегмента code)

Оставлено для экзаменаторов.
В ответе эксперта есть директива компилятора MODEL TINY, что противоречит организации самой программы. Эксперт даже не проверил код посетителя ( который указал, что он ничего непонимает в ассемблере).

-----
∙ Отредактировал: Зенченко Константин Николаевич (Профессионал)
∙ Дата редактирования: 18.03.2008, 21:31
Ответ отправил: Кудинов Антон Павлович (статус: 2-ой класс)
Ответ отправлен: 18.03.2008, 20:26


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

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

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

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

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

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


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


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.72.6 beta от 22.03.2008
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное