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

RusFAQ.ru: программирование на языке Assembler


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

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 419
от 07.04.2006, 00:35

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


Вопрос № 39169: Здравствуйте. Помогите, пожалуйста, разобраться. Вот прога из какого-то учебника по ассемблеру. Она должна переключать светодиоды на клаве. Компилируется нормально в формате .com, но не работает. Светодиоды не загораются хотя после её запуска...

Вопрос № 39.169
Здравствуйте.
Помогите, пожалуйста, разобраться.
Вот прога из какого-то учебника по ассемблеру. Она должна переключать светодиоды на клаве. Компилируется нормально в формате .com, но не работает. Светодиоды не загораются хотя после её запуска буквы печатаются большие а диод capslock не горит. Как сделать чтобы диоды загорались?
; mig.asm
; циклически переключает светодиоды клавиатуры
.model tiny
.code
org 100h
start proc near
mov ah,2 ; функция 02 прерывания 1Ah
int 1Ah ; получить текущее время
mov ch,dh ; сохранить текущую секунду в СН
mov cl,0100b ; CL = состояние светодиодов клавиатуры
main_loop:
call change_LEDs ; установить светодиоды в соответствии с CL
shl cl,1 ; следующий светодиод,
test cl,1000b ; если единица вышла в бит 3,
jz continue
mov cl,0001b ; вернуть ее в бит 0,
continue:
mov ah,1 ; проверить, не была ли нажата клавиша,
int 16h
jnz exit_loop ; если да - выйти из программы
push cx
mov ah,2 ; функция 02 прерывания 1Ah
int 1Ah ; получить текущее время
pop cx
cmp ch,dh ; сравнить текущую секунду в DH с СН,
mov ch,dh ; скопировать ее в любом случае,
je continue ; если это была та же самая секунда - не
; переключать светодиоды,
jmp short main_loop ; иначе - переключить светодиоды
exit_loop:
mov ah,0 ; выход из цикла - была нажата клавиша,
int 16h ; считать ее
ret ; и завершить программу
start endp
; процедура change_LEDs
; устанавливает состояние светодиодов клавиатуры в соответствии с числом в CL
change_LEDs proc near
call wait_KBin ; ожидание возможности посылки команды
mov al,0EDh
out 60h,al ; команда клавиатуры EDh
call wait_KBin ; ожидание возможности посылки команды
mov al,cl
out 60h,al ; новое состояние светодиодов
ret
change_LEDs endp
; процедура wait_KBin
; ожидание возможности ввода команды для клавиатуры
wait_KBin proc near
in al,64h ; прочитать слово состояния
test al,0010b ; бит 1 равен 1?
jnz wait_KBin ; если нет - ждать,
ret ; если да - выйти
wait_KBin endp
end start
Отправлен: 02.04.2006, 00:11
Вопрос задал: Rus (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

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

По кодовому почерку видно, что этот код делал профи. и видемо он прежде чем отдовать её в использование тестировал. И она у него работала.
Мой вам совет, попробуйте запустить эту программу в "чистом ДОС" или создайте загрузочную дискету в Windows этим вы создадите ДОС, вот там то и попробуйте, ну предварительно загрузившись через загрузочную дискету.

С, Уважением MnEm0n!C.


---------
Hello Worlds
Ответ отправил: Пан Павел Константинович (статус: 5-ый класс)
Ответ отправлен: 02.04.2006, 09:45
Оценка за ответ: 5
Комментарий оценки:
Пробовал из под нортона с ХР (дискеты не было) сегодня купил, загрузился - работает. Спасибо.


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

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

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

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

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


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


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.21 от 03.04.2006
Яндекс Rambler's Top100

В избранное