Кодирование команд МП


Каждый элемент информации, заносимый во внешнюю или внутреннюю память МП, представляется в двоичном коде. Однако при составлении программы команды могут быть записаны в любом другом коде: в восьмеричном, шестнадцатеричном или в символической (мнемонической) форме.

Если учесть, что средняя по сложности программа состоит из нескольких десятков и даже сотен команд, то понятно, что записывать программу в двоичном коде очень неудобно и утомительно.

Шестнадцатеричное кодирование команд преследует ту же что и восьмеричное, и позволяет еще проще записывать коды команд, так как одна шестнадцатеричная цифра соответствует двоичной тетраде.

Восьмеричное и шестнадцатиричное кодирование команд имеют очевидное преимущество перед двоичным. Однако для более длинных команд и они неудобны. Программист должен знать восьмеричные или шестнадцатиричное коды всех команд, использующихся в данном микропроцессоре. Чтобы упростить процесс написания, отладки и чтения программы, широко используется мнемонический или символический код. Основные его принципы следующие.

Каждая команда МП представляется трех- или четырехбуквенным символом. Мнемонические символы значительно легче связать с машинными операциями, так как эти символы можно выбрать такими, чтобы в своей совокупности они напоминали название команды.

Символическое обозначение всех команд называется "языком ассемблера". В основе этих символических обозначение, как правило, лежит аббревиатура от полной записи наименования команды на английском языке.

Пример.

Рассмотрим, например, кодирование команды микропроцессора К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;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.009 сек.