Надо написать прогу на паскале которая бы определяла число
подключенных последовательных портов. :flowers:
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.
Спасибо!! :flowers:
если у кого еще есть какие-то соображения на это счет то кидайте тоже, не стесняйтесь!
volvo a что означает такое объявление типа данных- counter: byte absolute $0000:$041?
и что такое shr?
Catty, объявляем counter типа byte, но располагаться он будет не там, где захочет компилятор, а по адресу, который указан после Absolute (то есть, фактически мы говорим компилятору, что все действия, которые программа производит с counter-ом на самом деле производятся с байтом, находящимся по адресу $0000:$0411 - в BIOS)...
А shr - это сдвиг на указанное число бит вправо... Надо же как-то выделить нужные биты из байта... вот и сдвигаем байт так, что нужные биты находятся в крайних справа позициях.
Понятно! Спасибо! :flowers:
А вот мне еще нужно определить объем дополнительной памяти!
Объем дополнительной памяти:
Ячейки 16H и 17H содержат соответственно младший и старший
байты размера дополнительной памяти (расположенной выше 1М) в кило-
байтах.
можно написать data: byte absolute $16:$17, а потом вывесли значение data, или это будет не правильно?
CattyЦитата
Ячейки 16H и 17H содержат соответственно младший и старший байты
Немного не так: Ячейки
17h и
18h содержат, соответственно, младший и старший байты размера дополнительной памяти (расположенной выше границы 1 М) в килобайтах...
Код
var data: word absolute $0000:$0017;
begin
writeln('Дополнительная память:', data)
end.
Мне выводит 2, значит что доп. рамять 2 Кб??
Catty, посмотри внимательно: я написал word а не byte
нам же нужны 2 байта, а это уже Word...
я забыла сменить byte на word .
С word выводит 16386!
это в Кб?
--------
зы Олежик почему я не могу удалит свое сообщение!!??
еще такой вопрос, а почему мы пишем $0000:$0017?почему именно так?
А нам нужны 2 последовательных байта: 17Н (это $0000:$0017) и 18Н (то же, что $0000:$0018), то есть слово (Word), которое начинается здесь: $0000:$0017
offtopЦитата
Олежик почему я не могу удалит свое сообщение!!??
сделал.
Кажеться поняла! :flowers:
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста,
нажмите сюда.