|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.05.2007, 01:56 | #1 |
Регистрация: 04.05.2007
Сообщений: 4
|
Двухмерный массив (нужна помощь)
Пишу программу нужно посчитать сумму элементов двумерного массива
Но я его либо не так объявляю либо не так обращаюсь Помогите кто нить новичку Код:
|
04.05.2007, 20:15 | #2 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
в чём проблема то? код не проверял, но вроде должен работать.....
|
05.05.2007, 00:34 | #3 |
Регистрация: 04.05.2007
Сообщений: 4
|
Резуль работу программы отслеживаю через Olly когда идет обращение к mas[0][0] то берется верный элемент 4... Следущий же элемент mas[0][1] мало того что записывается в регистр ah да еще и вывернутый... Как я предполагаю, я неправильно обращаюсь к элементам заданного массива. Надеюсь понятно
|
05.05.2007, 00:56 | #4 |
Пользователь
Регистрация: 27.04.2007
Сообщений: 13
|
Аццкая смесь 32-битного и 16-битного кода! Перепиши «с нуля». Ассемблер — не язык высокого уровня, поэтому обращаться к двумерному массиву, расположенному по метке mas нельзя как просто к mas [si][di], потому как не существует такого режима адресации у процессора. Например, если есть массив 5 х 3 байт и надо обратиться к элементу с индексом [4,1] (zero-based indices), то следует преобразовать этот индекс в линейное смещение, в данном случае это будет 4+1*5=9, то есть, искомый элемент будет находиться на 9 байт «дальше» самого первого байта массива. Для умножения используй инструкцию imul, для косвенной адресации — инструкции типа mov edx, byte ptr [eax+mas], если в eax — линейное смещение элемента.
|
05.05.2007, 01:47 | #5 |
Регистрация: 04.05.2007
Сообщений: 4
|
Я так и предполагал... А можно конкретизировать обращение к элементам массива именно для этой программы
|
05.05.2007, 07:37 | #6 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
тем более у тебя данные размером в байт, а ты используешь ax поэтому данные перевёрнутые и индексы неправильные, значит ты должен вместо
add ax, mas[si][di] делать так mov bl, mas[edi] add ax, bx в общем передалай весь код под 32 битность |
07.05.2007, 02:08 | #7 |
Регистрация: 04.05.2007
Сообщений: 4
|
Все, спасибо ребят разобрался... Могу выложить исходник если для поисковиков понадобится ... Другой вопрос теперь появился как реализовать работу со случайными и вещественными числами?)
|
07.05.2007, 04:03 | #8 |
Пользователь
Регистрация: 27.04.2007
Сообщений: 13
|
По вещественным числам смотри, например, тут: http://www.ray.masmcode.com/
А по генераторам случайных чисел — http://agner.org/random/ |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задача Pascal на массив (нужна помощь) | STIG_E70 | Помощь студентам | 4 | 18.06.2008 20:19 |
двухмерный массив | Enchantner | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 22.04.2008 20:47 |
Двухмерный массив | xtraSHAD0W | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 22.04.2008 18:17 |
Двухмерный массив (кинозал) | fudzy79 | Помощь студентам | 3 | 10.04.2008 00:07 |
Двухмерный массив | Atheist | Общие вопросы C/C++ | 4 | 22.11.2007 14:05 |