gpt4 book ai didi

assembly - 如何在 NASM 中等待指定的按键被按下?

转载 作者:行者123 更新时间:2023-12-02 19:29:37 25 4
gpt4 key购买 nike

我正在创建自定义 MBR,它将加载我的消息,在按下指定的键 CTRL+ALT+ESC 后,它将加载原始 MBR,除了等待按键之外,我已经完成了所有操作。我找到了等待任何按键的代码,但我已经指定了按键,我知道我可以使用AL来设置按下按钮的ASCII字符,但我有3个组合键,而且它们也不是 ASCII 字符。那么我怎样才能实现这一点呢?

这是我的代码的一部分,这只是示例:

org 0x7c00
bits 16

; wait for key
mov ah,0
int 16h

; reboot
int 19h


MBR_signature:
times 510-($-$$) db 0
db 55h,0aah

最佳答案

您可以使用Int 16/AH=00h等待下一次击键。您可以继续检查击键,直到按下 ESCAPEscan code对于 ESCAPE 来说是 01h。如果已按下,则可以使用 Int 16/AH=02h获取换档标志,其中包括当前是否按下 CONTROL 和/或 ALTAL 的位 2 和 3 将包含它们的当前状态。此代码片段应演示对 CONTROLALT ESCAPE 的检测:

org 0x7c00
bits 16

getkey:
xor ah,ah ; AH = 0
int 16h ; Wait for key
cmp ah, 01h ; Scan code 1 = Escape
jne getkey ; If Escape not pressed get another key

mov ah,2h
int 16h ; Query keyboard status flags
and al, 0b00001111 ; Mask all the key press flags
cmp al, 0b00001100 ; Check if ONLY Control and Alt are pressed and make sure
; Left and/or Right Shift are not being pressed
jne getkey ; If not go back and wait for another keystroke
; Otherwise Control-Alt-Escape has been pressed
; reboot
int 19h

MBR_signature:
times 510-($-$$) db 0
db 55h,0aah

关于assembly - 如何在 NASM 中等待指定的按键被按下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51900324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com