Кодирование команд МП
Каждый элемент информации, заносимый во внешнюю или внутреннюю память МП, представляется в двоичном коде. Однако при составлении программы команды могут быть записаны в любом другом коде: в восьмеричном, шестнадцатеричном или в символической (мнемонической) форме.
Если учесть, что средняя по сложности программа состоит из нескольких десятков и даже сотен команд, то понятно, что записывать программу в двоичном коде очень неудобно и утомительно.
Шестнадцатеричное кодирование команд преследует ту же что и восьмеричное, и позволяет еще проще записывать коды команд, так как одна шестнадцатеричная цифра соответствует двоичной тетраде.
Восьмеричное и шестнадцатиричное кодирование команд имеют очевидное преимущество перед двоичным. Однако для более длинных команд и они неудобны. Программист должен знать восьмеричные или шестнадцатиричное коды всех команд, использующихся в данном микропроцессоре. Чтобы упростить процесс написания, отладки и чтения программы, широко используется мнемонический или символический код. Основные его принципы следующие.
Каждая команда МП представляется трех- или четырехбуквенным символом. Мнемонические символы значительно легче связать с машинными операциями, так как эти символы можно выбрать такими, чтобы в своей совокупности они напоминали название команды.
Символическое обозначение всех команд называется "языком ассемблера". В основе этих символических обозначение, как правило, лежит аббревиатура от полной записи наименования команды на английском языке.
Пример.
Рассмотрим, например, кодирование команды микропроцессора К580, осуществляющий передачу байта данных из регистра В в регистр А (аккумулятор). Мнемоническая запись этой команды - МОV R, R2 (аббревиатура от английского слова to move - пересылать). Формат этой команды в двоичном коде имеет вид 01 DDDSSS, где DDD - двоичный код номера регистра - приемника информации; SSS - двоичный код номера регистра-источника.
Регистр В в данном микропроцессоре имеет номер 0, а его двоичный код - 000. Регистр А имеет номер 7 и код 111 . Подставив эти двоичные коды вместо DDD и SSS получим машинный код команды MOV A,B: 01111000.
В МП К580 основной системой кодирования является шестнадцатеричная система счисления. Это вызвано байтовой структурой обрабатываемой информации. Поэтому при кодировании команд байт разбивается на две тетрады, а соответствующий восьмиразрядный двоичный код преобразуется в шестнадцатеричный код, состоящий их двух шестнадцатеричных цифр.
С учетом сказанного, двоичный код команды MOV А, В разбивается на две тетрады. Младшая тетрада имеет вид 1000 , что соответствует шестнадцатеричной цифре 8, а старшая тетрада имеет вид 0111 , что соответствует шестнадцатеричной цифре 7, тогда шестнадцатеричный код рассматриваемой команды имеет вид 78.
Предварительную запись программы удобно проводить в более компактной форме. В программе указывается начальный адрес каждой команды и при этом имеется ввиду, что в зависимости от длины каждая команда будет занимать от одной до трех последовательных ячеек памяти. С учетом этого при записи программы указываются лишь начальные адреса команд в программе. Это сокращает объем записи программы и делает их более наглядными и удобными в машинных кодах и мнемокодах приведен ниже в таблице.
СОКРАЩЕННЫЙ ВИД ЗАПИСИ ПРОГРАММЫ
Адрес | Машинный код | Мнемокод | Комментарий |
3А ОО ОВ | LD 0В00 | Получить число | |
2F | СМА | Инвертировать число | |
32010В | SТА 0В01 | Записать по адресу ОВ01 | |
CF | RSTI | Прервать выполнение программы |
При составлении программ решаемых задач пользователь должен уметь получать всю необходимую информацию, содержащуюся в символической записи команды, а именно:
а) название команды;
б) машинный код команды;
в) функциональное назначение команды ( выполняемую под ее воздействие операцию в МП);
г) используемый способ адресации;
д) длину команды;
е) порядок размещения кода команды в памяти;
ж) число машинных циклов, необходимых для реализации команды;
з) воздействие результата выполнения команды на изменения состояния МП (содержимое регистра состояния);
В качестве примера рассмотрим уже используемую выше команду МП К580 "STA A" :
а) название команды - "Запись в память прямая";
б) машинный код команды 32 А 916 или 0011 00102;
в) функциональное назначение команды: содержимое регистра-аккумулятора записать в ячейку памяти с адресом А. После выполнения команды в аккумуляторе и ячейке памяти с адресом А содержится одна и та же информация;
г) используемый способ адресации - прямая адресация;
д) длина команды - 3 байта;
е) порядок размещения кода команды в памяти;
- SТА (код команды) - 1 байт;
- младший байт адреса - 1 байт;
- старший байт адреса - 1 байт;
ж) число машинных циклов, необходимых для выполнения команды, - 5 циклов;
з) воздействие результата выполнения команды на состояние МП
- после выполнения команды значения разрядов регистра состояния не изменяются.
Вывод.
Знание системы и способа кодирования команд, а также информации, содержащейся в коде каждой команды, способствует эффективному использованию архитектурных возможностей МП при программировании его работы.
Дата добавления: 2017-11-21; просмотров: 1600;