Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Лекции по программированию на ассемблере

Содержание

ЛитерарураТищенко В.И. Учебное пособие по курсу «Системное программирование»;Тищенко В.И. Лабораторный практикум по курсу «Системное программирование»;Тищенко В.И. Лабораторный практикум «Разработка оверлейных и резидентных программ»;Юров В. Ассемблер – учебник;Юров В. Ассемблер – практикум.
Лекция №1Введение.Классификация языков программирования. Машинный язык и язык ассемблера.Структурная схема компьютера. ЛитерарураТищенко В.И. Учебное пособие по курсу «Системное программирование»;Тищенко В.И. Лабораторный практикум по Классификация языков программирования Машинный язык программированияМашинный язык программирования – это язык, непосредственно воспринимаемый компьютером.Каждая его Ассемблер как язык программированияЯзыки ассемблерного типа используют мнемоническое обозначение адресов и кодов Этапы развития языков программированияВыделим 5 основных поколений:(конец 50-х г.) – Fortran, Algol;(середина Функциональные возможности языков и технологии программированияс развитием аппаратных средств появились:  функции Функциональные возможности языков и технологии программирования (продолжение)возможность создания больших программ на основе Архитектура ЭВМАрхитектура ЭВМ – это абстрактное представление ЭВМ, которое отражает ее структурную, схемотехническую и логическую организации. Архитектура ЭВМ Структурная схема компьютераоперативная память Лекция №2Классификация регистров.Назначение регистров.Адресация памяти.Физическая адресация памяти. РегистрыЭлектронное устройство, предназначенное для временного хранения информации, называется регистром.Расположены на кристалле МП. Регистры IBM/PC  (intel 8086/8088) Регистры данных      Сегментные регистры Регистры индексов и указателейsp – указатель стека;bp – указатель базы;si – индекс Управляющие регистрыip – указатель команд,регистр флагов.Указатель команд - содержит смещение следующей команды в кодовом сегменте. Регистры 32- разрядного МП Pentium16 – системных; 16 – пользовательских:8 РОН, индексных Адресация памяти Некоторые константы 16        32 Физическая адресация памятиАдрес, выдаваемый на шину адреса, называется физическим.Физический адрес = (сегментный Пример вычисления физ. адресаПусть содержимое сегментного регистра равно 2011h, смещение равно 15h,тогда ФА=20110h+15h= 20125h Расположение машинного слова в памятиМладший байт записывается в ячейку с меньшим адресом, Назначение регистров - РОНАХ – аккумулятор.ВХ – как вычислительный регистр, но может Назначение регистров адресацииsi, di, bp, bx – основное назначение – хранить 16 Назначение регистров - управляющие регистрыip – указатель команд,регистр флагов.Указатель команд - содержит Указатель стека spОпределяет смещение текущей вершины стека.Адрес стека определяется как ss:sp или Лекция №3Регистр флагов.Механизм формирования физического адреса.Форматы данных. Директивы определения данных. Содержимое регистра flags Обозначения регистров под отладчиком Механизм формирования физического адреса в реальном режиме Типы данныхКлассификация данных по разрядности(поддерживается МП на аппаратном уровне)байтсловодвойное словоучетверенное слово07153163 Типы арифметических данных: логическая структура (см. стр.12-14 пособия) Форматы данных сопроцессора  8 регистров данных длиной 80 бит.Оперирует 7 типами Операторы ассемблераОбщий вид оператора ассемблера: метка  КОП операнд_1,операнд_2Оператором может быть:машинная команда;директива транслятора;макрокоманда;комментарий. Директивы транслятора  для определения данных в ассемблере			формат директивы: Выражение в директиве определения данных  может быть:константой:  ABC1 dw 1234hсписком: Лекция №4Режимы адресации в ассемблере. Режимы адресации Способы задания операндов в операторах ассемблера1. Регистровая адресацияmov ax,bxmov al,dl2. Непосредственная адресация mov ax,1234hmov cl,‘a’mov ah,5 3. Прямая адресация .data ABC dw 1234h.codemov dx,ABCПусть адрес АВС = ds:0000, 4. Косвенная регистровая адресация Смещение, которое вычисляется аппаратно для доступа к операнду 5. Адресация по базеЭффективный адрес ЕА вычисляется:Размер индексное смещение (сдвига) - 0, 6. Прямая с индексированиемЭффективный адрес ЕА вычисляется:Пример: загрузить 5-й элемент массива байтов 7. По базе с индексированиемЭффективный адрес ЕА вычисляется:Пример: задан массив записей, каждая Форма записи операнда Для адресации по базе с индексированием возможны следующие комбинации Сводная таблица используемых регистров адресации Размеры индексного смещениясдвиг отсутствует, длина поля равна 0; занимает 1 байт, значение Лекция №5- Принципы и свойства архитектуры ЭВМ.Иерархия памяти. Принципы архитектуры Принцип хранимой программы  (Джона фон Неймана) – код программы Принципы архитектуры 5. Принцип однородности памяти – для процессора нет принципиальной разницы Индивидуальные особенности процессоровСпособы кеширования кода и данных:в i486 – один блок встроенного Иерархия памяти Кеш - памятьРасполагается между основной памятью и процессором.Основное назначение - улучшение эффективной Концепция кеш – памяти Предвосхищение наиболее вероятного использования процессором данных из ОП Оперативная память (ОП)Физическая память, к которой МП имеет доступ по шине адреса, Аппаратный механизм управления ОП Он обеспечивает: компактность хранения адреса в команде;гибкость механизма Модели использования ОПМП аппаратно поддерживает модели:сегментированную;страничную.Режимы работы МП:режим реальных адресов;защищенный;виртуального процессора. Реальный режим работы  МП intel 8086/88. Основные понятияСегментация – механизм адресации, Размещение сегментов программыПервоначально начальные физические адреса сегментов программы неизвестны.ОС распределяет память и Виртуальная память Лекция №6Виды операндов, поддерживаемые транслятором.Структура команды мп intel 80386.Байт mod r/m.Формат команды mov (1-2). Общий вид оператора ассемблераметка  КОП операнд_1,операнд_2Оператором ассемблера может быть:машинная команда;директива транслятора;макрокоманда;комментарий. Виды операндов, поддерживаемые транслятором TASMПостоянные или непосредственные (число, строка): ABC equ 3 Виды операндов (продолжение)Операторы сравнения: eq, ne, lt, le, gt, ge и т.д.Логические Машинная команда Структура машинной команды МП intel 8086Префикс КОП байт_mod_r/m сдвиг данное0,1 Формат машинной команды МП intel 80386 ПрефиксыКаждый префикс может занимать 1 байт.Есть 5 типов префиксов:повторения (в цепочечных командах);размера адреса;размера операнда;замены сегмента;блокировки шины. Структура байта mod r/m  | mod | reg/коп | r/m | Сводная таблица используемых регистров адресации Особые случаи при кодировании байта mod r/mПри регистровой адресации поле mod = Область действия команды movmov ax, @datamov ds, axНепосредственный операндрегистробщего назначе-нияРОНСегментный регистрОП Форматы машинных командПересылка регистра/памяти в/из регистра:	mov ax,bxmod    reg d определяет направление перемещения:w определяет размер операнда:d =0 – из регистра,1 – Лекция №7Форматы команды MOVПрефикс замены сегмента.Система машинных команд МП intel 8086 (п.1-2). Форматы машинных команд2. Непосредственный операнд в регистр/память	mov ABC,46Пусть смещение АВС равно 0005mod Форматы машинных команд3. Непосредственный операнд в регистр	mov si,1000 Форматы машинных команд4. Память в аккумулятор	mov ax,exword ; если адрес exword = Форматы машинных команд5. Аккумулятор в память	mov exbyte,al ; если адрес exbyte = Форматы машинных команд6. Регистр/память в сегментный регистр	mov ds,ax Форматы машинных команд7. Сегментный регистр в регистр/память: 	mov ax,еsmod Префикс замены сегментаПрефикс занимает 1 байт и имеет вид: Система команд микропроцессора 1. Команды общего назначенияВыполняют обмен информации между регистрами, ячейками памяти и портами СТЕКСтек – это область оперативной памяти, специально выделенная для временного хранения данных Организация стека в оперативной памяти ----------------------------- 0000:0000 ………………. Работа стековых командрush – запись значения в вершину стека:sp=(sp)-2;Запись операнда по адресу Работа стековых команд  с регистром флаговрushf – загрузка содержимого регистра флагов 2. Арифметические операции над целыми двоичными числами Лекция №8Система команд процессора (п.3-7).Прерывания. Классификация прерываний. 3. Команды манипулирования битами 4. Команды передачи управления Типы адресов: short, near, farСуществует 4 способа передачи Замена длины смещения в условном переходеЕсли относительный адрес перехода превышает 128 б, Директива JUMPS (nojumps)Замену команд для условного перехода можно сделать с помощью директивы Команда цикла LOOPИспользует значение регистра CX, уменьшает его при каждом шаге на 5. Команды обработки строкПеремещают, сравнивают, сканируют строки данных. Работают с последовательностями элементов Алгоритм работы команд  обработки строкУстановить флаг df командами cld (по возрастанию) 6. Команды прерыванияДля обработки специфический ситуаций существует 3 команды: int, iret, intо 7. Команды управления процессомНазначение: установка и сброс флагов, изменение режима функционирования процессора.Например, Прерывание. Основные понятияПрерывание – это сигнал, заставляющий микропроцессор менять обычный порядок исполнения НазначениеМеханизм прерываний обеспечивает эффективное взаимодействие устройств ввода-вывода с микропроцессором.Обработка прерываний – это Вектора прерываний Адрес программы обработки прерывания конкретного типа называется вектором прерываний. Размер Команды прерываний 2 команды вызова пррываний:int тип_прерыванияinto (прерывание по переполнению).1 команда возврата - iret Лекция № 9Схема обработки прерываний.Функции int 21h для работы с файлами.Примеры использования Классификация прерываний Классификация прерываний По месту возникновения:внешние (аппаратные),внутренние (программные).По типу системных ресурсов:BIOS,DOS. Прерывания BIOS (тип 0 -1f)Векторы прерываний микропроцессора  (деление на 0, переполнение);Векторы Прерывания DOS (типы с 20h)20h – завершение программ;21h- вызов функций DOS;23h- обработка INT 21h – вызов функций DOSНомер функции задают в регистре ah, дополнительную Схема обработки прерываний Функции int 21h для работы с файлами3ch -	Создание файла;6ch - 	Создание и Создание файла через функцию 3сhВходные данные:ah – 3ch, ds:dx - адрес ASCIIZ-строки Обработка флага cfФункция 3сh на выходе передает код ошибки при cf=1.Для обработки Атрибут файлаЗадается в регистре побитно:0 бит = 1 –только для чтения,0 бит Лекция №10Примеры работы с прерываниями.Структура программного сегмента.Префикс программного сегмента ( PSP).Буфер обмена DTA. Пример1: использования команды int 21h для создания файла через функцию 3ch	.data		handle dw Открытие существующего файла через функцию 3dh Входные данные:ds:dx - адрес ASCIIZ-строки с Открытие существующего и создание нового файла через функцию 6ch Входные данные: cx Закрытие файлаВходные данные:AH -3Еh,BX - логический номер файла. Чтение из или запись в файлВходные данные:ah=3Fh - для чтения, 40h - Пример2: использования команды int 21h для создания файла через 6сh	.data		handle dw 0		filename Пример2- продолжение			mov dx,10h      ; создать и открыть Пример 3: вывод строки на экран.datafilename db ‘вывод строки’,13,10,$………..		.code 		 mov ax,@data Чтение системной датыФункция 2ah засылается в ah.Выходные данные:cx – год в формате Структура программного сегментаОбласть памяти, начинающаяся с минимального адреса загрузки программы пользователя, называется Структура PSP Пояснения к таблице    Прерывания :22h – завершение процесса; 23h Лекция №11Буфер обмена DTA.Системное окружение.Структура dos и карта памяти. Буфер DTA DTA (Disk Transfer Area) –рабочий буфер обмена с диском.Содержит символы Среда dos или системное окружение (environment)Передаваемая среда является копией родительского процесса.Представляет собой Пример окружения Строки среды Основные смещения в PSP для программирования2ch – адрес среды;80h – длина рабочего Способы завершения программыint 20h;переход по адресу 0000 в программном сегменте;int 21h с Загрузка регистров exe- файлаDS, ES указывают на начало PSP;IP, SP получают значения, Загрузка регистров com- файлаDS, ES, CS, SS указывают на начало PSP;IP равен Структура dosБлок начальной загрузки (boot record);Интерфейс с BIOS;Встроенные команды dos;Командный процессор (command.com). Структура dos - 1) блок начальной загрузкиБлок начальной загрузки занимает 1 сектор.Размещается:на Структура dos – 2) интерфейс с biosСодержит команды взаимодействия с bios. Обеспечивает Структура dos –  3) встроенные команды dosКоманды dos обеспечивают пользовательским программам Командный процессорСостоит из трех частей:резидентной;инициализации;нерезидентной.содержит подпрограммы обработки прерваний (22h, 23h, 24h 3. Нерезидентная часть командного процессораСостоит из:интерпретатора команд;системного загрузчика нерезидентных команд и программ.Загрузчик Карта распределения памяти в dos0000:0000 таблица векторов прерываний;0040:0000 глобальные переменные BIOS;0050:0000 глобальные Лекция №12Операторы ассемблера;директивы данных;варианты вызова процедур.директивы управления листингом. Операторы программы на ассемблере		[метка]   мнемоника   [операнды]			  (код Директивы (псевдооператоры) транслятора ассемблера TASM		[метка]   мнемоника   [операнды] Директивы данных1. Определение идентификаторов:  имя equ выражение 	Пример: count equ cx Директивы данных.  3. Определение сегментаДирективы	 segment и ends – определяют в Определение сегментного регистра Регистр адресации задается директивой assume. Формат: assume Директивы данных.  4. Определения процедурФормат:  имя proc [атрибут дальности] Вызов процедур  (call имя_процедуры)Пусть АВС1 - имя процедуры типа near, АВС2 Директивы данных.  5. Определение внешних ссылок		public имя – делает указанное имя Пример связи модулей по данным 1 модуль: public ABCABC dw 1234h2 модуль:extrn ABC:word………..mov ax,ABC Директивы данных.  6. Директива управления трансляцией				end имя_программы Директивы управления листингом	page [число строк] [число столбцов] Лекция №13Возможности макросов.Основные понятия.Классификация директив макросов. Возможности макросредств      Исходный Возможности макросредств     Исходный Основные понятия макросовПоименованный набор операторов ассемблера называется макрокомандой.Группа команд, определяющая действие макрокоманды, Этапы использования макросовОпределение макрокоманды. Вызов макрокоманды. Определение макрокомандыФормат:имя MACRO список_формальных_параметров тело макроопределенияENDMСписок_формальных_параметров  состоит из элементов вида:имя_формального_аргумента [тип] Примеры прототипа макроса1. ADD_Word MACRO   OP1:REQ,OP2:REQ,SUM2. ADD_Word  MACRO   OP1,OP2,SUM=dx Вызов макрокомандыВызов макрокоманды осуществляется по имени макроса с указанием списка фактических параметров.Процесс Пример: сложение двух значений размером в словоОпределение:	 ADD_Word MACRO   OP1,OP2,SUM Продолжение примераВторой вариант макрокоманды:	 ADD_Word price, tax, costМакрорасширение:	MOV ax, price	ADD ax, tax	MOV cost, ax Классификация директив макросов1) директивы общего назначения: MACRO, ENDM, LOCAL2) директивы повторения: REPT, 1. Директивы общего назначенияаaa  macro bbb     local Вызов макросаМакрокоманда:aaa 100Макрорасширение:push cx     mov cx,100………………….. Лекция №14Директивы повторения.Условные директивы.Макрооперации. 2. Директивы повторенияREPT выражение	………    ENDMПример: зарезервировать L байтов и Использование макрокоманды  allocateВызов:.dataAllocate table,40Макрорасширение в точке вызова: Директивы повторенияIRP параметр ,	………   ENDMПример создания таблицы из четырех слов: Расширение макроса для создания таблицы из четырех слов.dataDW 1 *1 DW 2 Директивы повторенияIRPC параметр,Пример: IRPC RG, 3. Условные директивыIF задает начало условно ассемблируемого блока , если истинно или Примеры вызова процедуры ReadBuf при DoBuf ≠ 01. Без расширения оператора условия.dataBufNum Примеры вызова процедуры ReadBuf при DoBuf ≠ 02. С расширением условного оператораBufNum Условные директивы IFB , IFNB Операторы альтернативной обработки пустых операторов:IFB IFNB Параметр Примеры условных директивПример макроопределения:PRINT_T MACRO MSG	IFB 		MOV SI, DEFMSG	ELSE		MOV SI, MSG	ENDIF		CALL SHOW_TENDM………..DEFMSG Пример извлечения параметров из стекаPOPREGS MACRO REG1, REG2	IFNB 		POP REG1	ENDIF	IFNB 		POP REG2	ENDIFENDM Условные директивы IF1, IF2, IFDEF  IF1IF2Пример:  IF1 INCLUDE TEXTMACRO.TXTАссемблирование, если Условные директивы IFDIF, IFIDNАссемблирование, если параметры различны: IFDIF Ассемблирование, если параметры тождественны:IFIDN Макрооперации& - операция замещения   ;; - подавление комментария% - вычисление Макрооперация замещения1. Операция замещения  Формат: & имя параметра	Пример:makemsg MACRO str, n Макрооперации 3. Вычисление выражения Формат:   %выражение	Пример: makemsg ,%3+5 4. Операция Лекция №15Директивы управления листингом.Упрощенные директивы TASM.Модели памяти.Этапы разработки программы.Отладчик Turbo Debugger (td). Директивы управления листингомlall;xall;sall. Упрощенные директивы tasm	model [модификатор] модель памяти [имя кодового сегмента]Модификатор: use16, use32, dosTasm Модели памятиtinysmallmediumcompactlargehuge Сегменты для модели памяти Порядок выполнения программы на ассемблереtasm  имя_исх._модуля  [, имя_объектного_модуля]	[, имя_lst] [, Этапы разработки программы на ассемблере. 1. Постановка и формулировка задачи	Назначение и требования Этапы разработки программы на ассемблере. 2. Проектирование 	формулировка ассемблерной модели задачи;выбор метода Этапы разработки программы на ассемблере. 3. Кодированиеуточнение структуры данных и определение ассемблерного Этапы разработки программы на ассемблере. 4. Отладка и тестированиесоставление тестов для проверки Этапы разработки программы на ассемблере. 5. Эксплуатация и сопровождениенастройка программы на конкретные Отладчик Turbo Debugger (td)Для работы в Turbo Debugger (td) необходимо создать загрузочный Запуск программы на выполнениеИспользуется один из четырех режимов:безусловное выполнение (F9);по шагам: а) Установка точек прерыванияСначала устанавливаются точки прерывания курсором и F2, затем – F9.Прервать выполнение программы – Ctrl+F2 Подсистема ввода/вывода Шинная организация ввода/вывода Канальная организация ввода/вывода Лекция №16Подсистема ввода/вывода
Слайды презентации

