#arrays #assembly #masm
#массивы #сборка #masm
Вопрос:
У меня есть довольно большой массив, с которым мне нужно выполнить некоторую обработку, и когда я пытаюсь сохранить его LENGTHOF в регистре, он сохраняет только lengthof первой строки массива, а не всего массива. Массив должен быть объявлен точно так же, как это, поскольку он берется непосредственно из домашнего задания. есть какие-нибудь идеи относительно того, что я делаю не так?
объявление массива:
ages DWORD 4, 7, 4, 4, 8, 5, 4, 8, 4, 6, 6, 7, 4
DWORD 7, 5, 3, 4, 4, 6, 5, 4, 6, 5, 8, 7, 4, 5, 7
DWORD 6, 5, 7, 8, 7, 6, 5, 4, 5, 7, 5, 3, 5, 3, 6
DWORD 9, 6, 4, 7, 5, 4, 9
когда я пишу:
mov ecx, LENGTHOF ages
значение, хранящееся в ecx, составляет всего 13.
Комментарии:
1. Не уверен насчет MSAM, но создайте метку в конце для данных и вычислите
ages_end-ages
, чтобы получить длину.2. @Simson: им нужна длина в элементах, а не в байтах, так
ages_len = ($ - ages) / 4
что . Но да, это стандартный способ заставить ассемблер вычислять размеры статических данных для вас, хотя MASMLENGTHOF
, по-видимому, является удобным ярлыком, если удобно объявлять весь массив в одной строке.