Помощь - Поиск - Пользователи - Календарь
Полная версия: Порты
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Catty
Надо написать прогу на паскале которая бы определяла число
подключенных последовательных портов. :flowers:
volvo
Catty, насколько я помню, это делается вот так:
Байт по адресу 0000:0411h в первом, втором и третьем битах содержит общее количество установленных COM-портов, а в шестом и седьмом - количество LPT-портов. Отсюда -
Код
var
 counter: byte absolute $0000:$0411;
begin
 writeln('Число установленных COM портов: ',(counter shr 1) and $07);
 writeln('Число установленных LPT портов: ', counter shr 6)
end.
Romtek
Загляни в http://pascal.sources.ru/comm/index.htm - Коммуникации
Catty
Спасибо!! :flowers:
если у кого еще есть какие-то соображения на это счет то кидайте тоже, не стесняйтесь!
Catty
volvo a что означает такое объявление типа данных- counter: byte absolute $0000:$041?
и что такое shr?
volvo
Catty, объявляем counter типа byte, но располагаться он будет не там, где захочет компилятор, а по адресу, который указан после Absolute (то есть, фактически мы говорим компилятору, что все действия, которые программа производит с counter-ом на самом деле производятся с байтом, находящимся по адресу $0000:$0411 - в BIOS)...

А shr - это сдвиг на указанное число бит вправо... Надо же как-то выделить нужные биты из байта... вот и сдвигаем байт так, что нужные биты находятся в крайних справа позициях.
Catty
Понятно! Спасибо! :flowers:
Catty
А вот мне еще нужно определить объем дополнительной памяти!
Объем дополнительной памяти:
Ячейки 16H и 17H содержат соответственно младший и старший
байты размера дополнительной памяти (расположенной выше 1М) в кило-
байтах.
можно написать data: byte absolute $16:$17, а потом вывесли значение data, или это будет не правильно?
volvo
Catty
Цитата
Ячейки 16H и 17H содержат соответственно младший и старший байты

Немного не так: Ячейки 17h и 18h содержат, соответственно, младший и старший байты размера дополнительной памяти (расположенной выше границы 1 М) в килобайтах...
Код
var data: word absolute $0000:$0017;
begin
 writeln('Дополнительная память:', data)
end.
Catty
Мне выводит 2, значит что доп. рамять 2 Кб??
volvo
Catty, посмотри внимательно: я написал word а не byte smile.gif
нам же нужны 2 байта, а это уже Word...
Catty
я забыла сменить byte на word .
С word выводит 16386!
это в Кб?
--------
зы Олежик почему я не могу удалит свое сообщение!!??
Catty
еще такой вопрос, а почему мы пишем $0000:$0017?почему именно так?
volvo
А нам нужны 2 последовательных байта: 17Н (это $0000:$0017) и 18Н (то же, что $0000:$0018), то есть слово (Word), которое начинается здесь: $0000:$0017
Altair
offtop
Цитата
Олежик почему я не могу удалит свое сообщение!!??

сделал.
Catty
Кажеться поняла! :flowers:
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.