Слайд 2 Литерарура
Тищенко В.И. Учебное пособие по курсу «Системное программирование»;
Тищенко

ЛитерарураТищенко В.И. Учебное пособие по курсу «Системное программирование»;Тищенко В.И. Лабораторный практикум

В.И. Лабораторный практикум по курсу «Системное программирование»;
Тищенко В.И. Лабораторный

практикум «Разработка оверлейных и резидентных программ»;
Юров В. Ассемблер – учебник;
Юров В. Ассемблер – практикум.



Слайд 3 Классификация языков программирования

Классификация языков программирования

Слайд 4 Машинный язык программирования
Машинный язык программирования – это язык,

Машинный язык программированияМашинный язык программирования – это язык, непосредственно воспринимаемый компьютером.Каждая

непосредственно воспринимаемый компьютером.
Каждая его команда интерпретируется аппаратурой ЭВМ.
Машинная команда

имеет структуру вида:
код операции, операнд1, операнд2
Операнды - это данные или адреса, над которыми будет выполняться действие, определенное кодом операции.
Структура данных в оперативной памяти называется форматим данных.

Слайд 5 Ассемблер как язык программирования
Языки ассемблерного типа используют мнемоническое

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

обозначение адресов и кодов операций.
Ассемблер включает в себя:
машинные команды,
символические

адреса,
макросы,
комментарии.

Слайд 6 Этапы развития языков программирования
Выделим 5 основных поколений:
(конец 50-х

Этапы развития языков программированияВыделим 5 основных поколений:(конец 50-х г.) – Fortran,

г.) – Fortran, Algol;
(середина 60-х г.) - Cobol, Lisp;
(70-е

годы) - PL/1, Pascal;
(80-е годы) - Object Pascal, C++, Ada;
(90-е годы) - Visual Basic, Delphi, Builder.

Слайд 7 Функциональные возможности языков и технологии программирования
с развитием аппаратных

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

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

системой;
с усложнением задач:
поддержка подпрограмм, механизм передачи параметров (основа для методологии структурного программирования);

Слайд 8 Функциональные возможности языков и технологии программирования (продолжение)
возможность создания

