Вопрос № 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.
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Смирнов Михаил Владимирович!
Код с коментариями в приложении.
Если использовать 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)
Ответ отправил: Кудинов Антон Павлович (статус: 2-ой класс)
Ответ отправлен: 18.03.2008, 20:26