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

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


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

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

Выпуск № 721
от 10.05.2004, 17:10

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 5253
Отправлено ответов: 14430
Активность: 274.7 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


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

resu
Статус: Начальный
Общий рейтинг: 105.79
[Подробней >>]
Pawel
Статус: Профессиональный
Общий рейтинг: 155.76
[Подробней >>]
flasher
Статус: Начальный
Общий рейтинг: 108.42
[Подробней >>]
 
_vt
Статус: Профессиональный
Общий рейтинг: 118.21
[Подробней >>]
Foamplast
Статус: Профессиональный
Общий рейтинг: 147.6
URL: мой личный сайт
[Подробней >>]
Евгений Иванов
Статус: Профессиональный
Общий рейтинг: 133.35
URL: Super Assembler Software
Телефон: НСС +7 831 3107039
[Подробней >>]
 
Gibbel
Статус: Профессиональный
Общий рейтинг: 105.54
URL: Savage Metal Club - жизнь в стиле рок-н-ролл
Телефон: +7 901 710 3146
[Подробней >>]
ASMодей
Статус: Профессиональный
Общий рейтинг: 111.67
[Подробней >>]
Acid Burn
Статус: Доверительный
Общий рейтинг: 127.41
[Подробней >>]
 
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 109.72
[Подробней >>]


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

Вопрос № 5217. Доброе время суток Эксперты! Подскажите пожалуйста, как работать с компилятором MASM v.6.12. В ... (ответов: 5)
Вопрос № 5219. ЗДРАВСТВУЙТЕ ЭКСПЕРТЫ ВОПРОС К ВАМ ПОЧЕМУ В ПРОГЕ НЕ РАБОТАЕТ СООБЩЕНИЕ "SORRY..." ПРИ ИЗ... (ответов: 2)
Вопрос № 5222. поздравляю всех с прошедшим 1-ым мая! пожалуйста, расскажите про аппаратную поддержку графических фу... (ответов: 1)
Вопрос № 5224. Здравствуйте уважаемые эксперты! Не могли бы Вы объяснить мне 2 вещи: Первая - как работать с аппар... (ответов: 2)
Вопрос № 5225. Здравствуйте, у меня два вопроса. 1. Где можно скачать win32.hlp с функциями winapi для asm. 2. Есть... (ответов: 2)
Вопрос № 5226. Приветствую, Наваял тут функцию копирования памяти (C-вариант - memcpy). Работает вроде нормально, П... (ответов: 2)
Вопрос № 5228. Здравствуйте уважаемые эксперты. Не подскажете ли Вы как определить присутствует ли в системном блок... (ответов: 2)
Вопрос № 5229. Здравствуйте уважаемые эксперты! Вопрос такой: Имеется два потока - основной(с циклом обработки сооб... (ответов: 1)
Вопрос № 5230. Здравствуйте уважаемые эксперты! Я уже прислал вас вопрос >Не могли бы Вы объяснить мне 2 вещи: >Пе... (ответов: 3)
Вопрос № 5232. Здравствуйте Уважаемые Эксперты!!! Есть два вопроса: Пытаюсь написать что-то вроде драйвера.Программ... (ответов: 2)
Вопрос № 5233. У меня есть файл. Его размер 240 байт. Моя задача урезать последние 80 байт чтобы размер файла стал ... (ответов: 6)

Вопросов: 11, ответов: 28


 Вопрос № 5217

Доброе время суток Эксперты!
Подскажите пожалуйста, как работать с компилятором MASM v.6.12. В принципе под Win32 никогда проги не писал. Ниже приведен пример проги. obj-файл получаю, а exe - никак.
При компиляяции ml /c /coff prog_1.asm - все нормально.
При линке link /SUBSYSTEM:WINDOWS prog_1.obj - ошибки:
prog_1.obj: fatal error L1101:invalid object module
Object file offset : 1 record type: 4c


Приложение:


Вопрос отправлен: 03.05.2004, 03:13
Отправитель: logo

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

Отвечает resu

Добрый день, logo!
Попробуйте в link'e поменять местами
/subsystem:windows и prog_1.obj т.е.
link prog_1.obj /subsystem:windows


Ответ отправлен: 03.05.2004, 03:43
Отправитель: resu


Отвечает Pawel

Приветствую Вас, logo!
Скачайм MASM поновее.

Ответ отправлен: 03.05.2004, 20:43
Отправитель: Pawel


Отвечает flasher

Здравствуйте, logo!
Возьмите в руки Masm v8 (с gui интерфейсом) и в перёд!

Ответ отправлен: 03.05.2004, 15:11
Отправитель: flasher


Отвечает _vt

Здравствуйте, logo!
Обнови версию линкера - возьми его, например, из MS VC6. На Wasm.Ru есть "Дошлепок" MASMa - ml.exe и link.exe из Visual Studio 2005 beta. =) Твоя версия может собирать программы только под DOS.
E-Man : Life begins at 1000Mhz!


Ответ отправлен: 03.05.2004, 17:09
Отправитель: _vt


Отвечает Foamplast

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

Здесь ret не надо, надо ExitProcess(0). И ещё определять точку входа, без неё компилируется, а линкер не может создать файл. Возьмите какой-нибудь пример и для начала переделайте.




Ответ отправлен: 06.05.2004, 04:39
Отправитель: Foamplast


 Вопрос № 5219

ЗДРАВСТВУЙТЕ ЭКСПЕРТЫ
ВОПРОС К ВАМ ПОЧЕМУ В ПРОГЕ НЕ РАБОТАЕТ СООБЩЕНИЕ "SORRY..." ПРИ ИЗМЕРЕНИЯХ КОНДЕНСАТОРОВ ВЫШЕ ДОПУСТИМОЙ НОРМЫ

_N1:MOV BYTE PTR CS:[_ANSWER+0],\'S\'
MOV BYTE PTR CS:[_ANSWER+1],\'o\'
MOV BYTE PTR CS:[_ANSWER+2],\'r\'
MOV BYTE PTR CS:[_ANSWER+3],\'r\'
MOV BYTE PTR CS:[_ANSWER+4],\'y\'


Приложение:


Вопрос отправлен: 04.05.2004, 00:26
Отправитель: ANDRE (andrean@bezeqint.net)

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

Отвечает _vt

Приветствую Вас, ANDRE!
АХЕЗ! ;) Ты бы "прогу" полностью привел, мож помог бы тебе... ;)
E-Man : Life begins at 1000Mhz!


Ответ отправлен: 07.05.2004, 07:09
Отправитель: _vt


Отвечает Foamplast

Здравствуйте, ANDRE!
Нужен полный текст программы.

Ответ отправлен: 06.05.2004, 04:37
Отправитель: Foamplast


 Вопрос № 5222

поздравляю всех с прошедшим 1-ым мая!
пожалуйста, расскажите про аппаратную поддержку графических функций. Правда ли, что поддерживаемые функции все работают с дробным представлением данных?
есть ли аппаратно поддерживаемые функции для стандарта VESA?
и если я ещё чего забыл спросить, то можете ответить сразу, не дожидаясь следующего вопроса.
все, пока.



Вопрос отправлен: 04.05.2004, 15:52
Отправитель: soflot (soflot@ukr.net)

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

Отвечает Foamplast

Приветствую Вас, soflot!
http://www.codenet.ru/progr/video/vesa201.php


Ответ отправлен: 08.05.2004, 14:51
Отправитель: Foamplast


 Вопрос № 5224

Здравствуйте уважаемые эксперты!
Не могли бы Вы объяснить мне 2 вещи:
Первая - как работать с аппаратными прерываниями IRQ, а конкретно - с мышью и звуковой картой SPb ISA (запись и воспроизведение)
А вторая - как можно в ассемблере реализовать чтение запись CD-R и CD-RW дисков в ISO и UDF форматах (хотя бы как что и куда направлять CD-RW приводу?)
Спасибо



Вопрос отправлен: 04.05.2004, 17:41
Отправитель: Nikita

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

Отвечает Евгений Иванов

