Содержание
- 2. Учебная карта дисциплины
- 3. Источники Тематический сайт по дисциплине: https://assembler-mop.nethouse.ru httphttp://assembler-mop.http://assembler-mop.mopevmhttp://assembler-mop.mopevm.http://assembler-mop.mopevm.sfeduhttp://assembler-mop.mopevm.sfedu.ru Литература Любая литература по языку Ассемблера для процессоров Intel
- 4. График сдач лабораторных работ
- 5. СИСТЕМЫ СЧИСЛЕНИЯ
- 6. Система счисления (СС)- способ представления (записи) чисел с помощью некоторых символов (цифр) Непозиционная система счисления -
- 7. Позиционные системы счисления Вес цифры – определяется ее положением в записи числа. Основание СС – количество
- 8. ПРЕДСТАВЛЕНИЕ ЧИСЛА Одно и то же число может быть представлено в различных системах счисления (с разными
- 9. ПЕРЕВОД ЧИСЛА Np ⇒ Nq Перевод числа из одной СС в другую осуществляется в два этапа:
- 10. ПЕРЕВОД ЧИСЛА Np ⇒ Nq. (правило перевода целой части числа) Для перевода целого числа Np в
- 11. ПЕРЕВОД ЧИСЛА Np ⇒ Nq. (правило перевода дробной части) Перевод правильной дроби Np в число Nq
- 12. ПЕРЕВОД ЧИСЛА Np ⇒ Nq. (упражнения) 34910 → ?4 0,4110 → ?2 24,1810 → ?3 53410
- 13. ПЕРЕВОД ЧИСЛА N8 ⇒ N2, N16 ⇒ N2 Перевод восьмиричных и шестнадцатиричных чисел в двоичную систему:
- 14. ПЕРЕВОД ЧИСЛА N2⇒N8, N2⇒ N16 Чтобы перевести число из двоичной системы в восьмеричную или шестнадцатеричную, его
- 15. ДВОИЧНАЯ АРИФМЕТИКА
- 16. ПРЕДСТАВЛЕНИЕ ЧИСЕЛ В ЭВМ ЧИСЛА С фиксированной точкой С плавающей точкой Беззнаковые (unsigned) Знаковые (signed)
- 17. Числа с плавающей точкой Достоинства: большой диапазон обрабатываемых значений Недостатки: сложность в реализации устройства обработки, ошибки
- 18. Числа с фиксированной точкой Достоинства: простота реализации устройства обработки, высокая точность, интуитивная понятность Недостатки: малый диапазон
- 19. ПРЕДСТАВЛЕНИЕ ЧИСЕЛ БЕЗ ЗНАКА Представление беззнакового (unsigned) числа соответствует его записи в заданной системе счисления (двоичной
- 20. ПРЕДСТАВЛЕНИЕ ЗНАКОВЫХ ЧИСЕЛ Знаковые (signed) числа представляются в ЭВМ: в прямом коде; в обратном коде; в
- 21. ПРЯМОЙ КОД Число представляется в виде его абсолютного значения и кода знака Диапазон представления: 1-2n-1 ≤
- 22. ПРЯМОЙ КОД (пример) Представить в прямом коде для n=5, n=8 x = [13] x = [-13]
- 23. ОБРАТНЫЙ КОД Обратный код положительного числа x≥0 содержит «0» в старшем знаковом разряде и обычное представление
- 24. ОБРАТНЫЙ КОД (пример) Представить в обратном коде для n=5, n=8 x = [13] x = [-13]
- 25. ПРАВИЛО СЛОЖЕНИЯ В ОБРАТНОМ КОДЕ Коды слагаемых суммируются, включая знаковый разряд, с циклическим (круговым) переносом. Результат
- 26. ДОПОЛНИТЕЛЬНЫЙ КОД Дополнительный код положительного числа x≥0 содержит «0» в старшем знаковом разряде и обычное представление
- 27. ДОПОЛНИТЕЛЬНЫЙ КОД (пример) Представить в дополнительном коде для n=5, n=8 x = [13] x = [-13]
- 28. ПРАВИЛО СЛОЖЕНИЯ В ДОПОЛНИТЕЛЬНОМ КОДЕ Коды слагаемых суммируются, включая знаковый разряд. Перенос (если он есть) отбрасывается.
- 29. УВЕЛИЧЕНИЕ РАЗРЯДНОСТИ ЧИСЕЛ ПРИ ПРИСВАИВАНИИ Для беззнаковых (unsigned) чисел поле расширения в переменной-результате заполняется нулями Для
- 30. Сдвиг беззнаковых (unsigned) или знаковых (signed) числа влево на n двоичных разрядов приводит к его умножению
- 31. ДЕЛЕНИЕ ЦЕЛОГО ЧИСЛА НА 2n ПОСРЕДСТВОМ СДВИГОВ Сдвиг беззнаковых (unsigned) или знаковых (signed) числа вправо на
- 32. Микропроцессор Intel 8086
- 33. Программная модель микропроцессора 8086
- 34. Регистры процессора Регистры общего назначения; Индексные регистры и указатели; Регистр флагов; Сегментные регистры; Указатель команд.
- 35. Регистры общего назначения
- 36. Индексные регистры и указатели
- 37. Регистр флагов
- 38. Сегментные регистры
- 39. Организация памяти Физическая память – память на шине процессора. Адресное пространство – определяется разрядностью шины адреса.
- 40. Сегментная адресация памяти
- 41. Выборка команды из памяти
- 42. Обращение к данным
- 43. Обращение к стеку
- 44. Обращение к доп. сегментам
- 45. Пример Адрес начала сегмента данных DS=2320h. В начале сегмента данных расположены 2 переменные: A (2 байта)
- 46. Хранение данных При хранении данных в памяти младшие байты хранятся по младшему адресу, а старшие –
- 47. Режимы адресации
- 48. Понятие режима адресации Режим адресации памяти – это схема преобразования адресной информации об операнде ассемблерной команды
- 49. 1. Регистровая прямая адресация Операнд находится в одном из регистров. Примеры: mov AL, DH mov BX,
- 50. 3. Прямая адресация Адрес операнда задан непосредственно в команде. Пример: ; Сегмент данных mem0 dw 1;
- 51. Адрес переменной состоит не только из смещения, но и адреса сегмента. Адрес сегмента берется из сегментного
- 52. В команде указывается регистр, содержащий смещение операнда В МП8086 для косвенной адресации допускается использовать только регистры
- 53. Исполнительный адрес (смещение) равен сумме одного из базовых регистров (BX, BP) и смещения-константы. Пример: mov AX,
- 54. Исполнительный адрес операнда вычисляется как сумма содержимого одного из индексных регистров SI или DI и смещения
- 55. 7. Базово-индексная адресация МП i386 Эта схема применяется только при использовании 32-разрядных регистров! Пример. mov EAX,
- 57. СЕГМЕНТЫ ПРОГРАММЫ Сегмент кода (единственный обязательный). Сегмент данных. Сегмент стека. Дополнительные сегменты данных.
- 58. ОПИСАНИЕ СЕГМЕНТА
- 59. ПРИМЕР СТРУКТУРЫ ПРОГРАММЫ STACKSG Segment Para Stack ‘STACK’ dw 80 dup (?) STACKSG ENDS DATASG Segment
- 60. ДИРЕКТИВА ASSUME Директива ASSUME устанавливает, какой сегментный регистр используется для доступа к именам и меткам описанного
- 61. МОДЕЛИ ПАМЯТИ
- 62. ДИРЕКТИВА MODEL Задается для использования определенной модели памяти в программе: MODEL ИмяМодели[, Язык] Язык – позволяет
- 63. СТРУКТУРА ПРОСТОЙ ПРОГРАММЫ model SMALL stack 100h dataseg . . . ;данные codeseg START: startupcode .
- 64. ИНИЦИАЛИЗАЦИЯ ПРОГРАММЫ Загрузчик DOS устанавливает правильные адреса сегмента стека в регистре SS и сегмента кода в
- 65. ЗАВЕРШЕНИЕ ПРОГРАММЫ Завершение работы программы выполняется путем следующего вызова прерывания с номером 21h: quit: mov AL,
- 67. ОПИСАНИЕ ДАННЫХ
- 68. ДИРЕКТИВА EQU Не определяет никаких данных. Задает некоторое именованное значение, которое можно использовать в других командах.
- 69. ПОЛЕЗНЫЕ ДИРЕКТИВЫ ПРЕОБРАЗОВАНИЙ PTR – однократное преобразование типа. Используется сатрибутами типов: BYTE, WORD, DWORD, NEAR, FAR.
- 70. ПОЛЕЗНЫЕ ДИРЕКТИВЫ ПРЕОБРАЗОВАНИЙ OFFSET – возвращает относительный адрес переменной или метки внутри сегмента. mov AX, offset
- 71. Команды ассемблера-1
- 72. Команды пересылки данных Команды пересылки данных позволяют переслать (скопировать) содержимое источника ( , ) в приемник
- 73. Команды пересылки данных mov dst, src – копирование данных из src в dst dst – reg/mem,
- 74. Команды пересылки данных xchg op1, op2 – обмен содержимого op1 и op2 Операнды – reg/mem. Действуют
- 75. Копирование со знаковым расширением movsx dst, src – копирование со знаковым расширением (386+). Разрядность dst больше,
- 76. Копирование с нулевым расширением movsz dst, src – копирование с нулевым расширением (386+) . Разрядность dst
- 77. Команды загрузки адреса данных lea reg, mem – загрузка адреса данных (смещения) Пример. Две аналогичные команды.
- 78. Команды загрузки адреса данных les reg, mem lfs reg, mem (386+) lgs reg, mem (386+) lss
- 79. Команды пересылки флагов LAHF - загрузка в регистр АН младшего байта регистра флагов. В АН копируются
- 80. Команда записи в стек push mem/reg - записать в стек Указатель стека SP по умолчанию автоматически
- 81. Команда извлечения из стека pop mem/reg - вытолкнуть значение из стека и записать его в ячейку
- 82. Занесение в стек и извлечение из стека регистра флагов pushf Занесение в вершину стека 16-битного регистра
- 83. Занесение в стек и извлечение из стека всех РОН pusha Запись в стек сразу всех 8
- 84. Расширение разрядности знаковых чисел в регистрах cbw AX расширяется из AL. AH заполняется старшим разрядом регистра
- 85. Расширение разрядности знаковых чисел в 32-разрядных регистрах (386+) cwde EAX заполняется знаковым разрядом из AX. После
- 86. Команды ассемблера - 2
- 87. Команды двоичной арифметики Предназначены для выполнения базовых арифметических операций По результатам выполнения устанавливаются/сбрасываются флаги После выполнения
- 88. Команды сложения add dst, src ; dst = dst + src adc dst, src ; dst
- 89. Команды вычитания sub dst, src ; dst = dst – src sbb dst, src ; dst
- 90. Сложение с обменом xadd mem, reg ; 486+ Выполняется сложение операнда из памяти с содержимым регистра.
- 91. Дополнительные арифметические команды inc dst ; dst = dst + 1 dec dst ; dst =
- 92. Действие команд двоичной арифметики на флаги
- 93. Команды побитовых логических операций Побитовые логические операции рассматривают операнды как последовательность бит. Операция выполняется между каждой
- 94. Команды побитовых логических операций not dst – побитовая инверсия. Каждый бит dst меняет свое значение на
- 95. Правила выполнения побитовых операций Действие команд на флаги
- 96. Примеры использования побитовых логических команд Пример проверки бита. Проверить, является ли младший бит регистра AX единицей.
- 97. Примеры использования побитовых логических команд Пример установки бита. Установить в регистре AX старший бит в единицу.
- 98. Примеры использования побитовых логических команд Пример обнуления бита. Обнулить в регистре AX старший бит. and AX,
- 99. Операции сдвига Логический сдвиг- освобождающиеся разряды заполняются нулями. Арифметический сдвиг. Во время его выполнения освобождающиеся разряды
- 100. Команды логического сдвига shl dst, count - логический сдвиг влево. dst – ячейка памяти или регистр;
- 101. Команды логического сдвига shr dst, count - логический сдвиг вправо dst – ячейка памяти или регистр;
- 102. Применение команд логического сдвига Используются для работы с битовыми полями в комбинации с побитовыми логическими командами.
- 103. Применение команд логического сдвига Выделение значения каждого из полей. mov BX, AX ; сохраняем копию AX
- 104. Применение команд логического сдвига Установка значения каждого из полей в регистр AX. mov BX, Day ;
- 105. Команды арифметического сдвига sal dst, count - арифметический сдвиг влево dst – ячейка памяти или регистр;
- 106. Команды арифметического сдвига sar dst, count - арифметический сдвиг вправо dst – ячейка памяти или регистр;
- 107. Команды циклического сдвига rol dst, count - циклический сдвиг влево dst – ячейка памяти или регистр;
- 108. Команды циклического сдвига ror dst, count - циклический сдвиг вправо dst – ячейка памяти или регистр;
- 109. Команды циклического сдвига с переносом rcl dst, count - циклический сдвиг влево через флаг переноса dst
- 110. Команды циклического сдвига с переносом rcr dst, count - циклический сдвиг вправо через флаг переноса dst
- 111. Действие команд сдвига на флаги
- 112. Команды сканирования битов bsf reg, reg/mem Сканирует биты второго операнда, начиная с младшего бита, до тех
- 113. Команды сканирования битов bt reg/mem, reg/data Анализирует бит, номер которого задан вторым операндом, в значении, заданном
- 114. Команды сканирования битов btc reg/mem, reg/data Анализирует бит, номер которого задан вторым операндом, в значении, заданном
- 115. Команды ассемблера - 3
- 116. Команды переходов Классификация переходов: По модифицируемым регистрам. NEAR – внутрисегментный, «ближний» (модифицируется только регистр IP); FAR
- 117. Условный переход Последовательность применения: 1. Использовать команду, модифицирующую флаги: cmp op1. op2 ; op1 – op2
- 118. Команды условных переходов
- 119. Команды условных переходов при сравнении беззнаковых чисел
- 120. Команды условных переходов при сравнении знаковых чисел
- 121. Реализация аналогов условных операторов if и if-else языков высокого уровня в программе на ассемблере: Команды переходов
- 122. Проверка нескольких условий в программе на ассемблере: Команды переходов if (A>0) and (C=0) then { Блок
- 123. Loop метка ; команда организации цикла В качестве беззнакового счетчика цикла всегда используется CX. Цикл с
- 124. Схема организации цикла mov CX, Start_Loop: ... ... loop Start_Loop Пример. Суммирование элементов массива целых чисел.
- 125. Организация вложенных циклов Пример 1. Сохранение счетчика в памяти. dataseg count dw ? codeseg mov cx,
- 126. Организация вложенных циклов Пример 2. Сохранение счетчика в стеке. codeseg mov cx, 100 ; Установить счетчик
- 127. Модификации команды loop Пример 1. Проверить на равенство 2 массива. datasg M1 dw 100h,200h,300h,400h M2 dw
- 128. Модификации команды loop Пример 2. Проверить есть ли в массиве заданное число datasg M dw 100h,200h,300h,400h
- 129. Реализация циклов общего вида Используются команды условных переходов. Пример. While (A!=B) { // Тело цикла }
- 130. Реализация «длинных» циклов В «длинном цикле» переход выполняется на смещение, превышающее диапазон -128..+127 байт. Пример. mov
- 131. Самостоятельная работа Задание 1. Дано 16-разрядное битовое поле (регистр). Реверсировать порядок битов. Задание 2. Дан массив
- 132. Команды умножения mul множитель ; умножение беззнаковых чисел imul множитель ; умножение знаковых чисел длины множимого
- 133. Команды умножения После MUL флаги CF и OF равны нулю, если старшая половина произведения равна 0,
- 134. Команды умножения. Примеры Пример 1. mov AL, 37 mov BL, 5 imul BL АХ будет содержать
- 135. Команды деления div делитель ; деление беззнаковых чисел idiv делитель ; деление знаковых чисел Делимое всегда
- 136. Команды деления Состояние флагов после выполнения деления неопределенно. При использовании команд div и idiv может возникнуть
- 137. Команды деления. Проверка ?? Пример. Деление беззнаковых чисел. dataseg DIVISOR DB ? codeseg cmp AH, DIVISOR
- 138. Умножение многоразрядных чисел Умножение чисел большой разрядности может привести к появлению результата, разрядность которого не может
- 139. Умножение многоразрядных чисел. Пример Пример. Умножение двух двойных слов с получением 64-разрядного результата с использованием 16-разрядных
- 140. Умножение многоразрядных чисел. Пример codeseg mov LO_M, AX ; сохраняем мл. часть 2 операнда mov HI_M,
- 141. Умножение многоразрядных чисел. Пример adc HI_PP3, 0 ; добавляем перенос в ст. часть произведения 3 mov
- 142. Двоично-десятичная арифметика Форматы представления двоично-десятичных чисел: Числа в формате ASCII, Неупакованные двоично-десятичные числа (BCD-числа), Упакованные двоично-десятичные
- 143. Арифметика BCD и ASCII-чисел. Сложение Сложение одноразрядных ASCII чисел выполняется в 3 этапа: Сложение командой add/adc,
- 144. Арифметика BCD и ASCII-чисел. Сложение Для реализации сложения многоразрядных ASCII-чисел нужно организовать цикл, складывающий соответствующие разряды
- 145. Арифметика BCD и ASCII-чисел. Вычитание Вычитание одноразрядных ASCII чисел выполняется в 3 этапа: Вычитание командой sub/sbb,
- 146. Арифметика BCD и ASCII-чисел. Умножение Умножение одноразрядных ASCII чисел выполняется в 4 этапа: Преобразование ASCII-чисел в
- 147. Арифметика BCD и ASCII-чисел. Деление Деление одноразрядных ASCII чисел выполняется в 4 этапа: Преобразование ASCII-чисел в
- 148. Арифметика упакованных чисел. Сложение С упакованными двоично-десятичными числами можно выполнять только операции сложения и вычитания, после
- 149. Арифметика упакованных чисел. Вычитание das – десятичная коррекция для вычитания. Преобразует двоичный результат выполнения команд sub
- 150. Команды модификации флагов Изменение флага CF CLC – обнулить флаг CF: CF←0. STC – установить флаг
- 151. Преобразование двоичных чисел при вводе Преобразование двоичных чисел при выводе Преобразование десятичных чисел при вводе Преобразование
- 152. Для переменной размером 1 байт: Преобразование двоичных чисел при вводе for i:=1 to 8 if [вх_буфер]
- 153. Для переменной размером 1 байт: Преобразование двоичных чисел при выводе for i:=1 to 8 сдвиг_влево на
- 154. mov DI, 0 cmp byte ptr [SI], ‘-’ je neg_v cmp byte ptr [SI], ‘+’ je
- 155. mov CX, 6 cl_field: mov byte ptr [SI], ‘ ‘ inc SI loop cl_field dec SI
- 156. Обработка строк
- 157. Понятие строки Строка – непрерывная область памяти, длиной: В реальном режиме – до 64К: В защищенном
- 158. Цепочечные примитивы Цепочечный примитив – это команда, предназначенная для обработки одного элемента строки (массива). Отдельный примитив
- 159. Инкремент или декремент После выполнения любого из примитивов содержимое индексных регистров DI и SI автоматически увеличивается
- 160. Примитивы 1 Копирование строк movsb – копирование байта movsw – копирование слова movsd – копирование двойного
- 161. Примитивы 2 Сканирование строк scasb – сканирование байт scasw – сканирование слов scasd – сканирование двойных
- 162. Примитивы 3 Выгрузка строк stosb – выгрузка байта stosw – выгрузка слова stosd – выгрузка двойного
- 163. ПРЕФИКСЫ ПОВТОРЕНИЯ Префикс повторения обеспечивает выполнение одного цепочечного примитива несколько раз. Количество повторений определяется содержимым счетчика
- 164. ОТЛИЧИЕ REP ОТ LOOP Префикс повторения используется только с цепочечным примитивом; CX проверяется до выполнения примитива,
- 165. ПРИМЕР 1 Подсчет количества слов во фрагменте текста. dataseg s1 db ‘ text string for example
- 166. ПРИМЕР 2 Сравнение двух строк. dataseg s1 db ‘ text string for example‘,0 S2 db ‘
- 167. Подпрограммы
- 168. Понятие подпрограммы Вызов ПП заключается в передаче управления в новую точку сегмента кода и запоминании адреса
- 169. СХЕМА ПРОГРАММЫ С ПОДПРОГРАММАМИ mov AX, 0 ; Начальные значения регистров mov BX, 0 . .
- 170. Директивы описания подпрограммы Описание начала процедуры: ИмяТочкиВхода proc [near/ far] near указывает на то, что процедура
- 171. Вызов процедуры call ИмяПроцедуры В момент вызова процедуры команда call помещает в стек адрес команды, следующей
- 172. Способы вызова CALL Прямой вызов – вызов по метке точки входа: call ИмяТочкиВхода ; Тип вызова
- 173. Действие CALL. Ближний вызов Помещает в стек относительный адрес точки возврата в текущем программном сегменте (2
- 174. Действие CALL. Дальний вызов Помещает в стек два слова: вначале сегментный адрес текущего программного сегмента (CS),
- 175. Косвенный ближний вызов. Пример .model small ; Вызов процедур из таблицы адресов процедур. data segment tbl
- 176. Косвенный дальний вызов. Пример .model large data segment tbl DD ? ; дальний адрес процедуры subr1
- 177. Косвенный дальний вызов. Пример xor BX, BX ; начальное смещение mov CX, 2 ; кол-во процедур
- 178. Возврат из процедуры RET N Возврат из процедуры RETN N Возврат из ближней процедуры RETF N
- 179. Передача параметров и возврат результата Способы передачи параметров в процедуру: через регистры, через стек, с использованием
- 180. Передача параметров через регистры Преимущество – высокая эффективность. Недостаток – ограниченное количество регистров процессора. Вызывающей программе
- 181. Передача параметров через стек Основная программа записывает фактические параметры (их значения или адреса) в стек, а
- 182. Передача параметров через стек. Пример 1
- 183. Передача параметров через стек. Пример 2 Пример 2. Без сохранения регистров dataseg X dw ? Y
- 184. Передача параметров через глобальные переменные Передача значений заключается в обращении к имени глобальной переменной непосредственно из
- 185. Передача параметров через таблицу параметров В памяти заводится таблица, и вызывающая программа передает в ПП адрес
- 186. Структура для доступа к параметрам ИмяСтруктуры STRUC директивы db, dw, dd ИмяСтруктуры ENDS Описывает структуру параметров
- 187. ДВОИЧНЫЕ ЦЕЛЫЕ ЧИСЛА Сопроцессор переводит целые числа в вещественный формат и обрабатывает в вещественном формате. Целые
- 188. УПАКОВАННЫЕ ДВОИЧНО-ДЕСЯТИЧНЫЕ ЧИСЛА Содержат не более 18 цифр. Задаются директивой описания данных DT (10 байт). Старший
- 189. ВЕЩЕСТВЕННЫЕ ЧИСЛА Основной формат сопроцессора. Представляются в виде мантиссы (M) и порядка (p): Мантисса должна быть
- 190. Форматы вещественных чисел Короткий (4 байта). Длинный (8 байт). Расширенный (10 байт) – внутренний формат сопроцессора..
- 191. СПЕЦИАЛЬНЫЕ ЗНАЧЕНИЯ Денормализованные вещественные числа. Это числа по модулю меньше минимального нормализованного числа. Очень маленькие числа,
- 192. СПЕЦИАЛЬНЫЕ ЗНАЧЕНИЯ Бесконечность. Может иметь знак – положительная или отрицательная. Нечисла. Сигнальные нечисла. Сопроцессор не формирует
- 193. СПЕЦИАЛЬНЫЕ ЗНАЧЕНИЯ Неопределенность. Является частным случаем тихого нечисла Формируется как маскированная реакция сопроцессора на исключение недействительной
- 194. АРХИТЕКТУРА СОПРОЦЕССОРА Стек регистров сопроцессора. Регистры R0..R7 – предназначены для хранения вещественных операндов. Каждый регистр содержит
- 195. АРХИТЕКТУРА СОПРОЦЕССОРА
- 196. СТЕК СОПРОЦЕССОРА Физические регистры R0..R7. Размерность регистра – 80 бит. Тип данных – расширенный вещественный формат.
- 197. РЕГИСТР СОСТОЯНИЯ SWR
- 198. РЕГИСТР УПРАВЛЕНИЯ CWR
- 199. ВЗАИМОДЕЙСТВИЕ ЦП И СОПРОЦЕССОРА ЦП и сопроцессор работают параллельно. Очередная команда поступает одновременно и в ЦП
- 200. ПОСТРОЕНИЕ ОБРАТНОЙ ПОЛЬСКОЙ ЗАПИСИ Рассматриваем поочередно каждый символ: 1. Если этот символ - операнд, то помещаем
- 201. ВЫЧИСЛЕНИЕ ОБРАТНОЙ ПОЛЬСКОЙ ЗАПИСИ Пример. Выражение: (a+b)*(c+d)-e. ОПЗ: ab+cd+*e-. Алгоритм вычисления: 1. Если очередной символ входной
- 202. Работа с прерываниями, защищенный режим
- 203. ПОНЯТИЕ ПРЕРЫВАНИЯ Прерывание– это временное прекращение некоторого программного блока с передачей управления другому программному блоку. Прерывания
- 204. ВЫЗОВ И ВОЗВРАТ ИЗ ПРЕРЫВАНИЯ int НомерПрерывания – вызов прерывания В стек текущей программы заносится содержимое
- 205. ПЕРЕНАПРАВЛЕНИЕ ВЕКТОРА ПРЕРЫВАНИЯ В некоторых случаях требуется изменить системный обработчик какого-либо прерывания или добавить к нему
- 206. ПЕРЕНАПРАВЛЕНИЕ ВЕКТОРА ПРЕРЫВАНИЯ. Способ 1 Используем функции DOS (прерывание 21h) с кодами 25h и 35h. Первая
- 207. ПЕРЕНАПРАВЛЕНИЕ ВЕКТОРА ПРЕРЫВАНИЯ. Способ 2 Непосредственное занесение значения в вектор. Пример. CLI ;запретить обработку прерываний MOV
- 208. Вызов стандартного обработчика прерывания Способ 1. Используем команду CALL. Пример. Пусть O_INT – смещение (младшее слово),
- 209. ЗАЩИЩЕННЫЙ РЕЖИМ Защищенный режим позволяет использовать дополнительные возможности процессоров: увеличение адресуемого пространства до 4 Гбайт; возможность
- 210. РЕГИСТРЫ СИСТЕМНЫХ АДРЕСОВ В состав процессора входят 4 регистра системных адресов: GDTR (Global Descriptor Table Register)
- 211. ДЕСКРИПТОРЫ В защищенном режиме для каждого сегмента программы должен быть определен дескриптор – 8-байтовое поле, в
- 212. СЕЛЕКТОР ДЕСКРИПТОРА Для обращения к требуемому сегменту программист заносит в сегментный регистр не сегментный адрес, а
- 213. ПРЕРЫВАНИЯ В ЗАЩИЩЕННОМ РЕЖИМЕ В защищенном режиме аналогом таблицы векторов прерываний является таблица дескрипторов прерываний -
- 215. Скачать презентацию