Сборка: ошибка при попытке увеличить индекс массива

Вот небольшой фрагмент кода сборки (TASM), где я просто пытаюсь увеличить значение текущего индекса массива. Идея состоит в том, что массив "freq" будет хранить число (размер DWord), которое представляет, сколько раз этот символ ASCII был замечен в файле. Для краткости кода "b" хранит текущий считываемый байт.

Declared in data segment
freq DD 256 DUP (0)
b    DB ?
___________
Assume b contains current byte
mov bl, b
sub bh, bh
add bx, bx
inc freq[bx]

Я получаю эту ошибку во время компиляции в строке, содержащей "inc freq[bx]": ОШИБКА Аргумент операции или инструкции имеет недопустимый размер.

Любое понимание очень ценится.

1 ответ

Здесь нет inc это может увеличить меч в 16-битном режиме. Вам придется синтезировать его из add/adc, например:

add freq[bx], 1
adc freq[bx + 2], 0

Возможно, вам придется добавить переопределение размера, например word ptr или измените определение массива на freq DW 512 DUP (0),

Также обратите внимание, что вы должны масштабировать индекс на 4, а не на 2.

Другие вопросы по тегам