Функциональные возможности языков и технологии программирования (продолжение)возможность создания больших программ на

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

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

Слайд 9 Архитектура ЭВМ
Архитектура ЭВМ – это абстрактное представление ЭВМ,

Архитектура ЭВМАрхитектура ЭВМ – это абстрактное представление ЭВМ, которое отражает ее структурную, схемотехническую и логическую организации.

которое отражает ее структурную, схемотехническую и логическую организации.


Слайд 10










































Архитектура ЭВМ

Архитектура ЭВМ

Слайд 11 Структурная схема компьютера
оперативная память

Структурная схема компьютераоперативная память

Слайд 12 Лекция №2
Классификация регистров.
Назначение регистров.
Адресация памяти.
Физическая адресация памяти.

Лекция №2Классификация регистров.Назначение регистров.Адресация памяти.Физическая адресация памяти.

Слайд 13 Регистры
Электронное устройство, предназначенное для временного хранения информации, называется

РегистрыЭлектронное устройство, предназначенное для временного хранения информации, называется регистром.Расположены на кристалле

регистром.
Расположены на кристалле МП. Характеризуются размером:
8-разрядные, 16-разрядные, 32-разрядные, 64-разрядные.



Слайд 14 Регистры IBM/PC (intel 8086/8088)

Регистры IBM/PC (intel 8086/8088)

Слайд 15 Регистры данных

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

Сегментные регистры


Слайд 16 Регистры индексов и указателей
sp – указатель стека;
bp –

Регистры индексов и указателейsp – указатель стека;bp – указатель базы;si –

указатель базы;
si – индекс источника;
di -индекс результата.
Адрес памяти задается

двумя значениями – сегмент и смещение, например :
ds:dx, es:bx, ss:sp, ss:bp.
Текущая исполняемая команда определяется cs:ip.


Слайд 17 Управляющие регистры
ip – указатель команд,
регистр флагов.
Указатель команд -

Управляющие регистрыip – указатель команд,регистр флагов.Указатель команд - содержит смещение следующей команды в кодовом сегменте.

содержит смещение следующей команды в кодовом сегменте.


Слайд 18 Регистры 32- разрядного МП Pentium
16 – системных;
16

Регистры 32- разрядного МП Pentium16 – системных; 16 – пользовательских:8 РОН,

– пользовательских:
8 РОН, индексных и указателей по 32 разряда eax/ax/ah/al,

ebx/bx/bh/bl, edx/dx/dh/dl, ecx/cx/ch/cl, ……..
6 сегментных по 16 разрядов: cs, ds, ss, es, fs, gs;
2 регистра состояния и управления по 32 разряда: eip/ip и eflags/ flags.

Слайд 19 Адресация памяти

Адресация памяти

Слайд 20 Некоторые константы
16

Некоторые константы 16    32    20

32

20 24
2 =64 кб, 2 = 4Гб, 2 = 1Мб, 2 = 16 Мб.

Для МП intel 8088 размер машинного слова – 16 бит или 2 байта, шина имела 20 линий, поэтому адрес 20- разрядный.


Слайд 21 Физическая адресация памяти
Адрес, выдаваемый на шину адреса, называется

Физическая адресация памятиАдрес, выдаваемый на шину адреса, называется физическим.Физический адрес =

физическим.

Физический адрес = (сегментный адрес)*16 + смещение
или
Физический адрес =

(сегментный адрес)*10h + смещение.

ОП

сегмент

Сегментный адрес


смещение


Слайд 22 Пример вычисления физ. адреса
Пусть содержимое сегментного регистра равно

Пример вычисления физ. адресаПусть содержимое сегментного регистра равно 2011h, смещение равно 15h,тогда ФА=20110h+15h= 20125h

2011h, смещение равно 15h,
тогда ФА=20110h+15h= 20125h



Слайд 23 Расположение машинного слова в памяти
Младший байт записывается в

Расположение машинного слова в памятиМладший байт записывается в ячейку с меньшим

ячейку с меньшим адресом, старший – в ячейку с

адресом на 1 больше.
Пример:
пусть число 1234h размещено с адреса 1927:0000, т.е. занимает ф.а. 19270h и 19271h.
Тогда цифры 34h – по адресу 19270h,
а 12h – по адресу 19271h.

Слайд 24 Назначение регистров - РОН
АХ – аккумулятор.
ВХ – как

Назначение регистров - РОНАХ – аккумулятор.ВХ – как вычислительный регистр, но

вычислительный регистр, но может быть адресным.
CX – счетчик в

некоторых командах.
DX – расширитель аккумулятора.


Слайд 25 Назначение регистров адресации
si, di, bp, bx – основное

Назначение регистров адресацииsi, di, bp, bx – основное назначение – хранить

назначение – хранить 16 – разрядное значение при формировании

адреса.

Слайд 26 Назначение регистров - управляющие регистры
ip – указатель команд,
регистр

Назначение регистров - управляющие регистрыip – указатель команд,регистр флагов.Указатель команд -

флагов.
Указатель команд - содержит смещение следующей команды.
Методы изменения порядка

выполнения команд:
последовательный порядок команд,
переход внутри сегмента (near – переход),
переход в другой сегмент (far – переход).

Слайд 27 Указатель стека sp
Определяет смещение текущей вершины стека.
Адрес стека

Указатель стека spОпределяет смещение текущей вершины стека.Адрес стека определяется как ss:sp

определяется как ss:sp или ss:bp.

Пример загрузки сегментных регистров cs

в ds:
а) mov ax, cs
mov ds, ax
в) push cs
pop ds

Слайд 28 Лекция №3
Регистр флагов.
Механизм формирования физического адреса.
Форматы данных.
Директивы

Лекция №3Регистр флагов.Механизм формирования физического адреса.Форматы данных. Директивы определения данных.

определения данных.


Слайд 29 Содержимое регистра flags

Содержимое регистра flags

Слайд 30 Обозначения регистров под отладчиком

Обозначения регистров под отладчиком

Слайд 31 Механизм формирования физического адреса в реальном режиме

Механизм формирования физического адреса в реальном режиме

Слайд 32 Типы данных
Классификация данных по разрядности
(поддерживается МП на аппаратном

Типы данныхКлассификация данных по разрядности(поддерживается МП на аппаратном уровне)байтсловодвойное словоучетверенное слово07153163

уровне)
байт
слово
двойное слово
учетверенное
слово
0
7
15
31
63


Слайд 33 Типы арифметических данных: логическая структура (см. стр.12-14 пособия)

Типы арифметических данных: логическая структура (см. стр.12-14 пособия)

Слайд 34 Форматы данных сопроцессора
8 регистров данных длиной 80

Форматы данных сопроцессора 8 регистров данных длиной 80 бит.Оперирует 7 типами

бит.
Оперирует 7 типами данных:
3 типа целых (слово 16 бит,

короткое целое 32 бита, длинное целое 64 бита);
3 типа вещественных (короткое 32 бита, длинное 64 бита, временное 80 бит): знак, характеристика, мантисса
1 бит 8, 11 или 15 бит 23, 52 или 64 бита;
Упакованные двоично-десятичные числа.


Слайд 35 Операторы ассемблера
Общий вид оператора ассемблера:

метка КОП

Операторы ассемблераОбщий вид оператора ассемблера: метка КОП операнд_1,операнд_2Оператором может быть:машинная команда;директива транслятора;макрокоманда;комментарий.

операнд_1,операнд_2

Оператором может быть:
машинная команда;
директива транслятора;
макрокоманда;
комментарий.


Слайд 36 Директивы транслятора для определения данных в ассемблере
формат директивы:

Директивы транслятора для определения данных в ассемблере			формат директивы:


имя d

выражение

a dw 10 ; в десятичной системе счисления
b dw 10h ; использование шестнадцатеричной
системы счисления


b

w

d



Слайд 37 Выражение в директиве определения данных может быть:
константой: ABC1 dw

Выражение в директиве определения данных может быть:константой: ABC1 dw 1234hсписком: ABC2

1234h
списком: ABC2 db 1,2,3
строкой: ABC3 db ‘stroka’
с операцией дублирования:

ABC4 db 4 dup (0)

Слайд 38 Лекция №4
Режимы адресации в ассемблере.

Лекция №4Режимы адресации в ассемблере.

Слайд 39 Режимы адресации

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

Слайд 40 Способы задания операндов в операторах ассемблера
1. Регистровая адресация
mov

Способы задания операндов в операторах ассемблера1. Регистровая адресацияmov ax,bxmov al,dl2. Непосредственная адресация mov ax,1234hmov cl,‘a’mov ah,5

ax,bx
mov al,dl
2. Непосредственная адресация
mov ax,1234h
mov cl,‘a’
mov ah,5


Слайд 41 3. Прямая адресация
.data
ABC dw 1234h
.code
mov dx,ABC
Пусть

3. Прямая адресация .data ABC dw 1234h.codemov dx,ABCПусть адрес АВС =

адрес АВС = ds:0000, тогда команда под отладчиком выглядит так:

mov dx, word ptr [0000] или mov dx, [0000]
Для вычисления адреса операнда по умолчанию используется сегментный регистр ds.

Слайд 42 4. Косвенная регистровая адресация
Смещение, которое вычисляется аппаратно

4. Косвенная регистровая адресация Смещение, которое вычисляется аппаратно для доступа к

для доступа к операнду в памяти, называется исполнительным (эффективным)

адресом (EA)
.data
ABC dw 1234h
.code
……….
mov bx, offset ABC
mov ax,[bx]
Для вычисления адреса операнда по умолчанию используется сегментный регистр - ds


Слайд 43 5. Адресация по базе
Эффективный адрес ЕА вычисляется:




Размер индексное

5. Адресация по базеЭффективный адрес ЕА вычисляется:Размер индексное смещение (сдвига) -

смещение (сдвига) - 0, 1 или 2 байта.
Пример: обращение

к 2-му элементу массива слов
.data
ARRAY dw 1,2,3,4,5
.code
mov bx,offset ARRAY
mov ax,[bx]+2


[bx] + индексное смещение

[bp] + индексное смещение

EA=


Слайд 44 6. Прямая с индексированием
Эффективный адрес ЕА вычисляется:




Пример: загрузить

6. Прямая с индексированиемЭффективный адрес ЕА вычисляется:Пример: загрузить 5-й элемент массива

5-й элемент массива байтов в регистр al.
.data
table db 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh
.code
mov

di,0002 или mov di,2
mov al, table[di+2]


[si] + индексное смещение

[di] + индексное смещение

+ смещение прямого адреса

EA=


Слайд 45 7. По базе с индексированием
Эффективный адрес ЕА вычисляется:



Пример:

7. По базе с индексированиемЭффективный адрес ЕА вычисляется:Пример: задан массив записей,

задан массив записей, каждая запись состоит из 6 слов.

Переслать 3-е слово 2-ой записи в регистр ax.
.data
table dw 1,2,3,4,5,6,7,8,9,10,11,12,……..
.code
mov si,12 или mov si,2*6
mov bx,offset table
mov ax, [bx+si+4 ]

EA=


[bx] [si]

+ + индексное смещение
[bp] [di]


Слайд 46 Форма записи операнда
Для адресации по базе с

Форма записи операнда Для адресации по базе с индексированием возможны следующие

индексированием возможны следующие комбинации регистров:
[bx][si] +сдвиг

совместно с регистром ds
[bx][di] +сдвиг совместно с регистром ds
[bp][si] +сдвиг совместно с регистром ss
[bp][di] +сдвиг совместно с регистром ss
Используеются разные формы записи операнда:
[bx][di] +4, [bx+di] +4, [bx+di+4 ]

Слайд 47 Сводная таблица используемых регистров адресации

Сводная таблица используемых регистров адресации

Слайд 48 Размеры индексного смещения
сдвиг отсутствует, длина поля равна 0;

Размеры индексного смещениясдвиг отсутствует, длина поля равна 0; занимает 1 байт,

занимает 1 байт, значение в диапазоне -128 до +127;


занимает 2 байта, значение в диапазоне -32768 до +32767.


Слайд 49 Лекция №5
- Принципы и свойства архитектуры ЭВМ.
Иерархия

Лекция №5- Принципы и свойства архитектуры ЭВМ.Иерархия памяти.

памяти.


Слайд 50 Принципы архитектуры
Принцип хранимой программы (Джона фон Неймана)

Принципы архитектуры Принцип хранимой программы (Джона фон Неймана) – код программы

– код программы и данные хранятся в оперативной памяти

(ОП).
Принцип микропрограммирования – для каждой команды есть набор действий- сигналов, генерируемых для ее выполнения.
Принцип адресности – пространство ОП линейно, т.е. совокупность последовательно пронумерованных ячеек памяти. Номер ячейки – ее адрес (0,1,2,…).
Принцип программного управления – последовательное выполнение команд программы. Для изменения порядка выполнения используются специальные команды.

Слайд 51 Принципы архитектуры
5. Принцип однородности памяти – для

Принципы архитектуры 5. Принцип однородности памяти – для процессора нет принципиальной

процессора нет принципиальной разницы между данными и командами. Над

командами можно выполнять такие же действия как и над данными.
6. Принцип двоичного кодирования – необходимо четко разделять пространство данных и команд, т.к. процессор трактует двоичную информацию в зависимости от назначения адресного пространства .
7. Принцип безразличие к целевому назначению данных – процессору не важна логическая назрузка обрабатываемых данных.

Слайд 52 Индивидуальные особенности процессоров
Способы кеширования кода и данных:
в i486

Индивидуальные особенности процессоровСпособы кеширования кода и данных:в i486 – один блок

– один блок встроенного кеша размером 8 кб для

кодов и данных;
в Pentium - два блока по 8 кб, один для кода, другой для данных. Возможен одновременный доступ к коду и данным.

Слайд 53 Иерархия памяти

Иерархия памяти

Слайд 54 Кеш - память
Располагается между основной памятью и процессором.
Основное

Кеш - памятьРасполагается между основной памятью и процессором.Основное назначение - улучшение

назначение - улучшение эффективной скорости взаимодействия с памятью и

увеличение быстродействия процессора.
Подразделяется на кеш I уровня (на кристалле) и кеш II уровня (на кристалле или вне его).

Слайд 55 Концепция кеш – памяти
Предвосхищение наиболее вероятного использования

Концепция кеш – памяти Предвосхищение наиболее вероятного использования процессором данных из

процессором данных из ОП путем их копирования в кеш-память.


Данные передаются блоками, состоящими из нескольких слов.
Среднее время доспупа к кеш – памяти:
в 3 раза быстрее, чем к ОЗУ,
в 10 раз быстрее, чем к ПЗУ.

Слайд 56 Оперативная память (ОП)
Физическая память, к которой МП имеет

Оперативная память (ОП)Физическая память, к которой МП имеет доступ по шине

доступ по шине адреса, называется ОП.
Выполнена ОП на дешевых

и медленно действующих полупроводниковых устройствах.

Реально реализована как последовательность ячеек – байтов. Каждому байту соответствует уникальный адрес, называемый физическим.




Слайд 57 Аппаратный механизм управления ОП
Он обеспечивает:
компактность хранения

Аппаратный механизм управления ОП Он обеспечивает: компактность хранения адреса в команде;гибкость

адреса в команде;
гибкость механизма адресации;
защиту адресного пространства задачи;
поддержку виртуальной

памяти.


Слайд 58 Модели использования ОП
МП аппаратно поддерживает модели:
сегментированную;
страничную.
Режимы работы МП:
режим

Модели использования ОПМП аппаратно поддерживает модели:сегментированную;страничную.Режимы работы МП:режим реальных адресов;защищенный;виртуального процессора.

реальных адресов;
защищенный;
виртуального процессора.



Слайд 59 Реальный режим работы МП intel 8086/88. Основные понятия
Сегментация

Реальный режим работы МП intel 8086/88. Основные понятияСегментация – механизм адресации,

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

(как в пределах одной задачи, так и в системе в целом) для защиты от взаимного влияния.
Сегмент – независимый, поддерживаемый на аппаратном уровне блок памяти.
Программно возможен непосредственный доступ только к 4(6) сегментам. Каждый сегмент имеет специальное назначение.

Слайд 60 Размещение сегментов программы
Первоначально начальные физические адреса сегментов программы

Размещение сегментов программыПервоначально начальные физические адреса сегментов программы неизвестны.ОС распределяет память

неизвестны.
ОС распределяет память и помещает адреса:
в реальном режиме -

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

Слайд 61 Виртуальная память

Виртуальная память

Слайд 62 Лекция №6
Виды операндов, поддерживаемые транслятором.
Структура команды мп intel

Лекция №6Виды операндов, поддерживаемые транслятором.Структура команды мп intel 80386.Байт mod r/m.Формат команды mov (1-2).

80386.
Байт mod r/m.
Формат команды mov (1-2).


Слайд 63 Общий вид оператора ассемблера


метка КОП операнд_1,операнд_2

Оператором ассемблера

Общий вид оператора ассемблераметка КОП операнд_1,операнд_2Оператором ассемблера может быть:машинная команда;директива транслятора;макрокоманда;комментарий.

может быть:
машинная команда;
директива транслятора;
макрокоманда;
комментарий.


Слайд 64 Виды операндов, поддерживаемые транслятором TASM
Постоянные или непосредственные (число,

Виды операндов, поддерживаемые транслятором TASMПостоянные или непосредственные (число, строка): ABC equ

строка): ABC equ 3 или АВС1=АВС1+120/5;
Адресные (сегмент:смещение): ds:0001;
Перемещаемые

– адреса, непривязанные к конкретному физическому адресу памяти;
Текущее значение счетчика адреса ($): mov ax,$+5;
Регистровые: ax, cx, dx и т.д.;
Базовый и индексный операнды: bx, di, si;
Арифметические операторы в выражении: +, -, *, /;

Слайд 65 Виды операндов (продолжение)
Операторы сравнения: eq, ne, lt, le,

Виды операндов (продолжение)Операторы сравнения: eq, ne, lt, le, gt, ge и

gt, ge и т.д.
Логические операторы: and, or, xor.
Индексный оператор

[ ]: mov ax, ABC [si]
Оператор определения типа (приписывает операнду указанный тип): формат: тип ptr выражение
пример: abc dw 12h
mov al, byte ptr abc
Получение сегментной части адреса или смещения:
mov ax, seg ABC
mov dx, offset ABC


Слайд 66 Машинная команда

Машинная команда

Слайд 67 Структура машинной команды МП intel 8086

Префикс КОП байт_mod_r/m сдвиг

Структура машинной команды МП intel 8086Префикс КОП байт_mod_r/m сдвиг данное0,1

данное
0,1 1

0,1 0,1,2 0,1,2

Длина команды: min - 1 байт,
max - 7 байт.

Слайд 68 Формат машинной команды МП intel 80386

Формат машинной команды МП intel 80386

Слайд 69 Префиксы
Каждый префикс может занимать 1 байт.
Есть 5 типов

ПрефиксыКаждый префикс может занимать 1 байт.Есть 5 типов префиксов:повторения (в цепочечных командах);размера адреса;размера операнда;замены сегмента;блокировки шины.

префиксов:
повторения (в цепочечных командах);
размера адреса;
размера операнда;
замены сегмента;
блокировки шины.


Слайд 70 Структура байта mod r/m
| mod |

Структура байта mod r/m | mod | reg/коп | r/m |

reg/коп | r/m |
Поле mod –

2 бита, кодировка:
00 – индексное смещение отсутствует;
01 – смещение занимает 1 байт;
10 - смещение занимает 2 байта;
11 – поле r/m определяет регистр.
Поля reg и r/m имеют длину по 3 бита.
Определяют регистр и способ адресации.

Слайд 71 Сводная таблица используемых регистров адресации

Сводная таблица используемых регистров адресации

Слайд 72 Особые случаи при кодировании байта mod r/m
При регистровой

Особые случаи при кодировании байта mod r/mПри регистровой адресации поле mod

адресации поле mod = 11, а в поле r/m

- код второго регистра.
Для прямой адресации поле mod = 00, r/m=110 и за байтом mod r/m стоят 2 байта, указывающих смещение прямого адреса.

Слайд 73 Область действия команды mov







mov ax, @data
mov ds, ax

Непосредственный

Область действия команды movmov ax, @datamov ds, axНепосредственный операндрегистробщего назначе-нияРОНСегментный регистрОП


операнд
регистр
общего
назначе-
ния
РОН
Сегментный
регистр
ОП


Слайд 74 Форматы машинных команд
Пересылка регистра/памяти в/из регистра:
mov ax,bx

mod

Форматы машинных командПересылка регистра/памяти в/из регистра:	mov ax,bxmod  reg

reg

r/m

1 1 0 0 0 0 1 1

1 0 0 0 1 0 1 1

|
ax

|
bx

2 байта

dw

8 B C 3


Слайд 75 d определяет направление перемещения:



w определяет размер операнда:


d =

0

d определяет направление перемещения:w определяет размер операнда:d =0 – из регистра,1

– из регистра,
1 – в регистр.
w =

0 – 1

байт,

1 – 2 байта.

Параметры d и w


Слайд 76 Лекция №7
Форматы команды MOV
Префикс замены сегмента.
Система машинных команд

Лекция №7Форматы команды MOVПрефикс замены сегмента.Система машинных команд МП intel 8086 (п.1-2).

