Контроллеры клавиатуры. Не загорается *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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.778 из 5
Похожие ответы