- •Будова й налагодження систем програмного управління
- •1 Процес підготовки і рішення задачі на еом
- •1.1 Постановка завдання
- •1.2 Розробка опису завдання
- •1.3 Алгоритмізація завдання
- •1.4 Опис алгоритму
- •1.5 Процеси, що гілкуються
- •1.6 Циклічні процеси
- •1.7 Ітераційний цикл
- •3.2 Приклади складання бса і програм
- •3.3 Робота еом із зовнішнімі пристроями
- •4 Завдання до самоконтролю
3.2 Приклади складання бса і програм
Приклад 1
Скласти 10010 чисел в елементах пам'яті. Початкова адреса масиву "0".
Адреса йдуть через "2". Аби скласти 10010 чисел в програмі необхідно 10010 кроків. Кожен крок це 2 адреси (адресація побайтна). Адреси вказуються у вісімковому форматі. Таким чином 10010=1448 кроків. Отже адрес 1448 2=3108.
Таблиця 3.1- Тексту програми перевірки
Адреси |
Код |
Мнемокод |
Примітка |
1 |
2 |
3 |
4 |
000200 |
5001 |
CLR R1 |
Очищення змісту адреси |
000202 |
5000 |
CLR R0 |
Очищення лічильника суми |
000204 |
62100 |
ADD (R1)+R0 |
Додавання змісту комірки, адреса якої в R1 з R0 |
000206 |
022701 |
CMP #310, R1 |
Порівняння кінцевої адреси з потоковою |
000210 |
310 |
||
000212 |
001374 |
BNE 236(-4) |
Перехід, якщо ?0 |
000214 |
0 |
HALT |
Останов |
Приклад 2.
Очистити зміст 10010 елементів пам'яті . Початкова адреса "0"
10010=1448
Таблиця 3.1- Тексту програми перевірки
Адреси |
Код |
Мнемокод |
Примітка |
1 |
2 |
3 |
4 |
000200 |
5001 |
CLR R1 |
Очищення регістра під формування адреси комірки |
000202 |
5000 |
CLR R0 |
Очищення регістра під лічильник проходів |
000204 |
5021 |
CLR (R1)+ |
Очищення змісту адреси |
000206 |
5200 |
INC R0 |
Додавання до лічильника проходів |
000210 |
022701 |
CMP #144, R0 |
Порівняння кінцевої адреси з потоковою |
000212 |
144 |
||
000214 |
001373 |
BNE (-5) |
Перехід, якщо ?0 |
000216 |
0 |
HALT |
Останов |
Приклад 3
Знайти в масиві 10010 елементів пам'яті перше число "0". Початкова адреса "0"
Таблиця 3.1- Тексту програми перевірки
Адреси |
Код |
Мнемокод |
Примітка |
1 |
2 |
3 |
4 |
000200 |
5001 |
CLR R1 |
Очищення змісту адреси |
000202 |
5000 |
CLR R0 |
Очищення лічильника суми |
000204 |
012700 |
MOV#144,R0 |
Встановлення кількості проходів в лічильник проходів |
000206 |
144 |
||
000210 |
022721 |
CMP #0 (R1)+ |
Пошук "0" в поточній комірці |
000212 |
0 |
||
000214 |
001405 |
BEQ =0 (+5) |
Перехід, якщо =0 за адресою 230 |
000216 |
005300 |
DEC R0 |
Віднімання "1" з регістра лічильника проходів |
000220 |
022700 |
CMP #0, R0 |
|
000222 |
0 |
|
|
000224 |
001371 |
BNE (-7) |
Перехід, якщо ?0 за адресою 210 |
000226 |
0 |
HALT 1 |
Останов 1 "0" в масиві відсутній |
000230 |
0 |
HALT 2 |
Останов 2 "0" знайдено |
Різниця між HALT 1 і HALT 2 полягає в тому, що на екран у результаті виконання команди HALT виводиться зміст РСЧК а але буде різне для HALT 1- 230, а для HALT 2-216
Приклад 4
Порівняти вміст двох масивів пам'яті. Один масив має початковий адрес 1000, другий 2000. Обоє масиву мають однаковий об'єм 4008 (1400 початкова адреса , 2400 кінцева адреса) і в разі рівності зробити останов.
Таблиця 3.1- Тексту програми перевірки
Адреси |
Код |
Мнемокод |
Примітка |
1 |
2 |
3 |
4 |
000200 |
012700 |
MOV #1000, R0 |
Встановлення початкової адреси М1 |
000202 |
1000 |
||
000204 |
012701 |
MOV#2000,R1 |
Встановлення початкової адреси М2 |
000206 |
2000 |
||
000210 |
022021 |
CMP (R0)+, (R1)+ |
Порівняння змісту комірок М1 та М2 |
000212 |
001401 |
BEQ =0 (+1) |
Перехід, якщо =0 зміст комірок збігається |
000214 |
0 |
HALT 1 |
Останов як, що зміст комірок не збігається |
000216 |
022700 |
CMP#1400,R0 |
Контроль кінцевої адреси М1 |
000220 |
1400 |
||
000222 |
001372 |
BNE (- 6) |
Перехід, якщо ?0 за адресою 210 |
000224 |
0 |
HALT 2 |
Останов як, що зміст комірок збігається |