МП intel 8086 (п.1-2).


Слайд 77 Форматы машинных команд
2. Непосредственный операнд в регистр/память
mov ABC,46
Пусть

Форматы машинных команд2. Непосредственный операнд в регистр/память	mov ABC,46Пусть смещение АВС равно

смещение АВС равно 0005

mod reg

r/m

0 0 0 0 0 1 1 0

1 1 0 0 0 1 1 0

C 6 0 6

0 0 0 5 2 E

w

| |
Смещение (46)10
АВС

Длина команды 5 байт


Слайд 78 Форматы машинных команд
3. Непосредственный операнд в регистр
mov si,1000

Форматы машинных команд3. Непосредственный операнд в регистр	mov si,1000

(1000=03E8h)


reg

B E E 8 0 3

1 0 1 1 1 1 1 0

|
si

Длина 3 байта

w


Слайд 79 Форматы машинных команд
4. Память в аккумулятор
mov ax,exword ;

Форматы машинных команд4. Память в аккумулятор	mov ax,exword ; если адрес exword

если адрес exword = ds:0002, то


А 1 02 00







1 0 1 0 0 0 0 1

адрес
младший

Длина 3 байта

w

адрес
старший


Слайд 80 Форматы машинных команд
5. Аккумулятор в память
mov exbyte,al ;

Форматы машинных команд5. Аккумулятор в память	mov exbyte,al ; если адрес exbyte

если адрес exbyte = ds:0004, то

А 2 04 00



1 0 1 0 0 0 1 w
0

адрес
младший

3 байта

адрес
старший


Слайд 81 Форматы машинных команд
6. Регистр/память в сегментный регистр
mov ds,ax

Форматы машинных команд6. Регистр/память в сегментный регистр	mov ds,ax







mod regs r/m

1 1 0 1 1 0 0 0

1 0 0 0 1 1 1 0

2 байта

8 E


Слайд 82 Форматы машинных команд
7. Сегментный регистр в регистр/память:
mov

Форматы машинных команд7. Сегментный регистр в регистр/память: 	mov ax,еsmod  regs

ax,еs

mod regs

r/m

1 1 0 0 0 0 0 0

1 0 0 0 1 1 0 0

2 байта

8 C C 0


Слайд 83 Префикс замены сегмента
Префикс занимает 1 байт и имеет

Префикс замены сегментаПрефикс занимает 1 байт и имеет вид:

вид:
001 regs 110

Кодировка сегментных регистров:





Пример: переменная var определена в сегменте cs, тогда
в исходном модуле - inc cs:var,
под отладчиком - cs: inc var



Слайд 84 Система команд микропроцессора

Система команд микропроцессора

Слайд 85 1. Команды общего назначения
Выполняют обмен информации между регистрами,

1. Команды общего назначенияВыполняют обмен информации между регистрами, ячейками памяти и

ячейками памяти и портами ввода-вывода:
a) команды пересылки данных (mov,

lea, xchg);
пример:
mov bx,offset abc
lea bx,abc
xchg    ax,bx
б) стековые операции (push, pop, pushf, popf).
Пример: push    ds    
pop     es        

Слайд 86 СТЕК
Стек – это область оперативной памяти, специально выделенная

СТЕКСтек – это область оперативной памяти, специально выделенная для временного хранения

для временного хранения данных программы.
Работает по принципу LIFO в

сторону уменьшения адресов.
Используются 3 регистра:
ss - сегментный регистр,
sp – указатель стека,
bp – указатель базы кадра стека.

Слайд 87 Организация стека в оперативной памяти
----------------------------- 0000:0000
……………….

Организация стека в оперативной памяти ----------------------------- 0000:0000 ……………….


------------------------------ Сегмент

стека SS:0000

Вершина стека ?SS:SP

Дно стека ?SS:FFFF
-------------------------------
…………………..

Слайд 88 Работа стековых команд
рush – запись значения в вершину

Работа стековых командрush – запись значения в вершину стека:sp=(sp)-2;Запись операнда по

стека:
sp=(sp)-2;
Запись операнда по адресу ss:sp.
рop – извлечение из вершины

стека:
Извлечение операнда по адресу ss:sp
sp=(sp)+2;
Запись операнда.
рusha – групповая запись в стек регистров
аx, cx, dx, bx, sp, bp, si, di
рopa – групповое извлечение из стека в регистры

Слайд 89 Работа стековых команд с регистром флагов
рushf – загрузка

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

содержимого регистра флагов в вершину стека:
sp=(sp)-2;
Запись содержимого регистра флагов

по адресу ss:sp.
рopf – извлечение информации из вершины стека и загрузка в регистр флагов:
извлечение операнда по адресу ss:sp;
sp=(sp)+2;
загрузка в регистр флагов.

Слайд 90 2. Арифметические операции над целыми двоичными числами

2. Арифметические операции над целыми двоичными числами

Слайд 91 Лекция №8
Система команд процессора (п.3-7).
Прерывания.
Классификация прерываний.

Лекция №8Система команд процессора (п.3-7).Прерывания. Классификация прерываний.

Слайд 92 3. Команды манипулирования битами

3. Команды манипулирования битами

Слайд 93 4. Команды передачи управления
Типы адресов: short, near,

4. Команды передачи управления Типы адресов: short, near, farСуществует 4 способа

far
Существует 4 способа передачи управления.
Команды перехода

Длина смещения
безусловного перехода: jmp 2, 4 байта
условного перехода: j xxx 1 байт
перехода с вызовом процедур: call 2, 4 байта
управления циклами: loop 1 байт
Пример: jmp short label


Слайд 94 Замена длины смещения в условном переходе
Если относительный адрес

Замена длины смещения в условном переходеЕсли относительный адрес перехода превышает 128

перехода превышает 128 б, то меняют команду (а) на

две команды (в):
а) в)
cmp dl,’а’ cmp dl,’а’
jz zero jnz continue
continue: jmp zero
………. Continue:
zero: ………
……….. Zero:

Слайд 95 Директива JUMPS (nojumps)
Замену команд для условного перехода можно

Директива JUMPS (nojumps)Замену команд для условного перехода можно сделать с помощью

сделать с помощью директивы транслятора jumps.
Тогда транслятор автоматически

заменит условный переход на пару переходов.

Слайд 96 Команда цикла LOOP
Использует значение регистра CX, уменьшает его

Команда цикла LOOPИспользует значение регистра CX, уменьшает его при каждом шаге

при каждом шаге на 1 и проверяет на 0.


Если не равно 0, то переход по адресу операнда.
mov cx,10
mov ax,0
abc: inc ax
………
loop abc
ddd: ……..

Слайд 97 5. Команды обработки строк
Перемещают, сравнивают, сканируют строки данных.

5. Команды обработки строкПеремещают, сравнивают, сканируют строки данных. Работают с последовательностями

Работают с последовательностями элементов размером в байт, слово, двойное

слово.
Используются с префиксом повторения (rep).
Например, команда movs:
movsb
movsw
movsd


Слайд 98 Алгоритм работы команд обработки строк
Установить флаг df командами

Алгоритм работы команд обработки строкУстановить флаг df командами cld (по возрастанию)

cld (по возрастанию) или std (по убыванию);
Загрузить адреса цепочек

в ds:si и es:di;
Загрузить в cx количество элементов для обработки;
Выполнить команду (например, movsw) с префиксом rep:
rep movsw


Слайд 99 6. Команды прерывания
Для обработки специфический ситуаций существует 3

6. Команды прерыванияДля обработки специфический ситуаций существует 3 команды: int, iret, intо

команды:
int, iret, intо


Слайд 100 7. Команды управления процессом
Назначение: установка и сброс флагов,

7. Команды управления процессомНазначение: установка и сброс флагов, изменение режима функционирования

изменение режима функционирования процессора.
Например,
cld – сбросить флаг направления

(флаг=0),
std – установить флаг направления (флаг=1).

Слайд 101 Прерывание. Основные понятия
Прерывание – это сигнал, заставляющий микропроцессор

Прерывание. Основные понятияПрерывание – это сигнал, заставляющий микропроцессор менять обычный порядок

менять обычный порядок исполнения команд.

Прерывание называется ситуация, приводящая к

временному или окончательному прекращению выполнения команд одной программы и переходу к другой программе.

Слайд 102 Назначение
Механизм прерываний обеспечивает эффективное взаимодействие устройств ввода-вывода с

НазначениеМеханизм прерываний обеспечивает эффективное взаимодействие устройств ввода-вывода с микропроцессором.Обработка прерываний –

микропроцессором.

Обработка прерываний – это прерогатива программирования на ассемблере.

Микропроцессор может

распознать 256 типов прерываний.
Для каждого типа разработана своя программа обработки, называемая обработчиком прерываний.

Слайд 103 Вектора прерываний
Адрес программы обработки прерывания конкретного типа называется

Вектора прерываний Адрес программы обработки прерывания конкретного типа называется вектором прерываний.

вектором прерываний. Размер – 4 байта: сегмент:смещение
Все векторы собраны

в таблицу векторов прерываний.
Размер таблицы 4*256=1024 байта.
Расположена в младших адресах памяти.

Слайд 104 Команды прерываний
2 команды вызова пррываний:
int тип_прерывания
into (прерывание по

Команды прерываний 2 команды вызова пррываний:int тип_прерыванияinto (прерывание по переполнению).1 команда возврата - iret

переполнению).
1 команда возврата - iret


Слайд 105 Лекция № 9
Схема обработки прерываний.
Функции int 21h для

Лекция № 9Схема обработки прерываний.Функции int 21h для работы с файлами.Примеры

работы с файлами.
Примеры использования команды int 21h для работы

с файлами.

Слайд 106 Классификация прерываний

Классификация прерываний

Слайд 107 Классификация прерываний
По месту возникновения:
внешние (аппаратные),
внутренние (программные).

По типу

Классификация прерываний По месту возникновения:внешние (аппаратные),внутренние (программные).По типу системных ресурсов:BIOS,DOS.

системных ресурсов:
BIOS,
DOS.


Слайд 108 Прерывания BIOS (тип 0 -1f)
Векторы прерываний микропроцессора (деление

Прерывания BIOS (тип 0 -1f)Векторы прерываний микропроцессора (деление на 0, переполнение);Векторы

на 0, переполнение);
Векторы прерываний микроконтроллера ( системный таймер, клавиатура, гибкий

диск);
Входные точки процедур системы BIOS (обмен данными с клавиатурой, дисплеем, …);
Вызов процедур пользователя;
Указатели системных таблиц (параметры гибкого и жесткого дисков).


Слайд 109 Прерывания DOS (типы с 20h)
20h – завершение программ;
21h-

