powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Pascal + ASM + Array()
7 сообщений из 7, страница 1 из 1
Pascal + ASM + Array()
    #34871121
Фотография Feg16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите пожалуйста, как в Турбо Паскале в ассемблерных вставках использовать массивы?
пример выдает ошибку на неверную комбинацию опкода

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
var
  a: array[ 0 .. 5 ] of integer;
  i: integer;
  { счетчик для цикла }
  count: integer;
label
  cycle;
  { метка для цикла }
begin
  asm
    cycle:
      mov si,  1 
      mov ax, a[si]
    loop cycle
  end;
  WriteLn(count); { 610 }
end.
...
Рейтинг: 0 / 0
Pascal + ASM + Array()
    #34871193
Dorandr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то я не понял, как он у тебя из этого loop'а выходит... Или я уже совсем все забыл?
...
Рейтинг: 0 / 0
Pascal + ASM + Array()
    #34871200
Фотография Feg16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DorandrЧто-то я не понял, как он у тебя из этого loop'а выходит... Или я уже совсем все забыл?

сабж внимательно прочитай, вопрос не в этом
...
Рейтинг: 0 / 0
Pascal + ASM + Array()
    #34871229
Intser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не получится так обраться к массиву - придется взять адрес начала и читать, смещаясь на нужное количство байт. Можно использовать строковые функции асма - lodsd например для чтения двойного слова
...
Рейтинг: 0 / 0
Pascal + ASM + Array()
    #34871406
Фотография Feg16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
такая мысля была, но врядли препод в исходнике что-либо поймет... :)
ок, спасибо
...
Рейтинг: 0 / 0
Pascal + ASM + Array()
    #34871492
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Intser wrote:

> функции асма - lodsd
Ещё можно что-то типа lea, и адресовать со смещением (типа
[регистры+BP+4]). Какие регистры разрешается, я точно не помню, вроде
бы можно было использовать в одном адресе [BP+BX+константное_смещение].
Плюс в более поздних процессорах, вроде бы, можно было поставить
множитель, равный степени двойки. Посмотрите справочник по командам или
учебники, там это должно быть. Просто у меня эти книжки
(Майко, "ассемблер x86" назвается, вроде бы) очень далеко лежат, иначе
подсказал бы точнее...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Pascal + ASM + Array()
    #34871813
Intser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErV
Intser wrote:

> функции асма - lodsd
Ещё можно что-то типа lea, и адресовать со смещением (типа
[регистры+BP+4]). Какие регистры разрешается, я точно не помню, вроде
бы можно было использовать в одном адресе [BP+BX+константное_смещение].
Плюс в более поздних процессорах, вроде бы, можно было поставить
множитель, равный степени двойки. Посмотрите справочник по командам или
учебники, там это должно быть. Просто у меня эти книжки
(Майко, "ассемблер x86" назвается, вроде бы) очень далеко лежат, иначе
подсказал бы точнее...
Posted via ActualForum NNTP Server 1.4

Можно, но в дельфях например, насколько я помню можно использовать в вставках адрес переменной как она обьявлена в списке локальных переменных, а не искать ее относительно ebp. Хорошая книжка Зубкова по этому поводу.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Pascal + ASM + Array()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]