"Роберт Джордайн. Справочное пособие программиста - 2 (ассемблер, операционная система MS DOS)" - читать интересную книгу автора

Средний уровень.

Прерывание 11H BIOS возвращает байт статуса оборудования в AX.
На входе ничего подавать не надо. В примере определяется число
дисковых накопителей.

; ---получение числа дисковых накопителей:
INT 11H ;получаем байт статуса
TEST AL,0 ;имеются накопители?
JZ NO_DRIVES ;переход, если нет
AND AL,1100000B ;выделяем биты 5-6
MOV CL,5 ;подготовка к сдвигу регистра
SHR AL,CL ;сдвиг вправо на 5 битов
INC AL ;добавляем 1, т.к. отсчет идет с 1

Низкий уровень.

Ассемблерная программа работает так же, как и программа на
Бейсике. В примере читается информация о конфигурации для AT,
определяя установлен ли математический сопроцессор:

MOV AL,14H ;номер регистра
OUT 70H,AL ;посылаем запрос
IN AL,71H ;читаем регистр
TEST AL,10B ;проверяем бит 1
JZ NO_COPROCESSOR ;если не установлен, то сопроцессора нет


.h3 1.1.7 Ревизия количества памяти.
------------------------------------

Вопрос: "Сколько имеется памяти?",- может иметь три смысла.
О каком количестве памяти сообщают переключатели, установленные
на системной плате? Сколько микросхем памяти реально установлено
в машине? И, наконец, сколько остается свободной памяти, которую
DOS может использовать для выполнения Ваших программ? Машина
может иметь 10 банков памяти по 64K, но переключатели могут ука-
зывать на наличие только 320K, оставляя половину памяти для ка-
ких-либо специальных целей. А как может Ваша программа узнать,
сколько из доступных 320K она может использовать, учитывая, что
другое программное обеспечение может быть загружено резидентным в
верхнюю или нижнюю часть памяти?
Ответ на каждый вопрос можно получить своим способом. Для PC и
XT установка переключателей может быть просто прочитана через
порт B микросхемы интерфейса с периферией 8255. В пункте [1.1.1]
описано как это делается. BIOS хранит двухбайтную переменную по
адресу 0040:0013, которая сообщает число килобайт используемой
памяти. Для PCjr бит 3 порта 62H (порт C микросхемы 8255) равен
нулю, когда машина имеет добавочные 64K памяти. AT дает особо
полную информацию о памяти. Регистры 15H (младший) и 16H (стар-