Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Программирование на машинном языке






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

Между шестнадцатеричной и двоичной сис­темами счисления преобразования выполняются очень легко. Каждая группа из 4 двоичных цифр соответствует ровно одной шестнадцатерич­ной цифре. Поэтому, если не оговорено противное, все программы на машинном языке в этой книге мы будем записывать шестнадцатеричными цифрами. Например, трехбайтовая команда нашего иллюстри­рованного процессора, загружающая в аккумулятор содержимое ячейки памяти с адресом 0110 1111 1101 10112, имеет вид

В шестнадцатеричных обозначениях эта команда запишется как

6F

DB

Тем не менее и двоичное, и шестнадцатеричное представление машин­ного языка неудобно и ненаглядно для человека. Поэтому, как пра­вило, команды представляются в символической форме — исполь­зуются легко запоминаемые мнемонические обозначения команд. Например, в соответствии с табл. 2 предыдущую команду можно записать в виде

LDR О

6F

DB

Второй и третий байты по-прежнему записаны шестнадцатеричными цифрами, и аккумулятор задан своим номером среди общих регистров, равным 0. Однако операция обозначена трехбуквенным мнемони­ческим именем LDR. В приложении приведены для справок две таблицы П1 и П2, в которых устанавливается соответст­вие между шестнадцатеричной и символической формой команд ил­люстративного микропроцессора.

Теперь введем соглашение, которое будет действовать и далее. Все программы для нашего микропроцессора, если не сделано особых оговорок, мы будем записывать в символической форме. Таким образом, первый байт каждой команды будет выглядеть, как в табл. 2 (или П1 и П2). Номера общих регистров в командах мы будем задавать одной шестнадцатеричной цифрой, причем F16 будет обозначать косвенную адресацию. И наконец, значение второго и третьего байта в командах мы также будем задавать шестнадцатеричными цифрами.

Проиллюстрируем теперь наши соглашения на примере неболь­шой программы, в которой к числу, находящемуся в ячейке 000А16 главной памяти, прибавляется шестнадцатеричная константа ЗС. Программа приведена в табл. 5.1. Она выполняется следующим обра­зом.

Прежде всего подается внешний импульс на линию «сброс», по которому на программный счетчик устанавливается 0. Затем подается импульс на линию «пуск», и начинается выполнение программы. Вы­бираются 3 байта, составляющие первую команду, и программный счетчик увеличивается на 1 после выборки каждого байта. Первая команда пересылает содержимое ячейки памяти 000А в аккумулятор.

Поскольку программный счетчик продвинулся на 3 единицы, он теперь содержит 0003.

Это адрес следующей команды — загрузки ре­гистра с непосредственным адресом. Команда содержит в себе опе­ранд и удобна для задания константы. Ее выполнение приводит к за­сылке значения ЗС, содержащегося во втором байте команды, в об­щий регистр 1, Теперь программный счетчик содержит 0005, т. е. адрес третьей команды. Ее выборка и выполнение приводят к при­бавлению содержимого регистра 1 к содержимому аккумулятора и занесению суммы в аккумулятор. Следующая команда передает со­держимое аккумулятора в ячейку памяти 00В. Последняя команда останавливает микропроцессор,

Таблица 5.1

Пример программы: «прибавить константу к числу в памяти и записать результат снова в память»

 

Номер ячейки памяти (шест-надцатерич-ный) Команда на машин­ном языке Команда в символиче­ской форме Комментарий
    LDR 0 Передача содержимого ячейки памяти
      000 А в аккумулятор
   
    LRI 1 Загрузка в регистр 1 величины 3С
  ЗС ЗС  
    ADD 1 Сложение регистров 0 и 1, сумма в аккумуляторе
    SТR 0 Передача содержимого аккумулятора
      в ячейку 000В
  OB  
  FA HLT Останов программы
000А     Исходное число
000В     Сумма

 

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.