Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка1.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.68 Mб
Скачать

Оглавление

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