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

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


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

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

Выпуск № 857
от 20.09.2007, 21:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 383, Экспертов: 27
В номере:Вопросов: 1, Ответов: 1


Вопрос № 102136: Здравствуйте, уважаемые эксперты. У меня 2 вопроса, связанные с процедурой вывода символов на экран Out_char proc программы Prog07. Собственно, этот вывод символов даётся автором с 3-ей главы, в Prog07 нужно лишь добавить заталкивание содержимог...

Вопрос № 102.136

Здравствуйте, уважаемые эксперты. У меня 2 вопроса, связанные с процедурой вывода символов на экран Out_char proc программы Prog07. Собственно, этот вывод символов даётся автором с 3-ей главы, в Prog07 нужно лишь добавить заталкивание содержимого регистра ax, (в котором код нажатой клавиши ) в стек. Однако, автор делает что-то хитрое: сначала в стек помещается содержимое регистра сх, потом ах, далее es и !!! опять ах. С какой целью в стек дважды помещается содержимое регистра ах? Зачем в стек нужно помещать содержимое регистров сх, es, ведь в предыдущих программах Prog3 – Prog6 в стек не помещалось содержание этих регистров. С моей точки зрения, правильным было бы в стек поместить только содержимое регистра ах и только один раз. Кстати, в этом случае программа нормально работает.
Второй вопрос: в предыдущих программах Prog3 – Prog6 сначала в регистр ах заносился атрибут символа, а только потом код символа. В Prog07, наоборот, сначала из стека вытаскивается код нажатой клавиши pop ax (там нерасширенный код, т.е. занят лишь регистр al), и только потом командой mov ah,31 заносится атрибут символа. Я решил поменять местами эти команды, т.е. сначала выполнялась бы строка (12) mov ah,31, потом (11) pop ax. Программа работала, но при этом цвет при каждой нажатой клавиши менялся. Вот почему он меняется при перестановке этих команд. Думаю, что атрибут символа меняется на 1, поэтому и цвет разный, но в процедуре я не могу найти этого увеличения. Заранее спасибо.

Приложение:

Отправлен: 15.09.2007, 15:40
Вопрос задал: Masada (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Волков Павел Юрьевич
Здравствуйте, Masada!
По первому вопросу, действительно можно ограничиться сохранением только содержимого AX.
Думаю, автор этим хотел показать только на использование этих регистров в подпрограмме, выполнил предупредительное сохранение :)

Изменение местами команд pop AX и mov AH,31 влияет на содержимое AH, размещение pop после mov замещает содержимое AH, в нем находиться значение скан-кода, возвращенного 10h функцией 16h прерывания.
Пример:
pop ax
mov ah,31
;AH - необходимые аттрибуты

mov ah,31
pop ax
;AH - скан-код, оставшийся после вызова функции 10h прерывания 16h
---------
Век живи, век учись.
Ответ отправил: Волков Павел Юрьевич (статус: Студент)
Ответ отправлен: 15.09.2007, 18:32
Оценка за ответ: 5


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

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

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

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

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


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


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

В избранное