Прерывания DOS (типы с 20h)20h – завершение программ;21h- вызов функций DOS;23h-

вызов функций DOS;
23h- обработка клавиш Ctrl+ Break;
25h- абсолютное чтение

с диска;
26h- абсолютная запись на диск.

Слайд 110 INT 21h – вызов функций DOS
Номер функции задают

INT 21h – вызов функций DOSНомер функции задают в регистре ah,

в регистре ah, дополнительную информацию через другие регистры, например,

ds:dx.

Выходная информация выдается через регистр al или другие регистры.

Слайд 111 Схема обработки прерываний

Схема обработки прерываний

Слайд 112 Функции int 21h для работы с файлами
3ch - Создание

Функции int 21h для работы с файлами3ch -	Создание файла;6ch - 	Создание

файла;
6ch - Создание и открытие существующего;
3dh - открытие;
3eh - закрытие;
3fh

– чтение файла;
40h - запись в файл;
42h – позиционирование указателя записи.

Слайд 113 Создание файла через функцию 3сh
Входные данные:
ah – 3ch,

Создание файла через функцию 3сhВходные данные:ah – 3ch, ds:dx - адрес

ds:dx - адрес ASCIIZ-строки с именем файла, cx - атрибут

файла: 0 – обычный.
Выходные данные:
если cf=0, то в ax - логический номер файла (дескриптор файла),
если cf=1, то в ax - код ошибки: 3 – нет указанного пути, 4 – нет свободного дескриптора, 5 – отказано в доступе.

Слайд 114 Обработка флага cf
Функция 3сh на выходе передает код

Обработка флага cfФункция 3сh на выходе передает код ошибки при cf=1.Для

ошибки при cf=1.
Для обработки этой ситуации используются команды:
jc –

переход при cf=1;
jnc - переход при cf=0.

Слайд 115 Атрибут файла
Задается в регистре побитно:
0 бит = 1

Атрибут файлаЗадается в регистре побитно:0 бит = 1 –только для чтения,0

–только для чтения,
0 бит = 0 – обычный;
1 бит

= 1 – скрытый файл;
2 бит = 1 – системный файл;
и т.д.

Слайд 116 Лекция №10

Примеры работы с прерываниями.
Структура программного сегмента.
Префикс программного

Лекция №10Примеры работы с прерываниями.Структура программного сегмента.Префикс программного сегмента ( PSP).Буфер обмена DTA.

сегмента ( PSP).
Буфер обмена DTA.


Слайд 117 Пример1: использования команды int 21h для создания файла

Пример1: использования команды int 21h для создания файла через функцию 3ch	.data		handle

через функцию 3ch
.data
handle dw 0
filename db ‘myfile.txt’,0
point_fname dd filename
.code

………..
xor cx,cx ; обнуляем сх
lds dx,point_fname ; формируем указатель на файл
mov ah,3ch
int 21h
jc exit ; переход по ошибке
mov handle,ax
…………….
exit:

Слайд 118 Открытие существующего файла через функцию 3dh
Входные данные:
ds:dx

Открытие существующего файла через функцию 3dh Входные данные:ds:dx - адрес ASCIIZ-строки

- адрес ASCIIZ-строки с именем файла,
al =0 для

чтения,
al =1 для записи,
al=2 для чтения и записи.
Выходные данные:
ax - логический номер файла.

Слайд 119 Открытие существующего и создание нового файла через функцию

Открытие существующего и создание нового файла через функцию 6ch Входные данные:

6ch
Входные данные:
cx - атрибут файла, 0- для

обычного файла,
bx – режим доступа, 2 – чтение-запись;
dx – 1 - для существующего файла открыть доступ, 10h – создать и открыть;
ds:si - адрес ASCIIZ-строки с именем файла.
Выходные данные:
ax - логический номер файла.

Слайд 120 Закрытие файла
Входные данные:
AH -3Еh,
BX - логический номер файла.

Закрытие файлаВходные данные:AH -3Еh,BX - логический номер файла.

Слайд 121 Чтение из или запись в файл
Входные данные:
ah=3Fh -

Чтение из или запись в файлВходные данные:ah=3Fh - для чтения, 40h

для чтения, 40h - для записи в файл,
bx

- логический номер файла, cx - число считываемых байтов, ds:dx - адрес буфера ввода-вывода.
Выходные данные:
ax - число фактически считанных (или записанных) байтов.

Слайд 122 Пример2: использования команды int 21h для создания файла

Пример2: использования команды int 21h для создания файла через 6сh	.data		handle dw

через 6сh
.data
handle dw 0
filename db ‘myfile.txt’, 0
point_fname dd filename
.code


………..
xor cx,cx ; атрибут файла
mov bx,2 ; режим доступа: чт-запись
mov dx,1 ;если сущ-ет, то открыть
lds si,point_fname ; формируем указатель на файл
mov ah, 6ch
int 21h
jnc ABC ; переход, если существует


Слайд 123 Пример2- продолжение

mov dx,10h

Пример2- продолжение			mov dx,10h   ; создать и открыть

; создать и открыть

mov ah,6ch
int 21h
jc exit ; переход по ошибке
ABC: mov handle, ax
…………….
exit: ; обработка ошибки

Слайд 124 Пример 3: вывод строки на экран
.data
filename db ‘вывод

Пример 3: вывод строки на экран.datafilename db ‘вывод строки’,13,10,$………..		.code 		 mov

строки’,13,10,$
………..
.code
mov ax,@data

mov ds,ax
mov dx, offset filename
mov ah, 9h
int 21h


Слайд 125 Чтение системной даты
Функция 2ah засылается в ah.
Выходные данные:
cx

Чтение системной датыФункция 2ah засылается в ah.Выходные данные:cx – год в

– год в формате типа 2013,
dh – месяц,
dl

– день.

Слайд 126 Структура программного сегмента
Область памяти, начинающаяся с минимального адреса

Структура программного сегментаОбласть памяти, начинающаяся с минимального адреса загрузки программы пользователя,

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

вызове программы, т.е. при выполнении операции OS - EXEC.
Программный сегмент состоит из:
префикса программного сегмента (PSP),расположенного по смещению 0000;
тела загрузочного модуля (по смещению 0100h).

Слайд 127 Структура PSP

Структура PSP

Слайд 128 Пояснения к таблице
Прерывания :
22h –

Пояснения к таблице  Прерывания :22h – завершение процесса; 23h –

завершение процесса;
23h – нажатие клавиш Ctrl+Break;
24h –

фатальная ошибка.
Область сохранения вектора имеет вид:
2 байта – смещение, 2 байта –сегмент.

Адрес среды - занимает 2 байта , задается сегментным адресом.
Вызов диспетчера функций DOS (5 байт):
call – 1 б, адрес обработчика - 4 б ( смещение, сегмент).
Номер функции выбирается из регистра ah.


Слайд 129 Лекция №11
Буфер обмена DTA.
Системное окружение.
Структура dos и карта

Лекция №11Буфер обмена DTA.Системное окружение.Структура dos и карта памяти.

памяти.


Слайд 130 Буфер DTA
DTA (Disk Transfer Area) –рабочий буфер обмена

Буфер DTA DTA (Disk Transfer Area) –рабочий буфер обмена с диском.Содержит

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

все пробелы, разделители и код 0dh.
Пример вызова программы в командной строке: abc.exe bbbbb 5
Содержимое dta: 20424242424220350d
При нажатии клавиши Enter в DTA записывается код 0dh.
Максимальная длина командной строки 140 байт.

Слайд 131 Среда dos или системное окружение (environment)
Передаваемая среда является

Среда dos или системное окружение (environment)Передаваемая среда является копией родительского процесса.Представляет

копией родительского процесса.
Представляет собой последовательность строк ASCIIZ в виде:
параметр=значение0
Общая

длина строк – до 32 кб, по умолчанию -512 б.

Слайд 132 Пример окружения
Строки среды

Пример окружения Строки среды     I------------------------------------Имя_1=значение_1 IИмя_2=значение_2 I………………………..

I
------------------------------------
Имя_1=значение_1 I
Имя_2=значение_2 I
………………………..

I
Имя_n=значение_n<00> I
<00> I
<0100> I
_имя_программы<00> I
<00> I

в мнемонике ассемблера
---------------------------------------
db ‘comspec=c:\command.com’,0
db ‘prompt=$p$g”,0
……………………….
db ‘path=d:\;c:\apps’,0
db 0
dw 1
db ‘c:\abc\abc.exe’,0
db 0


Слайд 133 Основные смещения в PSP для программирования
2ch – адрес среды;
80h

Основные смещения в PSP для программирования2ch – адрес среды;80h – длина

– длина рабочего буфера;
81h – начальное смещения для содержимого

командной строки.


Слайд 134 Способы завершения программы
int 20h;
переход по адресу 0000 в

Способы завершения программыint 20h;переход по адресу 0000 в программном сегменте;int 21h

программном сегменте;
int 21h с ah=4ch;
Косвенный переход по адресу 0050

в PSP.


Слайд 135 Загрузка регистров exe- файла
DS, ES указывают на начало

Загрузка регистров exe- файлаDS, ES указывают на начало PSP;IP, SP получают

PSP;
IP, SP получают значения, указанные при редактировании программы в

заголовке загрузочного модуля;
CS, SS, получают значения из заголовка загрузочного модуля, модифицированные на адрес начала программного сегмента.


Слайд 136 Загрузка регистров com- файла
DS, ES, CS, SS указывают

Загрузка регистров com- файлаDS, ES, CS, SS указывают на начало PSP;IP

на начало PSP;
IP равен 0100h;
SP указывает на конец

программного сегмента, длина сегмента в ячейке 6 PSP уменьшается, чтобы освободить пространство для стека;
в вершину стека записывается нулевое слово.

Слайд 137 Структура dos
Блок начальной загрузки (boot record);
Интерфейс с BIOS;
Встроенные

Структура dosБлок начальной загрузки (boot record);Интерфейс с BIOS;Встроенные команды dos;Командный процессор (command.com).

команды dos;
Командный процессор (command.com).


Слайд 138 Структура dos - 1) блок начальной загрузки
Блок начальной

Структура dos - 1) блок начальной загрузкиБлок начальной загрузки занимает 1

загрузки занимает 1 сектор.
Размещается:
на дискете - на нулевом треке;
на

диске – в первом секторе раздела dos.

Слайд 139 Структура dos – 2) интерфейс с bios
Содержит команды

Структура dos – 2) интерфейс с biosСодержит команды взаимодействия с bios.

взаимодействия с bios. Обеспечивает интерфейс низкого уровня с подпрограммами

работы с устройствами через bios.

Слайд 140 Структура dos – 3) встроенные команды dos
Команды dos

Структура dos – 3) встроенные команды dosКоманды dos обеспечивают пользовательским программам

