| Справочник программиста на персональном компьютере фирмы IBM | 30 |
Низкий уровень.
Первый пример проверяет число банков памяти по 64K в первых
десяти 64-килобайтных сегментах памяти. Если Вы будете проверять
старшие 6 банков памяти, то имейте ввиду, что имеются видеобуфер,
начиная с B000:0000 (и, возможно, A000:0000) и ПЗУ, начиная с
F000:0000 (и, возможно, C000:0000).
;-проверка каждого банка памяти:
CLI ;запрет аппаратных прерываний
MOV AX,CS ;получаем значение кодового сегмента
AND AX,0FFFH ;сбрасываем старшие 4 бита
MOV ES,AX ;помещаем указатель в ES
MOV DI,0 ;DI считает число банков памяти
MOV CX,10 ;будем проверять 10 банков
MOV BL,'X' ;для проверки используем 'X'
NEXT:
MOV DL,ES:[0] ;сохраняем значение тестируемой ячейки
MOV ES:[0],BL ;помещаем 'X' в эту ячейку
MOV DH,ES:[0] ;читаем тестируемую ячейку
MOV ES:[0],DL ;восстанавливаем значение
CMP DH,'X' ;совпадает с тем, что писали?
JNE GO_AHEAD ;если нет, то банк отсутствует
INC DI ;увеличиваем число банков
GO_AHEAD:
MOV AX,ES ;готовим увеличение указателя
ADD AX,1000H ;указываем на следующие 64K
MOV ES,AX ;возвращаем указатель в ES
LOOP NEXT ;обрабатываем следующий банк
Предыдущая страница 30 Следующая страница
2140663828
|