Сборка: ошибка при попытке увеличить индекс массива
Вот небольшой фрагмент кода сборки (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.