
- •Оглавление
- •3. Лабораторная работа №2 54
- •5. Лабораторная работа №4 81
- •7. Лабораторная работа №6 117
- •1. Общие положения
- •1.1. Архитектура микропроцессора Intel 8086 с точки зрения программиста
- •1.2. Организация памяти с точки зрения мп 8086
- •1.4. Общая классификация системы команд мп 8086
- •Команды пересылки данных;
- •Арифметические команды;
- •Мнем_обозначение [операнд1[, операнд2]]
- •1.5. Физические и логические сегменты
- •1.6. Префиксы замены сегментов
- •1.7. Директивы языка ассемблера
- •Директивы управления размещением данных;
- •1.8. Структура ассемблерной программы для мп 8086
- •1.9.1. Директивы управления размещением данных
- •1.9.1.1. Директива struc
- •1.9.1.2. Директива equ
- •1.9.1.3. Директива assume
- •1.10. Пример простейшей программы на ассемблере
- •1.11. Средства компиляции программ на ассемблере и примеры их использования
- •1.11.1. Исполнимый файл типа com
- •1.11.2. Исполнимый файл типа exe
- •1.11.3. Использование транслятора Turbo Assember
- •1.11.4. Использование компоновщика Turbo Linker
- •2. Лабораторная работа №1
- •2.1. Цель работы
- •2.2. Основные теоретические положения
- •2.2.1. Команды пересылки данных
- •2.2.1.1. Команда mov
- •2.2.1.2. Команда xchg
- •2.2.1.3. Команда xlat
- •2.2.1.4. Команда lea
- •2.2.1.5. Команды lds и les
- •2.2.1.6. Команда lahf
- •2.2.1.7. Команда sahf
- •2.2.2. Арифметические команды
- •2.2.2.1. Команда add
- •2.2.2.2. Команда adc
- •Add word ptr n2, ax ; сложение младших 16 бит
- •2.2.2.3. Команда sub
- •2.2.2.4. Команда sbb
- •Sub word ptr n1, ax ; вычитание младших 16 бит
- •2.2.2.5. Команды mul и imul
- •2.2.2.6. Команды div и idiv
- •2.2.2.7. Команда inc
- •2.2.2.8. Команда dec
- •2.2.2.9. Команда neg
- •2.2.2.10. Команда cbw
- •2.2.2.11. Команда cwd
- •2.3. Задание и методические указания к выполнению лабораторной работы
- •2.3.1. Задание на лабораторную работу
- •2.3.2. Методические указания к выполнению работы
- •2.4. Контрольные вопросы
- •2.5. Варианты заданий на лабораторную работу
- •3. Лабораторная работа №2
- •3.1. Цель работы
- •3.2. Основные теоретические положения
- •3.2.1. Команда and
- •3.2.2. Команда or
- •3.2.3. Команда xor
- •3.2.4. Команда not
- •3.2.5. Команда test
- •3.2.6. Команды shl и shr
- •3.2.7. Команды sal и sar
- •3.2.8. Команды rol и ror
- •3.2.9. Команды rcl и rcr
- •3.3. Задание и методические указания к выполнению лабораторной работы
- •3.3.1. Задание на лабораторную работу
- •3.3.2. Методические указания к выполнению работы
- •3.4. Контрольные вопросы
- •3.5. Варианты заданий на лабораторную работу
- •4. Лабораторная работа №3
- •4.1. Цель работы
- •4.2. Основные теоретические положения
- •4.2.1. Цепочечные команды
- •4.2.1.1. Команды movsb и movsw
- •4.2.1.2. Команды stosb и stosw
- •4.2.1.3. Команды cmpsb и cmpsw
- •4.2.1.4. Команды scasb и scasw
- •4.2.1.5. Команды lodsb и lodsw
- •4.2.2. Префиксы повторения
- •4.2.2.1. Префикс повторения rep
- •4.2.2.2. Префиксы повторения repe и repz
- •4.2.2.3. Префиксы повторения repne и repnz
- •4.2.3. Команды условных и безусловных переходов
- •4.2.4. Способы адресации в командах переходов
- •4.2.5. Организация циклов в программах на ассемблере
- •4.2.5.5. Цикл с постусловием
- •4.3. Задание и методические указания к выполнению лабораторной работы
- •4.3.1. Задание на лабораторную работу
- •4.3.2. Методические указания к выполнению работы
- •4.4. Контрольные вопросы
- •4.5. Варианты заданий на лабораторную работу
- •5. Лабораторная работа №4
- •5.1. Цель работы
- •5.2. Основные теоретические положения
- •5.2.1. Организация системы прерываний в ibm pc
- •5.2.2. Понятие вектора прерывания
- •5.2.3. Таблица векторов прерываний
- •5.2.4. Программные прерывания
- •5.2.6. Аппаратные прерывания
- •5.2.7. Сходства и различия аппаратных и программных прерываний
- •5.2.8.Организация обработки прерываний в программах на ассемблере
- •5.2.8.1. Написание процедуры обработки программных прерываний
- •5.2.8.2. Написание процедуры обработки аппаратных прерываний
- •5.2.8.3. Установка вектора прерывания
- •5.2.9. Функции ms-dos 25h и 35h
- •5.2.9.1. Функция dos 25h
- •5.2.9.2. Функция dos 35h
- •5.3. Задание и методические указания к выполнению лабораторной работы
- •5.3.1. Задание на лабораторную работу
- •5.3.2. Методические указания к выполнению работы
- •5.4. Контрольные вопросы
- •5.5. Варианты заданий на лабораторную работу
- •6. Лабораторная работа №5
- •6.1. Цель работы
- •6.2. Основные теоретические положения
- •6.2.1. Данные в формате asciiz
- •6.2.2. Файловый номер и коды возврата
- •6.2.3. Функции dos для работы с файлами
- •6.2.3.1. Функция 3ch
- •6.2.3.2. Функция 3dh
- •6.2.3.3. Функция 3fh
- •6.2.3.4. Функция 40h
- •6.2.3.5. Функция 3eh
- •6.2.3.6. Функция 41h
- •Mov dx, offset FileName ; asciiz-строка
- •6.2.3.7. Функция 42h
- •6.2.3.8. Функция 43h
- •Mov cx, 01h ; атрибута «только для чтения»
- •6.2.3.9. Функция 56h
- •6.2.4. Примеры программ для работы с файлами
- •6.2.5. Функции для работы с каталогами
- •6.2.5.1. Функция 39h
- •6.2.5.2. Функция 3ah
- •6.2.5.3. Функция 47h
- •6.2.5.4. Функция 3bh
- •6.2.6. Поиск файлов по шаблону
- •6.2.6.1. Функция 4eh
- •6.2.6.2. Функция 4fh
- •6.2.6.3. Совместное использование функций 4eh и 4fh
- •6.2.7. Коды ошибок dos
- •6.3. Задание и методические указания к выполнению лабораторной работы
- •6.3.1. Задание на лабораторную работу
- •6.3.2. Методические указания к выполнению работы
- •6.4. Контрольные вопросы
- •6.5. Варианты заданий на лабораторную работу
- •7. Лабораторная работа №6
- •7.1. Цель работы
- •7.2. Основные теоретические положения
- •7.2.1. Определение наличия сопроцессора
- •Fstcw CrtlReg ; чтение управляющего регистра
- •7.2.2. Команды сопроцессора
- •7.2.3. Архитектура сопроцессора с точки зрения программиста
- •Регистр управления
- •Регистр состояния
- •Регистр признаков
- •7.2.3.1. Регистр управления
- •7.2.3.2. Регистр состояния
- •7.2.3.3. Регистр признаков
- •7.2.3.4. Указатель команды
- •7.2.3.5. Указатель операнда
- •7.2.4. Форматы вещественных чисел, используемые сопроцессором
- •7.2.3. Некоторые команды сопроцессора
- •7.2.3.1. Команды пересылки данных и загрузки констант сопроцессора
- •Команда fxch
- •7.2.3.2. Арифметические команды сопроцессора
- •Команда fsqrt
- •Команда fscale
- •Команда fabs
- •Команда fchs
- •Команда fprem
- •7.2.3.3. Команды трансцендентных функций
- •Команда fpatan
- •Команда fptan
- •Команда f2xm1
- •Команда fyl2x
- •Команда fylpxp1
- •7.2.3.4. Команды сравнения данных
- •7.2.3.5. Команды управления сопроцессором
- •Команда finit
- •Команда fstsw
- •Команда fldcw
- •Команда fstcw
- •Fldcw cw ; загрузка регистра управления Команда fclex
- •Команда fsave
- •Команда frstore
- •Команда ffree
- •Команда fnop
- •7.2.4. Примеры решения типовых вычислительных задач
- •7.2.4.1. Вычисление интеграла функции
- •7.2.4.2. Вычисление суммы степенного ряда
- •7.2.4.3. Нахождение корня уравнения методом Ньютона
- •7.3. Задание и методические указания к выполнению лабораторной работы
- •7.3.1. Задание на лабораторную работу
- •7.3.2. Методические указания к выполнению работы
- •7.4. Контрольные вопросы
- •7.5. Варианты заданий на лабораторную работу
- •8. Курсовая работа
- •8.1. Цель работы
- •8.2. Основные теоретические положения
- •8.2.1. Структура резидентной программы
- •8.2.1.1. Стек резидентной части
- •8.2.1.2. Процедура загрузки резидентной части
- •Old_vec dd ? ; здесь будет храниться старое значение
- •8.2.1.3. Примеры простейших резидентных программ типа com
- •8.2.1.4. Примеры простейших резидентных программы типа exe
- •8.2.1.5. Вызов старого обработчика прерывания
- •8.2.1.6. Связь с резидентной частью
- •8.2.1.7. Процедура выгрузки резидентной части
- •Int 21h ; освобождение блока памяти
- •8.2.1.8. Процедура обработки ключей командной строки
- •8.2.2. Пример резидентной программы
- •8.2.3. Функции ms-dos
- •8.2.3.1. Функции ввода-вывода
- •Функция 01h
- •Функция 02h
- •Функция 05h
- •Функция 06h
- •Функция 07h
- •Функция 09h
- •Функция 0ah
- •Функция 0bh
- •Функция 0ch
- •8.2.3.2. Функции управления памятью
- •Функция 48h
- •Функция 49h
- •Mov es, bx ; сегмент блока памяти находится в bx
- •Функция 4ah
- •8.2.3.3. Функции управления процессами
- •Функция 31h
- •Функция 4bh
- •Функция 4bh, подфункция 00h
- •Функция 4bh, подфункция 01h
- •Функция 4bh, подфункция 03h
- •Функция 4ch
- •Функция 4dh
- •Функция 50h
- •Функция 51h
- •8.2.3.4. Функции настройки даты/времени
- •Функция 2ah
- •Функция 2bh
- •Mov dl, 13 ; 13-е число
- •Функция 2сh
- •Функция 2dh
- •8.2.4. Прерывания bios
- •8.2.4.1. Прерывание bios 10h
- •Функция 00h
- •Функция 02h
- •Функция 03h
- •Функция 08h
- •Функция 09h
- •Функция 0ch
- •Функция 0dh
- •Функция 0fh
- •8.2.4.2. Прерывание bios 13h
- •Функция 00h
- •Функция 02h
- •Buf db 512 dup (?) ; буфер для чтения сектора
- •Функция 03h
- •Функция 04h
- •8.2.4.3. Прерывание bios 16h
- •Функция 00h
- •Функция 01h
- •Функция 02h
- •Функция 03h
- •Функция 05h
- •8.2.4.4. Коды ошибок bios
- •8.3. Задание и методические указания к выполнению курсовой работы
- •8.3.1. Задание на курсовую работу
- •8.3.2. Методические указания к выполнению курсовой работы
- •8.4. Содержание отчета
- •8.5. Контрольные вопросы
- •8.6. Варианты заданий на курсовую работу
- •9. Список литературы
Оглавление
1. Общие положения 7
1.1. Архитектура микропроцессора Intel 8086 с точки зрения программиста 7
Регистры данных 7
AX 7
BL 7
Регистры указателей и индексов 7
SP 7
Регистры сегментов 7
CS 7
Указатель инструкций и регистр флагов 8
IP 8
1.2. Организация памяти с точки зрения МП 8086 10
Смещение 1 10
Вычисление 12
BP + SI 12
Базово-индексная 13
1.4. Общая классификация системы команд МП 8086 13
МНЕМ_ОБОЗНАЧЕНИЕ [ОПЕРАНД1[, ОПЕРАНД2]] 15
1.5. Физические и логические сегменты 15
MOV BX, [SI + 2] 16
1.6. Префиксы замены сегментов 16
1.7. Директивы языка ассемблера 17
1.9.1. Директивы управления размещением данных 21
MyVar MyStruc < > 25
MyConst EQU 2394 25
MySegment SEGMENT 28
ASSUME ES:A 29
ASSUME ES:A, DS:B, CS:C 29
1.10. Пример простейшей программы на ассемблере 29
MySegment SEGMENT 32
Ключ 36
Назначение 36
TASM MyProg 36
TASM MyProg, Prog 36
TASM /l /w0 MyProg, Prog, Prog 36
Ключ 38
2. Лабораторная работа №1 39
2.2.1. Команды пересылки данных 39
MOV 0400h, BL 40
XCHG AX, [BX] 41
2.2.1.3. Команда XLAT 41
LEA DX, [BX + SI + 2] 42
MOV DX, BX 42
Примеры 42
LEA DS, [BX + 5] 42
LEA AL, [BP – 1] 42
Примеры 43
2.2.2. Арифметические команды 44
ADD WORD PTR N2, AX ; сложение младших 16 бит 45
MOV AX, WORD PTR N1 + 2 45
2.2.2.3. Команда SUB 45
SUB WORD PTR N1, AX ; вычитание младших 16 бит 46
MOV AX, WORD PTR N2 + 2 46
IDIV Z ; AL := AX div Z 49
NEG AX ; AX = 1 50
MOV AL, 0FEH ; AL = -2 51
3. Лабораторная работа №2 54
4. Лабораторная работа №3 60
4.2.1. Цепочечные команды 60
MOVSB ; B1 := A1, SI := SI+1, DI := DI+1 61
STOSB ; A := AL, DI := DI+1 61
STOSB ; A := AL, DI := DI+1 64
4.2.2. Префиксы повторения 64
MOV SI, OFFSET A 65
5. Лабораторная работа №4 81
5.2.1. Организация системы прерываний в IBM PC 81
5.2.2. Понятие вектора прерывания 82
5.2.3. Таблица векторов прерываний 84
5.2.4. Программные прерывания 84
5.2.6. Аппаратные прерывания 85
5.2.7. Сходства и различия аппаратных и программных прерываний 86
5.2.8.Организация обработки прерываний в программах 87
5.2.9.1. Функция DOS 25H 92
Timer ENDP 92
5.2.9.2. Функция DOS 35H 94
6. Лабораторная работа №5 97
FILENAME DB ‘c:\autoexec.bat’,0 97
6.2.2. Файловый номер и коды возврата 97
6.2.3. Функции DOS для работы с файлами 98
Атрибут 98
Скрытый файл 98
6.2.3.3. Функция 3FH 100
6.2.3.5. Функция 3EH 101
MOV DX, OFFSET FileName ; ASCIIZ-строка 102
INT 21H 103
6.2.3.8. Функция 43H 103
MOV CX, 01H ; атрибута «только для чтения» 103
6.2.5. Функции для работы с каталогами 106
6.2.5.2. Функция 3AH 107
6.2.6. Поиск файлов по шаблону 109
Смещение 110
Описание 110
6.2.6.2. Функция 4FH 110
Неверное окружение 114
Неверный формат 114
7. Лабораторная работа №6 117
7.2.1. Определение наличия сопроцессора 117
FSTCW CrtlReg ; чтение управляющего регистра 120
7.2.2. Команды сопроцессора 120
7.2.3. Архитектура сопроцессора с точки зрения программиста 120
Регистр управления 122
C1 122
Регистр состояния 122
Регистр признаков 122
X 122
7.2.3.2. Регистр состояния 125
7.2.3.3. Регистр признаков 126
7.2.3.4. Указатель команды 126
7.2.3.5. Указатель операнда 126
7.2.4. Форматы вещественных чисел, используемые сопроцессором 127
Мантисса 127
Мантисса 127
Мантисса 127
7.2.3. Некоторые команды сопроцессора 128
7.2.3.1. Команды пересылки данных и загрузки констант сопроцессора 128
Таблица 7.1 - команды передачи данных и загрузки констант сопроцессора. 128
Команда 128
Операнд 128
Назначение 128
FLD1 130
FISTP DWORD PTR B 130
7.2.3.2. Арифметические команды сопроцессора 130
Формы команды 131
Синтаксис 131
Выполняемые 131
7.2.3.3. Команды трансцендентных функций 134
7.2.3.4. Команды сравнения данных 136
Операнд 136
FCOM 136
FCOMP 137
7.2.3.5. Команды управления сопроцессором 137
FLDCW CW ; загрузка регистра управления 140
Команда FFREE 142
Команда FNOP 142
7.2.4. Примеры решения типовых вычислительных задач 142
8. Курсовая работа 151
8.2.1.2. Процедура загрузки резидентной части 155
OLD_VEC DD ? ; здесь будет храниться старое значение 155
8.2.1.3. Примеры простейших резидентных программ типа COM 159
MOV WORD PTR OLD_VEC + 2, AX 159
MOV ES:[BX + 2], CS 159
MOV WORD PTR OLD_VEC + 2, AX 161
MOV ES:[BX + 2], CS 161
8.2.1.4. Примеры простейших резидентных программы типа EXE 161
MOV WORD PTR OLD_VEC + 2, AX 162
MOV WORD PTR ES:[BX + 2], Resident 162
MOV WORD PTR OLD_VEC + 2, AX 163
MOV WORD PTR ES:[BX + 2], Resident 163
8.2.1.5. Вызов старого обработчика прерывания 164
JMP CS:OLD_VEC 164
8.2.1.6. Связь с резидентной частью 164
MOV WORD PTR OLD_2FH + 2, AX 166
MOV ES:[BX + 2], CS 166
8.2.1.7. Процедура выгрузки резидентной части 166
MOV AH, 49H 169
INT 21H ; освобождение блока памяти 169
8.2.1.8. Процедура обработки ключей командной строки 169
8.2.2. Пример резидентной программы 169
8.2.3.1. Функции ввода-вывода 177
MOV DL, ‘*’ 178
8.2.3.2. Функции управления памятью 181
MOV ES, BX ; сегмент блока памяти находится в BX 183
8.2.3.3. Функции управления процессами 184
Функция 31H 184
Адрес строки параметров 186
PATH=C:\DOS 186
Адрес строки параметров 187
INT 21H 188
Значение 188
Описание 188
Нормальное завершение программы 188
JNZ M1 188
Функция 50H 188
MOV BX, CS 189
IRET 189
8.2.3.4. Функции настройки даты/времени 190
INT 21H 190
MOV DL, 13 ; 13-е число 190
MOV AH, 2CH 191
Функция 2DH 191
8.2.4. Прерывания BIOS 191
Функция 03H 193
MOV AH, 03H 193
Функция 0DH 194
MOV CX, 200 ; x = 200 194
INT 10H 195
JC Error 195
Функция 02H 195
BUF DB 512 DUP (?) ; буфер для чтения сектора 196
JC Error 196
Функция 03H 196
Клавиша 198
Ctrl+Shift 198
Alt+Shift 198
INT 16H 198
Код частоты повторения 199
Функция 05H 199
MOV AH, 05H 200
MOV CH, 0 200
Код ошибки 200
Значение 200
8.4. Содержание отчета 202
9. Список литературы 205