регістр приєднано до ліній входами, а зовні виходять інверсні значення того, що потрапило у регістр. Але при зчитуванні даних регістр від’єднано від ліний і зчитане буде те, що в даний момент зовні приєднано до ліний.
Закриті транзистори віходів з відкритим колектором не заважатимуть встановленню на входах ліній значень, відмінних від тих, що в регістрі.
Текст: HEX F 37A PC! встановить три розряди регістру в нулі,
а один в одиницю (працює інверсно) і згідно схеми засвітяться лише три. При цьому перемикачі 1,2,3,4 мають бути у стані OFF.
На двох окремих світлодіодах та двох на груповому індикаторі можна спостерігати результат пересилання
6 Читання даних з регістру керування.
Пересилання у регістр керування числа 4 встановить на ліниях
регістру високий рівень напруги. За допомогою перемикачів 1,2,3,4
можна встановити будь-які значення розрядів і текст
HEX 37A PC@ F AND .
виведе на екран значення прочитанного числа в інверсному вигляді
всіх розрядів окрім CR2.
7 Логічні операції
У тексті п.6, щоб позбутися зайвих прочитаних розрядів, виконана
логічна операція AND між числом на стеку та числом-маскою F , заданим
у рядку. Результат – зайві чотири старші розряди стали нульовими.
Щоб дописати у число одиницю у потрібний двійковий розряд можна
скористатися операцією OR.
Текст BIN 10000001 100 OR U. DECIMAL демонструє, як у
число 10000001 дописали одиницю у розряд номер 2 і вивели на екран як
ціле без знака.
Операцією XOR можна скористатися для інвертування числа або
окремих його розрядів. Для цього у відповідних місцях числа-маски слід
поставити одиниці. Нехай маємо байт 01100111 (можна двобайтне число)
Текст: BIN 01100111 11111111 XOR . DECIMAL виведе інверсне число.
Текст: BIN 01100111 00000110 XOR . DECIMAL інвертуватиме лише
розряди 1 та 2.
8 Створення нових слів (операторів мови) з простою структурою
Всі дії попереднього тексту можна виконати одним словом. Для цього
треба ввести : NS 01100111 00000110 XOR . ; Тепер у словнику системи буде слово NS.
Текст: BIN NS DCIMAL зробить такі ж дії, як і рядок тексту.
9 Нескінченний цикл з виходом по Ctrl-Pause
Структура:
: NS1 BEGIN (далі те , що треба періодично повторювати) AGAIN ;
10 Часова затримка.
Слово MS у тексті 500 MS призведе до затримки у 500 мілісекунд,
тобто 0.5 секунди. Але відлік часу буде невірний, якщо попередньо одноразово не виконати USING MS 1 LOAD.
Інше у довідковій програмі.
Приклад виконання завдання з демонстрацією
Формулювання завдання:
Записати довільне число у регістр даних. Запропонувати алгоритм,
при виконанні якого тільки розряд номер 3 (нумерація з нуля) змінював би своє значення з частотою 1 герц.
Розв’язок.
Опис алгоритму;
1. На стек вводимо довільне число.
2. Запускаємо виконання слова NS2, у якому
- слово зі стеку переслано у регістр даних,
- почато нескінченний цикл,
- читаємо на стек число з регістру даних,
- виконуємо операцію ХОR з маскою, де одиниця є
лише у розряді номер 3,
- пересилаємо число з стека у регістр даних,
- виконуємо затримку часу на 0.5 сек,
- закриваємо нескінченний цикл
завершено визначення NS2, проводимо компіляцію.
3 Під час виконання NS2 на індикаторі можна спостерігати миготіння
розряда номер три регістра даних.
4. Текст для форт- системи. Приготування NS2
HEX : NS2 378 PC! ( Переслали число в регістр даних)
BEGIN ( Почали цикл)
378 PC@ ( Прочитали на стек число з регістра даних)
[ BIN ] 1000 XOR ( Iнвертуємо розряд 3 )
[ HEX ] 378 PC! ( Переслали число в регістр даних)
[ DECIMAL ] 500 MS ( Виконуємо часову затримку)
AGAIN ; ( Закрили цикл та визначення )
Текст для виконання експерименту:
DECIMAL 175 NS2 <Enter>
На індикаторі має мигкотіти розряд номер 3 регістру даних
Перелік завдань:
1 Організувати у регістрі даних циклічний зсув одиниці праворуч.
2 Організувати у регістрі даних циклічний зсув двох сусідніх одиниць
праворуч.
3 Організувати у регістрі даних двійковий лічильник з частотою
додавання одиниць 2 гц
4 Записати у регістр даних та у регістр керування різні чотири розрядні
числа та через секунду регулярно обмінювати їх місцями
5 Записати у регістр даних число і, скориставшись читанням регістру
статусу регулярно обмінювати старший та молодший напівбайти в
регістрі даних.
6 Організувати на індикаторі даних циклічний зсув ліворуч одиниці по
регістру даних та по регістру керування.
7 Розробити статті для встановлення та для скидання окремих бітів
регістру керування.
8 Запустити лічильник десятих часток секунди у регістрі даних з зупинкою
натисканням клавіші, з десятковим відображенням часу від початку на
екрані та війковим на індикаторі.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.