ReadKey
PROC (Not covered in the 4th
edition)
Performs a no-wait keyboard check and reads a
single character if available.
If the returned ASCII code is zero, special keys
can be processed by checking the virtual scan code (ah) and virtual
key code (dx).
Call args: None. Return arg: ZF=1 if no key is available, ZF=0 if a key is read into the following registers: AL = key's Ascii code (is set to zero for special extended codes) AH = Virtual scan code DX = Virtual key code EBX = Keyboard flags (Alt,Ctrl,Caps,etc.) Upper halves of EAX and EDX are overwritten. Example: INCLUDE Irvine32.inc INCLUDE Macros.inc .code main PROC ; Read and display each key until <Esc> is input. mWriteLn " ASCII Virtual-scan Virtual-key Keyboard flags" call Crlf LookForKey: mov eax,50 ; sleep, to allow OS to time slice call Delay ; (otherwise, some key presses are lost) call ReadKey ; look for keyboard input jz LookForKey ; no key pressed yet mShow al,h mShow ah,h mShow dx,h mShow ebx,hnn cmp dx,VK_ESCAPE ; time to quit? jne LookForKey ; no, go get next key. exit main ENDP END main Output when F1, Shift-F1, Ctrl-F1, Alt-F1, and Esc keys are input: ASCII Virtual-scan Virtual-key Keyboard flags al = 00h ah = 3Bh dx = 0070h ebx = 00000000h al = 00h ah = 54h dx = 0070h ebx = 00000010h al = 00h ah = 5Eh dx = 0070h ebx = 00000004h al = 00h ah = 68h dx = 0070h ebx = 00000001h al = 1Bh ah = 01h dx = 001Bh ebx = 00000000hNotes: To wait for and read a single character from standard input, use the ReadChar procedure.
Converted from CHM to HTML with chm2web Pro 2.85 (unicode) |