Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 455
от 27.12.2002, 19:50
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 2282 Отправлено ответов: 6877 Активность: 301.3 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
Traish Статус: Опытный Общий рейтинг: 129.71 [Подробней >>] |
Maverick Статус: Профессиональный Общий рейтинг: 139.53 URL: Задачи по ассемблеру Телефон: 89039415024 (BeeLine GSM) [Подробней >>] |
Broken Sword Статус: Профессиональный Общий рейтинг: 127.65 URL: моя рассылка по Protected Mode [Подробней >>] |
Александр Статус: Доверительный Общий рейтинг: 109.09 [Подробней >>] |
Bob Johnson Статус: Профессиональный Общий рейтинг: 152.21 [Подробней >>] |
Gibbel Статус: Профессиональный Общий рейтинг: 108.31 URL: Страничка обо мне и моих друзьях [Подробней >>] |
Ayl Статус: Профессиональный Общий рейтинг: 117.37 [Подробней >>] |
baldr Статус: Профессиональный Общий рейтинг: 114.01 URL: Сайт об ОС DOS. Всем, кто любит эту ОС! [Подробней >>] |
keleb-glin Статус: Опытный Общий рейтинг: 112.08 [Подробней >>] |
Dark_Lord Статус: Профессиональный Общий рейтинг: 121.47 [Подробней >>] |
Beeblebrox Статус: Профессиональный Общий рейтинг: 111.16 URL: Beeblebrox / TMA HomePage [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 2236. В программе определяется время и сравнивается в часах, как добавить минуты?... (ответов: 2)
Вопрос № 2237. Здравствуйте! Вот такая возникла проблема, горит контрольная по Мат. логике и теории алгоритмов, в ч... (ответов: 2)
Вопрос № 2238. Привет, уважаемые эксперты! Спасибо за то, что не помогли...;) Ничего...зато сам разобрался. Резиден... (ответов: 2)
Вопрос № 2239. Здравствуйте! Как работать с портами ввода/вывода 8-битных микроконтроллеров семейства С51? (Наприме... (ответов: 1)
Вопрос № 2240. Привет всем экспеортам!!! Тут возникла маленькая проблема с Visual C++ 6 c MFC Не могу использоват ф... (ответов: 2)
Вопрос № 2241. Добрий день Пожалуйста мыльните мне (2002ai@ua.fm) описания шеснадти- восьми- двоичной систем и мати... (ответов: 3)
Вопрос № 2242. Bob Johnson, если вас это не затруднит, то скиньте тоже чижика;))). Maverick, а вас я попрошу скинут... (ответов: 3)
Вопрос № 2243. У меня вопрос по программированию контроллеров дисков в защищённом режиме. В документациях я нашёл, ... (ответов: 1)
Вопрос № 2244. Здравствуйте, Уважаемые Эксперты. 1. Я хотел бы уточнить кое-что касательно вопроса № 2194. Вы объяс... (ответов: 3)
Вопрос № 2245. Здравствуйте. Не подскажите ли вы как пользоваться функцией gethostbyname. А точнее, как преобразова... (ответов: 2)
Вопрос № 2246. Кто-нить работал с мышой в высоких разрешениях под ДОС? Я использую BGI драйверы от Borlanda и Jorda... (ответов: 2)
Вопрос № 2247. Уважаемые эксперты, помогите пожалуйста как можно быстрее Как реализовать вот этот кусок mov ah,3Fh ... (ответов: 3)
Вопросов: 12, ответов: 26
Вопрос № 2236 |
В программе определяется время и сравнивается в часах, как добавить минуты?
Приложение:
Вопрос отправлен: 22.12.2002, 20:17
Отправитель: Андрей
[Следующий вопрос >>] [Список вопросов]
Отвечает Traish
Доброе время суток, Андрей!
Функция 2ch (int 21h) возвращает:
СH = часы
CL = минуты
DH = секунды
DL = сотые доли секунды
Ответ отправлен: 22.12.2002, 23:55
Отправитель: Traish
Отвечает Maverick
Доброе время суток, Андрей!
После получения времени создания файла добавь такие строки:
mov bx,cx
shr bx,3
xor bh,bh
shr bx,2
Теперь в bl у тебя минуты, сравнить думаю, сможешь сам.
Ответ отправлен: 23.12.2002, 08:02
Отправитель: Maverick
Вопрос № 2237 |
Здравствуйте!
Вот такая возникла проблема,
горит контрольная по Мат. логике и теории алгоритмов,
в частности тема Машины Тьюринга,
у кого есть инфа киньте на мыло,
или ссылку путевую дайте,
только не посылайте на поисковики,
там много чего есть, но все только поверхностно.
Зарание благодарен.
Вопрос отправлен: 22.12.2002, 20:39
Отправитель: Stas (ksa@mail.kz)
[Следующий вопрос >>] [Список вопросов]
Отвечает Broken Sword
Доброе время суток, Stas!
о, машина Алана Тьюринга - моя любимая машина... )
могу тебе кинуть курсовик свой и прогу - эмулятор машины Тьюринга (очень путевый). смотри в ящике курсовик мой уже лежит (кстати, там в конце должна быть ссылка на эмулятор).
Ответ отправлен: 22.12.2002, 21:21
Отправитель: Broken Sword
Отвечает Александр
Добрый день, Stas!
Лень запредельная. Набери www.ya.ru В строке поиска набери "Машина Тьюринга", именно так, в кавычках. По ссылке №12 ты найдёшь главу из какой-то книги в формате PDF, посвящённую целиком машине Тьюринга. По ссылке №13 ты найдёшь страничку со ссылками на доходчивое короткое описание и какими-то исходниками касательно subj.
Ответ отправлен: 22.12.2002, 21:43
Отправитель: Александр
Вопрос № 2238 |
Привет, уважаемые эксперты!
Спасибо за то, что не помогли...;)
Ничего...зато сам разобрался.
Резидент (озвучивает клаву) пашет, но:
в чистом DOS глючат popa и pusha.
Т.е. регистры не сохраняются в обработчике,
а если просто push и pop, то всё ok!..
В эмуляции под WinXP всё тоже ok...
Так объясните мне, что это за глюк такой?..
Да и вообще хотел бы советов и замечаний по коду.
Заранее буду благодарен.
P.S. это уже не лаба ;)
Я просто влюбился в assembler и всё такое...
сами понимаете какоё он классный... ;)
Приложение:
Вопрос отправлен: 23.12.2002, 01:40
Отправитель: m0rfey
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Приветствую Вас, m0rfey!
Как это глючат??? Может ты зря считаешь, что они сохраняют сегментные регистры - нет, эти команды позволяют сохранять в стеке только ax, bx, cx, dx, si, di, bp, sp.
Поэтому, если тебе надо сохранить cs или ds, то делай это сам отдельными push и pop.
Ответ отправлен: 24.12.2002, 22:41
Отправитель: Bob Johnson
Отвечает Broken Sword
Добрый день, m0rfey!
ага, никакого глюка нет. дав название команде (pusha расшифровывается не иначе как push all) интеловцы явно погорячились: pusha сохраняет ТОЛЬКО 8 регистров (всего в процессоре с архитектурой IA32 их в несколько раз больше), поэтому новички впадают в заблуждения: pusha НЕ сохраняет сегментные регистры и регистр флагов.
Хотя в твоем коде ты и не изменяешь сегм. регистры, поэтому дело в другом... правда, мне приходилось сталкиваться с проблемой в XP: любой, сколь угодно вложенный и огромный цикл, основанный на loop в эмуляции DOS-а в XP исполняется МГНОВЕННО. Поэтому я не мог организовать задержки исп. счетчики.
ну и вот в этом месте: mov dx,tune - по умолчанию берется значение из DS:[tune], а у тебя он равен черти чему, поэтому предварительно нада push cs pop ds или сразу mov dx,word ptr cs:[tune]
>>Я просто влюбился в assembler и всё такое...
вот все вы одинаковые, так говорите... :(
:)
Ответ отправлен: 23.12.2002, 10:15
Отправитель: Broken Sword
Вопрос № 2239 |
Здравствуйте!
Как работать с портами ввода/вывода 8-битных микроконтроллеров семейства С51? (Например Siemens C509)
Вопрос отправлен: 23.12.2002, 06:17
Отправитель: Oleg
[Следующий вопрос >>] [Список вопросов]
Отвечает Maverick
Добрый день, Oleg!
Шаг 1: Ищешь соответствующую документацию
Шаг 2: Читаешь ее
Шаг 3: Задаешь вопросы
При соотвествующем складе ума шаг 3 можно опустить. :)))
Ответ отправлен: 23.12.2002, 08:02
Отправитель: Maverick
Вопрос № 2240 |
Привет всем экспеортам!!!
Тут возникла маленькая проблема с Visual C++ 6 c MFC
Не могу использоват функции WinApi в чистом виде
А именно например Функции EnableWindow и ShowMessage
VC мне показывает не все параметры функции
Например от сутствуе параметр HWND в этих функциях.
Помогите плиз заюзать эти функции в чистом виде
Вопро конечно не втему но здесь собирается элита.
Прошу помочь кто чем может.
Вопрос отправлен: 23.12.2002, 08:21
Отправитель: m0v8lack
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Доброе время суток, m0v8lack!
Пиши вместо EnableWindow
::EnableWindow (HWND, bool);
и все будет ок.
> здесь собирается элита
прикольно...
Ответ отправлен: 24.12.2002, 22:41
Отправитель: Bob Johnson
Отвечает Gibbel
Здравствуйте, m0v8lack!
Для первой набирай ::EnableWindow(hWnd,bEnable);
Со второй сложнее, так как она из интерфейса IDocHostShowUI. Но, вместо нее можешь вызывать API-шную MessageBox.
Ответ отправлен: 23.12.2002, 11:09
Отправитель: Gibbel
Вопрос № 2241 |
Добрий день
Пожалуйста мыльните мне (2002ai@ua.fm) описания шеснадти- восьми- двоичной систем и матиматических действий в них.
Вопрос отправлен: 23.12.2002, 17:02
Отправитель: aex (2002ai@ua.fm)
[Следующий вопрос >>] [Список вопросов]
Отвечает Maverick
Приветствую Вас, aex!
Да в любой книге по асму смотри 2 первые главы.
Ответ отправлен: 23.12.2002, 18:39
Отправитель: Maverick
Отвечает Ayl
Здравствуйте, aex!
Отвечаю в рассылку, потому что это может быть кому-то еще интересно.
Все перечисленные системы (равно как и привычная 10-тиричная с.с.) являются частным случаем системы по основанию N. Вот характеристики этой системы.
1. Используются цифры от 0 до (N-1).
2. Система является позиционной, то есть каждая цифра в числе, записанном в этой системе, имеет свой вес. Если пронумеровать позиции в числе справа налево, начиная с 0, то вес i-й цифры равен N^(i-1).
Например, в 10-й с.с. вес 3-ей цифры равен 10^2 = 100.
Для двоичной вес 3-ей цифры равен 2^2 = 4.
Пусть есть число в N-й с.с.: A(N) = A(p)A(p-1)...A(1)A(0).
Чтобы преобразовать его в 10-ю с.с., надо посчитать значение выражения:
B(10) = A(p)*N^(p-1)+A(p-1)*N^(p-2)+...+A(1)*N+A(0).
Теперь, пусть есть число B в 10-й с.с. Чтобы преобразовать его в число по основанию N, надо выполнить последовательные действия:
1. B = B1 * N + A(0)
2. B1 = B2 * N + A(1)
...
p-2. Bp-1 = Bp * N + A(p-1)
p-1. Bp = A(p)
Число в N-й с.с. равно: A(p)A(p-1)...A(1)A(0)
Математические действия выполняются точно также, как и в 10-й с.с., только изменяются таблицы сложения и умножения (нетрудно понять, что вычитание и деление осуществляются с их же помощью). А именно, в системе по основанию N эти таблицы имеют размер N*N. В приложении приведены эти таблицы для 8-ми- и 16-ти-ричных с.с. (для двоичной не привожу по причине их тривиальности). Замечу только, что для 2-й с.с. результат сложения 1+1 = 10!
Кроме этого, т.к. 8 = 2^3, а 16 = 2^4, то для преобразования из 2-й с.с. в 8-ми- или 16-ти-ричную с.с. (и обратно) можно использовать следующие таблицы:
2-я 8-я 16-я 10-я
0000 0 0 0
0001 1 1 1
0010 2 2 2
0011 3 3 3
0100 4 4 4
0101 5 5 5
0110 6 6 6
0111 7 7 7
1000 - 8 8
1001 - 9 9
1010 - A 10
1011 - B 11
1100 - C 12
1101 - D 13
1110 - E 14
1111 - F 15
Т.е. двоичное число нужно разбить на триады (для преобразования в 8-миричную с.с.) или тетрады (для 16) и далее воспользоваться приведенной таблицей. Для обратного преобразования каждая цифра числа заменяется соответствующей триадой (8) или тетрадой (16).
Приложение:
Ответ отправлен: 23.12.2002, 19:15
Отправитель: Ayl
Отвечает Bob Johnson
Доброе время суток, aex!
И что тебе тут непонятно?
Математические действия в них точно такие же, как и в десятичной. Прост каждая цифра может принимать не 10 разных значений, а 16, 8 или 2. Соответственно, каждый следующий разряд (влево) имеет вес в 16, 8 или 2 раза больше предыдущего.
Допустимые цифры:
16: 0, 1, 2, ... ,8, 9, A, B, C, D, E, F
8: 0 - 7
2: 0 или 1.
Ответ отправлен: 24.12.2002, 22:41
Отправитель: Bob Johnson
Вопрос № 2242 |
Bob Johnson, если вас это не затруднит, то скиньте тоже чижика;))).
Maverick, а вас я попрошу скинуть Чернобыля. Весело однако.
Сорри за неудобства. А может вы бы создали сайтик и выкладывали бы туда все необходимое для скачивания?
Заранее благодарен.
Вопрос отправлен: 23.12.2002, 17:16
Отправитель: prophet (jjsp@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Maverick
Доброе время суток, prophet!
Лови.
Bob, кинь в меня чижика тоже :)
Maverick@nightmail.ru
Ответ отправлен: 23.12.2002, 18:39
Отправитель: Maverick
Отвечает baldr
Приветствую Вас, prophet!
Ага... Сразу все проги в одном архиве, каждый файл заражен Чернобылем, anti-EXE, каким-нибудь
трояном.. В качестве бонуса предлагается скачать дистрибутив нормально работающей (иногда) винды,
а также на этом сайте есть все драйвера для всего оборудования... :))) Примерно так?
Думаешь, ты один такой умный? Вот, если найдется кто-нибудь, кто это все организует, будет
постоянно обновлять и поддерживать сайт - тогда пожалуйста... :)
Ответ отправлен: 24.12.2002, 01:37
Отправитель: baldr
Отвечает Bob Johnson
Здравствуйте, prophet!
Да, хорошо... :-)
Пользуясь случаем, передаю привет остальным экспертам рассылки по ассемблеру :-)
Ответ отправлен: 24.12.2002, 22:42
Отправитель: Bob Johnson
Вопрос № 2243 |
У меня вопрос по программированию контроллеров дисков в защищённом режиме. В документациях я нашёл, что можно работать двумя способами - через DMA и читать/записывать данные на диск напрямую через порт(но это будет медленнее). Там также нужны какие-то параметры дискеты или жёсткого диска. Вопросы такие - откуда взять эти параметры, как выгоднее в защищённом режиме работать с дисками и какие номера будут иметь аппаратные прерывания(IRQ) в IDT(ну в таблице векторов IRQ6 иммеет номер 0eh, а в защищённом режиме я их не знаю)
Вопрос отправлен: 23.12.2002, 17:46
Отправитель: dragon (dtdcs@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Broken Sword
Здравствуйте, dragon!
насчет того, что чтение/запись в порт медленнее - вопрос, конечно, спорный, потому что и DMA не по воздуху с HDD общается
Где "там"? При чтении/записи в порты тебе нужно знать номера портов, взять их можно из статьи в журнале VLAD (чтение/запись в порты в/в HDD, очень легко написанная) - посмотри в ящике. А про DMA - 3 канал обслуживает HDD, его тоже в принципе несложно программировать.
IDT - это и есть в защищенном режиме.
(IRQ0-IRQ7 = INT8-INT0F)
(IRQ8-IRQ15 = INT70-INT78)
Ответ отправлен: 23.12.2002, 21:29
Отправитель: Broken Sword
Вопрос № 2244 |
Здравствуйте, Уважаемые Эксперты.
1. Я хотел бы уточнить кое-что касательно вопроса № 2194. Вы объяснили как работает прерывание Так вот я хотел бы спрсить, а как сделать так чтобы при этом вызывался мой обработчик. Для этого что надо изменять IDT?Или как-то по-другому?
2. Traish, что значит "зависит от класса исключения"? Это же вроде бы одно и то же исключение, или нет?
Вопрос отправлен: 23.12.2002, 17:40
Отправитель: Leonid
[Следующий вопрос >>] [Список вопросов]
Отвечает Traish
Здравствуйте, Leonid!
1. Создаешь дескрипторы прерываний, указывающие на твои обработчики, и модифицируешь IDT.
2. Как я уже говорил причины генерации этого исключения могут быть разные, поэтому в некоторых случаях оно классифицируется как отказ (например, если причиной был бряк - исключение относится к классу отказов), а в других (ну, например, если ты выполнил int 1) - как ловушка (ну и соответственно, в этом случае в стек будут помещены cs:eip следующей команды).
Ответ отправлен: 23.12.2002, 20:09
Отправитель: Traish
Отвечает Broken Sword
Доброе время суток, Leonid!
В защ. режиме - IDT (вместо декскрипторов 3 или 1 дескрипторы своих обработчиков), в реальном - таблицу векторов прерываний (по 0:0)
2.
исключения бывают трех типов: faults, traps и aborts. так вот, не все из них кладут в стек адрес команды, вызвавшей ошибку (какие-то кладут адрес следующей)
Ответ отправлен: 23.12.2002, 19:04
Отправитель: Broken Sword
Отвечает Bob Johnson
Приветствую Вас, Leonid!
Ну... вообще-то я тебе на вопрос № 2194 не отвечал :-).
Предположу: чтобы при возникновении (или искусственном вызове) заданного прерывания вызывался твой обработчик - действительно надо изменить адрес в IDT (для защищенного режима) или просто в таблице векторов прерываний (для реального).
Ответ отправлен: 25.12.2002, 21:40
Отправитель: Bob Johnson
Вопрос № 2245 |
Здравствуйте.
Не подскажите ли вы как пользоваться функцией gethostbyname. А точнее, как преобразовать имя в адрес?
Вопрос отправлен: 23.12.2002, 17:53
Отправитель: Leonid
[Следующий вопрос >>] [Список вопросов]
Отвечает Traish
Добрый день, Leonid!
А что тут непонятного?
_data_
address db "host.com",0
_code_
push offset address
call gethostbyname
Получишь указатель на структуру hostent. Далее смотри h_list.
Приложение:
Ответ отправлен: 23.12.2002, 18:22
Отправитель: Traish
Отвечает Bob Johnson
Добрый день, Leonid!
Очень просто. Ты вызываешь ее с параметром-указателем на строку текста, которую ты хотел бы перевести в IP адрес. В ответ функция возвращает тебе указатель на структуру hostent, в которой член h_addr_list[0] указывает на первый найденный адрес хоста (указывает на 4 байта). Если адрес не может быть получен, возвращает 0.
Ответ отправлен: 25.12.2002, 21:41
Отправитель: Bob Johnson
Вопрос № 2246 |
Кто-нить работал с мышой в высоких разрешениях под ДОС?
Я использую BGI драйверы от Borlanda и Jordan Hargraphix Software(svga256.bgi, svga64k.bgi и ТД)
Так вот, то, что мыша не рисуется в режиме 800х600х256- черт с ним, но и границы перемещения не работают (ф-ции 7 и 8 прерывания 33h)
Что нить подскажете?
Вопрос отправлен: 23.12.2002, 18:26
Отправитель: Sensey
[Следующий вопрос >>] [Список вопросов]
Отвечает keleb-glin
Доброе время суток, Sensey!
Да, в высоких разрешениях хомяк может глючить, а посему предлагаю тебе вручную заняться его ( курсора ) прорисовкой - узнаёшь новые координаты мыша - и вперёд, а лучше обработчика мышиных событий забацать ( см. доки по int 33h )
Ответ отправлен: 27.12.2002, 14:58
Отправитель: keleb-glin
Отвечает Dark_Lord
Приветствую Вас, Sensey!
А зачем тебе bgi. Не используй их, я помниться на асме 1024х768х64К мышу нормально сделал!
Ответ отправлен: 24.12.2002, 18:23
Отправитель: Dark_Lord
Вопрос № 2247 |
Уважаемые эксперты, помогите пожалуйста как можно быстрее
Как реализовать вот этот кусок
mov ah,3Fh
mov cx,0FFFFh-offset buffer <- Вот тут проблема
mov dx,offset buffer
int 21h
mov si,ax
Вопрос отправлен: 23.12.2002, 19:08
Отправитель: Marilyn Manson
[Следующий вопрос >>] [Список вопросов]
Отвечает Beeblebrox
Добрый день, Marilyn Manson!
mov ah,3Fh
mov cx,-(offset buffer+1)
mov dx,offset buffer
int 21h
mov si,ax
Ответ отправлен: 23.12.2002, 19:25
Отправитель: Beeblebrox
Отвечает Broken Sword
Доброе время суток, Marilyn Manson!
а чего проблема - значение FFFF-offset buffer высчитывается на этапе компиляции, поэтому никакой проблемы нет - просто в CX ложится число (уже вычисленное). а проблема здесь в in t21h. конечно быстрее через порты все делать
Ответ отправлен: 23.12.2002, 20:00
Отправитель: Broken Sword
Отвечает Bob Johnson
Доброе время суток, Marilyn Manson!
Я думаю, что:
mov ax, offset Buffer
not ax
Ответ отправлен: 25.12.2002, 21:41
Отправитель: Bob Johnson
Форма отправки вопроса |
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
© 2002 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (40) C / C++ (29) Perl (5) Delphi (22) Pascal (23) Basic / VBA (11) Java / JavaScript (7) PHP (4) MySQL / MSSQL (5) |
Пользователю Windows 95/98/Me (32) Windows NT/2000/XP (28) "Железо" (31) Поиск информации (13) |
Администратору Windows NT/2000/XP (11) Linux / Unix (14) |
Юристу Гражданское право (7) Семейное право (3) Трудовое право (4) КоАП (2) |
Отправить вопрос всем экспертам выбранной рассылки.
© 2002 Россия, Москва. Авторское право: RusFAQ.ru |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||