Здравствуйте, Nikita!
Мышь работает через Com-порт.
У неё есть команды определённые.
См. справочник.
Подаёшь эти команды.
Принимаешь данные.
Cм. мою программу
Там всё просто.
Звуковая карта построена около DMA. Там буфера всякие. Заполняешь их и всё это отдаётся в карту. Или наооборот. Лучше советую использовать BASS-библиотеку (она для win32).
Ну а запись CD можешь рассмотреть на основе Plugin для FAR.
Называется Nero Shell.
То есть, записывать будет Nero.
А если на низком уровне, то там обычный IDE-порт и просто дополнительные команды идут.
Ищи описание.
Удачи.


* EMan: -=- Любовь существует! =-=


Ответ отправлен: 08.05.2004, 16:38
Отправитель: Евгений Иванов


Отвечает Foamplast

Добрый день, Nikita!

  • Это сильно зависит от ОС. Читайте документацию к конкретному процессору и ОС.
  • Насчёт КД и звука: разные звуковухи управляются по-разному, то же относится и к дискам. Без документации к устройству не обойтись, а ещё её могут не дать. Лучше делать это через ОС.



Ответ отправлен: 06.05.2004, 04:36
Отправитель: Foamplast


 Вопрос № 5225

Здравствуйте, у меня два вопроса.
1. Где можно скачать win32.hlp с функциями winapi для asm.
2. Есть "List View Control":
invoke SendMessage, hList, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_FULLROWSELECT + LVS_EX_SUBITEMIMAGES + LVS_EX_GRIDLINES
как мне выделить какойнибудь элемент в этом листе.



Вопрос отправлен: 04.05.2004, 21:48
Отправитель: Andrei

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

Отвечает Gibbel

Добрый день, Andrei!
1. Не существует разделения функций WinAPI на функции для C или функции для Assemblerа. WinAPI - это универсальный набор функций, которые вы можете вызывать из программы на любом языке программирования. Наиболее полная документация по WinAPI - это MSDN. Целиком библиотека MSDN продается мелкомягкими за большие деньги. А вот ее часть, Platform SDK, содержащую описание большинства стандартных функций Windows вы можете скачать бесплатно.
2. В большинстве случаев, вам необходимо послать несколько сообщений. Это LVM_SETSELECTIONMARK, LVM_SETITEMSTATE и LVM_ENSUREVISIBLE.

P.S.: Рассылка по WinAPI находиться рядом ;-)

Ответ отправлен: 05.05.2004, 15:18
Отправитель: Gibbel


Отвечает Foamplast

Доброе время суток, Andrei!

  • Берите Platform SDK. C - это почти как асм. И вообще заглядывайте в рассылку, я через месяц специальный сайт открою.
  • LVM_SETITEMSTATE, а ещё можно listview сделать ownerdraw и самому фон элементов подкрашивать :)



Ответ отправлен: 06.05.2004, 04:32
Отправитель: Foamplast


 Вопрос № 5226

Приветствую,
Наваял тут функцию копирования памяти (C-вариант - memcpy). Работает вроде нормально, Посмотрите, может в плане оптимизации чего добавите. Функция написана на FASM c расчетом на вызов из С-программы.
Спасибо


Приложение:


Вопрос отправлен: 05.05.2004, 12:05
Отправитель: Hordi

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

Отвечает Foamplast

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

Сразу хочется заметить, что программа может копировать только крупные блоки. И вообще, как насчёт rep movsb (movsd)? Ведь оптимизация бывает по скорости и по размеру.




Ответ отправлен: 06.05.2004, 04:27
Отправитель: Foamplast


Отвечает Евгений Иванов

Добрый день, Hordi!
проще будет movsb
;)
* EMan: -=- Любовь существует! =-=


Ответ отправлен: 08.05.2004, 19:01
Отправитель: Евгений Иванов


 Вопрос № 5228

Здравствуйте уважаемые эксперты.
Не подскажете ли Вы как определить присутствует ли в системном блоке звуковая карта и если присутствует, то какая. Все это требуется под ДОС.
Заранее спасибо.



Вопрос отправлен: 05.05.2004, 18:16
Отправитель: Joy

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

Отвечает Foamplast

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

Ищите соответствующий класс устройства по plug and play. Если надо, пришлю исходник.




Ответ отправлен: 06.05.2004, 04:24
Отправитель: Foamplast


Отвечает Евгений Иванов

