如何从独立的NASM文件(无操作系统)打开和关闭锁定键(Caps Lock,Num Lock和Scroll Lock)上的状态指示灯?
我知道xset
可以在linux终端中使用,而其他操作系统有其他方法可以打开和关闭状态指示灯。但是如果没有操作系统我该怎么办呢?
答案 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
会更改值。