更改锁定键状态指示灯

时间:2014-03-06 00:26:04

标签: assembly operating-system nasm

如何从独立的NASM文件(无操作系统)打开和关闭锁定键(Caps Lock,Num Lock和Scroll Lock)上的状态指示灯?

我知道xset可以在linux终端中使用,而其他操作系统有其他方法可以打开和关闭状态指示灯。但是如果没有操作系统我该怎么办呢?

1 个答案:

答案 0 :(得分:2)

此独立文件将打开Caps Lock,Scroll Lock和Num Lock键盘灯。

; blinklights.asm

[BITS 16]
[ORG 0x7C00]

jmp Code_Start


Switch_Kbd_Leds:

    push dx     ; Store current values.
    push ax

    mov dx, 60h ; '60h' is the 'kbd' port value.
    mov al, 0EDh    ; '0EDh' is 'set/reset leds' function.
    out dx, al  ; Output to the port.

    pop ax      ; Get the setting from the stack.
    out dx, al  ; Output to the port.

    pop dx      ; Restore 'dx'.
    ret     ; Return.

Code_Start:
    mov al, 00000111b
    call Switch_Kbd_Leds


    jmp $       

times 510-($-$$) db 0
dw 0xAA55       

它的工作方式是al包含打开或关闭某些灯光的位:

---- ---- ---- ---- ---- caps num  scrl
 0    0    0    0    0    x    x    x

此行打开Caps,Num和Scroll Lock指示灯:

mov al, 00000111b

最后,使用“设置/重置LED”(60h)调用键盘端口0EDh会更改值。