"П.Нортон "Программно-аппаратная организация компьютера IBM PC"" - читать интересную книгу авторакассетного накопителя. О том, как используются все эти порты, будет
рассказано в главе 11. Монохромный дисплей использует несколько последовательных портов, начиная с порта 944(3В0(16)), а цветной графический - последовательность, начинающуюся с порта 976(3D0(16)). Контролер гибких дисков использует последовательность портов, начиная с порта 1008(3F0(16)), а собственно данные, записываемые на дискету или считываемые с нее, передаются через порт 1013(3F5(16)). Вместе с программой 3.1 для исследования конфигурации памяти, листинги 3.2 и 3.3 показывают программу, объединяющую модули, написанные на Паскале и на ассемблере, которая считывает все порты и сообщает о том, какие из них наиболее вероятно активны. Готовая к запуску версия этой программы имеется на дискете, прилагающейся к этой книге. В отличие от программы обследования памяти эта программа не дает достаточно практичного результата, однако, она может оказаться довольно интересной. Поскольку Бейсик обеспечивает доступ к портам, эту программу можно было бы написать на Бейсике, но тогда для читателя не было бы в ней ничего нового. Вместо этого приведенный пример может послужить хорошим введением в программирование на ассемблере, Паскале и примером объединения программ, написанных на разных языках. Приложение 3.1. Текст программы поиска активного участка памяти (Бейсик). 1010 REM 1020 REM 1030 GOSUB 2000 ' TITLE 1040 GOSUB 3000 ' SEARCH AND DISPLAY 1050 GOSUB 4000 ' RETURN TO DOS 2000 REM 2010 KEY OFF : CLS : WIDTH 80 2020 REM 2030 PRINT " 2040 PRINT " 2050 PRINT 2060 PRINT " 2070 PRINT 2080 PRINT " 2090 PRINT " 2100 PRINT 2999 RETURN 3000 REM 3010 TRUE.% = -1 3020 FALSE.% = 0 3030 IN.MEMORY.% = FALSE.% 3040 FOR PARAGRAPH.! = 0 TO 65535! STEP 64 ' CHECK EACH 1K OF MEMORY 3050 GOSUB 5000 ' CHECK FOR ACTIVE MEMORY 3060 IF (IN.MEMORY.%=FALSE.%) AND (MEMORY.HERE.%=TRUE.%) THEN GOSUB |
|
|