"Роберт Джордайн. Справочное пособие программиста - 2 (ассемблер, операционная система MS DOS)" - читать интересную книгу автораболее просто. Напоминаем, что нельзя забывать о восстановлении
первоначального значения в порте B. IN AL,61H ;получаем значение из порта B OR AL,10000000B ;устанавливаем бит 7 в 1 OUT 61H,AL ;заменяем байт IN AL,60H ;получаем значение из порта A MOV CL,6 ;подготовка для сдвига AL SHR AL,CL ;сдвигаем 2 старших бита на 6 позиций INC AL ;начинаем счет с 1, а не с 0 MOV NUM_DRIVES,AL ;получаем число накопителей IN AL,61H ;подготовка к восстановлению порта B AND AL,01111111B ;сбрасываем бит 7 OUT 61H,AL ;восстанавливаем байт .h3 1.1.2 Определение типа IBM PC. ---------------------------------- Имеются проблемы совместимости между различными типами IBM PC. Для того чтобы программа могла работать на любом из IBM PC, ис- пользуя все его возможности, необходимо чтобы она могла опреде- лить тип машины, в которую она загружена. Эта информация содер- жится во втором с конца байте памяти по адресу FFFFE в ROM-BIOS, с использованием следующих ключевых чисел. PC FF XT FE PCjr FD AT FC Высокий уровень. В Бейсике надо просто использовать PEEK для чтения значения: 100 DEF SEG = &HF000 'указываем на верхние 64K памяти 110 X = PEEK(&HFFFE) 'читаем второй с конца байт 120 IF X = &HFD THEN ... '... тогда это PCjr Низкий уровень. В языке ассемблера: ;--- Определение типа компьютера: MOV AX,0F000H ;указывает ES на ПЗУ MOV ES,AX MOV AL,ES:[0FFFEH] ;получаем байт CMP AL,0FDH ;это PCjr? JE INITIALIZE_JR ;переходим на инициализацию |
|
|