Консультация № 14191
05.11.2004, 08:23
0.00 руб.
0 2 2
Здравствуйте, уважаемые эксперты! Ответьте, пожалуйста на вопрос: как создать массив в памяти и работать с ним?

Обсуждение

давно
Советник
419
1012
05.11.2004, 08:23
общий
это ответ
Доброе время суток, unc!
выделяй место под требуемое количество байтов ;)
и работай.
например:
Call GlobalAlloc, GPTR, 7*4 ;окно-объект
or eax, eax
jz @@exit_err
mov [@@Win], eax
mov eax, [@@NumSrc] ;массив о соответствии контролей и окон
push eax
shl eax, 3
add eax, 4
Call GlobalAlloc, GPTR, eax
or eax, eax
pop ecx
jz @@exit_err
xchg esi, eax
mov [esi], ecx
push edi
mov edi, [@@Win]
mov eax, esi
stosd
mov eax, [@@qWin]
stosd
mov eax, [@@arrMixers]
stosd
mov eax, [@@NumMixer]
stosd
mov eax, [@@record]
stosd
pop edi
add esi, 4

<h6><font color=#FF7F00>* EMan: -=- И легко перо, да на крышу не закинешь. =-= </font></h6>
Неизвестный
05.11.2004, 08:23
общий
это ответ
Приветствую Вас, unc!
1. Массив в памяти создаеться командой дублирования. Например:
massiv db 100 dup (01,02)
Число в скобках повоториться 100 раз, т.е. в памяти создадутся данные: 01,02,01,02,01,02,01,02,01,02,...
2. Работать с ним можно по адресу элемента, но адрес элемента массива придется вычислять самому.
например, получить регистр AX пятый элемент предыдущего массива (его размер 2 байта):
mov bx,2 ;размер массива
mov ax,5 ;номер элемента
mul ax ;получиние адреса элемента
mov ax,word ptr massiv[bx]; в АХ - нужный элемент

Форма ответа