| Code: РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
Программа ассемблера Asm_1816
для микроэвм серии КР1816 -------------------------------------------------------------- Ассемблер - Asm_1816 V1.0 -------------------------------------------------------------- Данный ассемблер предназначен для преобразования (трансляции) исходных текстов в объектные модули для микроэвм серии КР1816. После запуска программа сразу запрашивает текстовый файл, о чем сообщает в верхней служебной строке. После загрузки текстового файла в верхней служебной строке отображается имя программы и имя ассемблируемого файла, а на нижней служебной строке выводится список основных директив: F1-COD F2-LIN F3-EXE F3 - полный акт трансляция с кратким протоколом; конечный рабочий адрес программы/конечный адрес размещения программы в буфере (0000-0FFFh)/число обнаруженых ошибок. Используется при одноактном режиме трансляции. F2 - акт создания файла связей; используется при многоактном режиме трансляции; при запуске программа сразу запраши- вает файл связей (тип файла "LIN"). Его находят курсором и подключают клавишей <ВК>. Если создается первый файл связей, то в ответ на запрос следует нажать клавишу . При трансляции на экран выводятся, кроме краткого протокола, строки всех внешних меток. При этом в начале этих строк выводятся уже согласованные значения этих меток. По завершении файл связей сохраняют на диске взамен предыдущего. F1 - акт создания объектных модулей; используется при много- актном режиме трансляции; при запуске программа сразу запрашивает файл связей. Его находят курсором и подклю- чают клавишей <ВК>.
В процессе трансляции выводятся так же строки, в которых обнаружены ошибки. При этом место где обнаружена ошибка выделяется в текстовой строке инверсным цветом, а в начале выделенного фрагмента вставляется символ "вопроса". Одновре- менно символ вопроса вставляется в текст. И при выходе из ассемблера в редактор эти символы вопроса можно легко и быстро найти директивой поиска.
Полный протокол трансляции можно получить, нажав клавишу <НР>, до запуска директивы трансляции. Управлять выводом полного протокола можно на любом этапе трансляции, отпуская или нажимая клавишу <НР>. Данный ассемблер предусматривает два режима работы: ОДНОАКТНЫЙ - когда формируется программа объемом до 4К. Этот режим реализуется директивой F3. МНОГОАКТНЫЙ - когда программа объемом свыше 4К формируется согласованно по частям. Порядок такой: в начале все текстовые файлы-модули транслируются директивой F2 формируя при этом файл связей. Затем все тексовые файлы-модули транслируют директивой F1 с подключением файла связей. Получаемые объект- ные модули кодов (тип EXE) сохраняют на диске. По завершении полученные файлы EXE объединяют в общую программу, если это необходимо.
Метки могут состоять из русских (КОИ7) и латинских заглавных и прописных символов или цифр, начинаясь с буквы. Транслятор допускает метки длиной до 6 символов. Наиболее оптимальной рекомендуется длина 3 символа. Комментарии отделяются символом [;]. В тексте можно использовать следующие операторы (псевдо- команды): ORG - задает своим операндом начальный рабочий адрес программы. EQU - присваивает метке значение, заданное числом или меткой другого числа. DB - занесение в память байтов или символов, выделяемых с обеих сторон символом [']. END - указывает на конец программы, прерывает трансляцию. В качестве операндов могут быть использованы константы, арифметические выражения, содержащие знаки [+], [-], имена меток и регистров микропроцессора, десятичные и шестнадцате- ричные числа. Десятичные числа, кроме команд RST, обозначаются в конце символом [d], а шестнадцатеричные символом [h] или [H].
-------------------------------------------------------------- Система команд микроэвм серии КР1816 -------------------------------------------------------------- В системе команд описанной ниже применена символика принятая для данной серии микроэвм. Однако, обращаем ваше внимание на особенности выделения операндов в мнемонике команд. В литера- туре для этой цели использовался символ "#". К сожалению этот вариант оказался не самым практичным, так как очень часто возникало неудобное сочетание символов "," и "#". Это изли- шество вызывало немало удобств при написании текста программы. Поэтому нами было принят следующий способ выделения операндов. Символ "," означает, что после него указана мнемоника регистра микроэвм. Символ "/" означает, что после него указан операнд либо меткой, либо числом. Причем, эти символы вместе нигде не сочетаются. Напоминаем также, что десятичные и шестнадцате- ричные числа различаются только символам "d", "h", "H" при- водимыми сразу после числа, например, FFh, EEH или 125d. Ниже в коментариях приняты следующие сокращения: ПД - память данных; ПП - память программ; РОН - регистр общего назначения; А - аккумулятор. В заголовке таблицы после кода команд указано число циклов выполнения команды и число байтов команды. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ мнемон./операнд/код/ц/б/ коментарий KP1816BE48 ______________________________________________________________ Команды преобразования данных ADD A,@R0 60 1 1; сложение байта ячейки ПД ADD A,@R1 61 1 1; с байтом А ADD A,R0 68 1 1; сложение байта РОН и байта А ADD A,R1 69 1 1 ADD A,R2 6A 1 1 ADD A,R3 6B 1 1 ADD A,R4 6C 1 1 ADD A,R5 6D 1 1 ADD A,R6 6E 1 1 ADD A,R7 6F 1 1 ADD A/dd 03 2 2; сложение байта данных с байтом А ADDC A,@R0 70 1 1; сложение бита переноса, байта ADDC A,@R1 71 1 1; ячейки ПД с байтом А ADDC A,R0 78 1 1; сложение бита переноса, ADDC A,R1 79 1 1; байта РОН с байтом А ADDC A,R2 7A 1 1 ADDC A,R3 7B 1 1 ADDC A,R4 7C 1 1 ADDC A,R5 7D 1 1 ADDC A,R6 7E 1 1 ADDC A,R7 7F 1 1 ADDC A/dd 13 2 2; слож.переноса, байта дан. с байтом А
ANL A,@R0 50 1 1; логическое И байта А ANL A,@R1 51 1 1; с байтом ячейки ПД ANL A,R0 58 1 1; логическое И байта А ANL A,R1 59 1 1; с байтом РОН ANL A,R2 5A 1 1 ANL A,R3 5B 1 1 ANL A,R4 5C 1 1 ANL A,R5 5D 1 1 ANL A,R6 5E 1 1 ANL A,R7 5F 1 1 ANL A/dd 53 2 2; логическое И байта А и байта данных ANL BUS/dd 98 2 2; логическое И байта данных и байта Р0 ANL P1/dd 99 2 2; лог. И байта данных и байта порта Р1 ANL P2/dd 9A 2 2; лог. И байта данных и байта порта Р2 ANLD P4,A 9C 2 1; лог. И содержимого порта с маской ANLD P5,A 9D 2 1; содержащейся в А(разряды 0-3) ANLD P6,A 9E 2 1; результат записыв. в порт, А - не ANLD P7,A 9F 2 1; меняется
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ мнемон./операнд/код/ц/б/ коментарий KP1816BE48 ______________________________________________________________ CALL /aa X4 2 2; вызов подпрограммы Команды манипуляции с флажками CLR A 27 1 1; обнуление байта А CLR C 97 1 1; сброс переноса CLR F0 85 1 1; установка бита F0 в 0 CLR F1 A5 1 1; установка бита F1 в 0 CPL A 37 1 1; инвертирование байта А CPL C A7 1 1; инвертирование бита переноса CPL F0 95 1 1; инвертирование бита F0 CPL F1 B5 1 1; инвертирование бита F1
DA A 57 1 1; десятичная коррекция DEC A 07 1 1; декремент байта А DEC R0 C8 1 1; декремент байта РОН DEC R1 C9 1 1 DEC R2 CA 1 1 DEC R3 CB 1 1 DEC R4 CC 1 1 DEC R5 CD 1 1 DEC R6 CE 1 1 DEC R7 CF 1 1 DIS I 15 1 1; запрещение внешних прерываний на INT DIS TCNTI 35 1 1; запрещение прер.по перепол.тайм/сч. DJNZ R0/aa E8 2 2; переход, если R0-1>0 DJNZ R1/aa E9 2 2; переход, если R1-1>0 DJNZ R2/aa EA 2 2; переход, если R2-1>0 DJNZ R3/aa EB 2 2; переход, если R3-1>0 DJNZ R4/aa EC 2 2; переход, если R4-1>0 DJNZ R5/aa ED 2 2; переход, если R5-1>0 DJNZ R6/aa EE 2 2; переход, если R6-1>0 DJNZ R7/aa EF 2 2; переход, если R7-1>0
EN I 05 1 1; разрешение внешних прерываний на INT EN TCNTI 25 1 1; разрешение прер.по перепол.тайм/сч. ENTO CLK 75 1 1; разреш.вывода имп.синхрон. на T0
IN A,P1 09 2 1; ввод байта из порта Р1 в А IN A,P2 0A 2 1; ввод байта из порта Р2 в А INC @,R0 10 1 1; инкремент байта ячейки ПД0 INC @,R1 11 1 1; инкремент байта ячейки ПД1 INC A 17 1 1; инкремент байта А INC R0 18 1 1; инкремент байта РОН INC R1 19 1 1 INC R2 1A 1 1 INC R3 1B 1 1 INC R4 1C 1 1 INC R5 1D 1 1 INC R6 1E 1 1 INC R7 1F 1 1 INS A,BUS 08 2 1; ввод(строб) байта из порта Р0 в А
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ мнемон./операнд/код/ц/б/ коментарий KP1816BE48 ______________________________________________________________ Команды передачи управления JB0 /aa 12 2 2; переход, если А=0 JB1 /aa 32 2 2; переход, если А=1 JB2 /aa 52 2 2; переход, если А=2 JB3 /aa 72 2 2; переход, если А=3 JB4 /aa 92 2 2; переход, если А=4 JB5 /aa B2 2 2; переход, если А=5 JB6 /aa D2 2 2; переход, если А=6 JB7 /aa F2 2 2; переход, если А=7 JC /aa F6 2 2; переход, если перенос JF0 /aa B6 2 2; переход, если F0=0? JF1 /aa 76 2 2; переход, если F1=0? JMP /aa X4 2 2; безусловный переход JMPP @,A B3 2 1; безусловный переход по адресу А JNC /aa E6 2 2; переход, если неперенос JNI /aa 86 2 2; переход, если INT=0 JNZ /aa 96 2 2; переход, если байт А не равен нулю JNT0 /aa 26 2 2; переход, если Т0=0 JNT1 /aa 46 2 2; переход, если Т1=0 JZ /aa C6 2 2; переход, если байт А равен нулю JT0 /aa 36 2 2; переход, если Т0=1 JT1 /aa 56 2 2; переход, если Т1=1 JTF /aa 16 2 2; переход, если ТF=1
Команды пересылки данных MOV @R0,A A0 1 1; передача байта А в ПД MOV @R1,A A1 1 1; косвенно адресуемую байтом РОН MOV @R0/dd B0 2 2; непосредственная передача в ПД MOV @R1/dd B1 2 2; косвенно адресуемую байтом РОН
MOV A,@R0 F0 1 1; передача косвенно адресуемого MOV A,@R1 F1 1 1; байта ПД в аккумулятор MOV A,PSW C7 1 1; передача регистра состояний в А MOV A,R0 F8 1 1; передача байта MOV A,R1 F9 1 1; регистра общего назначения MOV A,R2 FA 1 1; РОН в аккумулятор MOV A,R3 FB 1 1 MOV A,R4 FC 1 1 MOV A,R5 FD 1 1 MOV A,R6 FE 1 1 MOV A,R7 FF 1 1 MOV A,T 42 1 1; передача байта таймера/счетчика в А MOV A/dd 23 2 2; непосред. передача в А
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ мнемон./операнд/код/ц/б/ коментарий KP1816BE48 ______________________________________________________________ MOV PSW,A D7 1 1; передача А в регистр состояний MOV R0,A A8 1 1; передача байта MOV R1,A A9 1 1; аккумулятора в РОН MOV R2,A AA 1 1 MOV R3,A AB 1 1 MOV R4,A AC 1 1 MOV R5,A AD 1 1 MOV R6,A AE 1 1 MOV R7,A AF 1 1 MOV R0/dd B8 2 2; непосредственная передача MOV R1/dd B9 2 2; данных в РОН MOV R2/dd BA 2 2 MOV R3/dd BB 2 2 MOV R4/dd BC 2 2 MOV R5/dd BD 2 2 MOV R6/dd BE 2 2 MOV R7/dd BF 2 2 MOV T,A 62 1 1; загрузка таймера/счетчика из А
MOVD A,P4 0C 2 1; ввод байта из порта 4 в А MOVD A,P5 0D 2 1; ввод байта из порта 5 в А MOVD A,P6 0E 2 1; ввод байта из порта 6 в А MOVD A,P7 0F 2 1; ввод байта из порта 7 в А MOVD P4,A 3C 2 1; вывод байта А в порт 4 MOVD P5,A 3D 2 1; вывод байта А в порт 5 MOVD P6,A 3E 2 1; вывод байта А в порт 6 MOVD P7,A 3F 2 1; вывод байта А в порт 7
MOVN A,@A E3 2 1; передача байта из ПП 3-стр. в А MOVP A,@A A3 2 1; передача байта из ПП тек.стр. в А MOVX @R0,A 90 2 1; передача байта А MOVX @R1,A 91 2 1; в косвенно адр. внешнюю ПД MOVX A,@R0 80 2 1; передача косвенно адресуемого MOVX A,@R1 81 2 1; байта внешней ПД в А.
NOP 00 1 1; нет операции ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ мнемон./операнд/код/ц/б/ коментарий KP1816BE48 ______________________________________________________________ Команды работы с аккумулятором ORL A,@R0 40 1 1; логическое ИЛИ байта А ORL A,@R1 41 1 1; с байтом ячейки ПД ORL A,R0 48 1 1; логическое ИЛИ байта А ORL A,R1 49 1 1; с байтом РОН ORL A,R2 4A 1 1 ORL A,R3 4B 1 1 ORL A,R4 4C 1 1 ORL A,R5 4D 1 1 ORL A,R6 4E 1 1 ORL A,R7 4F 1 1 ORL A/dd 43 2 2; логическое ИЛИ байта А и байта данных ORL BUS/dd 88 2 2; логическое ИЛИ байта данных и байта Р0 ORL P1/dd 89 2 2; логическое ИЛИ байта данных и байта Р1 ORL P2/dd 8A 2 2; логическое ИЛИ байта данных и байта Р2 ORLD P4,A 8C 2 1; лог. ИЛИ содержимого порта с маской ORLD P5,A 8D 2 1; содержащейся в А(разряды 0-3), ORLD P6,A 8E 2 1; результат записыватся в порт, ORLD P7,A 8F 2 1; А-не меняется
OUTL BUS,A 02 2 1; вывод байта А в порт Р0 и фиксация OUTL P1,A 39 2 1; вывод байта А в порт Р1 и фиксация OUTL P2,A 3A 2 1; вывод байта А в порт Р2 и фиксация
RET 83 2 1; возврат из ПП без восст.рег.состояний RETR 93 2 1; возврат из ПП с восст.рег.состояний RL A E7 1 1; циклический сдвиг влево без переноса RLC A F7 1 1; циклический сдвиг влево с переносом RR A 77 1 1; циклический сдвиг вправо без переноса RRC A 67 1 1; циклический сдвиг вправо с переносом
SEL MB0 E5 1 1; выбор нулевого банка ПП (0-2047h) SEL MB1 F5 1 1; выбор первого банка ПП (2048-4095h) SEL RB0 C5 1 1; выбор нулевого банка раб.рег.(0-7h) SEL RB1 D5 1 1; выбор первого банка раб.рег.(18h-1Fh) STOP TCNT 65 1 1; останов таймера/счетчика событий STRT CNT 45 1 1; запуск счетчика событий STRT T 55 1 1; запуск таймера SWAP A 47 1 1; обмен полубайтами аккумулятора
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ мнемон./операнд/код/ц/б/ коментарий KP1816BE48 ______________________________________________________________ XCH A,@R0 20 1 1; обмен байта аккумулятора XCH A,@R1 21 1 1; и ячейки ПД XCH A,R0 28 1 1; обмен байта аккумулятора XCH A,R1 29 1 1; и РОН XCH A,R2 2A 1 1 XCH A,R3 2B 1 1 XCH A,R4 2C 1 1 XCH A,R5 2D 1 1 XCH A,R6 2E 1 1 XCH A,R7 2F 1 1 XCHD A,@R0 30 1 1; обмен мл.полубайтов аккумулятора XCHD A,@R1 31 1 1; и ячейки ПД косв.адр.РОН XRL A,@R0 D0 1 1; исключающее ИЛИ байта А XRL A,@R1 D1 1 1; с байтом ячейки ПД XRL A,R0 D8 1 1; исключающее ИЛИ байта А XRL A,R1 D9 1 1; с байтом РОН XRL A,R2 DA 1 1 XRL A,R3 DB 1 1 XRL A,R4 DC 1 1 XRL A,R5 DD 1 1 XRL A,R6 DE 1 1 XRL A,R7 DF 1 1 XRL A/dd D3 2 2; исключающее ИЛИ байта А и байта данных | |