Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 581
от 30.06.2003, 16:40
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 3604 Отправлено ответов: 10587 Активность: 293.7 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
Eugene Статус: Профессиональный Общий рейтинг: 107.27 URL: мощный файловый архив [Подробней >>] |
vitya Статус: Профессиональный Общий рейтинг: 108.12 [Подробней >>] |
Bob Johnson Статус: Профессиональный Общий рейтинг: 152.07 URL: Программирование [Подробней >>] |
Hangatyr Статус: Опытный Общий рейтинг: 115 [Подробней >>] |
Dark_Lord Статус: Профессиональный Общий рейтинг: 112.38 [Подробней >>] |
_vt Статус: Профессиональный Общий рейтинг: 123.13 [Подробней >>] |
Denis Статус: Начальный Общий рейтинг: 101.65 [Подробней >>] |
masquer Статус: Профессиональный Общий рейтинг: 137.01 [Подробней >>] |
Lynx Статус: Опытный Общий рейтинг: 122.13 Телефон: (8442) 750522 [Подробней >>] |
Ayl Статус: Профессиональный Общий рейтинг: 118.41 [Подробней >>] |
Gibbel Статус: Профессиональный Общий рейтинг: 107.89 URL: Savage Metal Club - жизнь в стиле рок-н-ролл Телефон: +7 901 710 3146 [Подробней >>] |
Tigran K. Kalaidjian Статус: Профессиональный Общий рейтинг: 120.41 URL: Методы оптимизации работы ПК [Подробней >>] |
baldr Статус: Профессиональный Общий рейтинг: 112.32 URL: Сайт об ОС DOS. Всем, кто любит эту ОС! [Подробней >>] |
St Статус: Опытный Общий рейтинг: 107.57 [Подробней >>] |
Portnov Статус: Профессиональный Общий рейтинг: 109.95 URL: Мой сайтик... [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 3567. Здравствуйте, уважаемые эксперты! Если не трудно приведите пример на ассемблере для... (ответов: 7)
Вопрос № 3568. // Здравствуйте, эксперты ! Надо сделать функцию на подобие CopyMemory(API) копирование памяти,тольк... (ответов: 6)
Вопрос № 3570. Как мне обратится к устройству с определенным адресом на шинах ISA и PCI и передать ему данные.... (ответов: 2)
Вопрос № 3571. По каким адресам находится шина адреса и шина данных в шинах ISA и PCI... (ответов: 2)
Вопрос № 3573. Уважаемые Эксперты. Обясните plz вот такую штуку: mov al, 0feh out 064h, al. В DOS'e эта фишка перез... (ответов: 2)
Вопрос № 3574. Уважаемые Эксперты. Обясните plz вот такую штуку: mov al, 0feh out 064h, al. В DOS'e эта фишка перез... (ответов: 1)
Вопрос № 3575. Здравствуйте! У меня вопрос не совсем в вашу рубрику, но я же знаю - вам это нетрудно. Кто работал с... (ответов: 2)
Вопрос № 3576. Здравствуйте эксперты! Вопрос конечно оффтопиковый, но не скажите ли мне, где найти(скачать) DriverS... (ответов: 3)
Вопросов: 8, ответов: 25
Вопрос № 3567 |
Здравствуйте, уважаемые эксперты! Если не трудно приведите пример
на ассемблере для Win32 записи в сегмент кода, чтобы не
возникало исключение. Или опцию компилятора которая позволяет это сделать,
для tasm32 не смог найти такой опции.
Спасибо за ответы 1!
Вопрос отправлен: 25.06.2003, 16:55
Отправитель: 1 (privat-soap@list.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Eugene
Приветствую Вас, 1!
Не знаю как на TASM'е, но на FASM' е гляди в приложении.
Приложение:
Ответ отправлен: 25.06.2003, 17:45
Отправитель: Eugene
Отвечает vitya
Доброе время суток, 1!
Если только вы не пишете драйвер, вам этого не удастся.
В противном случае просто вы должны просто записать в сегмент данных по нужному смещению (сегмент должен быть таким base = 0; limit = 4GB; DPL = 0), что вам угодно.
Ответ отправлен: 25.06.2003, 17:19
Отправитель: vitya
Отвечает Bob Johnson
Доброе время суток, 1!
Не в опции компилятора дело! См. предыдущие вопросы - в последнее время это уже 3-й или 4-й на эту тему. У тебя вин нт? Он не позволяет так просто писать в сегмент кода!
Тебе нужно вызвать функцию VirtualProtect и изменить защиту той страницы, куда собираешься писать на read + write + executable (по умолчанию для сегмента кода стоит read + execute). После чего можешь записывать обычным образом.
* EMan1.4: ---===*** Have your friend the way you would like him to have you ***===---
Ответ отправлен: 27.06.2003, 02:04
Отправитель: Bob Johnson
Отвечает Hangatyr
Доброе время суток, 1!
Пожалуйста (см. приложение).
А параметры секций задаются в *.def - файлах.
Приложение:
Ответ отправлен: 26.06.2003, 09:27
Отправитель: Hangatyr
Отвечает Dark_Lord
Приветствую Вас, 1!
Можно изменить защиту опредилённой страницы функцией VirtualProtect.
Ответ отправлен: 26.06.2003, 19:37
Отправитель: Dark_Lord
Отвечает _vt
Доброе время суток, 1!
Для tasm существуют def-файлы, где и описываются параметры сегментов и др.
masm возможно их тоже поддерживает... Существует такой компилятор fasm, где в самом тексте можно написать:
section '.code' readable writeable
и запись будет разрешена.
---===*** E-Man 1.2 - Powerful toy***===---
Ответ отправлен: 28.06.2003, 00:37
Отправитель: _vt
Отвечает Denis
Добрый день, 1!
Сам не пробовал, но должно прокатить :)
push ds
push cs
pop ds
mov [offset CODE],Data
pop ds
Ответ отправлен: 28.06.2003, 11:50
Отправитель: Denis
Вопрос № 3568 |
// Здравствуйте, эксперты !
Надо сделать функцию на подобие CopyMemory(API)
копирование памяти,только из ИСТОЧНИКА (RStart)берем
каждый второй байт(для этого передвигаем адрес +2 байта
и пишем в ПРИЕМНИК (RSour)нормально,т.е +1байт по памяти
Всего перемещаем kol байтов
Пишется на Delphi в виде АССИ-вставки-но код не компилится!
Помогите как исправить ошибку.
Приложение:
Вопрос отправлен: 25.06.2003, 21:08
Отправитель: AllDer
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Добрый день, AllDer!
Я давно писал вставки на асме в дельфи и тут я нашел такую вещь: первый параметр передается в регистре eax, второй - в ecx, третий - в edx. Остальные в стеке, как обычно. Поэтому можно писать вставку исходя из этого.
Твой пример я бы переделал так:
procedure Copy2Memory(RStart:dword;RSour:dword;kol:dword);
asm
mov esi, [RStart]
mov edi, [RSour]
mov ecx, [kol]
@@1:
mov al, [esi]
add esi, 2
mov [edi], al
inc edi
dec ecx
jnz @@1
end;
Но не могу утверждать, что откомпилиться, т.к. у меня умер delphi и проверить не могу.
* EMan1.4: ---===*** Have your friend the way you would like him to have you ***===---
Ответ отправлен: 27.06.2003, 02:05
Отправитель: Bob Johnson
Отвечает masquer
Доброе время суток, AllDer!
Вот код на MMX, который идеально подходит для данной задачи. Надеюсь, тут все предельно понятно :))
pcmpeqd mm1, mm1
psllw mm1, 8
lea esi, input_buffer
lea edi, output_buffer
mov ecx, input_length/16+16
@@: movq mm0, [esi]
movq mm2, [esi+8]
pand mm0, mm1
pand mm2, mm1
psrlw mm0, 8
psrlw mm2, 8
packuswb mm0, mm0
packuswb mm2, mm2
psrlq mm0, 32
psllq mm2, 32
por mm0, mm2
movq [edi], mm0
add edi, 8
add esi, 16
dec ecx
jnz @B
Ответ отправлен: 26.06.2003, 11:42
Отправитель: masquer
Отвечает Lynx
Доброе время суток, AllDer!
Для начала замени все dword на Longint.
Ответ отправлен: 26.06.2003, 16:49
Отправитель: Lynx
Отвечает Ayl
Добрый день, AllDer!
Во-первых, не
mov eax, kol
а mov ecx, kol
Во-вторых, не совсем понятно выражение "не компилится". Как не компилится - выдает ошибку (какую), в исполняемый файл не помещается код или еще что-то?
Собственно, похоже, что ты неправильно работаешь с указателями. Кстати, я не уверен, что в ассемблерной вставке можно применять выражения паскаля (дельфи) типа "разименование" (^) и "взятие адреса" (@). Здесь, кстати, у тебя тоже ошибка - ты не берешь "значение по адресу", а берешь адрес соответствующей переменной, причем пытаешься записать его в байтовый регистр.
Попробуй такой код скомпилить (см.Приложение).
Приложение:
Ответ отправлен: 26.06.2003, 10:34
Отправитель: Ayl
Отвечает _vt
Добрый день, AllDer!
Посмотрев на этот чудовищный, неизвестно откуда выдранный кусок кода, мне расхотелось в нем разбираться... Как это может компилиться????? В каждой строке ошибки и не одна!!!!
1) где вы видели в delphi тип данных dword? Может longint или cardinal ???
2) Нахрен описывать метку??? Локальные метки в asm-вставках не нуждаются в объявлении, достаточно их использовать с символом @ (@l: .... loop @l)
3) В самом коде активно используется этот интересный символ @... Зачем????
4) Если я немного понимаю замысел, то вместо mov eax, col должно быть mov ecx, col
5) Не хватает end; ...
---===*** E-Man 1.2 - Powerful toy***===---
Ответ отправлен: 28.06.2003, 00:37
Отправитель: _vt
Отвечает Denis
Доброе время суток, AllDer!
Нада mov ECX,kol
Ответ отправлен: 28.06.2003, 11:47
Отправитель: Denis
Вопрос № 3570 |
Как мне обратится к устройству с определенным адресом на шинах ISA и PCI и передать ему данные.
Вопрос отправлен: 26.06.2003, 09:00
Отправитель: Алексей (aleksey_@pisem.net)
[Следующий вопрос >>] [Список вопросов]
Отвечает Gibbel
Добрый день, Алексей!
Командами in и out
Ответ отправлен: 26.06.2003, 09:44
Отправитель: Gibbel
Отвечает Tigran K. Kalaidjian
Здравствуйте, Алексей!
Смотрите книгу О.Калашникова, С.Гуляева, Ю.Новикова "Разработка устройств сопряжения для персонального компьютера типа IBM PC"
Электронную версию см. тут:
http://www.cepera.h1.ru/
Там есть отдельно работа с ISA. Всё рассмотрено подробно.
Про PCI:
http://www.atel.ru/pci.htm
Ответ отправлен: 26.06.2003, 19:03
Отправитель: Tigran K. Kalaidjian
Вопрос № 3571 |
По каким адресам находится шина адреса и шина данных в шинах ISA и PCI
Вопрос отправлен: 26.06.2003, 10:48
Отправитель: Алексей (aleksey_@pisem.net)
[Следующий вопрос >>] [Список вопросов]
Отвечает Gibbel
Приветствую Вас, Алексей!
Ты сам понял, что спросил???
Ответ отправлен: 26.06.2003, 11:47
Отправитель: Gibbel
Отвечает baldr
Добрый день, Алексей!
Задолбал, да? :(((
Ответ отправлен: 27.06.2003, 12:23
Отправитель: baldr
Вопрос № 3573 |
Уважаемые Эксперты.
Обясните plz вот такую штуку:
mov al, 0feh
out 064h, al.
В DOS'e эта фишка перезагружает комп. ПОЧЕМУ? Че за порт 64h, где находятся эти порты и че это ваще такое... Просто негде искать, inet ограничен, в книжках фигня - кратко (1 предложение). И еще какие регистры изменяются при выполнении этой команды? (si, ip и т.д.)
Thanx.
Приложение:
Вопрос отправлен: 26.06.2003, 15:47
Отправитель: _hz_
[Следующий вопрос >>] [Список вопросов]
Отвечает Tigran K. Kalaidjian
Доброе время суток, _hz_!
По очереди:
1. 64h - порт состояния клавиатуры
2. efh (в данном случае) - команда сброса процессора.
3. Подробный список портов - список Ральфа Брауна
4. Подробная теория изложена у П.Нортона
5. Официально под портом понимают совокупность средств, унифицирующих и упрощающих способ взаимодействия микропроцессора с внешним миром. Порт обеспечивает единственную возможность приема или передачи данных любым обьектам кроме памяти.
Всем устройствам, с которыми должен взаимодействовать процессор, таким как клавиатура, дисководы или динамик, выделяется собственный порт. Порт представляет собой гипотетический путь данных, которому присвоен номер порта и который может принимать или передавать данные по команде процессора.
Когда микропроцессор должен передавать данные в порт, используется команда OUT, которой указывается номер порта и передаваемые данные, имеющие длину один или два байта. Фактически команда OUT "приказывает" конкрeтному порту принять данные. Команда IN работает аналогично, только данные считываются из порта. Микропроцессор не может определить какие порты задействованы, а какие нет, так что все команды IN и OUT выполняются вслепую.
Порты могут использоваться в сочетании с прерываниями. Например, если нажать клавишу на клавиатуре IBM/PC,никакие
данные в компьютер не передаются. Вместо этого генерируется прерывание номер 9, указывающее, что имеются данные, которые нужно вводить с клавиатуры. В ответ на прерывание BIOS в ПЗУ выдаст команду IN для порта клавиатуры. Только после этого данные, определяющие какая клавиша была нажата, попадут в компьютер.
Ответ отправлен: 27.06.2003, 11:25
Отправитель: Tigran K. Kalaidjian
Отвечает Ayl
Приветствую Вас, _hz_!
Почему перегружает комп сказать не могу. Порт 64h - это управляющий порт клавиатуры. Команда 0feh описана как Resend the last transmition. Что это такое - не знаю, попробуй поискать, если очень интересно. В Инете инфы - куча.
Порты - это интерфейс для работы с внешними устройствами. Бывают 3-х видов: только для чтения (нельзя писать), только для записи (нельзя читать) и произвольного доступа. Первые, обычно, статусные (показывают состояние устройства), вторые - командные (с их помощью программа может управлять устройством). Третьи предназначены чаще всего для обмена данными, но также могут быть и командно-статусными.
Характеристики портов определяются оборудованием. Номера портов зарезервированы и определяются архитектурой компа.
Доступ к портам выполняется с помощью команд in и out. В качестве номера порта может быть использовано либо непосредственное значение (для портов 0-255), либо значение в регистре DX. Передавать в порт можно либо байт (регистр AL), либо слово (AX), либо двойное слово (EAX).
Искать информацию по портам нужно в специальных справочниках. Например, в книге Р.Джордейна "Справочник по программированию IBM PC, XT и AT". Можно также воспользоваться электронным справочником Tech Help (на английском языке).
Регистры и флаге при выполнении обращений к портам не изменяются. Для команды in Acc, порт изменяется только регистр AL, AX или EAX, в который считывается информация из порта.
Ну, а регистр IP, естесственно, изменяется, как и при выполнении любой другой команды :-)
Ответ отправлен: 26.06.2003, 17:09
Отправитель: Ayl
Вопрос № 3574 |
Уважаемые Эксперты.
Обясните plz вот такую штуку:
mov al, 0feh
out 064h, al.
В DOS'e эта фишка перезагружает комп. ПОЧЕМУ? Че за порт 64h, где находятся эти порты и че это ваще такое... Просто негде искать, inet ограничен, в книжках фигня - кратко (1 предложение). И еще какие регистры изменяются при выполнении этой команды? (si, ip и т.д.)
Thanx.
Приложение:
Вопрос отправлен: 26.06.2003, 15:46
Отправитель: _hz_kto_
[Следующий вопрос >>] [Список вопросов]
Отвечает Tigran K. Kalaidjian
Здравствуйте, _hz_kto_!
Ответ уже отослан.
Ответ отправлен: 27.06.2003, 11:25
Отправитель: Tigran K. Kalaidjian
Вопрос № 3575 |
Здравствуйте!
У меня вопрос не совсем в вашу рубрику, но я же знаю - вам это нетрудно.
Кто работал с видеокартами с TV-out'ом - скажите пожалуйста, чем они все
друг от друга отличаются (ну, это не самый важный вопрос). Главный же
вопрос - так это каким кабелем соединить комп и телевизор? Допустим,
на карточке разъём типа "тюльпан" (других я не знаю, если есть ещё -
подскажите, пожалуйста), а на телевизоре - стандартный вход для видеомагнитофона.
Каким кабелем соединять посоветуете?
Спасибо заранее.
Надеюсь, что не отнял у вас слишком много времени.
Антон.
Вопрос отправлен: 26.06.2003, 16:24
Отправитель: Anton (antkorsh@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Приветствую Вас, Anton!
"Стандартный вход для ВМ" - это либо тот же самый тюльпан, либо SCART. Если ты сам умеешь паять - купи обычный экранированный провод и два джека типа "тюльпан" и спаяй себе шнур. Если нет (или у тебя SCART на ТВ) - то купи уже готовый шнур в магазине.
Вариант 2 - под стандартным входом ты понимаешь антенный вход телевизора, куда у тебя идет шнур от видачка, а уже в видачок втыкается антенна. В этом случае, если других входов на ТВ нет, то так просто подключить к нему карту не удастся. Но обратись к любому специалисту, он тебе сделает видеовход в твоем ТВ (я так сам давно делал для спектрума и т.д.)
Еще, некоторые телевизоры имеют большое входное сопротивление по видеовходу и карта не реагирует на них, как на "подключенные". В такой ситуации берешь обычный резистор 50 - 100 ом (лучше большего сопротивления, но надо подобрать так, чтобы при подключении этого резистора карта отчетливо реагировала и позволяла включить tv-out) и подключаешь параллельно выходу видио (можно вмонтировать в специальный кабель, которым будешь соединять с ТВ).
* EMan1.4: ---===*** Have your friend the way you would like him to have you ***===---
Ответ отправлен: 27.06.2003, 02:05
Отправитель: Bob Johnson
Отвечает St
Привет, Anton!
У неня знакомый соединил шнурком S-Video-Scart, с колокольчиками были какие-то проблемы.
St
Ответ отправлен: 26.06.2003, 17:51
Отправитель: St
Вопрос № 3576 |
Здравствуйте эксперты! Вопрос конечно оффтопиковый, но не скажите ли мне, где найти(скачать) DriverStudio 2.7? Лазил по поиску, но там ничего путного не нашел. Был на wzor.net - там прекращена регистрация новых юзеров, на exetools.com -не смог найти пароль к ФТП, помогите пожалуйста!
Best Regards, Duncan MacLeod!
Вопрос отправлен: 26.06.2003, 16:38
Отправитель: Duncan MacLeod
[Следующий вопрос >>] [Список вопросов]
Отвечает Hangatyr
Приветствую Вас, Duncan MacLeod!
1. Касательно exetools - зарегься на форуме, тогда станет виден раздел "Announcements and News". Если удастся зайти на фтп с <100 попытки - считай крупно повезло...
2. Можно посмотреть
здесь
Ответ отправлен: 26.06.2003, 17:05
Отправитель: Hangatyr
Отвечает Gibbel
Приветствую Вас, Duncan MacLeod!
Мне уже надоедает отвечать на этот вопрос
Ответ отправлен: 26.06.2003, 17:06
Отправитель: Gibbel
Отвечает Portnov
Добрый день, Duncan MacLeod!
На www.exetools.com/forum заходите, на форуме регистрируетесь; После этого становится виден форум "Announcements and news"; заходите в него, там пароль к FTP ftp.exetools.com написан.
Ответ отправлен: 28.06.2003, 13:18
Отправитель: Portnov
Форма отправки вопроса |
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
(C) 2002-2003 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (37) C / C++ (23) Perl (4) Builder / Delphi (18) Pascal (25) Basic / VBA (9) Java / JavaScript (11) PHP (3) MySQL / MSSQL (4) |
Пользователю Windows 95/98/Me (29) Windows NT/2000/XP (25) "Железо" (20) Поиск информации (15) |
Администратору Windows NT/2000/XP (12) Linux / Unix (5) |
Юристу Гражданское право (7) Семейное право (3) Трудовое право (5) КоАП (4) |
Отправить вопрос всем экспертам выбранной рассылки.
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||