обеспечивают пользовательским программам интерфейс высокого уровня. Включают операции :
управления

файлами;
распределения оперативной памяти;
блочного обмена с дисками;
управления двигателем нгмд и др.

Слайд 141 Командный процессор
Состоит из трех частей:
резидентной;
инициализации;
нерезидентной.
содержит подпрограммы обработки прерваний

Командный процессорСостоит из трех частей:резидентной;инициализации;нерезидентной.содержит подпрограммы обработки прерваний (22h, 23h,

(22h, 23h, 24h ) и подзагрузки нерезидентной части.
включает обработку

файла autoexec.bat и определяет начальный адрес загрузки программы пользователя.

Слайд 142 3. Нерезидентная часть командного процессора
Состоит из:
интерпретатора команд;
системного загрузчика

3. Нерезидентная часть командного процессораСостоит из:интерпретатора команд;системного загрузчика нерезидентных команд и

нерезидентных команд и программ.

Загрузчик вызывается операцией OS exec -вызов

и загрузка программ.

Слайд 143 Карта распределения памяти в dos
0000:0000 таблица векторов прерываний;
0040:0000

Карта распределения памяти в dos0000:0000 таблица векторов прерываний;0040:0000 глобальные переменные BIOS;0050:0000

глобальные переменные BIOS;
0050:0000 глобальные переменные DOS;
хххх:0000 BIO.COM;
хххх:0000 DOS.COM;
хххх:0000 2

части command.com;
хххх:0000 резидентные программы;
хххх:0000 нерезидентные программы и команды;
хххх:0000 нерезидентная часть command.com



Слайд 144 Лекция №12
Операторы ассемблера;
директивы данных;
варианты вызова процедур.
директивы управления листингом.

Лекция №12Операторы ассемблера;директивы данных;варианты вызова процедур.директивы управления листингом.

Слайд 145 Операторы программы на ассемблере
[метка] мнемоника

Операторы программы на ассемблере		[метка]  мнемоника  [операнды]			 (код операции)Оператор ассемблера

[операнды]
(код операции)

Оператор ассемблера может быть:
машинной

командой;
псевдооператором или директивой транслятора;
макрокомандой;
комментарием.

Слайд 146 Директивы (псевдооператоры) транслятора ассемблера TASM
[метка] мнемоника

Директивы (псевдооператоры) транслятора ассемблера TASM		[метка]  мнемоника  [операнды]			 (код операции)Псевдооператоры

[операнды]
(код операции)

Псевдооператоры (директивы ассемблера) подразделяются

на 2 класса:
директивы данных;
директивы управления листингом.

Слайд 147 Директивы данных
1. Определение идентификаторов: имя equ выражение
Пример:

Директивы данных1. Определение идентификаторов: имя equ выражение 	Пример: count equ cx

count equ cx

N equ 1024

2. Определение данных:
резервируют память - db (1 байт), dw (2 байта), dd (4 байта), df, dp (6 байтов), dq (8 байтов), dt (10 байтов)


Слайд 148 Директивы данных. 3. Определение сегмента
Директивы segment и ends

Директивы данных. 3. Определение сегментаДирективы	 segment и ends – определяют в

– определяют в программе начало и конец сегмента.
Формат директив:
имя

segment [тип подгонки,] [тип связи,]‘класс’, длина адреса

Например, АВС segment para public ‘code’,use16
………
АВС ends

Слайд 149 Определение сегментного регистра
Регистр адресации задается директивой

Определение сегментного регистра Регистр адресации задается директивой assume. Формат: assume

assume.
Формат:
assume сегментный_регистр:имя_сегмента [, ]
Пример: mycode segment para

public ‘code’
assume cs:mycode,ds:mydata
begin: mov ax,seg mydata
mov ds,ax
………………..
mycode ends


Слайд 150 Директивы данных. 4. Определения процедур
Формат: имя proc

Директивы данных. 4. Определения процедурФормат: имя proc [атрибут дальности]

[атрибут дальности]

………..
ret
имя endp
Атрибут дальности: near или far

Пример: .code
startАВС proc near
………….
ret
startАВС endp
Механизм вызова – сохранение контекста программы в стеке.

Контекст программы – это информация о состоянии программы в точке вызова процедуры.

Слайд 151 Вызов процедур (call имя_процедуры)
Пусть АВС1 - имя процедуры

Вызов процедур (call имя_процедуры)Пусть АВС1 - имя процедуры типа near, АВС2

типа near,
АВС2 – имя процедуры типа far, adr1,

adr1 – ссылки:
adr1 dw offset ABC1
adr2 dw offset ABC2,seg ABC2
Варианты вызова процедур:
Прямая адресация в сегменте (ближний вызов): call near ptr ABC1
Прямая адресация между сегментами (дальний вызов):
call far ptr ABC2
Косвенная адресация в сегменте:
call word ptr adr1
Косвенная адресация между сегментами:
call dword ptr adr2

Слайд 152 Директивы данных. 5. Определение внешних ссылок
public имя –

Директивы данных. 5. Определение внешних ссылок		public имя – делает указанное имя

делает указанное имя доступным для других программных модулей, которые

впоследствии могут загружаться вместе с данным модулем.
extrn имя: тип - описывает идентификатор, определенный в другом модуле и описанный там в операторе public.
Тип для данных: byte, word, dword
Тип для процедур: near, far

include имяфайла - вставка в текущий файл текста из файла

Слайд 153 Пример связи модулей по данным
1 модуль:
public ABC
ABC

Пример связи модулей по данным 1 модуль: public ABCABC dw 1234h2 модуль:extrn ABC:word………..mov ax,ABC

dw 1234h

2 модуль:
extrn ABC:word
………..
mov ax,ABC


Слайд 154 Директивы данных. 6. Директива управления трансляцией



end имя_программы

Директивы данных. 6. Директива управления трансляцией				end имя_программы

Слайд 155 Директивы управления листингом
page [число строк] [число столбцов]

Директивы управления листингом	page [число строк] [число столбцов]    10-255,

10-255, 57

60-132, 80
title текст1

subttl текст2

Слайд 156 Лекция №13
Возможности макросов.
Основные понятия.
Классификация директив макросов.

Лекция №13Возможности макросов.Основные понятия.Классификация директив макросов.

Слайд 157 Возможности макросредств
Исходный

Возможности макросредств   Исходный   Макроопределение Макрорасширение

Макроопределение Макрорасширение

модуль ABC
test.asm в test.asm в test.asm




A
B
C
ABC
D


E
F

A
B
C
E
F
D


Слайд 158 Возможности макросредств

Исходный

Возможности макросредств   Исходный   Макроопределение Макрорасширение

Макроопределение Макрорасширение

модуль Select x
test.asm в test.asm в test.asm




A
B
Select 0
C
D
Select 1

E
if x = 0
F
еnd
if x = 1
G
end

A
B
E
F
C
D
E
G


Слайд 159 Основные понятия макросов
Поименованный набор операторов ассемблера называется макрокомандой.
Группа

Основные понятия макросовПоименованный набор операторов ассемблера называется макрокомандой.Группа команд, определяющая действие

команд, определяющая действие макрокоманды, называется макроопределением.
Процесс включения в исходный

текст программы команд из макроопределения называется макрорасширением или макрогенерацией.

Слайд 160 Этапы использования макросов
Определение макрокоманды.
Вызов макрокоманды.

Этапы использования макросовОпределение макрокоманды. Вызов макрокоманды.

Слайд 161 Определение макрокоманды
Формат:
имя MACRO список_формальных_параметров
тело макроопределения
ENDM
Список_формальных_параметров состоит из

Определение макрокомандыФормат:имя MACRO список_формальных_параметров тело макроопределенияENDMСписок_формальных_параметров состоит из элементов вида:имя_формального_аргумента [тип]

элементов вида:
имя_формального_аргумента [тип] где тип:
:REQ – для

параметров, задаваемых явно;
=<строка> для стандартного значения параметра.

Слайд 162 Примеры прототипа макроса

1. ADD_Word MACRO OP1:REQ,OP2:REQ,SUM

2.

Примеры прототипа макроса1. ADD_Word MACRO  OP1:REQ,OP2:REQ,SUM2. ADD_Word MACRO  OP1,OP2,SUM=dx

ADD_Word MACRO OP1,OP2,SUM=dx


Слайд 163 Вызов макрокоманды
Вызов макрокоманды осуществляется по имени макроса с

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

указанием списка фактических параметров.

Процесс замены формального параметра соответствующим фактическим

значением при макрорасширении называется подстановкой аргументов.



Слайд 164 Пример: сложение двух значений размером в слово
Определение:
ADD_Word

Пример: сложение двух значений размером в словоОпределение:	 ADD_Word MACRO  OP1,OP2,SUM

MACRO OP1,OP2,SUM

MOV AX,OP1
ADD AX,OP2
MOV SUM,AX
ENDM
Макрокоманда:
ADD_Word BX,CX,DX
Макрорасширение:
MOV AX,BX
ADD AX,CX
MOV DX,AX


Слайд 165 Продолжение примера
Второй вариант макрокоманды:
ADD_Word price, tax, cost
Макрорасширение:
MOV

Продолжение примераВторой вариант макрокоманды:	 ADD_Word price, tax, costМакрорасширение:	MOV ax, price	ADD ax, tax	MOV cost, ax

ax, price
ADD ax, tax
MOV cost, ax


Слайд 166 Классификация директив макросов
1) директивы общего назначения:
MACRO, ENDM,

Классификация директив макросов1) директивы общего назначения: MACRO, ENDM, LOCAL2) директивы повторения:

LOCAL
2) директивы повторения: REPT, IRP, IRPC
3) условные: IF, IFDEF,

IFDIF, IFIDN, IFB, IFNB
4) выхода: EXITM
5) управления листингом: LALL, SALL, XALL

Слайд 167 1. Директивы общего назначения
аaa macro bbb

1. Директивы общего назначенияаaa macro bbb   local next

local next

push cx
mov cx,bbb
………………….. ; группа команд
next: loop next
pop cx
endm

Слайд 168 Вызов макроса
Макрокоманда:
aaa 100
Макрорасширение:
push cx

Вызов макросаМакрокоманда:aaa 100Макрорасширение:push cx   mov cx,100…………………..  ; группа

mov cx,100
………………….. ; группа команд
??0001: loop

??0001
pop cx


Слайд 169 Лекция №14
Директивы повторения.
Условные директивы.
Макрооперации.

Лекция №14Директивы повторения.Условные директивы.Макрооперации.

Слайд 170 2. Директивы повторения
REPT выражение
………
ENDM
Пример:

2. Директивы повторенияREPT выражение	………  ENDMПример: зарезервировать L байтов и присвоить

зарезервировать L байтов и присвоить им знач-я от 1

