2015-05-12 2 views
0

Вот небольшой фрагмент кода сборки (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] 

Я получаю эту ошибку во время компиляции в строке, содержащей «вкл частота [BX]»: ERROR Аргумент операции или инструкции имеет нелегальную размер.

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

ответ

2

Нет inc, который может увеличивать dword в 16-битном режиме. Вы должны синтезировать его из надстройке/АЦП, такие как:

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

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

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

+0

Изменения определения массива в 'Частотного DW 512 DUP (0)' сделал трюк. Большое спасибо за Вашу помощь. – Minikaz

Смежные вопросы