• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте, чтобы узнать больше. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Выход из программы при наборе пароля

surgutfred

Ученик
Регистрация
12 Апр 2011
Сообщения
2
Реакции
0
Баллы
0
Выход из программы при наборе пароля

Добрый день.
Задание такое:
Написать программу, которая блокирует систему до тех пор, пока на
клавиатуре не будет нажата определенная комбинация клавиш
(пока пользователь не напишет пароль в строке).
Обработчик прерывания: клавиатура

В лекции есть похожий пример - Выход из программы происходит лишь при одновременном нажатии клавиш CTRL, ALT, Fl0.:

Код:
CODE SEGMENT  
 ASSUME CS:CODE
ORG 100H 
BEGIN: ;ждем нажатия клавиши
MOV АН,0
INT 16H
CMP AL,0
JNZ BEGIN    ;если код не расширенный - повторить
CMP АН,103     ;код одновременного нажатия Ctrl и F10
JZ  PROV
СМР АН,113   ;код одновременного нажатия Alt и F10
JZ  PROV
JMP SHORT BEGIN
PROV:    ;здесь проверяем биты состояний клавиш Ctrl и Alt
MOV AX,40Н
MOV ES,AX
TEST BYTE PTR ES:[17H],00000100В ;проверка слова состояния 
; клавиатуры на клавишу Ctrl
JZ  BEGIN
TEST BYTE PTR ES:[17H],00001000В    ;проверка слова состояния ;клавиатуры на клавишу Alt
JZ  BEGIN 
EXIT:
MOV AH,4CH
INT 21H 
CODE ENDS
END BEGIN
На лекции препод копировал из лекции в файл, компилировал и демонстрировал работу проги. Но у меня дома почему то не компилится, ошибки прут.
Типа такого:
ex.asm(5): error A2044: invalid character in file
ex.asm(9): error A2044: invalid character in file
ex.asm(11): error A2044: invalid character in file
ex.asm(11): error A2039: line too long
ex.asm(12): error A2044: invalid character in file
ex.asm(12): error A2039: line too long
ex.asm(13): error A2044: invalid character in file
ex.asm(13): error A2039: line too long
ex.asm(14): error A2044: invalid character in file
ex.asm(14): error A2039: line too long
и т.д.

Чего то не хватает? Я ошибки понимаю как неправильный символ и длинная строка, но ничего такого не вижу.
Помогите понять почему не компилится? Если поможете с написанием программы то же буду благодарен.

Файлы ассемблера у меня такие
LINK.EXE
MASM.EXE
ML.EXE
 
как неправильный символ
Так оно и есть.
Код:
MOV [b]АН[/b],0
Например, в этой строке регистр AH написан русскими символами... Все остальное вызвано схожими ошибками.
 
Так оно и есть.
Код:
MOV [b]АН[/b],0
Например, в этой строке регистр AH написан русскими символами... Все остальное вызвано схожими ошибками.

А как можно быстро "вычислить" русские символы?
 
как вариант - перевести в другую кодовую таблицу :))
 
Если есть Punto Switcher, можно выделить нужный текст и нажать Shift+Break. Текст конвертнется в другую раскладку, там можно понять, насколько русский текст. Но это долго. Поди, быстрее будет перепечатать те операторы, на которые ругается комп.
 
Назад
Сверху