Основы программирования микропроцессоров



Download 1,87 Mb.
bet3/119
Sana23.02.2022
Hajmi1,87 Mb.
#139915
TuriКонтрольные вопросы
1   2   3   4   5   6   7   8   9   ...   119
Bog'liq
Системное программирование

Адрес памяти

Содержимое памяти

Комментарий

00100h

1110 0101

Читать слово в регистр AX
из порта ввода 5.

00101h

0000 0101

00102h

0100 0000

Увеличить на единицу содержимое AX.

00103h

1110 0111

Передать слово из регистра AX
в порт вывода 2.

00104h

0000 0010

00105h

1110 1011

Повторить действия путем перехода
по адресу на семь байт назад.

00106h

1111 1001

По комментариям становится понятно, что первые две комбинации нулей и единиц, хранящихся в ячейках памяти по адресам 100h и 101h (h – символ шестнадцатеричного числа) определяет команду чтения слова данных из порта ввода под номером 5 в регистр микропроцессора AX. Команда по адресу 102h увеличивает значение регистра AX на единицу. Затем выполняется передача содержимого регистра AX в порт вывода 2. Команда, записанная по адресам 105h и 106h, выполняет переход по адресу 100h, и затем весь процесс повторяется заново.
Представленный фрагмент программы в машинных (числовых) кодах команд микропроцессора называется объектной. Разработав объектную программу, ее можно загрузить в оперативную память вычислительной машины и запустить на выполнение. Как не трудно заметить, создание напрямую объектных программ довольно утомительное занятие. Современные модели микропроцессоров имеют систему команд, включающую сотни различных инструкций. Поэтому запомнить и, тем более, безошибочно применить их чрезвычайно сложно.
Значительно проще было бы использовать близкий для человека язык символьных описаний для тех действий, которые необходимо выполнить. Разработав такой язык можно затем создать специальные инструментальные средства, выполняющие преобразование программы с символьного языка в объектный код. Программы, написанные на таких искусственных языках, называются исходными, а инструментальные средства, выполняющие преобразование, – трансляторами (рис. 1).
Существует два вида трансляторов: ассемблеры предназначены для преобразования исходных программ, написанных на языке ассемблера, и компиляторы – для трансляции программ с языков высокого уровня.


Рис. 1. Процесс трансляции исходной программы в объектный код.


Язык ассемблера позволяет разрабатывать программы на уровне команд микропроцессора, но вместо числовых кодов он определяет символьные обозначения. Например, рассмотренный фрагмент программы на языке ассемблера будет выглядеть следующим образом:

L: IN AX, 5 ; читать слово данных из порта 5 в регистр AX


INC AX ; увеличить на единицу регистр AX
OUT 2, AX ; вывести в порт 2 содержимое регистра AX
JMP L ; перейти по метке L

Воспринимать эти строчки теперь стало значительно проще. На языке ассемблера машинные команды имеют вид мнемонических обозначений или мнемоник (в нашем примере мнемониками являются IN, INC, OUT и JMP), а адреса памяти и константы могут быть представлены не последовательностью битов, а символами. Поэтому для изучения, понимания и использования языка ассемблера требуется намного меньше усилий, чем при создании программ на машинном языке.


Для преобразования аббревиатур английских слов в числовые коды команд должна быть вызвана программа ассемблера. Функцией ассемблера является преобразование исходной программы в объектную, понятную микропроцессору (рис. 2). Отношения между программой на языке ассемблера и результатом трансляции – объектным кодом, всегда однозначные. Язык ассемблера позволяет полностью контролировать процесс получения объектного кода.


Рис. 2. Трансляция программы на языке ассемблера в объектный код.


Существует много разновидностей ассемблеров, разработанных различными фирмами. Для микропроцессоров фирмы Intel традиционно на рынке ассемблеров имеется два основных пакета: макроассемблер MASM компании Microsoft и турбо ассемблер TASM компании Borland. Оба пакета содержат трансляторы, компоновщики, отладчики и другие средства для полноценной разработки программ на ассемблере.
Приведем еще один пример того же самого алгоритма, но уже на языке высокого уровня, например, на Паскале (пакет Borland® Pascal 7.0):

1: portw[2]:=portw[5]+1; { получить из порта 5 слово данных, увеличить


его значение на единицу и вывести в порт 2 }
goto 1; { перейти на метку 1 }

Здесь для доступа к портам ввода-вывода используются предопределенный массив portw. Индексом массива является адрес порта, к которому необходимо обратиться. Как видно, теперь полностью потерян контроль над процессом получения объектного кода. Каким образом эти две строчки будут преобразованы в объектный код, зависит от выбранной версии компилятора языка Паскаль (рис. 3).




Рис. 3. Трансляция программы на языке высокого уровня в объектный код.


В общем случае отношения между исходной программой на языке высокого уровня и полученным в результате трансляции объектным кодом не очевидны. Кроме того, поскольку для каждого оператора высокого уровня может потребоваться от двух до десяти машинных команд, это приводит к снижению эффективности полученного объектного кода по сравнению с языком ассемблера. Компилятор может сгенерировать значительно более избыточный код, чем человек при написании того же алгоритма на языке ассемблера.
Поэтому на языке ассемблере целесообразно разрабатывать программы, которые должны обеспечить эффективную работу с аппаратной частью микропроцессорной системы, либо критичные по времени выполнения или расходованию памяти алгоритмы. Впоследствии они могут быть оформлены в виде подпрограмм и совмещены с основной программой на языке высокого уровня.
Из рассмотренных примеров можно видеть, что в общем случае язык программирования является механизмом абстрагирования. Он дает воз­можность описать вычисления абстрактно и в то же вре­мя позволяет программе (транслятору) перевести это описание в детализированную форму, необходимую для выполнения на вычислительном устройстве. Существует естественное противоречие между стремлением к краткому, ясному и надежному выражению вычисления на высокоабстрактном уровне и стремлением к гибкости подробно­го описания на самом низком уровне.
Начиная с этой главы, будут рассмотрены методы разработки программ на языке ассемблера для микропроцессора 8086 компании Intel, положившего начало самой распространенной в настоящее время ветви микропроцессорной архитектуры. В последующих главах будут описаны способы программирования различных микропроцессорных устройств и плат сбора данных, используемых при разработке средств измерительных техники.

Download 1,87 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   ...   119




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish