Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1863 | yogev_ezra | 1 | ;Файл программы для PrMK. Скомпилировать с помощью FASM. |
2 | |||
3 | ;Игра "Посадка на Луну" |
||
4 | ;Перепечатано с книги "5 вечеров с микрокалькулятором" И.Д.Данилов, Г.В.Славин. Москва. "Финансы и статистика", 1988 |
||
5 | ;Andriy Slezenko, student@uninet.kiev.ua |
||
6 | |||
7 | ;1. Ввести программу. |
||
8 | ;2. Перейти в режим вычислений. |
||
9 | ;3. В/О С/П "0". |
||
10 | ;4. h0 (начальная высота корабля) ПА v0 (начальная скорость) ПВ. |
||
11 | ; m0 (исходная масса топлива) ПС g (ускорение свободного падения для планеты) П9. |
||
12 | ;5. С/П "h" XY "v" ИПС "m" ИП4 "t" (текущие значения). |
||
13 | ;6. S (расход топлива в следующую секунду). |
||
14 | ;7. Перейти к п.5 и продолжать до посадки корабля. |
||
15 | |||
16 | ;Цель игры - посадить корабль на Луну. |
||
17 | ; Ситуация у нас с вами такая такая. Ракета находится на расстоянии N метров от Луны, скорость ее V метров в секунду, запас топлива в баках - S тонн. Величины эти, конечно, известны командиру. Сопла ракеты повернуты к Луне и, добавляя топливо в двигатель, мы начинаем тормозить. Каждую секунду на световом табло в командирской рубке появляется информация о высоте корабля над поверхностью планеты, скорости его и запасе топлива. Так как командиром корабля будете вы, то знайте, что перед тем, как посмотреть на табло, нужно нажать такие клавиши: XY показывает скорость, ИПС дает остаток топлива в баке, ИП4 - время с начала торможения. Что касается высоты ракеты над планетой, то она будет загораться на вашем табло сразу при остановке калькулятора после проведения очередного маневра. |
||
18 | ; Задача понятна - посадить корабль так, чтобы в момент посадки скорость его была близка к нулю, топлива при этом желательно израсходовать поменьше, да и провести посадку побыстрее - незачем долго мучить членов экипажа, ведь перегрузки при посадке не маленькие. Да, что касается топлива, дополнительное условие - если его останется меньше 95 тонн, то обратный старт на Землю станет невозможным. |
||
19 | |||
20 | ;Контрольный пример: |
||
21 | ;Пусть высота будет 1000 метров, скорость - 150 м/с, запас топлива - 500 тонн. Да, еще нужно ввести в бортовой компьютер ускорение свободного падения на Луне - 1,62 м/с^2. Вводим эти числа соответственно в регистры РА, РВ, РС и Р9. |
||
22 | ;Нажимаем В/О С/П и на индикаторе появилась начальная высота. Вводим в двигатель первую порцию топлива - 20 С/П. Через 10 секунд на индикаторе появилась высота, на которой теперь находился корабль, 856.4. Еще столько же топлива - 20 С/П и высота стала 719.4. Еще порция побольше - 25 С/П. Высота 591 метр. |
||
23 | ;Проверим остальные параметры: скорость (клавиша XY) - 128,4 м/с, запас топлива (ИПС) - 435 тонн, время в пути (ИП4) - 3 с. |
||
24 | ;После ввода два раза подряд по 30 тонн горючего, высота корабля снизилась до 366,9 м. |
||
25 | ;После дальнейшего ввода два раза подряд по 35 тонн горючего, табло показало высоту - 194,1 м, скорость - 76,6, топливо - 305, время - 7. |
||
26 | ;Далее полет протекал так: |
||
27 | |||
28 | ; Расход топлива Высота |
||
29 | ; 40 130.5 |
||
30 | ; 45 85.6 |
||
31 | ; 40 57.4 |
||
32 | ; 40 46.2 |
||
33 | ; 10 38.1 |
||
34 | ; 10 33.2 |
||
35 | ; 0 26.6 |
||
36 | ; 0 18.4 |
||
37 | ; 5 10.9 |
||
38 | ; 7 5.1 |
||
39 | ; 8 1.6 |
||
40 | ; 10 1.2 |
||
41 | ; 5 1.5 |
||
42 | ; (здесь скорость оказалась |
||
43 | ; отрицательной (-0,3) и корабль |
||
44 | ; начал снова удаляться от поверхности) |
||
45 | ; 0 0.3 |
||
46 | ; 3 3.1111111 |
||
47 | ;Коснулись поверхности Луны. После посадки выяснилось (ИПС), что топлива осталось 82 тонны, а время, затраченное на этот процесс (ИП4), 21 секунда. |
||
48 | ;В итоге мы видим, что сели тяжеловато, но корабль цел, с экипажем все в порядке. Вот только топлива перерасходовали, на обратный путь не хватит. Придется на Луне ждать корабль-спасатель и надеяться, что его капитан справится с посадкой лучше вас. |
||
49 | ;Но не огорчайтесь. Для первого раза вполне прилично. |
||
50 | |||
51 | ;Примечания: |
||
52 | ;1. Числа в кавычках - это числа, высвечиваемые на экране. |
||
53 | ;2. Выполнять п.4 не обязательно. По умолчанию предполагается: h=1000 м, v0=150 м/с, m0+500 т, g=1,62 м/с^2 для Луны. |
||
54 | ;3. Смысл сообщений о качестве посадки расшифрован ниже. |
||
55 | |||
56 | ;1,1111111 - идеальная посадка; |
||
57 | ;2,1111111 - нормальная посадка; |
||
58 | ;3,1111111 - тяжелая посадка; |
||
59 | ;4,1111111 - посадка с легко устранимыми повреждениями; |
||
60 | ;5,1111111 - повреждения, полученные при посадке, неустранимы. Обратный старт к Земле вряд ли возможен; |
||
61 | ;6,1111111 - очень сильные повреждения; |
||
62 | ;7,1111111 - разгерметизация отдельных блоков в результате сильного удара. Жизнь членов экипажа под угрозой; |
||
63 | ;8,1111111 - гибель экипажа; |
||
64 | ;9,1111111 - взрыв корабля. |
||
65 | |||
66 | |||
67 | db "<СТЕК>" |
||
68 | |||
69 | ;далее следуют значения регистров стека (только qword) |
||
70 | |||
71 | ;R.X1 |
||
72 | dq 0.0 |
||
73 | ;R.X |
||
74 | dq 0.0 |
||
75 | ;R.Y |
||
76 | dq 0.0 |
||
77 | ;R.Z |
||
78 | dq 0.0 |
||
79 | ;R.T |
||
80 | dq 0.0 |
||
81 | |||
82 | db "<РГСТ>" |
||
83 | |||
84 | ;Регистры: (с R.0 по R.E) |
||
85 | |||
86 | times 15 dq 0.0 |
||
87 | |||
88 | db "<ПРГМ>" |
||
89 | ;Программа в ОПКОДах МК |
||
90 | |||
91 | db 0x0D,0x44,0x0C,0x03,0x4A,0x48,0x02,0x13,0x4C,0x01 |
||
92 | db 0x05,0x00,0x4B,0x01,0x0A,0x06,0x02,0x49,0x0D,0x50 |
||
93 | db 0x6B,0x6A,0x50,0x40,0xD4,0x14,0x6C,0x14,0x11,0x5C |
||
94 | db 36 ,0x0D,0x40,0x6C,0x51, 37 ,0x4C,0x68,0x13,0x02 |
||
95 | db 0x10,0x60,0x14,0x13,0x69,0x14,0x11,0x6B,0x10,0x4B |
||
96 | db 0x6A,0x14,0x11,0x4A,0x5C, 20 ,0x0B,0x6B,0x22,0x21 |
||
97 | db 0x10,0x01,0x10,0x4D,0xDD,0x6D,0x09,0x23,0x10,0x50ПРГМ>РГСТ>СТЕК> |