IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

> Не могу получить адрес массива :(
сообщение
Сообщение #1


Гость






Здравствуйте, есть

программа

{в ней}

функция, которая работает с массивом и в этой функции
я пытаюсь сделать такую вещь:

asm    
lea si,d
lodsw
cmp ax,3
je @m
jmp @exit
@m :
push si
lea si,e
lodsw
mov bx,ax
lodsw
mul bx
mov di,si
sub di,4
stosw
mov ax,0
stosw
@exit:
end;


т.е на паскале:

case d[i] of
3: begin e[i]:=e[i]*e[i+1];
e[i+1]:=0; end;
end;


проблема в том, что я с адреса, полученного командой lea, командой lodsw не получаю число из массива (массив integer), но если пишу на тот же адрес, то в массив все записывается nea.gif

отдельным куском данный код на ассемблере работает... Где может быть косяк?
Могу дать файл программы, но она большая.... Но все равно, может кто поможет.
Ассемблер изучаю один день, так что нужна помощь.

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Цитата(-Shaienn- @ 10.11.2006 16:34) *

проблема в том, что я с адреса, полученного командой lea, командой lodsw не получаю число из массива (массив integer), но если пишу на тот же адрес, то в массив все записывается nea.gif

Возможно это из-за того, что stosw пишет по ES:DI, а lodsw c DS:SI, а у тебя в этот момент сегменты разные.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


Цитата(Malice @ 10.11.2006 17:32) *

Возможно это из-за того, что stosw пишет по ES:DI, а lodsw c DS:SI, а у тебя в этот момент сегменты разные.


А как сегменты организовать одинаково? А то я думал, что получаю смещение и дальше не важно читаю, пишу ли...

прикрепил программку, данный код отдельным куском... все работает sad.gif

Сообщение отредактировано: Виталий Шевченко -


Прикрепленные файлы
Прикрепленный файл  AS3.PAS ( 298 байт ) Кол-во скачиваний: 265
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Цитата(Виталий Шевченко @ 10.11.2006 18:17) *

А как сегменты организовать одинаково?

asm
push ds {Запомним ds, вдруг он паскалю нужен был}
push es
pop ds {ds=es}
.... твой код
pop ds {Восстановим ds}
...
end;


Примерно так.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
-Shaienn-   Не могу получить адрес массива :(   10.11.2006 20:34
-Shaienn-   d: array [1..100] of integer e: array [1..100] of …   10.11.2006 20:51
volvo   Только присоедини его к сообщению, а не копируй те…   10.11.2006 20:51
Виталий Шевченко   Так и не смог я под своим нормальным именем зареги…   10.11.2006 21:11
Malice   проблема в том, что я с адреса, полученного коман…   10.11.2006 21:32
Виталий Шевченко   Возможно это из-за того, что stosw пишет по ES:DI…   10.11.2006 22:17
Malice   А как сегменты организовать одинаково? asm pus…   11.11.2006 0:11
Виталий Шевченко   asm push ds {Запомним ds, вдруг он паскалю ну…   11.11.2006 0:38
Виталий Шевченко   а можно еще вопрос, как мне из real массива вытащи…   11.11.2006 0:59
Malice   а можно еще вопрос, как мне из real массива вытащ…   11.11.2006 14:35
Виталий Шевченко   Думаю его надо сначала преобразовать из REAL в DO…   11.11.2006 19:25
FreeMan   хм. практически все :) во первых - сам написал, чт…   12.11.2006 0:43
Виталий Шевченко   я вас, наверное, уже достал глупыми вопросами, но …   12.11.2006 10:38
Виталий Шевченко   Написал я ассемблерную часть, но криво, у меня пас…   12.11.2006 14:04
FreeMan   Ну сначала asm lea di,s mov cx,100 mov ax,0 rep st…   12.11.2006 15:39
Виталий Шевченко   И все же, есть какие-нить нюансы добавления ассемб…   13.11.2006 22:36
Malice   Асм вставка это часть процедуры ? Приведи полный к…   14.11.2006 13:49
Виталий Шевченко   { в функцию передается значение переменной x, с…   14.11.2006 21:36
FreeMan   ты вот всякою фигню с ds, es мутишь, а восстанавли…   15.11.2006 2:00


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 11:50
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name