Данному образовательному сайту пришлось несколько раз менять свое имя. С 2022 года доступ к нему обеспечивается по URL
emc.orgfree.com

emc.km.ru (2001-2007) ==> educomp.org.ru (2007-2011) ==> educomp.runnet.ru (2011-2021) ==> emc.orgfree.com (2022-...)
Более подробно об истории сайта можно прочитать здесь.


Учебные модели компьютера



Модели (software):

"Е14" (parallel !!!)
"S9PU" (parallel)

Модели (hardware):






Награды сайта
Награды сайта 2005

Пример программирования

В качестве примера рассмотрим программу, подсчитывающую количество чётных чисел в заданном массиве чисел. Напомним, что модель оперирует только целыми десятичными числами и результат операции деления DIV – целая часть частного (дробная часть отбрасывается без округления). Очевидно, если число N – чётное, то (N div 2)*2 – N = 0 , а если N – нечётное, то (N div 2)*2 – N = -1.

Пусть массив чисел задан в ячейках памяти по адресам 50 – 59 (содержит 10 элементов). Для доступа к элементам массива в цикле целесообразно использовать косвенно-регистровую адресацию. Воспользуемся регистрами R1, R2 и R3 для хранения текущего адреса массива, счётчика длины массива и счётчика числа чётных чисел соответственно. Тогда текст программы на языке ассемблера может выглядеть следующим образом:

МеткаКомандаПримечание
 RD #50 ; загрузка начального адреса массива
 WR R1; в регистр R1;
 RD #10; загрузка размера массива
 WR R2; в регистр R2;
 RD #0; очистка
 WR R3; регистра R3 - счётчика чётных;
M1:   RD @R1+; выбор текущего элемента массива и инкремент адреса;
 WR R4; сохранение текущего элемента массива в регистре R4;
 DIV #2; определение
 MUL #2; чётности
 SUB R4; элемента массива;
 JNZ M2 ; переход на М2, если элемент нечётный;
 RD R3; инкремент
 ADD #1; счётчика
 WR R3; чётных [1];
M2:   JRNZ R2,M1 ; декремент счётчика длины массива и возврат на начало
; цикла, если счётчик не равен нулю;
 RD R3; чтение результата в аккумулятор;
 OUT; вывод содержимого аккумулятора на устройство вывода OR;
 HLT; останов.


[1] вместо этих трёх команд можно использовать одну команду RD @R3+, которая  прочитает в аккумулятор (совершенно ненужное) содержимое ячейки, адрес которой совпадает со значением в регистре R3 и затем увеличит содержимое регистра R3 на единицу

Введём приведённый текст программы в окно Текст программы, скомпилируем. Далее разместим в ячейках ОЗУ 50 – 59 произвольные числа. Запустим программу в автоматическом режиме и получим в OR результат.


© Жмакин Анатолий Петрович (Курский государственный университет). anatoly.zhmakin@gmail.com

Оформление Web-страницы - Е.А.Еремин, 2010


Автор сайта - Евгений Александрович Еремин (Пермский государственный педагогический университет). e_eremin@yahoo.com


Free Web Hosting