I had planned to submit a short and quick interpreter for ;# in DOS as a code golf challenge, when I discovered that DOS did not interpret the # key correctly.
It's probably better to start dissecting it via a smaller example that also exhibits the behaviour:
org 0x100
L:
  mov ah, 01h      ; new input -> al
  int 21h
test al, '#'       ; check if the hash key was pressed
jnz end            ; if it wasn't, jump to the end of program
  mov dl, '1'
  mov ah, 02h
  int 21h          ; otherwise, output `1`
  jmp L            ; and loop to the beginning
end:
  mov ah, 00h      ; end the program
  int 21h
Entering # into the program, will cause it to test as false, and jump to the end. As will most other characters. However, when I enter one or more of the following characters: D, L, H, X, it outputs 1 and loops. This is obviously not what was intended.
It is probably important to note that I used Dosbox for the test.
From testing, it happens for '#', 0x23, 0x01, 0x1b (The last two scancodes were from page two of this pdf, found via a random search).
What, exactly, is going on here?
 
     
    