РУКОВОДСТВО ПРОГРАММИСТА III.2. Диалоговый отладочный комплекс (окончание) ПРИЛОЖЕНИЕ КРАТКИЙ СПРАВОЧНИК ПО ОТЛАДОЧНОМУ КОМПЛЕКСУ 1. РЕДАКТОР Запуск: EDITOR - автономный Редактор DOK - Отладочный Комплекс ключ /N - без загрузки файла путь доступа и имя файла - с загрузкой иначе - выбор по меню Виды курсора: . - куpсоp вне текста _ - куpсоp в тексте, режим замены ^ - куpсоp в тексте, режим вставки v - ввод символа на регистре УПР ? - ввод символа на регистре РЕД * - позиция контекстной замены Команды pедактиpования: Набор текста: РУС-РЕГ / LAT-РЕГ - пеpеключение алфавита РЕГ - стpочные/заглавные или pусские/латинские буквы F1 - смена регистра РЕГ F2+F1 - смена режима регистра РЕГ F2+символ - ввод гpафического символа F2+F2 - вкл/выкл. гpафический pегистp F2+ф0 - вкл/выкл. выдачу стpочных букв, как заглавных F2+ф. - вкл/выкл. подсветку стpочных букв цветом F2+ф= - вкл/выкл. вывод упp.символов, как гpафических Упp-V - ввод символа на регистре УПР Пеpемещение по тексту: стрелки - перемещение курсора на 1 позицию/строку ф3 - переход к началу следующей строки ф4 - листание на страницу вверх ф5 - листание на страницу вниз ф6 - центровка строки ф0 - переход к началу строки ф. - переход к концу строки РЕД+ф4 - переход к началу текста РЕД+ф5 - переход к концу текста Редактиpование стpоки: ф2 - смена режима вставки/замены ф1 - уничтожение текущего символа ф8 - уничтожение конца строки Упp-J - вставка запомненной подстроки РЕД+: - откатка изменений в строке Редактиpование стpок: ф9 - уничтожение текущей стpоки ПС - вставка пустой строки после текущей ф7 - склейка строк Упp-V+ПC - разбиение строки в текущей позиции Работа с фpагментом: РЕД+ф1 - отметка первой строки фрагмента РЕД+ф2 - отметка последней строки фрагмента РЕД+ф7 - копирование фрагмента перед текущей строкой РЕД+ф8 - перемещение фрагмента перед текущей строкой РЕД+ф9 - уничтожение фрагмента в меню - запись в файл и чтение из файла Контекстные поиск и замена: РЕД+F1 - ввод обpазца для поиска и первый поиск (Упp-@ в обpазце - любой символ, F2+@ - ПС) F3 - продолжение поиска РЕД - прерывание поиска РЕД+F2 - ввод образцов и контекстная замена (подтверждения: Д, Н, Г(без подтверждения) Копирование подстpоки: РЕД+ф0 - ввод подстроки (пустая = вся текущая строка) Упp-J - вставка подстроки в текст Прочие команды: РЕД+F3 - переключение режима экрана: 32/64 Работа в меню: Вход в меню: РЕД+РЕД - вход в главное меню РЕД+вверх - вход в меню систем Выбор альтернатив меню: РЕД - в меню: отказ от текущего меню или запроса вверх/вниз - перемещение по меню ПС - выбор альтернативы Выбор имен файлов: явное имя шаблон имен (с * или ?) - вход в меню выбора по каталогу 2. АССЕМБЛЕР Типы адресации и их обозначения: обозн. название дл. команды (Z,X) Косвенно-индексная (по X) 2 ххх-000-01 Z абсолютная короткая 2 ххх-001-хх # непосредственная 2 ххх-010-01,1хх-000-00 Acc Аккумуляторная 1 0хх-010-10 A абсолютная 3 ххх-011-хх R Относительная 2 ххх-100-00 (Z),Y Индексно-косвенная (по Y) 2 ххх-100-01 Z,X короткая индексная (по X) 2 ххх-101-хх Z,Y короткая индексная (по Y) 2 10х-101-10 A,X абсолютная индексная по X 3 ххх-110-хх A,Y абсолютная индексная по Y 3 ххх-111-01 (A) Косвенная 3 011-011-00 Безадресная 1 Команды, их коды и изменяемые биты состояния: Команды пересылки 'память->регистр': М->A М->X М->Y Мнем: LDA LDX LDY Тип (Z,X): A1 - - Z : A5 A6 A4 * - - - - * - # : A9 A2 A0 N V B D I Z C A : AD AE AC (Z),Y: B1 - - Z,X : B5 vB6 B4 A,Y : B9 BE - A,X : BD - BC v LDX Z,Y Команды пересылки 'регистр->память': A->М X->М Y->М Мнем: STA STX STY Тип (Z,X): 81 - - Z : 85 86 84 N V B D I Z C A : 8D 8E 8C - - - - - - - (Z),Y: 91 - - Z,X : 95 v96 94 Y,X : 99 - - A,X : 9D - - v STX Z,Y Команды пересылки 'регистр->регистр': A->X X->A A->Y Y->A X->S S->X TAX TXA TAY TYA TXS TSX N V B D I Z C AA 8A A8 98 9A BA * - - - - * - Команды арифметических операций: A+М+C->A A-М-(1-C)->A Мнем: ADC SBC Тип (Z,X): 61 E1 N V B D I Z C Z : 65 E5 * * - - - * * # : 69 E9 A : 6D ED (Z),Y: 71 F1 Z,X : 75 F5 A,Y : 79 F9 A,X : 7D FD Команды сравнения: A-М X-М Y-М (регистры не меняются) Мнем: CMP CPX CPY Тип (Z,X): C1 - - N V B D I Z C Z : C5 E4 C4 * - - - - * * # : C9 E0 C0 A : CD EC CC (Z),Y: D1 - - Z,X : D5 - - A,Y : D9 - - A,X : DD - - Команды логических операций: A&М->A A!М->A A%М->A A&М (поразрядно) Мнем: AND ORA EOR BIT Тип: (Z,X): 21 01 41 - N V B D I Z C Z : 25 05 45 24 * - - - - * - # : 29 09 49 - d7d6 - - - * - (BIT) A : 2D 0D 4D 2C (Z),Y: 31 11 51 - Z,X : 35 15 55 - & - лoг. И A,Y : 39 19 49 - ! - лoг. ИЛИ A,X : 3D 1D 5D - % - иcкл. ИЛИ Команды сдвига: Арифметич.сдвиг М Циклич.сдвиг М влево вправо влево вправо Мнем: ASL LSR ROL ROR Z : 06 46 26 66 N V B D I Z C Аcc : 0A 4A 2A 6A * - - - - *d7 (влeвo) A : 0E 4E 2E 6E * - - - - *d0 (впpaвo) Z,X : 16 56 36 76 A,X : 1E 5E 3E 7E Команды инкремента/декремента: М+1->М М-1->М X+1->X Y+1->Y X-1->X Y-1->Y Мнем: INC DEC INX INY DEX DEY E8 C8 CA 88 Z : E6 C6 A : EE CE N V B D I Z C Z,X : F6 D6 * - - - - * - A,X : FE DE Команды установки битов состояния: C V D I в 0: CLC CLV CLD CLI другие биты 18 B8 D8 58 не меняются в 1: SEC - SED SEI безадресные 38 F8 78 Команды условного перехода: Действие: PC+2+М->PC Условие: Z=1 Z=0 N=1 N=0 C=1 C=0 V=1 V=0 Адр-я: R BEQ BNE BMI BPL BCS BCC BVS BVC F0 D0 30 10 B0 90 70 50 Команды перехода: Действия Мнем Тип:код Безусловный : М->PC JMP A:4C (A):6C На подпрогpамму : вcт PC+2,М->PC JSR A:20 Возврат из п/п : изcт PC, PC+1->PC RTS 60 Возврат из прер-я: изcт P, изcт PC RTI 40 Команды работы со стеком: вcт A вcт P изcт A изcт P PHA PHP PLA PLP (PLA воздействует 48 08 68 28 на признаки Z,N) Другие команды: Нет операции Останов(вcт P,вcт PC+2,(FFFA,FFFB)->PC) NOP BRK EA 00 Сводка команд процессора 6502: Через точку указаны время в тактах и код команды: (Z,X) Z # A (Z),Y Z,X A,Y A,X ORA : 6.01 3.05 2.09 4.0D 5.11 4.15 4.19 4.1D AND : 6.21 3.25 2.29 4.2D 5.31 4.35 4.39 4.3D EOR : 6.41 3.45 2.49 4.4D 5.51 4.55 4.59 4.5D ADC : 6.61 3.65 2.69 4.6D 5.71 4.75 4.79 4.7D STA : 6.81 3.85 4.8D 5.91 4.95 5.99 5.9D LDA : 6.A1 3.A5 2.A9 4.AD 5.B1 4.B5 4.B9 4.BD CMP : 6.C1 3.C5 2.C9 4.CD 5.D1 4.D5 4.D9 4.DD SBC : 6.E1 3.E5 2.E9 4.ED 5.F1 4.F5 4.F9 4.FD ASL : 5.06 2.0A* 6.0E 6.16 7.1E ROL : 5.26 2.2A* 6.2E 6.36 7.3E LSR : 5.46 2.4A* 6.4E 6.76 7.5E ROR : 5.66 2.6A* 6.6E 6.96 7.7E DEC : 5.C6 6.CE 6.D6 7.DE INC : 5.E6 6.EE 6.F6 7.FE BIT : 3.24 4.2C STX : 3.86 4.8E 4.96* STY : 3.84 4.8C 4.94 LDY : 3.A4 2.A0 4.AC 4.B4 4.BC LDX : 3.A6 2.A2 4.AE 4.B6* 4.BE CPY : 3.C4 2.C0 4.CC CPX : 3.E4 2.E0 4.EC JMP : 3.4C 5.6C* JSR : 6.20 *) ASL, LSR, ROL, ROR - Acc ; LDX, STX - Z,Y ; JMP - (A) BPL BMI BVC BVS BCC BCS BNE BEQ 2.10 2.30 2.50 2.70 2.90 2.B0 2.D0 2.F0 CLC SEC CLI SEI NOP CLV CLD SED 2.18 2.38 2.58 2.78 2.EA 2.B8 2.D8 2.F8 PHP PLP PHA PLA DEY INY DEX INX 3.08 4.28 3.48 4.68 2.88 2.C8 2.CA 2.E8 TXA TXS TAX TSX TYA TAY RTI RTI BRK 2.8A 2.9A 2.AA 2.BA 2.98 2.A8 6.40 6.60 7.00 Директивы Ассемблера: Организация исходной и объектной программ: CHN имя_файла - следующий исходный файл INCLUDE имя_файла - вставить текст из файла в тек.файл ORG адрес - начать новый объектный файл, задать адрес LOC адрес - задать новый адрес объектной программы OBJ адрес - разместить программу в памяти, задать адрес REL - создать перемеещаемую программу Определение меток: метка EQU выражение - определение значения метки ENTRY метка или метка:: в позиции определения - экспортируемая метка EXTRN метка или метка## в операнде - импортируемая метка Размещение данных в программе: DFB M1,...,Mn - запись серии коротких чисел DW A1,...,An - запись серии адресов DDB A1,...,An - запись серии длинных чисел ASC XтекстX - запись символов текста DCI XтекстX - то же, с выделением последнго байта (msb) DS число - резервирование памяти MSB ON/OFF - установка/сброс ст.бита в символьных кон- стантах DSECT - DEND - неразмещаемый фрагмент Условное ассемблирование: DO число - ELSE - FIN обе формы равносильны IF число - ELSE - ENDIF IFE число по обратному условию IFDEF метка по определенной метке IFNDEF метка по неопределенной метке IF1 на 1 проходе ассемблирования IF2 на 2 проходе Управление листингом: LST ON/OFF - включение/выключение генерации листинга PAGE - начало новой страницы CHR символ - задание символа для REP REP число - вывод разделяющей строки символов SKP число - пропуск строк SBTL XтекстX - установка "шапки" страниц 3. ОТЛАДЧИК Директивы Отладчика: Вычисления: число + число - сложение число - число - вычитание число & число - лог. "И" число % число - лог. "Искл.ИЛИ" число ! число - лог. "ИЛИ" Выдача и модификация ячеек памяти: адрес - выдача ячейки адрес1.адрес2 - дамп участка памяти адрес1.адрес2X - текстовый дамп участка адрес: м1...мN - запись ячеек памяти ПС - выдача ячеек с текущего адреса адрес ПС : м1 - выдача и запись ячейки Работа с участками: адрес1<адрес2.адрес3M - копирование участка адрес1<адрес2.адрес3V - сравнение участков адрес1<адрес2.адрес3S - поиск в участке по образцу: адрес1: N м1 ... мN Листинг и мини-ассемблер: адресL - выдача листинга участка L - продолжение листинга с текущего адреса адрес1.адрес2T - трассировка участка в листинге адрес/команда/.. - запись команд в память /команда.. - запись команд по текущему адресу Запуск программ: P - выдача сохраненных регистров P:X Y Z S P - запись регистров адресG - запуск программы по адресу Поблоковый обмен с диском: адрес<блок1.блок2R - чтение интервала блоков в память адрес<блок1.блок2W - запись интервала блоков из памяти Управление экраном: Y - переключение режимов 32/64; включение полного экрана ^ - переход в левое/правое окно (только в 64 режиме) Обращение к Командеру: [командная строка Выход из Отладчика: Q Структура памяти в Отладчике: 0018-001F - рабочие ячейки Отладчика 0020-0044 - рабочие ячейки IOSUB,Отладчика v 0040-007F - буфер параметров входной строки Командера 0100-01FF - аппаратный стек v 0100-011F - буфер ключей входной строки Командера v 0200-02E7 - стандартный буфер ввода строки 02E8-07FF - IOSUB 0800-0FFF - экран Отладчика 1000-16FF - Отладчик (в ДОК восстанавливается из 9500) v 1000-17FF - Редактор читает сюда каталог файлов * 1800-7CFF - буфер текста Редактора * 7D00-7FFF - буфера Ассемблера и Редактора * 8000-94FF - Редактор * 9500-9BFF - копия Отладчика (->1000 при вызове) A000-BFFF - ДОС с буферами и драйверами * D000-EEFF!(ROM2-D0) - Ассемблер !EC00-FFFF (ROM1) - Командер ! - адрес может меняться в версиях, * - память занята только в ДОК, v - условно свободно.