手册上就这么写的,另外,并非所有编码都是唯一的,有多种编码的指令很多:
比如ADD reg,reg这种,对于ADD AX,AX来说,就有两种编码可以选:
01C0 ADD AX,AX 03C0 ADD AX,AX
你给出的应该是后面的那个ADD AX, imm,这种指令有两种编码。05/04编码的长度比81/80的要短,所以一般都选择更短的那个:
除了ADD以外,像MOV这些,也有很多多选的编码:
立即数到寄存器的有两种编码,后边那种更短。
到AX的也有两种,后面的更短。
大多数与AL/AX/EAX相关的指令都有一个更短的编码(ADD/AND/TEST/SUB...)。
手册上就这么写的,具体编译器用哪个可能是习惯问题。