Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учеб. пособие по ОЭВМ.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
4.34 Mб
Скачать

Файл sk.Mcl.

В файле SK.MCL содержатся подпрограммы работы с памятью, передачи информации из РДК на ВУ (и наоборот), распечатки регистров канала и рабочих ячеек ОП и подпрограмма ввода исходных в соответствии с номером варианта. Эти подпрограммы рекомендуется использовать для моделирования работы селекторного канала. В них приняты следующие обозначения переменных и регистров (в квадратных скобках - размерность регистров):

WN - номер варианта

ADDR[24] - после выполнения подпрограммы ZAGR содержит адрес первой кан. команды

RAKK[24] - регистр адреса канальной команды (РАКК)

RAP[24] - регистр адреса памяти (РАП)

RCHP[32] - регистр числа памяти (РЧП)

BR[32] - буферный регистр данных (БР)

RDK[32] - регистр данных канала (РДК)

RDU[8] - регистр данных внешнего устройства (РДУ)

SB[2] - счетчик байт (СБ)

Регистр канальной команды (РКК) 64-х разрядный. Т.к. в языке MCL максимальная размерность регистра - 32 разряда, то этот регистр представлен в виде двух структур:

RKK1[32] с полями KOP[8] и ADR[24] - старшая часть РКК

RKK2[32] с полями PRZ[16] и DLM[16] - младшая часть РКК

┌────────┬────────────────┬────────────────┬────────────────┐

│RKK1.KOP│ RKK1.ADR │ RKK2.PRZ │ RKK2.DLM │

└────────┴────────────────┴────────────────┴────────────────┘

Оперативная память (ОП) описана как MEM OP[1024][8] - линейная память из 1024 ячеек по 1 байту каждая. Подпрограммы работы с памятью позволяют работать с ней как с памятью с шириной выборки - 4 байта. MEM PU[16][8] - память для хранения массива чисел, считываемых с ВУ (заполняется, когда есть операция "чтение"). Все числа выводятся в 16-ричной системе счисления. Остальные переменные, начинающиеся с буквы W, используются как рабочие переменные внутри подпрограмм и физического смысла не имеют, поэтому использовать их в основной программе не рекомендуется.

См. файл SK.MCL

Описание подпрограмм для моделирования селекторного канала, хранящихся в файле sk.Mcl. Подпрограмма k_u_k:

K_U_K:

WU:=24-SB*8;

IF RKK1.KOP=1 THEN RDK[WU..(WU+7)]:=RDU;

IF RKK1.KOP=2 THEN RDU:=RDK[WU..(WU+7)];

RETURN;

Записывает в РДК из РДУ (или наоборот) 1 байт информации. Направление передачи определяется по коду операции выполняемой команды. Номер байта в РДК, в который (из которого) будет записана (считана) информация, определяется значением счетчика байт. Байты в РДК нумеруются слева направо.

┌─────┬─────┬─────┬─────┐

│ 0 │ 1 │ 2 │ 3 │ РДК

└─────┴─────┴─────┴─────┘

┌─────┐

│ РДУ │

└─────┘

Подпрограмма w_reg:

W_REG:

WRITELN " RKK СЧ.БАЙТ РДК РДУ PAKK ";

WRITE $H2 RKK1.KOP," ",$H6 RKK1.ADR," ";

WRITE $H4 RKK2.PRZ," ",$H4 RKK2.DLM," ";

WRITE $H1 SB," ",$H2 RDK[24..31]," ";

WRITE $H2 RDK[16..23]," ",$H2 RDK[8..15]," ";

WRITELN $H2 RDK[0..7]," ",$H2 RDU," ",$H6 RAKK;

RETURN;

Распечатывает регистры канала РДК, СБ, РДК и РДУ. Вывод производится в виде:

РКК СЧ.БАЙТ РДК РДУ

01 000045 6000 0003 01 03 19 C4 2A 03

Вывод всех чисел производится в 16-ичной системе счисления.