The disassembler should be able to detect and process ASCII strings (detect multiple ASCII7 characters in a row) and blank areas (like those generated by times 255 db 0 etc.)
That would make disassembly a lot easier. Although encoding your strings as mnemonics is really sneaky :P
The disassembler could certainly detect sequences
of bytes that only use the lower 7 bits, or null
byte sequences; however, it wouldn't know when it
should interpret them as code, and when as data.
It wouldn't be that hard to determine whether it's code or data, just look in the range of printable characters, I guess.
Instead of guessing, you might want to actually take
a look at the x86 one-byte opcode range, to see how
it collides with the "range of printable characters".