Ряды, последовательности итп.

Discussion in 'WASM.BEGINNERS' started by Semiono, Feb 24, 2009.

  1. Semiono

    Semiono Member

    Blog Posts:
    0
    Joined:
    Nov 27, 2005
    Messages:
    793
    Подскажите пожалуста, как можно создавать последовательности типа
    a=1; s=a+1,a+2,a+3... и так далее... хотяб до конечного счёта пусть это будет 15.
    как например в си есть же чё-то типа i+
    с умножением и делением тоже не помешало бы...
    кароче простые арифметические ряды, как можно задать, чтоб потом
    это подставлять в код при необходимости как растущую переменную?

    Я немного не догоняю ещё что сам хочу, но хотя бы пока с синтакс разобраться
    с оформлением подобных задач?

    И ещё как можно паузы или задержки делать в любом месте кода?
    Например, чтоб действия выполнялись медленно относительно юзера,
    а не со скоростью тактов процессора? Типа если вывести символы на экран,
    так они мгновенно все выпрыгивают, а хотелось бы задержать, чтоб плавно...

    Если принципиально это, то лучше на fasm сленге :)
     
  2. Partner

    Partner Павел

    Blog Posts:
    0
    Joined:
    Feb 28, 2008
    Messages:
    917
    Location:
    Los Angeles
    Задержку можно делать вызывая Sleep(x) где x - миллисекунды.
     
  3. Mikl___

    Mikl___ Супермодератор Staff Member

    Blog Posts:
    14
    Joined:
    Jun 25, 2008
    Messages:
    3,914
    Цикл. Начальные условия перед входом в цикл a:=1; i=1; массив s[15]; Условия для выхода из цикла i>15. Тело цикла s:=a+i; i++; То же на ассемблере
    Code (Text):
    1. .data
    2. s resb 15;массив
    3. .code
    4. mov ecx,15; размер массива
    5. mov ebx,2; Начальные условия
    6. a1: mov [s+ebx-2],bl;s[i]:=a+i
    7.       inc ebx; i++
    8.       loop a1
     
  4. Semiono

    Semiono Member

    Blog Posts:
    0
    Joined:
    Nov 27, 2005
    Messages:
    793
    Спасибо!
    Невероятно, я немножко юзаю AutoIt3 и даже подумывал, было бы в асме такое Sleep(100), а оно и есть!
    Mikl___, очень красивый пример и разъяснения!
     
  5. max7C4

    max7C4 New Member

    Blog Posts:
    0
    Joined:
    Mar 17, 2008
    Messages:
    1,203
    оффтоп:
    Mikl___
    не правда. счетчик с ecx :)
     
  6. Aspire

    Aspire New Member

    Blog Posts:
    0
    Joined:
    May 19, 2007
    Messages:
    1,028
    max7C4 Неправильно. Счетчик в есх, но он уменьшается с каждым loop, а нам нужно приращение - inc ebx.
     
  7. Mikl___

    Mikl___ Супермодератор Staff Member

    Blog Posts:
    14
    Joined:
    Jun 25, 2008
    Messages:
    3,914
    max7C4
    Можно массив и с конца заполнить, но ТС не заострял на этом внимание
    Code (Text):
    1. mov ecx,15; размер массива
    2. mov bl,16; Начальные условия
    3. a1: mov [s+eсx-1],bl;s[i]:=a+i
    4.       dec ebx;
    5.       loop a1;i--
    :)
     
  8. Semiono

    Semiono Member

    Blog Posts:
    0
    Joined:
    Nov 27, 2005
    Messages:
    793
    не resb а rb ;-

    а i* не бывает? :)
     
  9. Mikl___

    Mikl___ Супермодератор Staff Member

    Blog Posts:
    14
    Joined:
    Jun 25, 2008
    Messages:
    3,914
    Semiono
    resb это я с nasm перепутал, а что вы под i* подразумеваете? Ну так, чтобы разночтений не было..
     
  10. Semiono

    Semiono Member

    Blog Posts:
    0
    Joined:
    Nov 27, 2005
    Messages:
    793
    * умножить чтоб :)
    или просто inc ebx на mul ebx поменять при таком же условии, хотя нет наверно?
    вообщем, геометрическую прогрессию 1,2,4,8,16...
    и степени, тоже былоб не плохо! типа 2 в кубе, 3 в кубе, итп...
     
  11. jaja

    jaja New Member

    Blog Posts:
    0
    Joined:
    Jul 23, 2008
    Messages:
    243
    Не рекоммендую в експлоетах ряды использовать! Лучше Быстрое Преобразвание Фурье, чтобы Крутым быть!
     
  12. Aspire

    Aspire New Member

    Blog Posts:
    0
    Joined:
    May 19, 2007
    Messages:
    1,028
    Для степеней двойки, вместо умножения, можно пользовать сдвиг shl ebx, x - где х - целое число.
     
  13. Mikl___

    Mikl___ Супермодератор Staff Member

    Blog Posts:
    14
    Joined:
    Jun 25, 2008
    Messages:
    3,914
    Semiono
    Если все члены прогрессии заранее известны (коэффициенты не вычисляются программой), то проще создать ее в данных: s db 1, 2, 4, 8, 16, ..., 128 -- используйте макросы
     
  14. Semiono

    Semiono Member

    Blog Posts:
    0
    Joined:
    Nov 27, 2005
    Messages:
    793
    >> коэффициенты не вычисляются программой
    да была такая мысль! ок! jaja, про Фурье пожалуйста по подробней, вернее про fasm :)