Поиск:

Ответ в темуСоздание новой темы Создание опроса
> машина с неограниченными регистрами, что это такое? 
:(
    Опции темы
ida
  Дата 26.4.2004, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


замужем
****


Профиль
Группа: Завсегдатай
Сообщений: 2277
Регистрация: 14.5.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 58



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

PM WWW   Вверх
Akina
Дата 26.4.2004, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454





--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ida
Дата 26.4.2004, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


замужем
****


Профиль
Группа: Завсегдатай
Сообщений: 2277
Регистрация: 14.5.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 58



Спасибо... лекции по теории алгоритмов у меня и так есть... smile.gif
PM WWW   Вверх
p0s0l
Дата 26.4.2004, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 2
Всего: 112



У нас были по МБР лекции... Какие 2 действия должна делать ?


--------------------
С уважением, г-н Посол.
PM   Вверх
ida
Дата 26.4.2004, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


замужем
****


Профиль
Группа: Завсегдатай
Сообщений: 2277
Регистрация: 14.5.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 58



p0s0l, умножить два числа и результат разделить на два.

PM WWW   Вверх
p0s0l
Дата 27.4.2004, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 2
Всего: 112



В МБР есть 4 команды:
Z(n) - обнуление регистра n ( n := 0)
S(n) - инкремент регистра n ( n := n+1 )
T(m,n) - присвоение: содержимое m записывается в n ( n:=m )
J(m,n,q) - условный переход: если m=n, то перейти к команде q ( if m=n goto q)

Входные данные: r1,r2
Выходные данные: r3 = (r1*r2)/2
Код

// умножение: r4:=r1*r2
        Z(r4)
        Z(r5)
Mul:    J(r1, r5, MulEnd)

// сложение: r4:=r4+r2
        Z(r6)
Add:    J(r2, r6, AddEnd)
        S(r4)
        S(r6)
        J(r1, r1, Add)

AddEnd: S(r5)
        J(r1, r1, Mul)

// деление r3:=r4/2
MulEnd: Z(r5)
        Z(r3)
Div:    J(r4, r5, DivEnd)
        S(r3)
        S(r5)
        J(r4, r5, DivEnd)
        S(r5)
        J(r1, r1, Div)

DivEnd: всё!!!
        в r3 - результат!

Если алгоритм не понятен, то на примере поймешь:

Вычислить: (2*3)/2
Код

r1 r2 r3 r4 r5 r6   some comments...
2  3  ?  ?  ?  ?
         0  0       обнуляются r4 и r5
               0    Mul: проверяется r1=r5? (2 <> 0)
         1     1    Цикл Add: увеличение r4 и r6
         2     2    ...
         3     3    r2=r6, конец цикла
            1       AddEnd: увеличение r5
               0    Mul: проверяется r1=r5? (2 <> 1)
         4     1    Цикл Add: увеличение r4 и r6
         5     2    ...
         6     3    r2=r6, конец цикла
            2       AddEnd: увеличение r5
                    Mul: проверяется r1=r5? (2 = 2), конец цикла умножения
      0     0       MulEnd: обнуляются r5 и r3
--- Цикл Div: увеличение r3, двойное увеличение r5 до тех пор,
              пока r5 не станет равным r4
      1  6  1       r5<>r4
         6  2       r5<>r4
      2  6  3       r5<>r4
         6  4       r5<>r4
      3  6  5       r5<>r4
         6  6       r5=r4, конец цикла



--------------------
С уважением, г-н Посол.
PM   Вверх
ida
Дата 29.4.2004, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


замужем
****


Профиль
Группа: Завсегдатай
Сообщений: 2277
Регистрация: 14.5.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 58



Супер! Это то что надо. Спасиб тебе огромное!!! Можно сказать - спас от изгнания из инста за 2 месяца до диплома biggrin.gif
PM WWW   Вверх
ida
  Дата 3.5.2004, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


замужем
****


Профиль
Группа: Завсегдатай
Сообщений: 2277
Регистрация: 14.5.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 58



Последние вопросы - каким образом загрузить начальные значения в регистры? Ты привел пример для 2 в r1 и 3 в r2, но как их туда поместить перед началом вычислений, какими командами? И что будет в том случае, если результат умножения не делится нацело на 2?

Это сообщение отредактировал(а) ida - 3.5.2004, 12:55
PM WWW   Вверх
p0s0l
Дата 3.5.2004, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 2
Всего: 112



Загрузить - вначале обнуляешь регистр, потом сколько надо раз инкрементируешь (либо же числа заносятся "извне" если входные параметры меняются)... Для приведенного примера будет так:
Код
Z(r1)
S(r1)
S(r1)

Z(r2)
S(r2)
S(r2)
S(r2)

Либо же можно оптимизировать так:
Код
Z(r1)
S(r1)
S(r1)

T(r1, r2)
S(r2)


Если результат умножения нечетный, то результат деления будет округлен в большую сторону...


--------------------
С уважением, г-н Посол.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0493 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.