Контроллеры клавиатуры. Не загорается *lock - Assembler
Формулировка задачи:
Пожалуйста помогите. Все работает кроме самого важного. Не загорается индикатор Numlock, и не выключаются клавиши caps и scroll. Задание и листинг ниже.
При нажатии клавиши HOME включить индикатор NumLock и отключить индикаторы ScrollLock и CapsLock. Если введен символ 0, 2 или 4, вывести на дисплей его значение, увеличенное в два раза.
model small .stack 100h .data Press db 'Nagmite lubuyu klavishu', 10, 13, '$' PressedHome db 'Nazhata klavisha HOME!', 10, 13, '$' PressedNums db ' vvedeno. Udvoennoe znachenie' TheEnd db 10, 13, 'konec', 10, 13, '$' error db 10, 13, 'oshibka kontrollera*', 10, 13, '$' .code start: mov ax, @data mov ds, ax lea dx, Press mov ah, 9h int 21h mov ah, 8h int 21h cmp al, 0 jne ascii int 21h cmp al, 47h jne konec ;************************ Ѓ‹ЋЉ 1 ************************ lea dx, PressedHome mov ah, 9h int 21h cli xor cx, cx wait1: in al, 64h test al, 10b loopnz wait1 jnz er mov al, 0EDh out 60h, al xor cx, cx wait2: in al, 64h test al, 10b loopnz wait2 jnz er mov al, 010b out 60h, al sti jmp exit ;********************************************************* ascii: cmp al, 30h jz nums cmp al, 32h jz nums cmp al, 34h jz nums jmp konec ; ******************** Ѓ‹ЋЉ 2 ******************************* nums: mov ah, 02h mov dl, al int 21h mov cl, al lea dx, PressedNums mov ah, 9h int 21h mov al, cl mov bl, 30h sub al, bl shl al, 1 add al, bl mov ah, 02h mov dl, al int 21h jmp exit ;********************************************************* konec: lea dx, TheEnd mov ah, 9h int 21h jmp exit er: lea dx, error mov ah, 9h int 21h exit: mov ah, 0 int 16h mov ax, 4C00h int 21h end start
Решение задачи: «Контроллеры клавиатуры. Не загорается *lock»
textual
Листинг программы
model small .stack 100h .data Press db 'Nagmite lubuyu klavishu', 10, 13, '$' PressedHome db 'Nazhata klavisha HOME!', 10, 13, '$' PressedNums db ' vvedeno. Udvoennoe znachenie' TheEnd db 10, 13, 'konec', 10, 13, '$' error db 10, 13, 'oshibka kontrollera*', 10, 13, '$' .code start: mov ax, @data mov ds, ax lea dx, Press mov ah, 9h int 21h mov ah, 8h int 21h cmp al, 0 jne ascii int 21h cmp al, 47h jne konec ;************************ Ѓ‹ЋЉ 1 ************************ lea dx, PressedHome mov ah, 9h int 21h cli xor cx, cx wait1: in al, 64h test al, 10b loopnz wait1 jnz er mov al, 0EDh out 60h, al xor cx, cx wait2: in al, 64h test al, 10b loopnz wait2 jnz er mov al, 010b out 60h, al sti jmp exit ;********************************************************* ascii: cmp al, 30h jz nums cmp al, 32h jz nums cmp al, 34h jz nums jmp konec ; ******************** Ѓ‹ЋЉ 2 ******************************* nums: mov ah, 02h mov dl, al int 21h mov cl, al lea dx, PressedNums mov ah, 9h int 21h mov al, cl mov bl, 30h sub al, bl shl al, 1 add al, bl mov ah, 02h mov dl, al int 21h jmp exit ;********************************************************* konec: lea dx, TheEnd mov ah, 9h int 21h jmp exit er: lea dx, error mov ah, 9h int 21h exit: mov ah, 0 int 16h mov ax, 4C00h int 21h end start
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д