Здравствуйте, Joy!
Есть соглашение. Порт 220h
Там нужно команды подавать, она отзывается. И т.д.
* EMan: -=- Любовь существует! =-=


Ответ отправлен: 08.05.2004, 19:01
Отправитель: Евгений Иванов


 Вопрос № 5229

Здравствуйте уважаемые эксперты!
Вопрос такой:
Имеется два потока - основной(с циклом обработки сообщений) и рабочий.
Необходимо из рабочего потока изменить надпись на StatusBar. При
попытке это сделать возникает исключение. Подскажите пожалуйста алгоритм
взаимодействия рабочего потока с элементами управления основного потока.
Заранее благодарен 1!



Вопрос отправлен: 05.05.2004, 19:40
Отправитель: 1

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

Отвечает Foamplast

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

Во-первых, посмотрите, нет ли ошибок. Я как-то писал программу, в которой разные потоки изменяли окна и всё было нормально. Во-вторых, в винде действительно есть некоторые случаи запрещения манипуляций с окнами чужого потока. В таких случаях поток, которому можно изменять окно может а)ждать события б)получать сообщение. При необходимости изменения окна пошлите сообщение (выставьте событие) нужному потоку.




Ответ отправлен: 06.05.2004, 04:23
Отправитель: Foamplast


 Вопрос № 5230

Здравствуйте уважаемые эксперты!
Я уже прислал вас вопрос
>Не могли бы Вы объяснить мне 2 вещи:
>Первая - как работать с аппаратными прерываниями IRQ, а >конкретно - с мышью и звуковой картой SPb ISA (запись и >воспроизведение)
>А вторая - как можно в ассемблере реализовать чтение >запись CD-R и CD-RW дисков в ISO и UDF форматах (хотя бы >как что и куда направлять CD-RW приводу?)
>Спасибо
и уже получил отрицательный ответ по той причине, что сие сильно зависит от ОС и оборудования
Посему прошу все-таки мне ответить учитывая, что я работаю исключительно в MS-DOS 6.20, (возможно в 32 разрядном режиме, но не желательно). Что касается звуковой карты - то она у меня стандартная DOS-овская - Sound Blaster Pro ISA - совместимая. А от вида привода CD-RW это действительно принципиально зависит? Стандартов нет? (а вообще-то у меня RICOH). А мышь тоже стандартная для DOS - serial
Очень прошу хоть кратенько ответить ибо не могу найти в интернете соответствующей документации...
Спасибо



Вопрос отправлен: 06.05.2004, 13:25
Отправитель: Nikita

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

Отвечает _vt

Здравствуйте, Nikita!
А причем здесь IRQ? Ищи описание на необходимое тебе устройство и работай с ним!
E-Man : Life begins at 1000Mhz!


Ответ отправлен: 07.05.2004, 07:09
Отправитель: _vt


Отвечает Евгений Иванов

Добрый день, Nikita!
http://www.codeproject.com/system/udfcdr.asp?df=100&forumid=7311&exp=0&select=583256
а вообще ищи ASPI
это стандарт
* EMan: -=- Любовь существует! =-=


Ответ отправлен: 09.05.2004, 15:27
Отправитель: Евгений Иванов


Отвечает Foamplast

Добрый день, Nikita!

  • Рассказывать очень много, проще сказать, где искать.
  • Есть хорошая книга на эту тему - "Программирование на аппаратном уровне", автор Кулаков.
  • Насчёт мыши все как раз просто - они стандартные (не стандартизованы только доп. кнопки и колёса).
  • По бластеру вот:
    http://www.rusdoc.ru/material/lang/other/sb.zip
    http://pmg.org.ru/russian/download.htm>
    http://www.kulichki.com/inkwell/comp/raznoe.htm
    (это всё одно и то же, на разных серверах)
  • С писалками косяков много, скорее всего эта информация (как PCI или IFS для винды) не всем доступна. И они очень разные, так как пишущие программы, работающие с одним приволом могут не работать с другим.
  • Советую взять исходники FreeBSD (или наподобие) и посмотреть, как там сделано.



Ответ отправлен: 08.05.2004, 15:01
Отправитель: Foamplast


 Вопрос № 5232

