Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Основы программирования микропроцессоров Intel для встраиваемых систем

Покупка
Основная коллекция
Артикул: 698317.01.99
Доступ онлайн
169 ₽
В корзину
Рассматриваются вопросы программирования процессоров Intel на языке ассемблера для встраиваемых систем. Учебное пособие состоит из семи разделов. В первом разделе рассматривается последовательность разработки простейшей арифметической программы. Второй раздел посвящен разработке циклических программ. В третьем разделе обсуждаются вопросы использования логических команд. В четвертом разделе излагаются технология обработки символьной информации. Пятый раздел предназначен для изучения операций с двоично-десятичной арифметикой. Шестой раздел посвящен применению подпрограмм. В седьмом разделе обсуждаются вопросы программирования арифметического сопроцессора для реализации вычислений с вещественными числами. Пособие предназначено для студентов, обучающихся по направлениям 02.03.03, 09.04.04.
Основы программирования микропроцессоров Intel для встраиваемых систем: Учебное пособие / Скороход С.В., Селянкин В.В., Дроздов С.Н. - Таганрог:Южный федеральный университет, 2016. - 82 с.: ISBN 978-5-9275-2223-1. - Текст : электронный. - URL: https://znanium.com/catalog/product/995604 (дата обращения: 25.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ

РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное автономное

образовательное учреждение высшего образования

«Южный федеральный университет»
Инженерно-технологическая академия

С. В. Скороход, В. В. Селянкин,

С. Н. Дроздов, Д. П. Калачев, Н. Ш. Хусаинов 

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

для встраиваемых систем

Учебное пособие

Для студентов бакалаврской подготовки

по направлениям 02.03.03, 09.03.04

Таганрог

Издательство Южного федерального университета

2016

УДК 004.4 (075, 8)
ББК 32.973.26-04я73

С753

Печатается по решению редакционно-издательского 
совета Южного федерального университета

Рецензенты:

профессор кафедры ПМиИТ Таганрогского института управления и 

экономики, доктор технических наук В. П. Карелин;

доцент кафедры САиТ Института компьютерных технологий и 

информационной безопасности Южного федерального университета, кандидат 

технических наук А. С. Свиридов.

Скороход, С. В.

С753
Основы 
программирования 
микропроцессоров 
Intel
для 

встраиваемых систем
: учебное пособие /
Скороход С.
В., 

Селянкин В. В., Дроздов С. Н., Калачев Д. П., Хусаинов Н. Ш.. :
Южный федеральный университет. –
Таганрог: Издательство 

Южного федерального университета, 2016. – 82 с.

ISBN 978-5-9275-2223-1

Рассматриваются вопросы программирования процессоров Intel на языке 

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

использования 
логических 
команд. 
В 
четвертом 
разделе 
излагаются 

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

студентов, обучающихся по направлениям 02.03.03, 09.04.04.

ISBN 978-5-9275-2223-1
УДК 004.4 (075, 8)

ББК 32.973.26-04я73

© Южный федеральный университет, 2016
© Скороход С. В., Селянкин В. В., Дроздов С. Н., 

Калачев Д. П., Хусаинов Н. Ш., 2016

Введение

Встраиваемая вычислительная система – это специализированная вычис
лительная система, непосредственно взаимодействующая с объектом контроля 
или управления и объединенная с ним единой конструкцией. Взаимодействие 
с обслуживаемым объектом выполняется посредством специализированных 
датчиков и исполнительных устройств.

Особенностями встраиваемых систем являются:

 непосредственное подключение к объекту;
 работа в режиме реального времени;
 поддержка алгоритмов автоматического регулирования;
 повышенные 
требования 
к 
надежности 
и 
безопасности 

функционирования;

 жесткие условия эксплуатации (широкий диапазон температур, помехи и 

т.п.);

 использование в малогабаритных, автономных и переносных системах 

(предъявляет 
требования 
невысокого 
энергопотребления, 
малых 

габаритов, минимального числа вспомогательных элементов).
Как правило, встроенная система является частью более крупной 

