Двумерные массивы в ассемблере
Не понимаю как использовать двумерные массивы на ассемблере. Вот пример кода, как сделать такое же с двумерным массивом?
void main() {
setlocale(LC_ALL, ".1251");
int A[5], i = 0, max = A[0];
for (i = 0; i < 5; i++) {
printf("A[%d] = ", i);
scanf("%d", &A[i]);
}
for (i = 0; i < 5; i++) {
if (A[i] > max) {
max = A[i];
}
}
printf("max on c = %d\n", max);
max = 0;
__asm {
cld
mov ecx, 5 // ЕСХ = всего элементов
lea esi, A // ESI = адрес массива
mov ebx, [esi] // EBX = первый элемент
lp: lodsd // ЕАХ = очередной элемент массива
cmp eax, ebx
jbe bol // переход, если меньше
mov ebx, eax //присваиваем макс значение
bol: Loop lp // промотать ЕСХ - раз..
mov max, ebx
}
printf("max on asm = %d\n", max);
getch();
}
Источник: Stack Overflow на русском