【问题标题】:Change lock key status lights更改锁键状态灯
【发布时间】:2014-03-06 00:26:04
【问题描述】:

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

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

【问题讨论】:

    标签: assembly operating-system nasm


    【解决方案1】:

    此独立文件将打开 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”(0EDh) 调用键盘端口 60h 会更改值。

    【讨论】:

      猜你喜欢
      • 2021-01-19
      • 2011-01-11
      • 1970-01-01
      • 2021-02-17
      • 2010-10-25
      • 2021-05-17
      • 2021-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多