Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на языке Pascal

Выпуск № 039
от 13.09.2002, 17:10

Администратор:
Имя: Sensey
URL: Информационный ресурс
ICQ: 105679124
Украина, Харьков
О рассылке:
Задано вопросов: 61
Отправлено ответов: 173
Активность: 283.6 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Dark_Lord
Статус: Профессиональный
Общий рейтинг: 137.58
[Подробней >>]
Sensey
Статус: Профессиональный
Общий рейтинг: 128.66
URL: Страничка рассылки по Паскаля...
Телефон: +38 (0572) 41-76-04 дом.
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 119.66
[Подробней >>]
 
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 118.39
URL: Пристанище неодинокого программиста
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 61. Здравствуйте уважаемые эксперты. У меня вопрос по port[] и mem[]. 1) Много раз видел как использует... (ответов: 4)

Вопросов: 1, ответов: 4


 Вопрос № 61

Здравствуйте уважаемые эксперты.
У меня вопрос по port[] и mem[].
1) Много раз видел как используется массив mem,
да и сам им пользовался. Там вроде все понятно, кроме одного - где найти инфу
по значениям адресов памяти (т.е. что именно находится в определенной области
памяти, например от mem[A000:0000] до mem[AFFF:FFFF] видеопамять EGA).
2) С port[] так вообще непонятно ничего - это вроде одномерный массив для доступа к портам ЦП.
Но вот я видел как при помощи port программировались мышь и МОДЕМ! А где узнать,
по каким именно значениям что находится???
3) А что значат следующие записи:
var
CrtMode : Byte Absolute $0040:$0049;
Str : String;
StrLen : Byte Absolute Str;
Жду ваших ответов, Zipper.



Вопрос отправлен: 10.09.2002, 02:34
Отправитель: Zipper (zipper@nm.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Dark_Lord

Приветствую Вас, Zipper!
Есть специальные справочники по обеим темам, и есть люди всё это знающие, так что пиши что конкретно интересно, отвечу!
3)
var
CrtMode: Byte Absolute $0040:$0049
Абсолютное(самокорректирующееся значение по вышеуказанному адресу, кстати, там лежит текущий номер видеорежима!
Str : String;
StrLen : Byte Absolute Str;
StrLen так как string в паскале строится так, что первый байт это длинна, а дальше сама строка, то эта переменная будет обозначать длинну строки и самомодифицироваться!

Ответ отправлен: 10.09.2002, 19:15
Отправитель: Dark_Lord


Отвечает Sensey

Здравствуйте, Zipper!
А Tech Help тебе зачем?
Там еще хвалят какой-то интеррапт лист Ральфа Брауна (мне просто ТечХелпа хватает...), поищи, может и там есть
40:49=Текущий активный видеорежим...


Ответ отправлен: 10.09.2002, 10:21
Отправитель: Sensey


Отвечает Ayl

Приветствую Вас, Zipper!
Согласен с экспертами Sensey и Артём Шегеда. Просто дополню насчет Absolute, подозреваю, что именно оно вызвало третий вопрос.
Описание
(1) variable : Type ABSOLUTE xxxx:yyyy;
или
(2) variable : Type ABSOLUTE variable1;
обозначает, что переменная variable будет "размещена" либо по физицескому адресу xxxx:yyyy (сегмент:смещение) в случае (1), либо по адресу, занимаемой переменной variable1 в случае (2). Слово "размещена" взято в кавычки, потому что никакого реального помещения переменной по этому адресу не происходит, просто задается мнемоническое имя для адреса в памяти.
Для CrtMode. Сегмент $0040 зарезервирован для переменных BIOS (не весь, конечно, а только 256 байт). По адресу $0049 находится байт, соответствующий текущему видеорежиму.
Второе описание с absolute - определение длины строки. Переменные строкового типа хранятся в Паскале следующим образом: вначале задается байт, определяющий текущую длину строки, а затем идет сама строка. Длину строки можно также узнать с помощью конструкции Byte (Str [0]), но запись с absolute нагляднее и проще.

Ответ отправлен: 10.09.2002, 13:37
Отправитель: Ayl


Отвечает Артём Шегеда

Здравствуйте, Zipper!

А в чём проблема-то? В хелпе на BP всё это расписано чёрным по циан.
1. Sensey прав - не буду повторяться.
2. Sensey ещё раз прав, но добавлю, что почти все устройства программируются через порты ввода/вывода. И мне не понятно Ваше удивление: "при помощи port программировались мышь и МОДЕМ!" - а как по Вашему они должны программироваться? Кроме того, существует словный массив портов - PortW.
3. CrtMode - Sensey объяснил. Str - ну тут, вроде как, понятно. StrLen - объявляется байтовая переменная, которая хранится в первом байте строки Str. Но если вспомнить формат string, то окажется, что в первом байте строки хранится длина этой строки. То есть, при обращении к переменной StrLen мы обратимся к длине строки. Фактически такое объявление переменной заменяет конструкцию:

var
Str : string;
StrLen : ^byte;
{ ... }
begin
StrLen:=@Str;
WriteLn(StrLen^);
{ ... }
end;

- не правда ли, изврат?

Ответ отправлен: 10.09.2002, 11:34
Отправитель: Артём Шегеда



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (42)
C / C++ (29)
Perl (9)
Delphi (14)
Pascal (25)
Basic / VBA (10)
Java / JavaScript (12)
PHP (8)
MySQL / MSSQL (10)
Пользователю
Windows 95/98/Me (39)
Windows NT/2000/XP (29)
"Железо" (37)
Поиск информации (13)
Администратору
Windows NT/2000/XP (14)
Linux / Unix (16)
Юристу
Гражданское право (10)
Семейное право (6)
Трудовое право (8)
КоАП (5)

Отправить вопрос всем экспертам выбранной рассылки.




be number one Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное