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