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

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.

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
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.


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.


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

В избранное