Вопрос № 34814: Эта процедура вызывает в цикле вместе с другой проверяющей ALT. После вызова "The Norton Guides, version 1.0" - SHIFT+F1 цикл останавливается на шестой строке. Ошибки не происходит после вызова ascii.com - ALT+A
И как вообще одновр...Вопрос № 34881: Link.exe выдаёт мне такую ошибку:
hello.obj : fatal error L1102: unexpected end-of-file...Вопрос № 34888: Привет наставникам!
Почему строка написанная на русском языке, при работе программы (ком-программа в ДОСе) выводит какие-то кракозябры.
И как это исправить!!!!!!!!???????????
Спасибо....
Вопрос № 34.814
Эта процедура вызывает в цикле вместе с другой проверяющей ALT. После вызова "The Norton Guides, version 1.0" - SHIFT+F1 цикл останавливается на шестой строке. Ошибки не происходит после вызова ascii.com - ALT+A
И как вообще одновременно проверять ALT и ждать ввода символа
Отвечает: Лысков Игорь Витальевич
Здравствуйте, Семенов Алексей Николаевич!
Для начала надо понять, как отрабатываются клавиши ALT, SHIFT, CTRL,...
По нажатию/отпусканию этих клавиш устанавливаюся/сбрасываются
сответствующие битики в специальных служебных байтах по адресам 0:417h и 0:418h
Отсюда ответ на поставленный вопрос: ждем нужный код (тот же F1),
сразу после этого проверяем состояние указанных байт и делаем вывод...
проверить можно как непосредственно прочитав ячейки памяти, так и используя
функции 02h и 12h прерывания клавиатуры.
Отвечает: Евгений Иванов
Здравствуйте, Семенов Алексей Николаевич!
Клавиатура передаёт коды нажатия и отжатия клавиш. Поэтому в качестве клавиш Alt, Shift или Ctrl может выступать ЛЮБАЯ клавиша. А делать это так - ждём нажатия клавиши, после этого устанавливаем флажок. После этого ждём нажатия нужной нам клавиши и если флажок установлен, то значит, нажато две клавиши. И т.п.
При отжатии этот флажок сбрасывается.
Таким приёмом можно отслеживать нажатие сразу нескольких клавиш - делаешь массив в 128 (256) байт и там хранишь состояние всех клавиш.
Например, смотри исходник моего эмулятора Zx-Spectrum.
http://eugene-ivanov.narod.ru/research_zxs.htm
А именно:
;------------------------
; Обработчик 9 прерывания
proc Int9Entry
push eax ds DataWork
sub eax,eax
pop ds
Assume DS:DataWork
in al,96
mov [LastKey+dat],al
jmp wptr [cs:eax*2+tKeysJump]
ExitInt9:
in al,97
mov ah,al
or al,128
out 97,al
mov al,ah
jmp $+2
out 97,al
mov al,32
pop ds
out 32,al
pop eax
iret
endp
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 07.02.2006, 09:29
Вопрос № 34.881
Link.exe выдаёт мне такую ошибку:
hello.obj : fatal error L1102: unexpected end-of-file
Отвечает: Евгений Иванов
Здравствуйте, Dolgavin Alexey Sergeevich!
Вполне возможно, не тот формат объектного файла.
Есть два формата - COFF и OMF.
При ассемблировании выбери тот, которые поддерживает твой LINK, или преобразовывай в COFF.
Успехов.
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 06.02.2006, 20:51 Оценка за ответ: 5
Отвечает: skif quest
Здравствуйте, Dolgavin Alexey Sergeevich!
В конце файла отсутствует конец линии. МОжет достаточно добавить в исходник enter в самом конце?
Ответ отправил: skif quest (статус: 1-ый класс)
Отправлен: 07.02.2006, 06:30
Вопрос № 34.888
Привет наставникам!
Почему строка написанная на русском языке, при работе программы (ком-программа в ДОСе) выводит какие-то кракозябры.
И как это исправить!!!!!!!!???????????
Спасибо.
Отправлен: 06.02.2006, 22:13
Вопрос задал: Baim (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Евгений Иванов
Здравствуйте, Baim!
Для ДОСа используй кодировку принаписании программ - 866.
удачи!
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 06.02.2006, 22:32 Оценка за ответ: 5
Отвечает: Sager
Здравствуйте, Baim!
Потому, что ты сохраняешь ее в вин-кодировке. Для этого используй, например, edit.com или far.
Ответ отправил: Sager (статус: Практикант)
Отправлен: 07.02.2006, 11:05 Оценка за ответ: 3