dark_rain
|
|
« : 31-03-2008 08:46 » |
|
доброе утро уважаемые завсегдатые форума и гости, я недавно начал изучать асемблер, но масивы не полюбил еще с паскаля, нам задали задание в академии, но вот решить его я не могу... наглеть и просить сделать его вместо меня я не буду, просто объясните мне пожалуйста как создать массив 5 на 5 и обратится к его элементу... с уважение новичек форума Л.
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #1 : 31-03-2008 08:54 » |
|
а какой нужен массив - динамический или статический ?
А для доступа к элементу массива нужно знать адрес начала массива и номер элемента в массиве
адрес_элемента == начало_массива + номер_элемента_zb * размер_элемента
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #2 : 31-03-2008 09:06 » |
|
создать массив = выделить под массив определенный объем памяти Алексей1153++, с точки зрения создания массива, пофигу - динамический или статический, и там и там резервируется память под массив
Массив - непрерывная область памяти предназначеная для хранения данных. необходимо знать начальный адрес массива
адрес_элемента == начало_массива + номер_элемента * размер_элемента
об этом и Алексей1153++ сказал
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #3 : 31-03-2008 09:12 » |
|
ну нет, одно дело резервируется на этапе написания программы, другое - во время выполнения. Когда и почистить надо не забыть. Думаю, человеку всё же статику нужно
dark_rain , и не забудь обратить внимание на постфикс "_zb" , этим самым отмечено, что номер элемента массива в этой формуле - начинающийся с нуля
|
|
« Последнее редактирование: 31-03-2008 09:14 от Алексей1153++ »
|
Записан
|
|
|
|
Sla
|
|
« Ответ #4 : 31-03-2008 09:20 » |
|
почему у народа такое непонимание массивов? Что в них сложного? Ведь с массивами сталкиваются каждый день - жилой массив, лесной массив Чем эти массивы отличаются от программных?
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #5 : 31-03-2008 09:26 » |
|
Слав, если вопрос ко мне - у меня нет непонимания массивов, а если к новичку - то тут можно понять , сам помню, лет 10 назад первый раз познакомился с первым массивом - было почему то сложно. Сейчас не могу понять, почему Так что не надо удивляться, проще объяснить и всё
|
|
|
Записан
|
|
|
|
dark_rain
|
|
« Ответ #6 : 31-03-2008 09:43 » |
|
ребят, спасибо большое что взялись за рассмотрение моего вопроса, но все и дело в том что я понимаю что такое массив... но фасм учу неделю только... и не могу понять посредством каких команд мне его создать... можно вас попросить код?
|
|
|
Записан
|
|
|
|
dark_rain
|
|
« Ответ #7 : 31-03-2008 09:45 » |
|
у мя там задание короч создать массив 5 на 5 а потом позагонять его элементы в рон, складывать их вычитать и так далее... то складывать, вычитать все предельно просто, а вот создать его и обратится к элементу я не понимаю как( увы
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #8 : 31-03-2008 09:55 » |
|
dark_rain, для объявлений массива (а это очень просто) тебе , значит, ещё надо понять, что такое массив. Представь одну переменную, размером в 1 байт. Это будет массив, размером в 1 элемент, каждый элемент - размером в 1 байт. Так вот, как и количество элементов, так и размер одного элемента у массивов могут быть всякие разные, главное, чтобы все элементы были одного размера (и тип переменных был один) , а также располагаться в памяти элементы должны друг за другом. Можно разместить в памяти, скажем, 5 переменных: myarray: db 11, 22, 33, 44, 55 ; элементы массива ; 0 1 2 3 4 ; индексы массива)
Мы знаем, что адрес 0-го элемента == myarray . Это начало массива или адрес массива. адрес 3-го элемента: myarray[3] == myarray + 3 * размер_типа_элемента_в_массиве == myarray+ 3*1
Это всё двумерный массив 00,01,02,03,04, 10,11,12,13,14, 20,21,22,23,24, 30,31,32,33,34, 40,41,42,43,44 расположится в памяти как одномерный: db 00,01,02,03,04, 10,11,12,13,14, 20,21,22,23,24, 30,31,32,33,34, 40,41,42,43,44
|
|
|
Записан
|
|
|
|
dark_rain
|
|
« Ответ #9 : 31-03-2008 10:00 » |
|
еще как бы я понимаю что начало массива и прочее мне нужно посмотреть в olly дебагере, размер элемента мне дан... в задании было сказано что массив из элементов в два баита, то есть dw, да и на самом то деле этот вопрос не столь важен... размер можно сказать любой.
|
|
|
Записан
|
|
|
|
dark_rain
|
|
« Ответ #10 : 31-03-2008 10:06 » |
|
Леха!! ура! не зря ты теска мой! спасибо огромное! это то что нужно! конечно форум не на эту тему но смотри, если че та нужно в области звука, звукотехники и связанного с этим ты гри, я помогу чем смогу, чуть чуть понимаю в этом)
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #11 : 31-03-2008 10:08 » |
|
dim_x equ 5 dim_y equ 5
array dw dim_x*dim_y dup 0
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #12 : 31-03-2008 10:10 » |
|
если че та нужно в области звука, звукотехники и связанного с этим ты гри, я помогу чем смогу, чуть чуть понимаю в этом)
а ты на форуме оставайся - тут и такие вопросы, бывает, нужно обсудить ))
|
|
|
Записан
|
|
|
|
dark_rain
|
|
« Ответ #13 : 31-03-2008 11:56 » |
|
дык куда ж я денусь) останусь конечно) тут люди дружные, приятно очень)
|
|
|
Записан
|
|
|
|
|