Массив MASM lengthof

#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 что . Но да, это стандартный способ заставить ассемблер вычислять размеры статических данных для вас, хотя MASM LENGTHOF , по-видимому, является удобным ярлыком, если удобно объявлять весь массив в одной строке.