
1.Микропроцессорная система (МПС) представляет собой функционально законченное изделие, состоящее из одного или нескольких устройств, главным образом микропроцессорных: микропроцессора и/или микроконтроллера.
Микропроцессорное устройство (МПУ) представляет собой функционально и конструктивно законченное изделие, состоящее из нескольких микросхем, в состав которых входит микропроцессор; оно предназначено для выполнения определённого набора функций: получение, обработка, передача, преобразование информации и управление.
Генератор тактовых импульсов задаёт временной интервал, который является единицей измерения (квантом) продолжительности выполнения команды. Чем выше частота, тем при прочих равных условиях более быстродействующей является МПС. МП, ОЗУ и ПЗУ — это неотъемлемые части системы. Интерфейсы ввода и вывода — устройства сопряжения МПС с блоками ввода и вывода информации. Для измерительных приборов характерны устройства ввода в виде кнопочного пульта и измерительных преобразователей (АЦП, датчиков, блоки ввода цифровой информации). Устройства вывода обычно представляют цифровые табло, графический экран (дисплей), внешние устройства сопряжения с измерительной системой. Все блоки МПС связаны между собой шинами передачи цифровой информации. В МПС используют магистральный принцип связи, при котором блоки обмениваются информацией по единой шине данных. Количество линий в шине данных обычно соответствует разрядности МПС (количеству бит в слове данных). Шина адреса применяется для указания направления передачи данных — по ней передаётся адрес ячейки памяти или блока ввода-вывода, которые получают или передают информацию в данный момент. Шина управления служит для передачи сигналов, синхронизирующих всю работу МПС.
3. Все МПС имеют трехшинную архитектуру и строятся по магистрально модульному принципу. Этот принцип подразумевает, что все элементы системы построены в виде отдельных модулей, а связь между ними осуществляется по общей системной магистрали, которая называется внутрисистемным интерфейсом, реализованном в виде шины. Выделяют 3 шины: ША ШД ШУ. А сама МПС состоит из таких модулей, как модуль центрального процессора, модуль ПЗУ, модуль ОЗУ, модули устройств ввода, вывода, в/в.ША указывает на устройство с которым производится обмен в данный момент времени, а все устройства имеют уникальные в пределах данной системы адреса. ШУ формируется модулем ЦП и предназначена для подачи команд элементам системы.
4. 1. Техническое задание. На этом этапе определяются возможности устройства, возможности применения устройства. 2.Системный этап – составление структуры связей с внешней средой. Определяются способы кодирования, разрядности входных и выходных данных. Характеристики обмена, протоколы обмена. Разрабатываются средства обработки ошибок и защиты от ошибок. Строится математическая модель и функция обработки и управления процессом. На этом этапе формируются требования к элементной базе (объем, разрядность), формируются требования к нестандартным внешним устройствам. 3. Выбор базы и разработка архитектуры.
5.1 Разработка алгоритма и выбор языка программирования. Если система критична к памяти и времени – выбирают язык низкого уровня, иначе – высокого. 2 Трансляция. 3 Отдалка. 4. Представить ПО в удобном для заказчика виде.
6.Память бывает ПЗУ и ОЗУ. Внешняя и внутренняя. Память может быть организована линейным способом. При такой организации все ячейки памяти занумерованы, номер ячейки является ее физическим адресом. Сегментная организация – это организация, когда в каждый момент выполнения программы доступна не вся память, а только определенные области – сегменты. Для мп 8086 существует 4 типа сегментов: сегмент кода – область памяти, где хранятся команды , сегмент стека – область памяти, которая работает по принципу стека. Два сегмента данных: исп. Для данных.
7. Тип данных
Под термином “тип данных” понимается в основном только размер. Вот некоторые, наиболее часто употребляемые типы:
Ключевое слово Размер в байтах Расшифровка
db 1 data byte
dw 2 data word
dd 4 data double word
dq - 8 байт - 4 слова
dt - 10 байт
Строки.
В ассемблере можно задавать строки. В ассемблере также можно вместо присваивания однобайтовой переменной некоторого числа можно присвоить переменно букву. Но, в конечном счете, эта переменная будет равна коду буквы в кодировке ANSI. При инициализации символа можно использовать и кавычки и апострофы.
8. В зависимости от требуемого объема память МПС может состоять из нескольких кристаллов ОЗУ (RAM) и нескольких кристаллов ПЗУ (ROM) (рис. 2.1). Одноименные разряды шины адреса МПС и шин адреса БИС памяти соединяются между собой. Шины ввода - вывода БИС памяти соединяются с шиной данных МПС.
Для управления записью данных в память служит сигнал шины управления memwr , чтением из памяти – сигнал memrd . Выбор конкретного кристалла памяти осуществляется с помощью дешифратора адреса памяти ДША, на вход которого поступают старшие разряды с шины адреса МПС (те, которые не подаются на собственно шины адреса БИС). Эти разряды определяют номер кристалла, к которому будет обращение со стороны процессора.
Выходы дешифратора адреса соединяются для этого со входами выбора кристалла отдельных БИС. В качестве дешифратора используются ИС средней степени интеграции -дешифраторы двоичного кода в десятичный.
10. 8 16-разрядных регистров, из них АХ, ВХ,СХ,DХ – общего назначения, которые могут разбиваться на старшие и младшие. 16-р регистр флагов. 16-р. АЛУ.Схема управления и синхронизации. Синхронизирует работу внешних эл-ов процессора и формирует состояние внешних шин. Устройство шинного интерфейса содержит 5 16-р регистров CS DS SS ES и IP. Так же в составе УШИ есть сумматор для преобразования 16-р адреса в 20р.Ы
11.В процессора 8086 используется сегментная организация памяти, то есть в каждый момент времени выполнения доступна не вся память, а только отдельные области – сегменты. Сегментная организация аргументируется тем, что ША данного МП 20-р, а МП 16-р. Для перехода от 16-р к 20-р адресу используется суммтор. При сегментной адресации адрес указывают в виде сегмент:смещение. Seg:disp. Такое указание адреса является логическим. Для того чтобы перейти от логического адреса к физическому необходимо выполнить следующий алгоритм:
1. взять сегментную составляющую и сдвинуть на 4 бита влево. 2.к полученному результату добавить смещение. Полученное число и будет физическим адресом. Сегментная составляющая показывает адрес начала сегмента, смещение показывает сколько отступить от начала, таким образом организована линейная адресация внутри сегмента, а объем сегмента 64 КБ. Адреса кратны 16.
12.Программистсткая модель состоит из регистров общего назначения, сегментных регистров, указательных регистров, регистра флагов и указателя команд. РОН представлены в виде 4 16-р регистров АХ БХ СХ ДХ. Которые могут делится на старшие и младшие половины 8-р регистров. Указательные регистры SI DI BP SP могут использоваться для адресации ячеек памяти. Четыре сегментных регистра CS DS SS ES указывают начальные адреса 4 областей памяти. IP указывает адрес извлекаемой команды. Все рон можно использовать для хранения данных. Однако в некоторых командах они могут использоваться по умолчанию.
13. Микропроцессор і8086 имеет эффективную систему прерываний, в которой каждому прерыванию поставлен в соответствие код (от 0 до 255), который идентифицирует тип прерывания. Прерывания могут инициироваться внешними устройствами (внешние прерывания) или командами программных прерываний.
Прерывание заставляет микропроцессор временно прекратить выполнение текущей программы и перейти к выполнению подпрограммы обработки прерывания, которая считается более важной или срочной в данный момент времени. Возобновление прерванной программы должно быть произведено так, будто прерывание отсутствовало. Для этого в стеке запоминается адрес возврата (CS и IP) и содержимое регистра флагов F, а также содержимое тех регистров, которые потребуются для выполнения подпрограммы обработки прерывания. Содержимое регистров CS, IP и F запоминается и восстанавливается автоматически, а для запоминания и последующего восстановления содержимого других регистров микропроцессора должны быть предусмотрены соответствующие команды в начале и конце подпрограммы обработки прерываний. Следует отметить, что в стек включается скорректированное содержимое указателя команд IP, соответствующее адресу команды, перед которой микропроцессор начал обслуживать прерывание. Необходимость коррекции вызвана тем, что IP адресует команды с опережением из-за существования внутренней очереди команд.\
Прерывание, определяемое пользователем при составлении программы, осуществляется по двухбайтовой команде INT n, в которой тип прерывания указывается во втором байте команды. Связь между кодом, определяющим тип прерывания, и подпрограммой (процедурой) обслуживания прерывания устанавливается с помощью специальной таблицы указателей векторов прерываний. Полная таблица занимает 1 Кбайт памяти и содержит 256 элементов, расположенных по адресам 0000h÷03FFh. Каждый элемент таблицы содержит два слова, определяющие начальный логический адрес подпрограммы.
14. Вся информация в МПС представляется в двоичном коде. Если разрядность двоичного кода превосходит разрядность элементов системы то используют несколько элементов для хранения кода полностью. Виды двоичных кодов: 1. Беззнаковые двоичные. Двоичный код представляет собой некоторую последовательность нулей и единиц. Длину последовательности указывает разрядность числа. 2. Обратные двоичные кода(знаковые). Для получения обратного двоичного кода инвертируют все биты числа, а старший бит отвечает за знак. 3. Дополнительные двоичные кода. Для получения ДК требуется проинвертировать все биты и добавить единицу. Двоично-десятичные кода. Бывают двух видов. Упакованные и распакованные. Распакованный двоично-десятичный код представляет собой байт, в котором в младшей тетраде записано число 0..9. Упакованное ДД число представляет собой байт в каждой тетраде которого кодируется цифра от 0 до 9. Текстовая информация кодируется с помощью специальных таблиц, в которых каждому симлволу ставится номер(код).
15. Способом, или режимом адресации называют процедуру нахождения операнда для выполняемой команды.
Регистровая адресация.
Операнд (байт или слово) находится в регистре. Этот способ адресации применим ко всем программно-адресуемым регистрам процессора.
іnc ch ;плюс 1 к содержимому СН
рush ds ;DS сохраняется в стеке
xchg bx, bp ;ВХ и ВР обмениваются содержимым
mov es, ax ;содержимое АХ пересылается в ES
Непосредственная адресация.
Операнд (байт или слово) указывается в команде и после трансляции поступает в код команды; он может иметь любой смысл (число, адрес, код ASCII), а также быть представлен в виде символического обозначения.
mov ah, 40h ;число 40h загружается в АН
mov al, '* ;код ASCII символа "*' загружается в AL
int 21h ;команда прерывания с аргументом 21h
limit = 528 ;число 528 получает обозначение limit
mov cx, limit ;число, обозначенное limit, загружается в СХ
Прямая адресация памяти.
Адресуется память; адрес ячейки памяти (слова или байта) указывается в команде (обычно в символической форме) и поступает в код команды:
;Сегмент данных
meml dw 0 ;слово памяти содержит 0
mem2 db 230 ;байт памяти содержит 230
;Сегмент команд
inc meml ;содержимое слова meml увеличивается на 1
mov dx, meml ;содержимое слова с именем meml загружается в DX
mov AL, mem2 ;содержимое байта c именем mem2 загружается в AL
Регистровая косвенная (базовая и индексная).
Адресуется память (байт или слово). Относительный адрес ячейки памяти находится в регистре, обозначение которого заключается в прямые скобки. В микропроцессоре i8086 косвенная адресация допустима только через регистры ВХ, ВР, SI и DI. При использовании регистров ВХ или ВР адресацию называют базовой, при использовании регистров SI или DI — индексной.
Регистровая косвенная адресация со смещением (базовая и индексная).
Адресуется память (байт или слово). Относительный адрес операнда определяется, как сумма содержимого регистра BX, BP, SI или DI и указанной в команде константы, иногда называемой смещением. Смещение может быть числом или адресом. Так же, как и в случае базовой адресации, при использовании регистров BX, SI и DI подразумевается сегмент, адресуемый через DS, а при использовании ВР подразумевается сегмент стека и, соответственно, регистр SS.
Базово-индексная адресация.
Адресуется память (байт или слово). Относительный адрес операнда определяется, как сумма содержимого следующих пар регистров:
[ВХ][SI] (подразумевается DS:[BX][SI])
[ВХ][DI] (подразумевается DS:[BX][DI])
[ВР][SI] (подразумевается SS:[BP][SI])
[ВР][DI] (подразумевается SS:[BP][DI])
Это чрезвычайно распространенный способ адресации, особенно, при работе с массивами. В нем используются два регистра, при этом одним из них должен быть базовый (ВХ или ВР), а другим — индексный (SI или DI). Как правило, в одном из регистров находится адрес массива, а в другом — индекс в нем, при этом совершенно безразлично, в каком что. Трансформируем предыдущий пример, введя в него более эффективную базово-индексную адресацию
Базово-индексная адресация со смещением.
Адресуется память (байт или слово). Относительный адрес операнда определяется как сумма содержимого двух регистров и смещения.
16. Длина команд варьируется от одного до 6 байт. Длина смещений и непосредственных данных может быть 8 или 16 бит в зависимости от команды. В первых одном или двух байтах команды находятся код операции и указание режима адресации. После них могут находиться:
ни одного дополнительного байта;
двухбайтный ЕА (только для прямой адресации);
одно- или двухбайтное смещение;
одно- или двухбайтный непосредственный операнд;
одно- или двухбайтное смещение с последующим одно- или двухбайтным непосредственным операндом;
двухбайтное смещение и двухбайтный сегментный адрес (только для прямой межсегментной адресации).
17.Команды пересылки. Mov – данная команда осуществляет копирование источника в приемник не изменяя источника. В качестве операндов могут быть и сегментные регистры. Невозможно непосредственно занести операнд в сегментный регистр. XCHG – обменивает содержимое операндов. Push – копирует содержимое операндов в вершину стека. POP – извлекает сожержимое из стека. PUSHF – сохраняет флаги. POPF - извлекает данные и флаги. К командам пересылки можно отнести команды ввода-вывода.
Команды LAHF и SAHF
Команда LAHF передает младший байт регистра флажков в регистр AH, а команда SAHF реализует обратную передачу - содержимое регистра AH передается в младший байт регистра флажков (старший байт не изменяется).
18.Арифметические команды. ADD – выполняет сложение источника и приемника. Результат помещается в приемник. Команды арифметических операций влияют на состояние флажков OF, SF, ZF, AF, PF и CF.
Команда ADC
Команда ADC выполняет сложение с переносом: в отличие от команды ADD в операции сложения участвует флажок CF, значение которого прибавляется к младшему биту результата сложения операндов.
Команда INC
Команда INC позволяет увеличить на 1 содержимое любого общего регистра или ячейки памяти.
Команда SUB позволяет производить вычитание 8- или 16-битных двоичных чисел. Общее представление команды имеет вид
SUB dst, src
Команда SBB
Команда SBB выполняет вычитание с переносом: в отличие от команды SUB в операции вычитания участвует флажок CF, значение которого вычитается из младшего бита результата вычитания операндов.
Команда DEC
Команда DEC позволяет уменьшить на 1 содержимое любого общего регистра или ячейки памяти.
Команда сравнения CMP выполняет вычитание второго операнда из первого, но нигде не запоминает результат операции и влияет только на состояние флажков.
Команда MUL
Команда умножения беззнаковых целых чисел MUL выполняет умножение адресуемого операнда на содержимое аккумулятора. Общее представление команды имеет вид
Команда IMUL
Команда IMUL аналогична команде MUL, но сомножители и произведение интерпретируются как знаковые двоичные числа в дополнительном коде.
Команда DIV
Команда деления беззнаковых чисел DIV производит деление содержимого аккумулятора и его расширения на содержимое адресуемого операнда.
При делении 16-битного делимого на 8-битный делитель делимое помещают в регистр AX. В результате выполнения операции частное формируется в регистре AL, а остаток - в AH.
Команда IDIV
Команда IDIV аналогична команде DIV, но делимое, делитель и частное интерпретируются как знаковые двоичные числа в дополнительном коде.
Команда преобразования байта в слово CBW расширяет знак содержимого регистра AL в регистр AH. Команда преобразования слова в двойное слово CWD передает знак содержимого регистра AX во все биты регистра DX.
Команды преобразования не влияют на состояния флагов.
19. КОМАНДЫ БЕЗУСЛОВНЫХ ПЕРЕХОДОВ
Команды безусловного перехода имеют общую мнемонику JMP. Команда короткого безусловного перехода содержит во втором байте смещение, которое интерпретируется как знаковое целое. Диапазон значений байта смещения составляет -128 - +127. Если смещение положительное, осуществляется переход вперед, а если отрицательное - переход назад.
Команда ближнего безусловного перехода может либо непосредственно содержать 16-битное смещение, либо косвенный адрес 16-битного смещения. Диапазон смещения составляет -32768 - +32767 байт относительно адреса команды, находящейся после команды JMP.
Команда дальнего безусловного перехода реализует прямой и
косвенный межсегментнные переходы.
Форматы команд:
JMP dispL - короткий переход
JMP disp - ближний прямой переход
JMP mem/reg - ближний косвенный переход
JMP addr - дальний прямой переход
JMP mem - дальний косвенный переход
Команда Loop используется для организации циклов с известным числом шагов. В этой команде в качестве счетчика циклов выполняет регистр СХ. При выполнении команды содержимое СХ уменьшается на единицу, и если результат не равен 0, то осуществляется переход на команду, указанную в команде LOOP. LOOP метка. Осуществляет только мелкие переходы.
20. В языке ассемблера директивы PROC и ENDP отмечают начало и конец процедуры. Необходимо отметить, что команда CALL заставляет процессор перейти к началу подпрограммы. B конце подпрограммы команда RET возвращает управление.
Команда call имеет два формата: ближнего вызова(программа и пп в одном сегмента) и дальнего вызова(в разных сегментах).
21. Логические операции представлены командами NOT (инверсия), AND (конъюнкция), OR (дизъюнкция), XOR (исключающее ИЛИ) и командой TEST, которая выполняет конъюнкцию операндов, но не изменяет их значений. Все логические операции являются поразрядными, т.е. выполняются независимо для всех бит операндов.
Бинарные команды AND, OR, XOR и TEST воздействуют на флажки OF, SF, ZF, PF и CF. Унарная операция NOT не влияет на состояние флажков.
22. В системе команд процессора 8086 имеется 19 двухбайтных команд условных переходов. При выполнении этих команд анализируется некоторое условие, закодированное текущими состояниями флагов, и если оно выполняется, то осуществляется переход, а если нет, то выполняется следующая по побядку команда.
Все условные переходы являются короткими. Некоторые команды для удобства программирования могут иметь несколько различных мнемонических обозначения.
Мнемонические обозначения команд:
1) Команды для работы с беззнаковыми числами: JA/JNBE - переход, если больше; JAE/JNB/JNC - переход, если больше или равно; JB/JNAE/JC - переход, если меньше; JBE/JNA - переход, если меньше или равно.
2) Команды для работы со знаковыми числами: JG/JNLE - переход, если больше; JGE/JNL - переход, если больше или равно; JL/JNGE - переход, если меньше; JLE/JNG - переход, если меньше или равно; JNS - переход, если больше нуля; JS - переход, если меньше нуля.
3) Команды, общие для знаковых и беззнаковых чисел: JE/JZ - переход, если равно / переход, если ноль; JNE/JNZ - переход, если не равно / переход, если не ноль;
JNO - переход, если нет переполнения;
JO - переход, по переполнению.
4) Прочие команды:
JCXZ - переход, если содержимое регистра CX равно нулю;
JNP/JPO - переход при отсутствии четности;
JP/JPE - переход по четности.
23. Команды сдвигов подразделяются на команды простых сдвигов и команды циклических сдвигов. Циклические сдвиги влияют только на флаги OF и CF, а обычные изменяют пять флажков: OF, SF, ZF, PF и CF. Команды сдвигов могут работать как с байтами, так и со словами.
Команды ROL и ROR реализуют простой циклический сдвиг влево и вправо соответственно, помещая значение из выдвигаемого бита в освобождающийся бит.
Команды RCL и RCR называются командами циклического сдвига влево и вправо через перенос, так как флажок CF расширяет сдвигаемый операнд на один бит. Таким образом, значение из CF загружается в освобождающийся бит, а выдвигаемый бит помещается в CF.
Команды SHL и SHR реализуют логический сдвиг влево и вправо соответственно. Для логического сдвига характерно, что в освобождающийся бит загружается нуль, а выдвигаемый бит теряется.
Команды SAL и SAR предназначены для арифметического сдвига влево и вправо. Арифметический сдвиг вправо отличается от логического сдвига тем, что знаковый бит не сдвигается, а дублируется в соседнем правом бите, сохраняя тем самым знак числа. Арифметический сдвиг влево эквивалентен логическому, поэтому мнемоники SAL и SHL обозначают одну и ту же машинную команду. Команды арифметического сдвига по существу реализуют умножение и деление чисел без знака на степень числа 2.
24. Команда MOVS
Команда MOVS передает байт или слово из цепочки, адресуемой регистром SI, в цепочку, адресуемую регистром DI. Команда передачи цепочки байт MOVSB после пердачи байта увеличивает содержимое регистров SI и DI на 1, а команда передачи цепочки слов MOVSW после передачи слова увеличивает их содержимое на 2.
Команда CMPS
Команда сравнения цепочек CMPS производит вычитание байта или слово цепочки, адресуемой регистром DI, из байта или слова цепочки, адресуемой регистром SI. В зависимости от результата вычитания устанавливаются флаги, но сами операнды не изменяются. Команда сравнения цепочек байт CMPSB после каждой операции сравнения увеличивает содержимое регистров SI и DI на 1, а команда сравнения цепочек слов CMPSW - на 2.
Команда SCAS
Команда сканирования цепочки SCAS вычитает элементы цепочки, адресуемой регистром DI, из содержимого аккумулятора AL (при работе с байтами) или AX (при работе со словами). В зависимости от результата вычитания устанавливаются флаги, но сами операнды
не изменяются. Команда сканирования цепочки байт SCASB после каждой операции сканирования увеличивает содержимое регистра DI на 1, а команда сканирования цепочки слов SCASW - на 2.
Команда LODS
Команда загрузки цепочки в аккумулятор LODS загружает элементы цепочки, адресуемой регистром SI, в аккумулятор AL или AX. Команда загрузки цепочки байт LODSB после выполнения каждой операции увеличивает содержимое регистра SI на 1, а команда загрузки цепочки слов LODSW - на 2.
Команда STOS
Команда запоминания содержимого аккумулятора в цепочке STOS передает содержимое аккумулятора в элемент цепочки, адресуемый регистром DI. Команда запоманания цепочки байт STOSB после выполнения каждой операции увеличивает содержимое регистра DI на 1, а команда запоминания цепочки слов STOSW - на 2.
25.полный, упрощенный.