до L.
ALLOCATE MACRO TLABEL, L
TLABEL EQU THIS BYTE
VALUE = 0
REPT L
VALUE = VALUE+1
DB VALUE
ENDM
ENDM


Слайд 171 Использование макрокоманды allocate
Вызов:
.data
Allocate table,40
Макрорасширение в точке вызова:

Использование макрокоманды allocateВызов:.dataAllocate table,40Макрорасширение в точке вызова:

tablе EQU THIS BYTE
VALUE = 0
VALUE = VALUE+1
DB 1
VALUE = VALUE+1
DB 2
……………………………………………
VALUE = VALUE+1
DB 40

Слайд 172 Директивы повторения
IRP параметр ,
………
ENDM
Пример

Директивы повторенияIRP параметр ,	………  ENDMПример создания таблицы из четырех слов:

создания таблицы из четырех слов:
.data

IRP ABC ,<1,2,3,4>
DW ABC *ABC
ENDM


Слайд 173 Расширение макроса для создания таблицы из четырех слов
.data
DW

Расширение макроса для создания таблицы из четырех слов.dataDW 1 *1 DW

1 *1
DW 2 *2
DW 3 *3
DW 4 *4



Слайд 174 Директивы повторения
IRPC параметр,
Пример: IRPC RG,

Директивы повторенияIRPC параметр,Пример: IRPC RG, 	    PUSH RG&X

PUSH RG&X

ENDM
Макрорасширение : PUSH AX
PUSH BX
PUSH CX
PUSH DX

Слайд 175 3. Условные директивы
IF задает начало условно ассемблируемого блока

3. Условные директивыIF задает начало условно ассемблируемого блока , если истинно

, если истинно или имеет ненулевое значение.
Формат:
IF
…………….
ENDIF

В

выражении можно использовать операции:
EQ, NE, GT, GE, LT, LE


Слайд 176 Примеры вызова процедуры ReadBuf при DoBuf ≠ 0
1.

Примеры вызова процедуры ReadBuf при DoBuf ≠ 01. Без расширения оператора

Без расширения оператора условия
.data
BufNum dw 5
DoBuf db 0
.code
………
if

DoBuf
mov ax, BufNum
call ReadBuf
endif
……..

Слайд 177 Примеры вызова процедуры ReadBuf при DoBuf ≠ 0
2.

Примеры вызова процедуры ReadBuf при DoBuf ≠ 02. С расширением условного

С расширением условного оператора
BufNum dw 5
DoBuf db 1
.code
………
if

DoBuf расширяется в:
mov ax, BufNum mov ax, 5
call ReadBuf call ReadBuf
endif
……..

Слайд 178 Условные директивы IFB , IFNB
Операторы альтернативной обработки

Условные директивы IFB , IFNB Операторы альтернативной обработки пустых операторов:IFB IFNB

пустых операторов:
IFB
IFNB

Параметр всегда задается в угловых скобках

и определяет имя формального аргумента макроса.

Слайд 179 Примеры условных директив
Пример макроопределения:
PRINT_T MACRO MSG
IFB
MOV SI,

Примеры условных директивПример макроопределения:PRINT_T MACRO MSG	IFB 		MOV SI, DEFMSG	ELSE		MOV SI, MSG	ENDIF		CALL

DEFMSG
ELSE
MOV SI, MSG
ENDIF
CALL SHOW_T
ENDM
………..
DEFMSG db ‘no’


макрокоманда:
PRINT_T ‘y’
макрорасширение:
MOV SI, ‘y’
SHOW_T
макрокоманда:
PRINT_T


макрорасширение:
MOV SI, ‘no’
SHOW_T




Слайд 180 Пример извлечения параметров из стека
POPREGS MACRO REG1, REG2
IFNB

Пример извлечения параметров из стекаPOPREGS MACRO REG1, REG2	IFNB 		POP REG1	ENDIF	IFNB 		POP


POP REG1
ENDIF
IFNB
POP REG2
ENDIF
ENDM

Вызов и расширение:
1) POPREGS ax
POP ax
2) POPREGS ,bx
POP bx
3) POPREGS ax, bx
POP ax
POP bx

Слайд 181 Условные директивы IF1, IF2, IFDEF
IF1
IF2
Пример: IF1

Условные директивы IF1, IF2, IFDEF IF1IF2Пример: IF1 INCLUDE TEXTMACRO.TXTАссемблирование, если символическое

INCLUDE TEXTMACRO.TXT

Ассемблирование, если символическое имя определено:
IFDEF символическое имя
Пример: IFDEF

SIZE
BUF db SIZE DUP(?)
endif


Слайд 182 Условные директивы IFDIF, IFIDN
Ассемблирование, если параметры различны:
IFDIF

Условные директивы IFDIF, IFIDNАссемблирование, если параметры различны: IFDIF Ассемблирование, если параметры тождественны:IFIDN



Ассемблирование, если параметры тождественны:
IFIDN


Слайд 183 Макрооперации
& - операция замещения
;; -

Макрооперации& - операция замещения  ;; - подавление комментария% - вычисление

подавление комментария
% - вычисление выражения
!

- операция литерального ввода символа
<> - операция литерального ввода строки

Слайд 184 Макрооперация замещения
1. Операция замещения
Формат: &

Макрооперация замещения1. Операция замещения  Формат: & имя параметра	Пример:makemsg MACRO str,

имя параметра
Пример:
makemsg MACRO str, n
msg&n db

‘&str’
endm

Вызов макроса:
makemsg <Введите значение:>,5
Расширение:
msg5 db ‘Введите значение:’

Слайд 185 Макрооперации
3. Вычисление выражения
Формат: %выражение
Пример:

Макрооперации 3. Вычисление выражения Формат:  %выражение	Пример: makemsg ,%3+5 4. Операция

makemsg ,%3+5

4. Операция литерального ввода символа
Формат:

!символ
Пример: makemsg <нельзя вводить число!>100>,3

5. Операция литерального ввода строки
Формат: <строка>

Слайд 186 Лекция №15
Директивы управления листингом.
Упрощенные директивы TASM.
Модели памяти.
Этапы разработки

Лекция №15Директивы управления листингом.Упрощенные директивы TASM.Модели памяти.Этапы разработки программы.Отладчик Turbo Debugger (td).

программы.
Отладчик Turbo Debugger (td).


Слайд 187 Директивы управления листингом
lall;
xall;
sall.

Директивы управления листингомlall;xall;sall.

Слайд 188 Упрощенные директивы tasm
model [модификатор] модель памяти [имя кодового

Упрощенные директивы tasm	model [модификатор] модель памяти [имя кодового сегмента]Модификатор: use16, use32,

сегмента]
Модификатор: use16, use32, dos
Tasm создает идентификаторы: @code, @data, @stack,

….
Упрощенные директивы определяют сегменты:
.code - кода
.stack - стека
.data - инициированных данных типа near
.fardata - инициированных данных типа far
.const – постоянных данных
.data? - неинициированных данных типа near


Слайд 189 Модели памяти
tiny
small
medium
compact
large
huge

Модели памятиtinysmallmediumcompactlargehuge

Слайд 190 Сегменты для модели памяти




Сегменты для модели памяти

Слайд 191 Порядок выполнения программы на ассемблере
tasm имя_исх._модуля

Порядок выполнения программы на ассемблереtasm имя_исх._модуля [, имя_объектного_модуля]	[, имя_lst] [, имя_crf]

[, имя_объектного_модуля]
[, имя_lst] [, имя_crf] [опции]
tasm имя ,

, ,
tasm имя /l /c
tlink список объектных модулей [, имя_exe_файла]
[, имя_ map_файла] [, список lib_файлов] [опции]
debug или td
Для td:
tasm /zi имя_исходного модуля
tlink /v имя_объектного модуля

Слайд 192 Этапы разработки программы на ассемблере. 1. Постановка и формулировка

Этапы разработки программы на ассемблере. 1. Постановка и формулировка задачи	Назначение и

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

входных и выходных данных;
ограничения и допущения на исходные и выходные данные.

Слайд 193 Этапы разработки программы на ассемблере. 2. Проектирование

формулировка

Этапы разработки программы на ассемблере. 2. Проектирование 	формулировка ассемблерной модели задачи;выбор

ассемблерной модели задачи;
выбор метода реализации;
разработка алгоритма реализации;
разработка структуры программы

в соответствии с моделью памяти.

Слайд 194 Этапы разработки программы на ассемблере. 3. Кодирование

уточнение структуры

Этапы разработки программы на ассемблере. 3. Кодированиеуточнение структуры данных и определение

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

составление предварительного описания программы.

Слайд 195 Этапы разработки программы на ассемблере. 4. Отладка и

Этапы разработки программы на ассемблере. 4. Отладка и тестированиесоставление тестов для

тестирование

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

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


Слайд 196 Этапы разработки программы на ассемблере. 5. Эксплуатация и

Этапы разработки программы на ассемблере. 5. Эксплуатация и сопровождениенастройка программы на

сопровождение

настройка программы на конкретные условия использования;
обучение пользователей работе с

программой;
сбор сведений о сбоях в работе программы;
модификация программы.


Слайд 197 Отладчик Turbo Debugger (td)
Для работы в Turbo Debugger

Отладчик Turbo Debugger (td)Для работы в Turbo Debugger (td) необходимо создать

(td) необходимо создать загрузочный модуль:
tasm /zi имя
tlink /v имя
Управление

работой в отладчике ведется посредством меню двух типов:
глобальное (вызов по F10);
локальное (вызов по Alt-F10 или правой кнопкой мыши).

Слайд 198 Запуск программы на выполнение
Используется один из четырех режимов:
безусловное

Запуск программы на выполнениеИспользуется один из четырех режимов:безусловное выполнение (F9);по шагам:

выполнение (F9);
по шагам: а) F7: Run|Trace into - c пошаговым

выполнением процерур и прерываний; б) F8: Run|Trace over - процеруры и прерывания выполняются как одна команда;
до текущего положения курсора (F4);
с установкой точек прерывания (breakpoints).


Слайд 199 Установка точек прерывания
Сначала устанавливаются точки прерывания курсором и

Установка точек прерыванияСначала устанавливаются точки прерывания курсором и F2, затем – F9.Прервать выполнение программы – Ctrl+F2

F2,
затем – F9.
Прервать выполнение программы – Ctrl+F2


Слайд 200 Подсистема ввода/вывода

Подсистема ввода/вывода

Слайд 201 Шинная организация ввода/вывода

Шинная организация ввода/вывода

Слайд 202 Канальная организация ввода/вывода

Канальная организация ввода/вывода

  • Имя файла: lektsii-po-programmirovaniyu-na-assemblere.pptx
  • Количество просмотров: 231
  • Количество скачиваний: 0