
- •Однокристальная микроЭвм мс68нс705с8.
- •Теоретическая часть.
- •Отладочный модуль м68нс05еvм.
- •Блок оэвм.
- •Последовательный интерфейс.
- •Блок программирования.
- •Порты расширения.
- •Внешнее пзу с отладчиком evm-bug.
- •Псевдо-пзу.
- •Команды отладчика evm-bug. Начало работы.
- •Формат командной строки.
- •Команды отладчика evm-bug.
- •Ассемблер/дизассемблер (asm - аSseMbler).
- •Заполнение области памяти (bf - Block Fill).
- •Установка точки останова (br - bReakpoint).
- •Запуск программы на выполнение (g - Go to).
- •Помощь (help).
- •Прозрачный режим (tm - Transparent Mode).
- •Загрузка (load).
- •Отображение памяти (md - Memory Display).
- •Изменение памяти (mm - Memory Modify).
- •Отмена точки останова (nobr - no bReakpoint).
- •Выполнять без учета точек останова (p - Proceed).
- •Отображение регистров (rd - Registers Display).
- •Изменение регистров (rm - Registers Modify).
- •Скорость обмена (speed).
- •Трассировка (т - Trace).
- •Работа с сервером.
- •Кросс-ассемблер. Формат исходной программы. Формат оператора.
- •Поле метки.
- •Поле команды.
- •Поле операнда.
- •Поле комментариев.
- •Элементы программы, определяемые пользователем.
- •Директивы ассемблера.
- •Регистры нс05.
- •Определение методов адресации.
- •Практическая часть.
- •Использование средств сервера для подготовки и загрузки программ.
- •Контрольные вопросы.
Кросс-ассемблер. Формат исходной программы. Формат оператора.
Исходная программа составляется из команд (операторов) языка ассемблер. Каждый оператор должен быть записан на одной строке. Строка может содержать до 80 символов. Операторы ассемблера имют 4 поля, которые опознаются по порядку следования внутри строки и разделяются символами между полями. Основной формат оператора следующий:
[метка:] Команда операнд [;коментарии]
Поля метки и комментариев необязательные. Поля команды и операнда взаимозависимые и отделяются пробелами или табуляцией. Поле операнда может быть как необходимым, так и необязательным, в зависимости от контекста команды. Рассмотрим поля, входящие в состав оператора, подробнее.
Поле метки.
Метка - это определяемый пользователем элемент программы на языке ассемблера, который ставится в соответствие адресу текущей команды. Метку можно использовать в командах перхода и присваивания, указывая вместо адреса ячейки надлежащую метку. При описании метки можно использовать символы: A-Z, a-z, 0-9, . (точка), $ (знак доллара) и _ (подчеркивание). Поле метки отделяется от следующего поля двоеточием (:).
Примечания:
·метка не может начинаться с цифры;
·метка может иметь произвольную длину, но только первые 8 символов являются значащими.
Поле команды.
Поле команды определяет выполняемую ассемблером функцию. В поле команды может содержаться либо мнемоника команды, либо директива ассемблера (см. ниже). Все лишние пробелы и табуляции перед и после команды отбрасываются. Поле команды отделяется от поля операнда пробелом(ами) или табуляцией.
Поле операнда.
Поле операнда используется только в том случае, если команде необходим операнд. Операнд может также быть выражением. При использовании нескольких операндов их следует разделять запятыми. При определении операндов возможно использование выражений, которые приведены в таблицах ниже.
Унарные операторы.
-
знак меньше (<)
младший байт значения выражения
<0h0800=0h00
знак больше (>)
старший байт значения выражения
>0h0800=0h80
знак плюс (+)
положительное значение
+23=23
знак минус (-)
отрицательное значение (инверсия старшего бита)
-0h13=0h93
тильда (~)
инверсия числа
~0h00=0hFF
апостроф (')
код символа
'А=0h41
кавычки (")
код строки
"AB=0h4142
Двуоперандные выражения.
-
символ
назначение
пример
двойной знак меньше (<<)
a<<n - сдвиг а на n бит влево
0h0800<<4=0h8000
двойной знак больше (>>)
a>>n - сдвиг а на n бит вправо
0h0800>>4=0h0080
знак плюс (+)
a+b - арифметическое сложение
3+5=8
знак минус (-)
a-b - арифметическое вычитание
3-5=-2
звездочка (*)
a*b - арифметическое умножение (16-ти битовое знаковое)
3*2=6
косая черта (/)
a/b - арифметическое деление (16-ти битовое знаковое)
0hF0/2=0h78
амперсанд (&)
a&b - логическая операция AND
0b0101&0b0011=1
вертикальная черта (|)
a|b - логическая операция OR
0b0101|0b1001=0b0D
крышка или стрелочка (^)
a^b - логическая операция ХOR
0b0101^0b0110=3
Временное переключение систем счисления.
-
символ
назначение
0b, 0B
двоичная система
0@, 0o, 0O, 0q, 0Q
восьмеричная система
0d, 0D
десятичная система
0h, 0H, 0x, 0X
шестнадцатиричная система