Ассемблер для DOS, Windows и Unix
Более сложные приемы программирования
Блочные устройства
DOS выделяет пространство на диске
в поле буфера запроса со
и 18h позволяют DOS обращаться
Более сложные приемы программирования
Целочисленная арифметика повышенной точности
Часы реального времени и CMOS-память
то же или FFh, если
0Dh только для чтения: регистр
тип второго жесткого диска, если
Циклы
Деление
Деление
Динамик
Драйверы устройств в DOS
код драйвера устройства представляет собой
Джойстик
как все это можно реализовать
Генераторы случайных чисел
push ds push 0040h pop
ax pop edx pop si
Клавиатура
он должен сообщить контроллеру прерываний,
Клавиатура отвечает на все команды,
Команды DSP
По окончании каждого блока будет
в DSP, придется перепрограммировать канал
в звуковую плату int08h_handler proc
системного таймера на новую
Команды инициализации
на этот адрес процедура pic_init
Команды управления
Если бы контроллер был инициализирован
Конечные автоматы
Контроллер DMA
Младшие 16 бит адреса записывают
D4h для записи: регистр маски
asm так, чтобы она использовала
в DSP dsp_write proc near
сообщение об ошибке notopenmsg db
Контроллер прерываний
Локальные переменные
Мультиплексорное прерывание
что такого уровня спецификации совершенно
по первым шестнадцати байтам которой
адрес списка прерываний, состоящего из
Теперь можно написать резидентную программу,
адрес верхнего левого угла окна
Сюда передается управление, если программа
в буфере screen_buffer содержимое области
увеличить DI до начала push
обработчик прерывания INT
сигнатура для резидентных программ amis_sign
сюда передается управление, если все
Обработчики прерываний
Хотя прямое изменение таблицы векторов
сравнить АХ со значениями upper_bound
Параллельный порт
Пассивная резидентная программа
initialize proc near cmp byte
Прежде чем это сделать, заметим,
initialize proc near cmp byte
Передача параметров
Передача параметров отложенным вычислением
Передача параметров по имени
Передача параметров по результату
Передача параметров по ссылке
Передача параметров по возвращаемому значению
Передача параметров по значению
Передача параметров в блоке параметров
Передача параметров в глобальных переменных
Передача параметров в потоке кода
Передача параметров в регистрах
Передача параметров в стеке
Перехват прерываний
Полурезидентные программы
загрузить программу без выполнения mov
запускаемый файл получает среду DOS
выполняет поиск строки от заданного
Последовательный порт
состояние BREAK или ошибка. Сбрасывается
должна быть 1, чтобы работали
следующие четыре директивы определяют, для
эта процедура вызывается при изменении
любое число со старшим битом
Повторная входимость
DOS самый важный обработчик прерываний
Пример вызова DOS из обработчика
Прерывания от внешних устройств
мышь на системах PS используется
как работает перехват прерывания от
в СХ push 0B800h pop
Процедуры и функции
Программирование на уровне портов ввода-вывода
Регистры графического контроллера (03CEh– 03CFH)
четные адреса соответствуют плоскостям 0,
Регистры контроллера атрибутов (03C0h– 03C1h)
Регистры контроллера CRT (03D4h– 03D5H)
Начало вертикального обратного хода луча
BIOS заполняет регистры этого контроллера
переместить начальный адрес на начало
Регистры синхронизатора (03C4h– 03C5h)
Установка нового режима выполняется почти
с настройками режимов x_modes dw
putpixel_x proc near pusha mov
Регистры VGA DAC (03C6h– 03C9h)
для команд строковой обработки mov
Резидентные программы
Символьные устройства
адрес первого байта из той
вызывается только раз при загрузке
к тому, что текст из
и категории устройства не поддерживается
сюда процедура стратегии будет писать
преобразование над буфером cld rot13_loop:
Сложение и вычитание
Сложение и вычитание
Сортировки
к следующему снизу элементу jmp
в качестве примера самый простой
Сравнение
Структуры CASE
Структуры IF.. THEN... ELSE
Таймер
ждущий мультивибратор
для канала 0) 0011011h, то
для команды shld org 100h
Трансцендентные функции
в фигуре по горизонтали SCALE_V
display_picture proc near call move_point
процедура вывода точки на экран
Умножение
Умножение
Видеоадаптеры VGA
Вложенные процедуры
Вложенные процедуры с дисплеями
Вложенные процедуры со статическими ссылками
Внешние регистры контроллера VGA (03C2h – 03CFh)
Вычисления с фиксированной запятой
Вычисления с плавающей запятой
Это уравнение интересно тем, что
текстовый режим int 10h ret
сохранить регистры push bx xor
Выгрузка резидентной программы из памяти
Программа занимает первую свободную функцию
int08h_handler proc far jmp short
do_grab proc near push cs
do_io proc near push cs
адрес флагов занятости DOS io_needed
восстановить старые обработчики прерываний mov
initialize proc near jmp short
и если нас вызвали для
получить адреса флага занятости DOS
сегментный адрес окружения DOS int
В этом примере, достаточно сложном
Взаимодействие между процессами
Эта простота оборачивается сложностью написания
изменить направление движения случайным образом
выводит на экран нашу змейку
обе нити init_threads proc near
переменные для временного хранения save_si
Звуковые платы
Содержание
Fore
kc
.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий