我正在努力检查是否Alt在 linux bootloader 中按下了键
int 0x16
mov ah, 0x0e
int 0x10
上面的代码可以很好地打印 ascii 字符,但是如何检查Alt密钥?
我正在努力检查是否Alt在 linux bootloader 中按下了键
int 0x16
mov ah, 0x0e
int 0x10
上面的代码可以很好地打印 ascii 字符,但是如何检查Alt密钥?
您测试 0040h:0017h 的第 3 位。
http://www.ousob.com/ng/bios/ng559a.php
像这样的东西(在 AT/T 语法中):
mov $0x40,%ax
mov %ax,%es
testb $8,%es:0x17
jz noAltKey
.... ;; Alt pressed
noAltKey:
根据objdump -d -M intel
,这就是它在 Intel 语法中的样子:
0: 66 b8 40 00 mov ax,0x40
4: 8e c0 mov es,eax
6: 26 f6 04 25 17 00 00 test BYTE PTR es:0x17,0x8
d: 00 08
UPD:以下应该适用于 NASM:
mov ax,0x40
mov es,eax
test [es:0x17],byte 0x8
jz noAltKey
.... ;; Alt pressed
noAltKey: