Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > Не могу выбрать регистр для хранения индекса элем.


Автор: Innuendo108 7.11.2010, 04:25
Программа "пробегает" строку и делает определенные действия с каждым её элементом.


загружается строка в регистр так:

lea bx, string1
mov al, [bx] ; теперь al - текущий элемент строки

текущий элемент необходимо сравнивать поочередно с элементами другой строки.
там я использую для указания на элемент string2[si], где изменяю регистр si.

Но возникла проблема. Я никак не могу сравнить с байтом значение si

cmp byte ptr si, length2

не работает, хотя length2 объявлена как байт.

Если я храню смещение строки не в si, а допустим в dl, то сравнение уже работает, но ругается на указание string[dl]


Как быть?

Автор: 586 7.11.2010, 06:10
Цитата(Innuendo108 @  7.11.2010,  04:25 Найти цитируемый пост)
не работает, хотя length2 объявлена как байт.

Объяви её как двухбайтовую.
Или так напиши:
Код
xor dx, dx
mov dl, length2
cmp si, dx


Цитата(Innuendo108 @  7.11.2010,  04:25 Найти цитируемый пост)
Если я храню смещение строки не в si, а допустим в dl, то сравнение уже работает, но ругается на указание string[dl]

Адресацию можно делать только через регистры BX, SI, DI и BP.

Автор: Innuendo108 7.11.2010, 12:35
ясно, спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)