Перевод документации по MASM для MS-DOS (перевод ИНЭУМ)
Author(s): Microsoft
Publisher: Эврика
Year: 1990
Language: Russian
Pages: 333
City: Moscow
Tags: MASM; Assembler; 8086; MS-DOS
Аннотация ......Page 7
1.1 Назначение ......Page 8
1.2.1 Отличительные особенности микропроцессоров семейства 8086 ......Page 9
1.2.2 Режим реальной адресации и режим с защитой адресации ......Page 10
1.3 Сегментные адреса ......Page 11
1.4 Использование регистров семейства 8086 ......Page 12
1.4.2 Регистры общего назначения ......Page 15
1.4.4 Регистр флагов ......Page 17
1.5 Работа микропроцессора 80386 под управлением МДОС ......Page 20
1.6 Правила, используемые в описании языка ......Page 21
Главл 2. Элементы языка ......Page 23
2.1 Символические имена ......Page 24
2.1.1 Константы ......Page 25
2.1.1.3 Строковые константы ......Page 26
2.1.1.4 Действительные константы ......Page 27
2.1.2 Метки ......Page 28
2.1.3 Переменные ......Page 29
2.2.1 Ссылки вперед на метки ......Page 30
2.2.2 Ссылки вперед к переменным ......Page 32
2.3.1.1 Арифметические операторы ......Page 33
2.3.1.3 Оператор индекса ......Page 35
2.3.1.5 Битовые логические операторы ......Page 37
2.3.2 Операторы отношения ......Page 38
2.3.3 Оператор модификации сегмента ......Page 40
2.3.4.1 Оператор (PTR) ......Page 41
2.3.4.2 Оператор SHORT ......Page 42
2.3.4.4 Операторы HIGH и LOW ......Page 43
2.3.5.1 Оператор SEG ......Page 44
2.3.5.2 Оператор OFFSET ......Page 45
2.3.5.3 Оператор .TYPE ......Page 47
2.3.5.4 Оператор TYPE ......Page 48
2.3.5.5 Оператор LENGTH ......Page 49
2.3.6 Специальные операторы обработки записей ......Page 50
2.3.6.2 WIDTH ......Page 51
2.3.7 Приоритет операций ......Page 52
3.1 Псевдокоманды, определяющие подмножества команд, распознаваемых MASM ......Page 54
3.2 Определение структуры сегментов ......Page 56
3.2.1.1 Псевдокоманда DOSSEG ......Page 57
3.2.1.2 Соглашение МДОС о порядке расположения сегментов ......Page 58
3.2.1.3 Псевдокоманда .MODEL ......Page 59
3.2.2 Псевдокоманды .CODE, .DATA, .DATA?, .FARDATA, .FARDATA?, .CONST и .STACK ......Page 61
3.2.3 Предопределенные имена ......Page 64
3.2.4 Имена сегментов по умолчанию ......Page 68
3.2.5 Полное определение сегментов ......Page 71
3.2.6 Псевдокоманда GROUP ......Page 77
3.2.7 Псевдокоманда ASSUME ......Page 80
3.2.8 Инициализация сегментных регистров ......Page 81
3.3.1 Псевдокоманда DB - определить байт ......Page 84
3.3.2 Псевдокоманда DD - определить двойное слово ......Page 85
3.3.3 Псевдокоманда DF - определить длинное слово ......Page 86
3.3.4 Псевдокоманда DQ - определить два двойных слова ......Page 88
3.3.5 Псевдокоманда DT - определить дссять байтов ......Page 89
3.3.6 Псевдокоманда DW - определить слово ......Page 90
3.3.7 Многократная инициализация. Оператор DUP ......Page 91
3.3.8 Переменные-указатели ......Page 93
3.3.9.2 Инициализация и размещение действительных переменных ......Page 94
3.3.9.3 Выбор формата действительных чисел ......Page 95
3.4 Псевдокоманда LABEL ......Page 98
3.5 Использование счетчика адреса ......Page 99
3.5.1 Псевдокоманда ALIGN ......Page 100
3.5.2 Псевдокоманда ORG ......Page 101
3.6 Общие сведения о записях ......Page 102
3.6.1 Псевдокоманда RECORD ......Page 103
3.6.2 Выделение памяти для записей и инициализации ......Page 105
3.6.3 Использование операндов-записей ......Page 108
3.6.4 Использование полем записи в качестве операндов ......Page 109
3.7.1 Псевдокоманда STRUC ......Page 112
3.7.2 Выделение структуры для структур и инициализация ......Page 114
3.7.3 Использование структурных операндов ......Page 115
3.8.1 Псевдокоманда PROC ......Page 117
3.8.2 Локальные переменные ......Page 122
3.8.3 Область действия переменных ......Page 124
3.9.1 Псевдокоманда PUBLIC ......Page 125
3.9.2 Псевдокоманда EXTRN ......Page 126
3.9.3 Псевдокоманда COMM ......Page 129
3.9.4 Псевдокоманда INCLUDELIB ......Page 133
3.11 Псевдокоманда .RADIX ......Page 135
3.12 Псевдокоманда COMMENT (комментарий) ......Page 136
3.13 Псевдокоманда END ......Page 137
3.14 Управление трансляцией и условное асемблирование ......Page 138
3.14.1.1 Проверка выражений с помощью псевдокоманд IF и IFE ......Page 139
3.14.1.2 Проверка проходов транслятора с помощью псевдокоманд IF1 и IF2 ......Page 140
3.14.1.4 Проверка макропараметров с помощью псевдокоманд IFB и IFNB ......Page 141
3.14.1.5 Сравнение макропараметров с помощью псевдокоманд IFIDN и IFDIF ......Page 142
3.14.1.6 Псевдокоманда ELSEIF ......Page 143
3.14.2.1 Генерация безусловных ошибок с помощью псевдокоманд .ERR, .ERR1 И .ERR2 ......Page 145
3.14.2.2 Проверка выражений с помощью псевдокоманд .ERRE и .ERRNZ ......Page 146
3.14.2.3 Проверка наличия определения символических имен с помощью псевдокоманд .ERRDEF и .ERRNDEF ......Page 147
3.14.2.4 Проверка макропараметров с помощью псевдокоманд .ERRB и .ERRNB ......Page 148
3.14.2.5 Сравнение макроаргументов с помощью псевдокоманд .ERRIDN и .ERRDIF ......Page 149
3.15.1.1 Псевдокоманда EQU для числовых констант ......Page 150
3.15.1.2 Псевдокоманда EQU для строковых констант ......Page 151
3.15.2 Псевдокоманда = ......Page 152
3.15.3.1 Псевдокоманда SUBSTR ......Page 153
3.15.3.3 Псевдокоманда SIZESTR ......Page 154
3.15.3.4 Псевдокоманда INSTR ......Page 155
3.16.1 Макрокоманды и псевдокоманды повторений блоков предложений ......Page 158
3.16.2.1 Определение макрокоманд ......Page 163
3.16.2.2 Вызов макрокоманд ......Page 164
3.16.3 Псевдокоманда LOCAL ......Page 165
3.16.4 Псевдокоманда PURGE ......Page 166
3.16.5 Псевдокоманды повторений блоков предложений ......Page 167
3.16.5.2 Псевдокоманда IRP ......Page 168
3.16.5.3 Псевдокоманда IRPC ......Page 169
3.16.7 Псевдокоманда EXITM ......Page 170
3.16.8.1 Специальный макрооператор амперсанд (&) ......Page 171
3.16.8.2 Макрооператор угловые скобки < > ......Page 173
3.16.8.3 Специальный макрооператор восклицательный знак (!) ......Page 174
3.16.8.4 Специальный макрооператор процент (%) ......Page 175
3.16.8.5 Специальный макрооператор двойная точка с запятой (;;) ......Page 178
3.16.9 Псевдокоманда INCLUDE ......Page 179
3.17.1 Псевдокоманды .CREF и .XCREF ......Page 180
3.17.2 Псевдокоманды .LALL, .SALL, .XALL ......Page 181
3.17.3 Псевдокоманды .LIST, .XLIST ......Page 182
3.17.5 Псевдокоманда PAGE ......Page 183
3.17.6 Псевдокоманда SUBTTL ......Page 184
3.17.8 Псевдокоманды .LFCOND, .SFCOND, .TFCOND ......Page 185
3.17.8.3 Псевдокоманда .TFCOND ......Page 186
Глава 4. Режимы адресации ......Page 188
4.1 Использование непосредственных операндов ......Page 189
4.2 Использование регистровых операндов ......Page 190
4.3.1 Операнды прямой адресации ......Page 191
4.3.2 Косвенные операнды в памяти ......Page 193
4.3.3 Косвенные операнды 80386 ......Page 197
5.1.1 Копирование данных ......Page 201
5.1.2 Обмен данными (XCHG) ......Page 202
5.1.3 Перекодировка даннык (XLAT) ......Page 203
5.1.4 Передача флагов (LAHF, SANF) ......Page 204
5.2.1 Расширение знаковых значений (CBW, CWD, CWDE, CDQ) ......Page 205
5.2.3 Передача и расширение значений (MOVSX, MOVZX) ......Page 206
5.3.1 Загрузка указателей типа NEAR (LEA) ......Page 207
5.3.2 Загрузка указателей типа FAR (LDS, LES) ......Page 208
5.4.1 Работа со стеком (PUSH, POP) ......Page 210
5.4.2 Использование стека ......Page 213
5.4.4 Сохранение содержимого всех общих регистров в стеке ......Page 214
5.5 Передача данных в порты и из них (INT, OUT) ......Page 215
6.1 Сложение ......Page 217
6.1.1 Непосредственное сложение значений ......Page 218
6.1.2 Использование команды ADC ......Page 219
6.2.1 Непосредственное вычитание значений ......Page 220
6.2.2 Использование команды BB ......Page 221
6.3 Умножение ......Page 222
6.4 Деление ......Page 225
6.5 Вычисления с двоично-десятичными числами ......Page 226
6.5.1 Неупакованные двоично-десятичные числа ......Page 227
6.5.2 Упакованные двоично-десятичные числа ......Page 230
6.6 Логические команды над разрядами ......Page 232
6.6.1 Команда AND ......Page 233
6.6.3 Команда XOR ......Page 234
6.6.4 Команда NOT ......Page 235
6.7 Поиск установленных разрядов ......Page 236
6.8 Сдвиг и циклический сдвиг разрядов ......Page 237
6.8.1 Умножение и деление на константы ......Page 240
6.8.3 Изменение масок ......Page 241
6.8.5 Сдвиг группы разрядов ......Page 242
7.1.1 Безусловный переход ......Page 244
7.1.2 Условные переходы ......Page 246
7.1.2.1 Сравнения и переходы ......Page 247
7.1.2.2 Переход в зависимости от состояния флага ......Page 250
7.1.2.3 Проверка разрядов и переходов ......Page 252
7.1.2.4 Тестирование и установка разрядов ......Page 253
7.2 Создание циклов ......Page 255
7.3 Условная установка байтов ......Page 258
7.4.1 Вызов процедур ......Page 259
7.4.2 Определение процедур ......Page 260
7.4.3 Передача аргументов через стек ......Page 261
7.4.4 Использование локальных переменных ......Page 263
7.4.5 Установка кадра стека ......Page 265
7.5 Использование прерываний ......Page 267
7.5.1 Вызов прерываний ......Page 268
7.5.2 Определение и переопределение программ обработки прерываний ......Page 270
7.6 Проверка границ областей памяти ......Page 272
Глава 8. Команды обработки строк (массивов) ......Page 274
8.1 Подготовка операций со строками ......Page 275
8.2 Передача строк ......Page 278
8.3 Сканирование строк ......Page 280
8.4 Сравнение строк ......Page 281
8.5 Заполнение строк ......Page 283
8.6 Загрузка значений из строк ......Page 284
8.7 Ввод-вывод строк в порты ......Page 285
9.1 Архитектура сопроцессора ......Page 287
9.1.1 Регистры данных сопроцесора ......Page 288
9.1.2 Регистры управления сопроцессором ......Page 289
9.2 Эмуляторы арифметического сопроцессора ......Page 290
9.3 Использование команд сопроцессора ......Page 291
9.3.1 Использование неявно заданных операндов в форме классического стека ......Page 292
9.3.2 Использование операндов в памяти ......Page 293
9.3.3 Определение регистровых операндов ......Page 294
9.4 Координация доступа к памяти ......Page 295
9.5.1 Пересылка данных в или из регистров ......Page 297
9.5.2 Загрузка констант ......Page 301
9.5.3 Передача управляющих данных ......Page 302
9.6 Выполнение арифметических вычислений ......Page 303
9.6.1 Арифметические команды ......Page 304
9.7 Управление потоком команд сопроцессора ......Page 311
9.7.1 Сравнение операндов для управления потоком программ ......Page 312
9.7.2 Проверка управляющих флагов ......Page 315
9.8 Использование трансцендентных команд ......Page 316
9.9 Управление сопроцессором ......Page 318
10.1 Команда NOP ......Page 320
10.2.4 Блокировка доступа к интерфейсу ......Page 321
10.3 Команды управления процессором в режиме с защитой ......Page 322
10.4 Команды управления процессором 80386 ......Page 323
Приложение. Зарезервированные слова ......Page 325
Литература ......Page 326