Здравствуйте Уважаемые Эксперты!!!
Есть два вопроса:
Пытаюсь написать что-то вроде драйвера.Программа перешла
на 0 кольцо ,могу ли я писать дальше тело проги как под ДОС
т.е. без API,скажем mov dx,... ,mov al,1 , int 21h ,...
И второй вопрос:как запустить программой другую программу(при определенных событиях ,например программа считывает время и в 2 часа должна запустить Word)

Зарание благодарен!!!



Вопрос отправлен: 06.05.2004, 14:54
Отправитель: vlad

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

Отвечает Foamplast

Доброе время суток, vlad!

Расставьте всё по местам!



  • Под какой ОС вы пишете? Windows - тогда зачем запускать Word из драйвера, когда это проще сделать из пользовательского режима?
  • Без API писать можно, только mov ax, [xx]... int 21h - это тоже API, только ДОСа. Если Вы под виндой, то API ДОСа вызывать нельзя (в 95/98, наверное можно, но это атавизм).
  • Посмотрите Windows DDK, раздел Driver Support Routines, там есть ответы на многие Ваши вопросы.



Ответ отправлен: 08.05.2004, 15:23
Отправитель: Foamplast


Отвечает Pawel

Доброе время суток, vlad!
1)Не совсем так. На RING-0 нет прерываний и Api, можно работать с машиной только через порты и регистры. Важно то, что драйвер будет иметь высший приоретет, т.ч вечный цикл повесит комп. Если пужно подробней то пишите.
p.s. писал драйвер винта на fasm.

Ответ отправлен: 06.05.2004, 16:18
Отправитель: Pawel


 Вопрос № 5233

У меня есть файл.
Его размер 240 байт.
Моя задача урезать последние 80 байт чтобы размер файла стал 160 байт. Как это сделать ?



Вопрос отправлен: 06.05.2004, 17:00
Отправитель: DeHunter

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

Отвечает Foamplast

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

Для этого нужно установить конец файла на 160-м байте от начала. Как сделать - зависит от ОС. Под Windows это делает функция SetEndOfFile().




Ответ отправлен: 08.05.2004, 15:26
Отправитель: Foamplast


Отвечает ASMодей

Доброе время суток, DeHunter!
В Windows можно использовать функцию SetEndOfFile.

Ответ отправлен: 08.05.2004, 07:17
Отправитель: ASMодей


Отвечает Евгений Иванов

Здравствуйте, DeHunter!
Устанавливаешь указатель файла на нужный отрезок и закрываешь файл.
См. описание функции установки указателя. (42h в ДОС).

* EMan: -=- Любовь существует! =-=


Ответ отправлен: 08.05.2004, 19:02
Отправитель: Евгений Иванов


Отвечает Acid Burn

Доброе время суток, DeHunter!
Открываешь файл, считываешь из него 160 байт и сохраняешь их с перезаписыванием файла!


Ответ отправлен: 08.05.2004, 22:56
Отправитель: Acid Burn


Отвечает Dark_Lord

Доброе время суток, DeHunter!
Например так:
-Создаёшь буффер размером файла
-счтиываешь файл
-переоткрываешь файл с флагом CREATE_ALWAYS
-записываешь в файл только первые 180 байт из буфера

Ответ отправлен: 06.05.2004, 23:06
Отправитель: Dark_Lord


Отвечает Pawel

Приветствую Вас, DeHunter!
Читаешь первые 16 байт из фаила в буфер, потом записываешь их снова в файл.

Ответ отправлен: 07.05.2004, 21:19
Отправитель: Pawel



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

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (26)
C / C++ (15)
Perl (4)
Builder / Delphi (19)
Pascal (19)
Basic / VBA (4)
Java / JavaScript (4)
PHP (11)
Криптография (9)
WinAPI (11)
Радиоэлектроника (6)
Пользователю
Windows 95/98/Me (33)
Windows NT/2000/XP (50)
"Железо" (27)
Поиск информации (14)
Администратору
Windows NT/2000/XP (24)
Linux / Unix (9)
Юристу
Гражданское право (10)
Семейное право (7)
Трудовое право (9)
КоАП (6)

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




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


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


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


В избранное