системы или встраивается непосредственно в объект управления. Встроенные 
системы – это системы «глубоко интегрированные» с объектами физического 
мира. Их  элементы  практически  всегда  ограничены  по  ресурсам.  Это  
системы длительного  жизненного  цикла,  часто  автономные.  Масштаб  этих  
систем  по размерам  и  сложности  меняется  в  очень  широких  пределах.  
Эти  системы рассчитаны  на  непрофессиональных  пользователей  и  вместе  
с  тем часто выполняют критически важные функции. 

Встраиваемые вычислительные системы можно классифицировать: 

 по области применения и назначению; 
 по  различному  соотношению  информационных  и  управляющих 

функций,  т.е.  система  преимущественно  информационная (система 
сбора  данных)  или  управляющая  система  автоматического 
управления); 

 по пространственной локализации аппаратных блоков: 

а)  
пространственно локализованные,

б)  
пространственно рассредоточенные;

 по  различному  соотношению  вычислительной (обработка  данных)  и 

коммуникационной (функция ввода/вывода данных) составляющих; 

 по степени участия человека: 

а)  автоматические системы – системы, в которых оператор выполняет 
только функции начальной настройки и оперативной корректировки 
параметров  и  режимов  работы  системы.  Функции  сбора  данных, 

передачи и исполнения команд управления, оперативной выработки 
команд управления происходят без участия человека; 
б)  автоматизированные  системы – системы,  в  которых  оператор 
частично или в полном объеме обеспечивает оперативную обработку 
данных  и  формирование  команд  управления  исполнительными 
устройствами (например, телеуправление);

 по организации  обработки  данных и вычислений (централизованные 

или децентрализованные); 

 по  распараллеливанию  на  уровне  задач  и/или  функций  между 

физическими/логическими модулями системы.
Диапазон применения встроенных вычислительных систем очень велик. 

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

 Телекоммуникационные системы, сетевое оборудование (коммутаторы, 

маршрутизаторы, ADSL-модемы и т.п.). 

 Бытовая  электроника (сотовые  телефоны,  КПК,  игровые  консоли, 

цифровые  фотоаппараты,  электрочайники,  микроволновые  печи, 
посудомоечные машины и пр.). 

 Современное медицинское и спортивное оборудование. 
 Транспортная автоматика (от автомобильных до авиационных систем), 

авионика, системы управления городским дорожным движением. 

 Системы  телемеханики (системы  управления  наружным  освещением, 

контроля и учета электроэнергии и других энергоресурсов, управления и 
мониторинга энергообъектов). 

 Системы  мониторинга,  навигации,  слежения,  бортовые  системы  для 

военных и космических применений. 

 «Умный  дом» («интеллектуальное  здание»)  на  основе  технологий 

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

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

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

специализированного процессора, на базе которого создается встроенная 
система.

Компания Intel предлагает к использованию во встраиваемых решениях 

процессоры семейства Atom, Core 2 Duo, Core i3/i5/i7, а также одноядерные и 
двухъядерные процессоры семейства Intel Atom с частотами 1.1 и 1.6 ГГц для 
решения задач начального и среднего уровня. Настоящее пособие посвящено 
изучению 
основ 
программирования 
на 
языке 
ассемблера 
семейства 

процессоров Intel
в реальном режиме, применяемом при создании и

программировании встроенных систем.

Пособие 
разработано 
в 
рамках 
выполнения 
базовой 
части 

