▓▓▓▓▓▓▓ ▓▓ ▓▓ ▓▓▓▓▓ ▓▓▓▓▓ ▓▓ ▓▓▓▓▓ СПРАВОЧНОЕ ПОСОБИЕ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓▓▓▓▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ А. Конюшенко ▓▓ ▓▓ ▓▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ = UC2AAU = ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ 220030 Минск-30,я.1 ▓▓▓▓▓▓▓ ▓▓ ▓▓ ▓▓▓▓▓ ▓▓▓▓▓ ▓▓ ▓▓▓▓▓ БЕЛАРУСЬ ╔════════════════════════════╤════════════════════════╤════════════════════ 1 ═══╗ ║ КОДЫ МАШИННЫХ КОМАНД │ 00 4R DD JSR │ 10 00 00 +XXX BPL ║ ║ 1801BM1 (PDP-11) │ 00 50 DD CLR │ 10 04 00 +XXX BMI ║ ║ 00 00 00 HALT │ 00 51 DD COM │ 10 10 00 +XXX BHI ║ ║ 00 00 01 WAIT │ 00 52 DD INC │ 10 14 00 +XXX BLOS ║ ║ 00 00 02 RTI │ 00 53 DD DEC │ 10 20 00 +XXX BVC ║ ║ 00 00 03 BPT │ 00 54 DD NEG │ 10 24 00 +XXX BVS ║ ║ 00 00 04 IOT │ 00 55 DD ADC │ 10 30 00 +XXX BCC, BHIS║ ║ 00 00 05 RESET │ 00 56 DD SBC │ 10 34 00 +XXX BCS, BLO ║ ║ 00 00 06 RTT │ 00 57 DD TST │ 10 40 00 - 10 43 77 EMT ║ ║ │ 00 60 DD ROR │ 10 44 00 - 10 47 77 TRAP║ ║ (00 00 07 - 00 00 11) [1a]│ 00 61 DD ROL │ 10 50 DD CLRB ║ ║ │ 00 62 DD ASR │ 10 51 DD COMB ║ ║ 00 00 12 START │ 00 63 DD ASL │ 10 52 DD INCB ║ ║ │ 00 64 NN MARK │ 10 53 DD DECB ║ ║ (00 00 13 - 00 00 15) [1b]│ │ 10 54 DD NEGB ║ ║ │(00 65 SS) (MFPI) [2]│ 10 55 DD ADCB ║ ║ 00 00 16 S │(00 66 DD) (MTPI) [3]│ 10 56 DD SBCB ║ ║ │ │ 10 57 DD TSTB ║ ║ (00 00 17 - 00 00 77) [1c]│ 00 67 DD SXT │ 10 60 DD RORB ║ ║ │ │ 10 61 DD ROLB ║ ║ 00 01 DD JMP │(00 70 00 - 00 77 77)[4]│ 10 62 DD ASRB ║ ║ 00 02 0R RTS │ │ 10 63 DD ASLB ║ ║ │ 01 SS DD MOV │ 10 64 SS MTPS ║ ║ (00 02 1R тех.контроль) │ 02 SS DD CMP │ ║ ║ (00 02 2N тех.контроль) │ 03 SS DD BIT │(10 65 SS) (MFPD) [9] ║ ║ (00 02 3N) (SPL) │ 04 SS DD BIC │(10 66 DD) (MTPD) [10] ║ ║ │ 05 SS DD BIS │ ║ ║ 00 02 40 NOP │ 06 SS DD ADD │ 10 67 DD MFPS ║ ║ 00 02 41 -│ операции c │ │ ║ ║ - 00 02 77 │разрядами PSW │(07 0R SS) (MUL) [5]│(10 70 00 - 10 77 77) [11]║ ║ 00 03 DD SWAB │(07 1R SS - 07 3R SS)[6]│ ║ ║ 00 04 00 +XXX BR │ │ 11 SS DD MOVB ║ ║ 00 10 00 +XXX BNE │ 07 4R SS XOR │ 12 SS DD CMPB ║ ║ 00 14 00 +XXX BEQ │ │ 13 SS DD BITB ║ ║ 00 20 00 +XXX BGE │(07 50 0R - 07 50 3R)[7]│ 14 SS DD BICB ║ ║ 00 24 00 +XXX BLT │(07 50 40 - 07 67 77)[8]│ 15 SS DD BISB ║ ║ 00 30 00 +XXX BGT │ │ 16 SS DD SUB ║ ║ 00 34 00 +XXX BLE │ 07 7R NN SOB │(17 00 00 - 17 77 77) [12]║ ╠════════════════════════════╧════════════════════════╧══════════════════════════╣ ║ Область [la-c] в системе команд PDP-11 не используется; у процессора 1801ВМ1 ║ ║ в этой области имеются команды START и S (шаг), но вследствие отсутствия ║ ║ системных регистров, БК-0010(01) по этим командам отрабатывает вектор 4. ║ ║ [2-3] команды процессоров с MMU ║ ║ [4, 8, 11] резервный код ║ ║ [5] команда умножения (реализована в 1801ВМ1Г) ║ ║ [6] расширенный набор команд арифметики ║ ║ [7, 12] команды процессора с плавающем точкои ║ ║ [9,10] команды процессоров с 22-разрядным MMU ║ ╚════════════════════════════════════════ UC2AAU ═ БК-0010 ═ Справочное пособие ═╝ ╔══════════════════════════════════════════════════════════════════════════ 2 ═══╗ ║ У С Л О В Н Ы Е О Б О З Н А Ч Е Н И Я ║ ╠═══════════════════════════════════════════╤════════════════════════════════════╣ ║ В кодах машинных команд │ В обозначениях операций ║ ╟───────────────────────────────────────────┼────────────────────────────────────╢ ║ * = 0 для операций над словами! │ (N) = содержимое ячейки или рег.N ║ ║ 1 для операций над байтами │ s = операнд-источник (вег) ║ ║ SS = поле адресации операнда-источника │ d = операнд-приемник (det) ║ ║ DD = поле адресации операнда-приемника │ r = содержимое регистра ║ ║ R = РОН N 0...7 (3 бита) │ <= = становится равный ║ ║ XXX = смещение (-128,...,+127; 8 бит) │ X = относительный адрес ║ ║ N = число, 3 бита │ % = определение регистра ║ ║ NN = число, 6 бит │ ║ ╟───────────────────────────────────────────┼────────────────────────────────────╢ ║ ЛОГИЧЕСКИХ ОПЕРАЦИИ │ ОПЕРАЦИИ НАД РАЗРЯДАМИ PSW ║ ╟───────────────────────────────────────────┼────────────────────────────────────╢ ║ /\ = логическое И │ * = установка/сброс по результату ║ ║ \/ = логическое ИЛИ │ - = состояние разряда не меняется ║ ║ \\ = исключающее ИЛИ │ 0 = сброс ║ ║ ^ = НЕ │ 1 = установка ║ ╠═══════════════════════════════════════════╧════════════════════════════════════╣ ║ ┌───────────┬───────────┐ ║ ║ МЕТОДЫ АДРЕСАЦИИ │ МЕТОД │ R │ ║ ║ Мнемоника └───┴───┴───┴───┴───┴───┘ ║ ║ 0 регистровая R (R) - операнд ║ ║ 1 косвенная регистровая (R) или @R (R) - адрес операнда ║ ║ 2 автоинкрементная (R)+ (R) - исполняемый адрес ║ ║ (R) <= (R)+2 (или 1) ║ ║ 3 косв. автоинкрементная @(R)+ (R) - адрес адреса ║ ║ (R) <= (R)+2 (или 1) ║ ║ 4 автодекрементная -(R) (R) <= (R)-2 (или 1) до исп.ком. ║ ║ (R) - исп-й адрес ║ ║ 5 косе.автодекрементная @-(R) (R) <= (R)-2 (или 1) до исп.ком. ║ ║ (R) - адрес адреса ║ ║ 6 индексная X(R) (R)+X - адрес ║ ║ 7 косв.индексная @X(R) (R)+X - адрес адреса ║ ║ ┌───────────┬───────────┐ ║ ║ С ИСПОЛЬЗОВАНИЕМ СЧЕТЧИКА КОМАНД │ МЕТОД │ 7 │ ║ ║ └───┴───┴───┴───┴───┴───┘ ║ ║ 2 непосредственная #n операнд n в следующем за командой слове ║ ║ 3 абсолютная @#А адрес А в следующем за командой слове ║ ║ 6 относительная А адр.операнда = адр.ком.+4+X (+6+Х) ║ ║ 7 косв.относительная @A адр.адреса опер. - адр.ком.+4+X (+6+Х) ║ ╠════════════════════════════════════════════════════════════════════════════════╣ ║ ВЕКТОРЫ ПРЕРЫВАНИЙ ║ ║ Источник прерывания Адрес вектора ║ ║ Зависание при передаче данных по каналу или от клавиши <СТОП> . . 000004 ║ ║ Резервный код команд . . . . . . . . . . . . . . . . . . . . . . 000010 ║ ║ Прерывание по Т-разряду . . . . . . . . . . . . . . . . . . . . . 000014 ║ ║ Прерывание по команде IOT . . . . . . . . . . . . . . . . . . . . 000023 ║ ║ Авария сетевого питания (аппаратно не поддержан) . . . . . . . . . 000024 ║ ║ Прерывание по команде EMT . . . . . . . . . . . . . . . . . . . . 000030 ║ ║ Прерывание по команде TRAP . . . . . . . . . . . . . . . . . . . . 000034 ║ ║ Прерывание от клавиатуры . . . . . . . . . . . . . . . . . . . . . 000060 ║ ║ Сигнал IRQ2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 000100 ║ ║ Прерывание от клавиатуры (коды нижнего регистра) . . . . . . . . . 000274 ║ ╚════════════════════════════════════════ UC2AAU ═ БК-0010 ═ Справочное пособие ═╝ ╔══════════════════════════════════════════════════════════════════════════ 3 ═══╗ ║ РАБОТА с ПОДПРОГРАММАМИ ║ ║ 00 00 00 HALT останов (в БК-0010 при (177716) <= 000010\/(177716) ║ ║ попытке записи PSW в несушеств. (177676) <= PSW <= (160004) ║ ║ регистр 177676,происх.прер.4) PC <= (160002) ║ ║ 00 00 01 WAIT пауза - ожидание прерывания ║ ║ 00 00 02 RTI возврат из прерывания PC <= (SP)+ ║ ║ PSW <= (SP)+ ║ ║ 00 00 03 BPT отладочное прерывание -(SP) <= PSW <= (16) ║ ║ вектор 14 -(SP) <= PC <= (14) ║ ║ 00 00 04 IOT вызов системы ввода-вывода -(SP) <= PSW <= (22) ║ ║ вектор 20 -(SP) <= PC <= (20) ║ ║ 00 00 05 RESET сброс магистрали и процессора ║ ║ 00 00 06 RTT возврат, с запретом прерывания PC <= (SP)+ ║ ║ no Т-разряду до исп.сл. команды PSW <= (SP)+ ║ ║ 00 01 DD JMP безусловный переход PC <= d ║ ║ 00 02 0R RTS возврат из подпрограммы PC <= R <= (SP)+ ║ ║ 00 02 40 NOP нет операции (пустая команда) ║ ║ 00 4R DD JSR вызов подпрограммы -(SP)<= R <= PC <= d ║ ║ 00 64 NN MARK восстановление стека SP <= PC + (2 x NN) ║ ║ PC <= R5 <= (SP)+ ║ ║ 07 7R NN SOB выч.1 и ветвл..если (R#) не 0 R# <= R# - 1 ║ ║ PC <= PC - (2 x NN) ║ ║ 10 40 00 - EMT вызов ОС, вектор 30 -(SP)<= PSW <= (32) ║ ║ - 10 42 77 -(SP)<= PC <= (30) ║ ║ 10 44 00 - TRAP общего назн.,вектор 34 -(SP)<= PSW <= (36) ║ ║ - 10 47 77 -(SP)<= PC <= (34) ║ ║ 10 64 SS MTPS запись PSW PSW <= 6 ║ ║ 10 67 DD MFPS чтение PSW d <= PSW ║ ╠════════════════════════════════════════════════════════════════════════════════╣ ║ ПЕРЕХОДЫ ПО УСЛОВНО (ВЕТВЛЕНИЯ): В** <адр.перехода> ║ ║ ┌───────────────────────────────┬───────────────────────────────┐ ║ ║ │ Базовый КОП │+/- X X X │ ║ ║ └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘ ║ ║ 15 8 7 0 ║ ╠═════════════╗ Если условие удовлетворяется, то (PC) <= (PC) + (2 x XXX) ║ ║ ВОСЬМЕРИЧНЫЕ║ 00 04 00 +XXX BR безусловен переход ║ ║ ┌──────── ║ 00 10 00 +XXX BNE нет равенства (нули) Z = 0 ║ ║ V =ТРИАДЫ ║ 00 14 00 +XXX BEQ равенство (нули) Z = 1 ║ ╠═══╤═══════╗ ║ 10 20 00 +XXX BVC арифм.переп. отсутствует V = 0 ║ ║ 0 │ 0 0 0 ║ ║ 10 24 00 +XXX BVS произошло арифм.переп. V = 1 ║ ╟───┼───────╢ ║ 10 30 00 +XXX BCC перенос отсутствует С = 0 ║ ║ 1 │ 0 0 1 ║ ║ 10 34 00 +XXX BCS произошел перенос С = 1 ║ ╟───┼───────╢ ║ Переход по знаку ║ ║ 2 │ 0 1 0 ║ ║ 10 00 00 +XXX BPL знак плис N = 0 ║ ╟───┼───────╢ ║ 10 04 00 +XXX BMI знак минус N = 1 ║ ║ 3 │ 0 1 1 ║ ║ 00 20 00 +XXX BGE больше или равно(нули) N\\V = 0 ║ ╟───┼───────╢ ║ 00 24 00 +XXX BLT меньше (нуля) N\\V = 1 ║ ║ 4 │ 1 0 0 ║ ║ 00 30 00 +XXX BGT больше (нуля) Z\/(N\\V) = 0 ║ ╟───┼───────╢ ║ 00 34 00 +XXX BLE меньше или равно (нули) Z\/(N\\V) = 1 ║ ║ 5 │ 1 0 1 ║ ║ Переход без знака ║ ╟───┼───────╢ ║ 10 10 00 +XXX BHI больше C\/Z = 0 ║ ║ 6 │ 1 1 0 ║ ║ 10 14 00 +XXX BLOS меньше или равно C\/Z = 1 ║ ╟───┼───────╢ ║ 10 30 00 +XXX BHIS больше или равно (= BCC) С = 0 ║ ║ 7 │ 1 1 1 ║ ║ 10 34 00 +XXX BLO меньше (= BCS) C = 1 ║ ╚═══╧═══════╩═╩══════════════════════════ UC2AAU ═ БК-0010 ═ Справочное пособие ═╝ ╔══════════════════════════════════════════════════════════════════════════ 4 ═══╗ ║ ОДНООПЕРАНДДЫЕ КОМАНДЫ: OPR dst ║ ║ ┌───────────────────────────────────────┬───────────────────────┐ ║ ║ │ Код операции (КОП) │ D D │ ║ ║ └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘ ║ ║ 15 6 5 0 ║ ║ N Z V C ║ ║ 00 03 DD SWAB перестановка байтов * * 0 0 ║ ║ *0 50 DD CLR(B) очистка (d) <- 0 0 1 0 0 ║ ║ *0 51 DD COM(B) побитная инверсия (d) <= (^d) * * 0 1 ║ ║ *0 52 DD INC(B) прибавление 1 (d) <= (d) + 1 * * * - ║ ║ *0 53 DD DEC(B) вычитание 1 (d) <= (d) - 1 * * * - ║ ║ *0 54 DD NEG(B) изменение знака (d) <= -(d) * * * * ║ ║ *0 55 DD ADC(B) прибавить перенос (d) <= (d) + C * * * * ║ ║ *0 56 DD SBC(B) вычесть перенос (d) <= (d) - C * * * * ║ ║ *0 57 DD TST(B) проверка (d) <= (d) * * 0 0 ║ ║ *0 60 DD ROR(B) циклич.сд.вправо => C,d * * * * ║ ║ *0 61 DD ROL(B) циклич.сд.влево C,d <= * * * * ║ ║ *0 62 DD ASR(B) арифм.сд.вправо (d) <= (d)/2 * * * * ║ ║ *0 63 DD ASL(B) арифм.сд.влево (d) <= 2(d) * * * * ║ ║ 00 67 DD SXT расширить знак N = 0, (d) <= 0 0 1 0 - ║ ║ N = 1, (d) <= 177777 1 0 0 - ║ ╠════════════════════════════════════════════════════════════════════════════════╣ ║ ДВУХОПЕРАНДНЫЕ КОМАНДЫ: OPR src dst; OPR src R; OPR R dst ║ ║ ┌───────────────┬───────────────────────┬───────────────────────┐ ║ ║ │ КОП │ S S │ D D │ ║ ║ └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘ ║ ║ 15 12 11 6 5 0 ║ ║ N Z V C ║ ║ *1 SS DD MOV(B) переслать (d) <= (s) * * 0 - ║ ║ *2 SS DD CMP(B) сравнить (s) - (d) * * * * ║ ║ *3 SS DD BIT(B) проверить разряды (s)/\(d) * * 0 - ║ ║ *4 SS DD BIC(B) очистить разряды (d) <= (^s)/\(d) * * 0 - ║ ║ *5 SS DD BIS(B) установить разряды (d) <- (s)\/(d) * * 0 - ║ ║ 06 SS DD ADD сложить (d) <= (s) +(d) * * * * ║ ║ 07 4R SS XOR исключающее ИЛИ (s) <= (r)\\(s) * * 0 - ║ ║ 16 SS DD SUB вычесть (d) <= (d) -(s) * * * * ║ ╠════════════════════════════════════════════════════════════════════════════════╣ ║ ОПЕРАЦИИ с РАЗРЯДАМИ PSW: ║ ║ ┌───────────────────────────────────────────┬───┬───┬───┬───┬───┐ ║ ║ │ Базовый КОП = 240 │0/1│ N │ Z │ V │ C │ ║ ║ └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘ ║ ║ 15 8 7 4 3 2 1 0 ║ ╠═════════════════════════════╗ Очистить ║ ║ ЛОГИЧЕСКИЕ ОПЕРАЦИИ: ║ 00 02 41 CLC C - - - 0 ║ ╠═══════════╤═══╤═══╤═══╤═══╗ ║ 00 02 42 CLV V - - 0 - ║ ║ (a) │ 0 │ 1 │ 0 │ 1 ║ ║ 00 02 44 CLZ Z - 0 - - ║ ╟───────────┼───┼───┼───┼───╢ ║ 00 02 50 CLN N 0 - - - ║ ║ (d) │ 0 │ 0 │ 1 │ 1 ║ ║ 00 02 57 CCC N Z V C 0 0 0 0 ║ ╠═══════════╪═══╪═══╪═══╪═══╣ ║ Установить ║ ║ (a)\/(d) │ 0 │ 0 │ 0 │ 1 ║ ║ 00 02 61 SEC C - - - 1 ║ ╟───────────┼───┼───┼───┼───╢ ║ 00 02 62 SEV V - - 1 - ║ ║ (a)/\(d) │ 0 │ 1 │ 1 │ 1 ║ ║ 00 02 64 SEZ Z - 1 - - ║ ╟───────────┼───┼───┼───┼───╢ ║ 00 02 70 SEN N 1 - - - ║ ║ (a)\\(d) │ 0 │ 1 │ 1 │ 0 ║ ║ 00 02 77 SCC N Z V C 1 1 1 1 ║ ╚═══════════╧═══╧═══╧═══╧═══╩═╩══════════ UC2AAU ═ БК-0010 ═ Справочное пособие ═╝