Мой синтаксис сборки Intel немного ржавый, но word[vowels+p*2]
, безусловно, более корректен, чем byte[vowels+p*2]
. Вы должны умножить на размер элементов самостоятельно и указать тип читаемых данных (здесь, 16-битные величины).
Первый вопрос зависит от того, как ваш ассемблер интерпретирует ""
после db
и dw
. Я не знаю об этом - я никогда не смешивал ассемблер и 16-битные кодировки - но я бы предположил, что dw
является правильным.
Кстати, не забывайте использовать инструкцию MOVZX
вместо 16-битных регистров, которые ассемблер может вам разрешить использовать. Использование 16-битных регистров в 32-битном режиме генерирует длинные инструкции, которые также выполняются медленно по ряду причин. MOVZX
расширяет 16-разрядное считываемое значение, чтобы занять весь 32-разрядный регистр, что является правильным способом их обработки.