государственного задания в сфере научной деятельности (проект № 3442 
"Информационно-алгоритмическое 
обеспечение 
систем 
цифрового 

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

инфраструктуры для экспериментального моделирования").

1. Разработка линейных арифметических программ

Регистры процессора

Регистры процессора разделяются на следующие группы [1]:

 регистры общего назначения;
 индексные регистры и указатели;
 сегментные регистры;
 регистр флагов;
 указатель команд.

Регистры общего назначения
(РОН)
включают 4 универсальных 

регистра, оптимизированных для выполнения каких-либо операций:

 AX (EAX, RAX) – регистр-аккумулятор. Предназначен для хранения 

операнда и записи результата выполнения команды;

 BX
(EBX, RBX) –
базовый регистр. Может использоваться для 

формирования базового адреса данных в памяти;

 CX (ECX, RCX) –
регистр-счетчик. Используется как счетчик при 

организации циклов и сдвигов.

 DX (EDX, RDX) – дополнительный регистр. Используется для хранения 

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

1.1.

Таблица 1.1

63
31
15
7
0

RAX
EAX
AX

AH
AL

RBX
EBX
BX

BH
BL

RCX
ECX
CX

CH
CL

RDX
EDX
DX

DH
DL

В процессорах архитектуры x64 имеются дополнительные 64-разрядные

РОН R8 – R15 и их младшие байты [2]:

 R8D – R15D – 32-разрядные;
 R8W – R15W – 16-разрядные;
 R8B – R15B – 8-разрядные.

Индексные регистры и указатели предназначены для формирования 

адреса в памяти и включают четыре регистра [3]:

 BP (EBP, RBP) – указатель базы. Используется для хранения некоторого 

начального (базового) адреса;

 SP (ESP, RSP) – указатель стека. Указывает на вершину стека;
 DI (EDI, RDI), SI (ESI, RSI) – индексные регистры. Содержат смещение 

относительного базового адреса.
Соответствие 
разрядности 
и 
обозначений 
индексных 
регистров 

изображено в табл. 1.2.

Таблица 1.2

63
31
15
0

RBP
EBP
BP

RSP
ESP
SP

RSI
ESI
SI

RDI
EDI
DI

Регистр 
флагов 
содержит 
биты 
условий, 
называемых 
флагами, 

сигнализирующих о состоянии процессора после последней выполненной 
команды [4]. Перечень наиболее важных флагов приведен в табл. 1.3.

Таблица 1.3

Бит 
№

Имя
флага

Назначение

0
CF
Флаг переноса. Устанавливает, был ли перенос из старшего 
разряда 
или 
заем 
в 
старший 
разряд 
при 
выполнении 

арифметических операций

1
PF
Флаг четности. Устанавливается в 1, если результат операции 
содержит четное количество единиц

4
AF
Флаг вспомогательного переноса. Используется в операциях над 
упакованными двоично-десятичными числами

6
ZF
Флаг нуля. Устанавливается 1, если результат операции равен 0

7
SF
Флаг 
знака. 
Показывает 
знак 
результата 
операции 
(1–

отрицательный, 0 – положительный)

8
TF
Флаг 
трассировки. 
Обеспечивает 
возможность 
работы 

процессора в пошаговом режиме

9
IF
Флаг внешних прерываний. Если IF=1, прерывание разрешается, 
IF=0 – блокируется

10
DF
Флаг направления. Используется командами обработки строк. 
DF=1 – прямое направление (от меньших адресов к большим). 
DF=0 – обратное направление

12
OF
Флаг переполнения. Устанавливается в 1, если произошел  
выход результата операции за пределы допустимого диапазона 
значений

Сегментные 
регистры 
являются 
16-разрядными. 
Адресуемый 

сегментным регистром участок памяти называется текущим сегментом. 
Сегмент всегда выровнен по границе параграфа (т.е. находится по адресу, 
кратному 16). Поэтому содержимое сегментного регистра всегда предполагает 
наличие четырех нулевых битов в младших разрядах, которые в регистре не 
хранятся [5].

Список сегментных регистров приведен в табл. 1.4.

Таблица 1.4

Сегментный 

регистр

Назначение

CS
Регистр сегмента кода. Содержит начальный адрес
сегмента кода

DS
Регистр сегмента данных

SS
Регистр сегмента стека

ES, FS, GS
Дополнительные сегментные регистры

Указатель команд IP (EIP, RIP)  содержит смещение команды, которая 

должна быть выполнена. Пара регистров CS+IP содержит адрес следующей 
команды [6].

Режимы адресации

Режимы адресации операндов команд процессора приведены в табл. 1.5. 

Здесь использованы следующие сокращения: R – регистр, V – переменная, C –
константа [14].

Таблица 1.5

Название
Обозначение
Содержание
Пример

Регистровая 
прямая

R
Операнд 
находится в 
регистре

mov AX, SI переслать 
содержимое регистра 
SI в регистр AX

Непосредственная

C
Непосредственный 
операнд  
(константа) 
присутствует в команде

mov AX, 093Ah занести 
константу 093Ah в регистр AX

Прямая
V + C или
V - C

Исполнительный 
адрес операнда
присутствует в 
команде

mov BX, WW+2 
переслать в BX слово 
памяти, отстоящее от 
переменной с именем 
WW на 2 байта

Окончание табл. 1.5

Название
Обозначение
Содержание
Пример

Косвенная 
регистровая

[R]
где R – BP, BX, SI, 
DI

Регистр содержит 
адрес операнда

mov [BX], CL 
переслать содержимое 
регистра CL по адресу, 
находящемуся в 
регистре BX

Косвенная 
регистровая 
относительная

V[R] , C[R] ,
[R+V] , [R+C] , где 
R –
SI,DI (индексная)
BX,BP (базовая)

Адрес операнда 
вычисляется как 
сумма 
содержимого регистра и смещения

mov M[BX], CL 
переслать содержимое 
регистра CL по 
адресу,отстоящему от 
переменной M на BX 
байт

Индекснобазовая

[BR][IR] , 
V[BR][IR] , 
[BR][IR]C ,где
IR – SI, DI,
BR – BX, BP

Адрес операнда 
вычисляется как 
сумма 
содержимого
базового и 
индексного регистров и 
возможного 
смещения

mov [BX][SI]3, AL 
переслать содержимое 
регистра AL по адресу, 
сумме регистров BX, SI 
и константы 3

Структура простейшей программы

Ниже приведена схема простейшей программы на языке ассемблера с 

использованием модели памяти small, в которой допускается наличие 
единственного сегмента кода и единственного сегмента данных [14].

model small
stack 100h
dataseg
. . .
; описание данных

codeseg

Start:

startupcode
. . .
; код программы

Quit:
exitcode 0
end Start

Для выделения памяти в сегменте данных под константы, переменные, 

массивы используются директивы определения данных [7]:

<Имя>

db

<выражение>

; 1 байт

dw
; 2 байта

dd
; 4 байта

dq
; 8 байт

dt
; 10 байт

<Имя> – идентификатор, обозначающий смещение данных относительно 

начала сегмента.

<Выражение> определяет значения, заносимые в выделяемую область 

памяти. Виды выражений и их примеры приведены в табл. 1.6.

Таблица 1.6

Вид выражения
Пример

Константа
c4 db 17 

Знак вопроса – отсутствие значения
ef1 dw ?

Несколько 
констант, 
разделенных 

запятыми

ef2 db  11, 14, 25, 17

Повторитель dup
fl1 db 10 dup (?) ; 10 байт без 
значений

Символьную константу
fl3 db ‘+’

Символьную строку
fl4 db ‘abcde’ ; 5 байт с кодами 
символов

Последовательная комбинация предыдущих видов

fl5 db ‘abcde’,10 dup (0), 0Ah, ’!’

Перечень простейших арифметических команд приведен в табл. 1.7 [14].

Таблица 1.7

Команда
Изменение 

флагов
OSZAPC

Действие

mov  DST, SRC
-----Пересылка,  DSTSRC

xchg DST, SRC
-----Обмен,      DSTSRC

add  DST, SRC
xxxxxx
Сложение,   DSTDST+SRC

adc  DST, SRC
xxxxxx
Сложение с переносом,  
DSTDST+SRC+CF

inc  OPND
xxxxxУвеличить на единицу,  OPNDOPND+1

sub  DST, SRC
xxxxxx
Вычитание,   DSTDST-SRC

sbb DST, SRC
xxxxxx
Вычитание с заемом,  DSTDST-SRC-CF

dec  OPND
xxxxxУменьшение на единицу, OPNDOPND-1

neg  OPND
xxxxxx
Изменение знака,       OPND0-OPND

rcl  DST, CONT
x----x
Циклический сдвиг влево через CF

Доступ онлайн
169 ₽
В корзину