В текущем Руководстве разработчика программного обеспечения Intel® 64 и IA-32 для архитектур это описано на стр. 509 из 4898:
В 16-разрядной сборке Intel невозможно использоватьAX
регистр для регистров косвенной адресации.
Как вы можете видеть в руководстве, вы можете использовать следующие регистры для косвенной адресации ;для всех следующих регистров существуют режимы адресации, которые используют их самостоятельно (или в парах base + index):
BX, BP, SI, DI
Они могут быть объединены с (с дополнительными смещениями)
[BX+SI] [BX+SI]+disp8 [BX+SI]+disp16
[BX+DI] [BX+DI]+disp8 [BX+DI]+disp16
[BP+SI] [BP+SI]+disp8 [BP+SI]+disp16
[BP+DI] [BP+DI]+disp8 [BP+DI]+disp16
[SI] [SI]+disp8 [SI]+disp16
[DI] [DI]+disp8 [DI]+disp16
disp16 [BP]+disp8 [BP]+disp16
[BX] [BX]+disp8 [BX]+disp16
Следовательно, ваша первая инструкция (расширенная)
MOV DL, BYTE PTR [BX]
действительна, а ваша вторая - нет, потому что в 8086(x86_16) В ISA нет кодировки режима адресации ModRM для него в машинном коде x86.
32-битные и 64-битные режимы адресации используют разные кодировки для режимов адресации, с дополнительным SIB (байт scale + index + base), который допускает практически любую комбинацию base и index (кроме index = RSP) и с 2-битным счетчиком сдвига (масштабным коэффициентом) для индекса.См. Ссылка на содержимое ячейки памяти.(режимы адресации x86) или другие таблицы в руководстве Intel.
mov DL, [EAX]
действительно даже в 16-битном режиме , но только на 386-совместимых ЦП.