Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Asm для начинающих > вопрос по двумерному массиву |
Автор: NECsoft 6.4.2008, 21:19 | ||
здравствуйте немогу понять почему затираються значения в двухмерном массиве, упростил прогу до максимума, а в проблеме так и не разобрался =( помогите пожалуйста когда вывожу значения массива на экран то вижу вместо 123456, 145456 =( вот код...
|
Автор: dumb 6.4.2008, 21:27 |
![]() http://forum.vingrad.ru/index.php?showtopic=201735&view=findpost&p=1449476 |
Автор: NECsoft 6.4.2008, 21:55 | ||
незнаю, inc bx роли не сыграет, даже если представить код в таком виде, всеравно записывает какую то муть... ![]()
Добавлено через 9 минут и 59 секунд блин, пытался представить bx в виде bx*12 чтобы перейти на следующую "строчку", а надо было просто тупо прибавить - bx+12... тупо... вопрос снят ![]() |
Автор: dumb 6.4.2008, 22:21 |
если бы ты внимательно прочитал то, что написано в вышеуказанной ссылке, то понял бы свою ошибку. ассемблер, в отличие от языков высокого уровня, не имеет "умной" операции индексации по массивам. смещения в массивах задаются в байтах. точка. даже если ты напишешь A[2][3][4], то это будет просто A[2+3+4], т.е. A[9]. причем это будет не 9-ый элемент массива, а элемент, находящийся в массиве со смещением 9 байт от его начала. именно поэтому в "твоем" коде присутствует такой кусок: чтобы перейти к следующей строке массива, нужно прибавить к "опорному" индексу, отвечающему за начало строки, размер одной строки массива в байтах. в твоем случае - 12. ps. пока писал, ты уже сам все понял. ![]() |