Нужна помощь в заполнении массива NxM по спирали

Низкоуровневое программирование портов, микроконтроллеров и т.д.

Модератор: Andy

Ответить
war13
Сообщения: 4
Зарегистрирован: 20 апр 2010, 22:40

Собственно говоря есть код на паскале, я пытаюсь его перевести на асм, под tasm, но что-то у меня все регистры заканчиваются на первом же цикле, а в стек если пихать, то можно запутаться)).
Вот собственно код на паскале

Код: Выделить всё

begin
 i:=0; k:=0; p:=1;

 while i<n*m do
  begin
    inc(k);
    for j:=k to m-k+1 do
     begin
       inc(i);
       s[k,j]:=p;
       inc(p);
     end;

  for j:=k+1 to n-k+1 do
   begin
     inc(i);
     s[j,m-k+1]:=p;
     inc(p);
   end;

  for j:=m-k downto k do
   begin
     inc(i);
     s[n-k+1,j]:=p;
     inc(p);
   end;

  for j:=n-k downto k+1 do
   begin
     inc(i);
     s[j,k]:=p;
     inc(p);
   end
 end;

p.s. 3 день пытаюсь, и 3 день подряд к вечеру голову сносит просто в щепки))
xrnd
Сообщения: 5
Зарегистрирован: 30 апр 2010, 03:10
Контактная информация:

А какой размер имеют элементы массива и переменные?
BulldozerBSG
Сообщения: 270
Зарегистрирован: 09 янв 2010, 04:14
Контактная информация:

обходной вариант. используй FPC для генерации листинга на асме и листинга паскаля.
war13
Сообщения: 4
Зарегистрирован: 20 апр 2010, 22:40

Размер массива макс 50,а элементы начиная с 1 до n*m
xrnd
Сообщения: 5
Зарегистрирован: 30 апр 2010, 03:10
Контактная информация:

Можно очень тупо переделать - объявить все индексы как глобальные переменные и перевести на ассемблер построчно.
war13
Сообщения: 4
Зарегистрирован: 20 апр 2010, 22:40

да можно вот только я не умею переводить 2 дня назад пытался перевести сам код на бумаге, получилось строк 200 и нехера не пашет хотя вроде и все норм работает ))) вот такая вот ерунда(((
Ответить