On Sat, 27 Apr 2024, Fred Cisin via cctalk wrote:

> How many know that AAM is a two byte instruction, with te second byte beint
> 0Ah?
> Changing the second byte to 8 gave division by 8, etc.

 It's the kind of a question you can't really answer, but the feature has 
been known since forever.  Myself I've found this out in early 1990s, soon 
after I switched from the Z80 to x86.  And now it's a documented feature:

Opcode Instruction   Op/ 64-bit  Compat/ Description
                     En  Mode    Leg Mode
D5 0A  AAD           A   Invalid Valid    ASCII adjust AX before
                                          division.
D5 ib  (No mnemonic) A   Invalid Valid    Adjust AX before division to
                                          number base imm8.

Opcode Instruction   Op/ 64-bit  Compat/ Description
                     En  Mode    Leg Mode
D4 0A  AAM           A   Invalid Valid    ASCII adjust AX after
                                          multiply.
D4 ib  (No mnemonic) A   Invalid Valid    Adjust AX after multiply to
                                          number base imm8.

(from "Intel 64 and IA-32 Architectures Software Developer's Manual").  I 
did use these instructions in a bunch of my programs; by 1990s it hardly 
mattered that some early x86 clones did not support these encodings (and 
I think it was indeed the way to tell NEC V20 and other x86 chips apart: 
good if you wanted to make seamless use of the 8080 emulation mode).

 FWIW,

  Maciej

Reply via email to