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

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


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

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

Выпуск № 416
от 14.11.2002, 21:00

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


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

Bob Johnson
Статус: Профессиональный
Общий рейтинг: 155.66
[Подробней >>]
DiGiT[old]
Статус: Опытный
Общий рейтинг: 107.47
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 130.45
URL: моя рассылка по Protected Mode
[Подробней >>]
 
Maverick
Статус: Опытный
Общий рейтинг: 137.74
URL: Страница по асму и вирмейку
Телефон: 89039415024 (BiLine GSM)
[Подробней >>]
masquer
Статус: Профессиональный
Общий рейтинг: 152.94
[Подробней >>]
St
Статус: Опытный
Общий рейтинг: 117
[Подробней >>]
 
Portnov
Статус: Профессиональный
Общий рейтинг: 117.98
URL: Мой сайтик...
[Подробней >>]
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 127.27
[Подробней >>]
Gibbel
Статус: Профессиональный
Общий рейтинг: 108.37
URL: Страничка обо мне и моих друзьях
[Подробней >>]
 
baldr
Статус: Профессиональный
Общий рейтинг: 114.83
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
LIFO
Статус: Профессиональный
Общий рейтинг: 127.92
URL: наш сайт
Телефон: 8 01710 24758
[Подробней >>]
Supra
Статус: Доверительный
Общий рейтинг: 114.88
[Подробней >>]
 
Andrew Vext
Статус: Начальный
Общий рейтинг: 118.33
[Подробней >>]
Eugene
Статус: Доверительный
Общий рейтинг: 112.18
[Подробней >>]


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

Вопрос № 1747. Уважаемые эксперты мой вопрос такой я учусь программировать по рассылке Калашникова и столкнулся с т... (ответов: 4)
Вопрос № 1748. Зрдавствуйте,уважаемые эксперты.Подскожите плиз по такому вопросу: если ассемблер машинный язык,те о... (ответов: 6)
Вопрос № 1749. Привет крутые чуваки. Я задавал вопрос по защите стыковочного типа. Отдельное спасибо (извините за ... (ответов: 2)
Вопрос № 1750. Здравствуйте, уважаемые эксперты! У меня есть CD-ROM, но из-за царапины не хочет даже читаться (с пе... (ответов: 5)
Вопрос № 1751. Здравствуйте, эксперты! Подскажите, пожалуйста, ссылки на рускоязычные сайты по написанию драйверов ... (ответов: 2)
Вопрос № 1752. Хай! Нашел шедевр!!! Кто автор незнаю. Start: call Next Next: pop di sub di, 3 lea di... (ответов: 3)
Вопрос № 1754. Уважаемые эксперты. Такой вот вопрос. Устал уже искать оттвет, может что посоветуете. Есть программа... (ответов: 1)
Вопрос № 1755. Hi, dear experts! Я не совсем понимаю что такое порты ввода-вывода устройств, зачем они нужны и чем ... (ответов: 6)
Вопрос № 1756. Еще раз здравствуйте все. Помнится под Дос был исходник на асме по программированию микросхемы тайм... (ответов: 5)
Вопрос № 1757. Доброе время суток всем. Поставил себе HDD 1,6Gb. Установил туда DOS 6.22,перенес Tasm 2.0,пишу, зна... (ответов: 6)
Вопрос № 1758. Здравствуйте уважаемые эксперты. Вопрос касается работы с параллельными портами. Мне необходимо испо... (ответов: 2)
Вопрос № 1759. Привет Почему ты советуешь использовать вин2к.Как использовать SoftDump.... (ответов: 1)
Вопрос № 1760. Здравствуйте Эксперты ! Спосибо, что решили мне помоч ! Дополняю и поясняю задачу ! Мне надо создать... (ответов: 1)

Вопросов: 13, ответов: 44


 Вопрос № 1747

Уважаемые эксперты
мой вопрос такой
я учусь программировать по рассылке Калашникова и столкнулся с такой проблеммой
написав программу
CSEG segment
org 100h
start:
mov ax,0B800h
mov es,ax
mov di,0
mov ah,31
mov al,1
mov es:[di],ax
mov ah,10h
int 16h
int 20h
CSEG ends
end start
и скомпилировав ее
я ее запускаю.
Но вместо того чтоб вывести на экран рожицу она только запускает пустой экран
а при нажатии она выключаеться
Где ошибка?



Вопрос отправлен: 09.11.2002, 23:36
Отправитель: Александр

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

Отвечает Bob Johnson

Здравствуйте, Александр!
А у тебя случайно не windows XP? Если да - то вначале проги надо принудительно поставить переход в текстовый режим:
mov ax, 3
int 10h
ТОгда работать будет (у меня под Win 98 и так работает).


Ответ отправлен: 10.11.2002, 15:31
Отправитель: Bob Johnson


Отвечает DiGiT[old]

Добрый день, Александр!
Просто смысл в том что у тебя все наоборот помещать в память нужно. Ты аттрибуты и код символа поменяй местами

Ответ отправлен: 10.11.2002, 09:31
Отправитель: DiGiT[old]


Отвечает Broken Sword

Доброе время суток, Александр!
да. в XP так и есть. поэтому нужно в самом начале проги установить текстовый режим:
mov ax,3
int 10h

Ответ отправлен: 09.11.2002, 23:57
Отправитель: Broken Sword


Отвечает Maverick

Добрый день, Александр!
Выкинь комп :) шутка.
У меня все прекрасно работает.
Она и должна прекращать работу при нажатии клавиши.
А почему не выводит?
Дык ты пиши какая у тебя операционка.
Мож ты ее под линуксом запускаешь :)
Дело не в программе, она рабочая.
Чем компилил, ассемблировал?


Ответ отправлен: 10.11.2002, 04:55
Отправитель: Maverick


 Вопрос № 1748

Зрдавствуйте,уважаемые эксперты.Подскожите плиз по такому
вопросу: если ассемблер машинный язык,те оддает "приказания"
процессору. Можно ли дизаасемблировать или как там декомпелировать программы написанные на каком нибудь
другом языке,чтобы в результате получились команды ассемблера
Дело в том я заметил что при дизассемблировании многих программ что-то получалось,может быть не в полной форме.
Речь не идет о языках со своей оболочкой таких как
q бейсик итп.



Вопрос отправлен: 09.11.2002, 23:57
Отправитель: Yury (ch_y@mail.ru)

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

Отвечает masquer

Добрый день, Yury!
Можно, берешь любой дизассемблер (hiew, w32dasm, ida pro) и вперед.

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


Отвечает Bob Johnson

Добрый день, Yury!
Любую программу, написанную на любом языке программирования и откомпилированную в машинные коды intel 80x86 можно дизассемблировать и получить команды ассемблера, т.к. машинные коды и ассемблер взаимоэквивалентны. Исключение составляет, например, java - там получаемый код выполняется не процессором, а виртуальной java-машиной (т.е. программой для обычного процессора), поэтому такую программу можно дизассемблировать только в команды этой java машины.


Ответ отправлен: 10.11.2002, 15:31
Отправитель: Bob Johnson


Отвечает St

Привет, Yury!
Обычно дизассемблировать можно любую программы любым дизассемблером. А вот декомпилировать - восстановить текст программы написанной на любом другом языке кроме ассемблера (например С или Pascal) - это значительно сложнее, тк даже для одного и того же компилятора обычно существует несколько версий, да и языков этих довольно много. Хотя в инете я видел несколько декомпиляторов - в том числе и для VB.
St

Ответ отправлен: 10.11.2002, 13:52
Отправитель: St


Отвечает DiGiT[old]

Здравствуйте, Yury!
Дык что такое программа: набор машинных кодов(с точки зрения процессора). Соответсвенно разделяй и властвуй. т.е. дизассемблируй и смотри. Хорошего из этого мало выйдет. Если под винды, то лучше поюзай софтайс, какой смысл смотреть всю прогу, когда необходим тока ее кусок

Ответ отправлен: 10.11.2002, 09:23
Отправитель: DiGiT[old]


Отвечает Maverick

Здравствуйте, Yury!
Любым дизассемблером. Советую IDA.
Гыгы, попробуй дизассеблировать прогу, написанную на делфях, мягко сказано что она не читабельна.


Ответ отправлен: 10.11.2002, 04:55
Отправитель: Maverick


Отвечает Portnov

Добрый день, Yury!
Вообще-то я что-то похожее кому-то уже разъяснял... Ну да ладно.
Идея такая. Проц не понимает комманд ни одного языка программирования. Он понимает только определенные последовательности нулей и единиц, проще говоря, кодовые байты, или, как их принято называть, опкоды. Ассемблер отличается от других языков программирования тем, что есть взаимно-однозначное соответствие между его инструкциями (ну, там mov, cmp, ...) и этими самыми опкодами. Предложения других языков программирования при компилляции переводятся, как правило, в длинные цепочки опкодов. Но помните еще, я говорил про взаимно-однозначное соответствие! Т.е. с тем же успехом можно и последовательности опкодов (бинарному образу программы, экзешнику или комнику) сопоставить последовательность ассемблерных инструкций (исходник на Асме!) Так что в принципе возможен перевод с любого языка на асм. И если написать прогу, скажем, на Паскале, откомпилить ее, то по полученному экзешнику можно восстановить ассемблерный код. Этот процесс называется дизассемблированием, для этого есть много всяких программ, но лучшая из них, AFAIK, это IDA (InteractiveDisAssembler).
Единственный принципиально важный пунктик: ведь не только опкоды есть байты, данные-то тоже представляются последовательностью байт! Процессор их различает очень просто: если ему дали какой-то байт на выполнение, он считает, что это опкод, и выполняет его (если опкода с таким номером нет, случается прерывание Invalid Opcode), а если этот байт подсунут в качестве аргумента к команде, то он считает его данными. Все предельно просто: проц получает байт по адресу CS:(E)IP, считая его опкодом. Пусть это оказался опкод команды mov. Ага, говорит проц, у mov же должно быть два операнда! Значит, следующие два байта - операнды... Загрузили, выполнили инструкцию, и смотрим дальше по тому же принципу... Правда, это упрощенная схема, т.к. сами знаете - операнды бывают размером больше байта, да еще есть всякие там косвенные адресации, для этого приходится лишние промежуточные байты вводить, но суть та.
Так к чему это я? А к тому, что при дизассемблировании порой бывает очень сложно отличить данные от кода. Например, последовательность байт 41h,77h,61h,72h,64h можно понять как слово "Award", а можно как бессмылсенный код
inc cx
jnbe 000FE848
jb 000FE84D
И это - очень простой пример! Так что не удивляйтесь сильно, если при дизассемблировании получите ерунду!
PS. Че то я разошелся.. Вообще-то я могу и продолжать - если надо, пишите portnov@mdv.ru
С уважением, Portnov.

Ответ отправлен: 11.11.2002, 19:44
Отправитель: Portnov


 Вопрос № 1749

Привет крутые чуваки. Я задавал вопрос по защите стыковочного типа. Отдельное спасибо (извините за произношение:)) Маскьюэру, Дарк_Лорду и Атмиону. Помогли. Короче, защитный блок пристыковывается, работает (пока в холостую), возвращает управление проге. Теперь, грубо говоря, надо чтоб защитный блок принимал пароль и им расшифровывал код проги. Можно через командную строку передать конечно. Но не красиво это. Я так думал: Защитный блок создаёт окно с полем ввода, ну и принимает от него юзерский пароль. Защита всё делает для этого: -находит нужные адреса апей из Кернел32 и Юзер32; -создаёт и регит класс окна, -создаёт окно, организует цикл обработки сообщений. Мне приходилось писать окна на асме и до этого. Всё 10 раз проверил. Все адреса и параметры функций правильные. Класс регится, RegisterClass возвращает примерно 0xC1B2. А вот CreateWindow не фурычит. Ошибка: CreateWindow где-то внутри себя пытается обратиться по левому адресу (близко к нулевому).
Причем, если защитный блок немного подкорректировать (офсеты некоторые поменять) и откомпилить как самостоятельную прогу, то окно создаётся с абсолютно теми же параметрами, класом окна и т. п.
Понимаю, что нужно исходник смотреть, но может есть объективная причина сего глюка. Я чего-то не знаю? Ведь все остальные АПИшки работают, а сфигов CreateWindow не фурычит. Я пробовал делать через диалоги, ресурсы и пр. Всё равно DialogBoxParamIndirect грохается (он ведь CreateWindow тоже вызывает). Опять же, если запустить как самостоятельную прогу, то с диалогом всё окей.
З.Ы. Могу выслать и исходник и защиту. Там всё легко понять. Комментариев куча.
ЗЗЗЗЫ. СССпасибо.



Вопрос отправлен: 10.11.2002, 01:49
Отправитель: Папа (rezervx@ezmail.ru)

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

Отвечает masquer

Доброе время суток, Папа!
Угу, примерчик шли. masquer@pochta.ws

Ответ отправлен: 10.11.2002, 15:33
Отправитель: masquer


Отвечает Bob Johnson

Приветствую Вас, Папа!
1. Посмотри, приходит ли твоей оконной процедуре хотя бы одно сообщение (можно там messagebox поставить).
2. Если CreateWindow пытается обратиться по левому адресу, скорее всего, ты ей что-то не то в параметры подсунул - проверь еще раз.
3. Посмотри, что ты передаешь в качестве hinstance при вызове CreateWindow и при регистрации класса окна - они должны совпадать.


Ответ отправлен: 11.11.2002, 13:47
Отправитель: Bob Johnson


 Вопрос № 1750

Здравствуйте, уважаемые эксперты!
У меня есть CD-ROM, но из-за царапины не хочет даже читаться (с первой попытки), а когда все же удается его прочитать, при выполнении установки программы, в самом конце выдает ошибку, видимо, связанную с контролем целостности данных. Не подскажет ли мне кто-нибудь, как можно просмотреть/прочитать такой сбойный CD-ROM, в том числе загрузочные области и есть ли способы восстановить такую информацию на жесткий диск, или хотя бы подскажите программы для подобного тестирования.
Заранее благодарен всем откликнувшимся.



Вопрос отправлен: 10.11.2002, 08:14
Отправитель: Ярослав

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

Отвечает Maverick

Добрый день, Ярослав!
Есть же жидкость для полировки дисков. К тому же она заполняет царапины и в 90% случаях исчезает эффект переломления лазера.


Ответ отправлен: 10.11.2002, 09:50
Отправитель: Maverick


Отвечает Dark_Lord

Добрый день, Ярослав!
Как известно царапанные диски (да и вообще все) лучше читаются на более медленных скоростях, поэтому можно попробовать прогой NeroDriveSpeed замедлить CD, тогда возможно получится его прочитать!

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


Отвечает Gibbel

Доброе время суток, Ярослав!
Скорее всего, кроме полировки диска, тебе больше ничего не поможет... Но по этой теме много инфы в инете...

Ответ отправлен: 11.11.2002, 10:46
Отправитель: Gibbel


Отвечает Bob Johnson

Приветствую Вас, Ярослав!
Прежде всего попробуй всунуть этот диск в более крутой драйв (например, CDRW, Teac или Plextor).
Если диск не читается - фигню читать драйв тоже не будет, он просто задумается надолго и потом выдаст ошибку.
Из программ можешь попробовать Virtual CD 4 - она прочтет и создаст image этого диска даже если он не читается (т.е. image будет с ошибками). Может поможет.


Ответ отправлен: 11.11.2002, 13:48
Отправитель: Bob Johnson


Отвечает baldr

Добрый день, Ярослав!
Да... Это проблема в наше время актуальна... :(
Многие драйвы (особенно высокоскоростные) плохо читают пиратские, чуть поцарапанные или просто
не нравящиеся им диски... :( У меня 8x-CD-ROM и я таких проблем почти лишен - у меня читаются
многие диски, которые не распознаются у других. Попробуй и ты так же - найти обладателя
такого раритета и скопировать все с компакта. Однако, царапины бывают разные! Если царапина идет
поперек дорожек, то шансы у тебя все же есть. Если же царапина идет вдоль - ... :( Тут уже
все серьезнее. Головка при чтении плохо позиционируется и сбивается, что и приводит к ошибкам.
Есть еще вариант. Крайний. Берешь мелкую шкурку и аккуратно шлифуешь рабочую сторону
компакта до исчезновения царапин. Стирать можно много - защитный слой довольно толст. Но все
равно будь осторожен. Повторяю, это крайняя мера.


Ответ отправлен: 11.11.2002, 22:36
Отправитель: baldr


 Вопрос № 1751

Здравствуйте, эксперты!
Подскажите, пожалуйста, ссылки на рускоязычные сайты по написанию драйверов для Win или буду благодарен любым документам (MSDN&DDK не предлагать - имеется).
Заранее благодарен



Вопрос отправлен: 10.11.2002, 09:50
Отправитель: EraSer (eraser99@tut.by)

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

Отвечает masquer

Здравствуйте, EraSer!
Гы, я б и сам посмотрел на такие сайты. Имею ввиду под NT/2k/XP. На русском языке один мне попадался, правда. В гугле ищи по ключевым словам wdm kmd DeviceIoControl DriverEntry.
По vxd таких сайтов - море.


Ответ отправлен: 10.11.2002, 14:59
Отправитель: masquer


Отвечает Bob Johnson

Здравствуйте, EraSer!
Могу тебе выслать свой труд - что-то типа курсового, где объясняется (достаточно просто) как писать драйвера для Win9x.
ТОлько вот я тебе пытался выслать исходник звонилки с RAS на асме - ничего не получилось, пришло сообщение, что адреса не существует.


Ответ отправлен: 11.11.2002, 13:49
Отправитель: Bob Johnson


 Вопрос № 1752

Хай!
Нашел шедевр!!!
Кто автор незнаю.
Start:
call Next
Next:
pop di
sub di, 3
lea di, Start[bx]
movsb
ret
End Start
13 БАЙТ!!! И ЛЕЧИТСЯ!!!
Кто-нибудь видел меньше и чтоб лечился(не overwrite)?



Вопрос отправлен: 10.11.2002, 11:15
Отправитель: Maverick

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

Отвечает LIFO

Доброе время суток, Maverick!
Стар.
Точно не помню, но вроде в 'Компьютерной вирусологии' видел
года 2-3 назад.

Ответ отправлен: 10.11.2002, 18:27
Отправитель: LIFO


Отвечает masquer

Доброе время суток, Maverick!
Ну дык шедевр то в чем?

Ответ отправлен: 10.11.2002, 14:44
Отправитель: masquer


Отвечает Broken Sword

Здравствуйте, Maverick!
? я чето непойму что это за шедевр, вся эта хрень равносильна 4 байтам:
mov DI,SI
movsb
ret
но dr web (4.28a) не видит ничего подозрительного ни в том ни в этом случае. Что ты вообще имел ввиду?


Ответ отправлен: 10.11.2002, 12:06
Отправитель: Broken Sword


 Вопрос № 1754

Уважаемые эксперты.
Такой вот вопрос. Устал уже искать оттвет, может что посоветуете.
Есть программа под исполняемая в ДОСбоксе под 98-ой. Есть другая программа, но уже под Винду. Задача - связать их вместе, точнее что бы из виндовой программы можно было принять хоть какое нибудь собщение от досовской программы.
Единственное решение, что пришло на ум - использование промежуточного файла на диске. Но и тут есть свои минусы.
Виндовая программа - моя, ДОСовская - нет (т.е. очень сильно менять ее не имею права, только чуть-чуть подправить). Посоветуйте хоть что нибудь. Может кто-то сталкивался с подобной задачей...



Вопрос отправлен: 10.11.2002, 17:07
Отправитель: Валентин (faname@yandex.ru)

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

Отвечает masquer

Приветствую Вас, Валентин!
Можеш из своей проги запустить с помощью CreateProcess досовскую прогу с флагом DEBUG_PROCESS. Но для этого тебе прийдется поковыряться в отлаживаемой проге. Ну а дальше уже делать что угодно - читать в память процесса, писАть и т.д.

Ответ отправлен: 11.11.2002, 13:55
Отправитель: masquer


 Вопрос № 1755

Hi, dear experts!
Я не совсем понимаю что такое порты ввода-вывода устройств,
зачем они нужны и чем отличается их программирование под дос и виндоуз.



Вопрос отправлен: 10.11.2002, 17:22
Отправитель: Евгений (codex@nserv.iki.rssi.ru)

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

Отвечает Supra

Доброе время суток, Евгений!
Порты - это порты. Нужны для общения с периферией.
Например, порт принтера. Диапазон ввода/вывода 0378-037F.
Запрос на прерывание - 07.
Ты обращаешься к порту принтера, он фильтрует и что-то
делает или не делает.
Под ДОС проще.


Ответ отправлен: 10.11.2002, 23:19
Отправитель: Supra


Отвечает St

Привет, Евгений!
Порты это основной способ работы с микросхемами входящими в состав компьютера. За ними закреплены определенные номера портов. Программа обычно для того, чтобы устройство выполнило некую операцию посылает некое число в нужный порт, иногда ожидает ответа от устройства (в цикле или по прерыванию), снова пишет число в порт и тд. Программисту необходимо знать какие порты закреплены за этим устройством и что нужно писать/читать. Так можно работать практически с любым устройством. Однако тк иногда это достаточно сложно, то часто эта работа уже сделана теми кто писал БИОС, систему, драйверы.
Работа с портами под DOS и Windows отличается тем, что в DOS вы можете делать с портами что хотите, а в Windows в обычной программе это практически невозможно, для работы с портами пишутся драйвера.
St

Ответ отправлен: 10.11.2002, 23:28
Отправитель: St


Отвечает Dark_Lord

Приветствую Вас, Евгений!
Порты в/в это порты чипсета компьютера. Любая операция работы с любым устройством ведётся именно через них. BIOS и Dos прерывания работают с портами ввода/вывода. А разница в программировании в dos и windows это то, что в windows они доступны только драйверам, а в дос они открыты!

Ответ отправлен: 10.11.2002, 20:16
Отправитель: Dark_Lord


Отвечает Andrew Vext

Здравствуйте, Евгений!
Порты ввода-вывода - это регистры различных устройств ввода-вывода, через которые программа взаимодействует с аппаратурой.
В DOS вы можете свободно работать с любыми портами, в Win 9x это несколько сложнее, а в Win NT/2000/XP - это очень сложная задача, требующая большого объема кода.
Основная проблема в том, что Windows запрещает пользовательским приложениям доступ к портам ввода-вывода.


Ответ отправлен: 11.11.2002, 12:17
Отправитель: Andrew Vext


Отвечает Bob Johnson

Здравствуйте, Евгений!
Порт - это регистр (или ячейка) данных, находящаяся не в оперативной памяти компьютера, а непосредственно внутри устройства. Они нужны для передачи данных устройствам, т.к. процессор только и может, что с памятью работать, да с портами. Память для этого использовать не удобно (в общем случае), а порты - вот специально для этого и предназначены.
Отличается программирование тем, что под ДОС можно записывать все что угодно в любой порт (с соответствующими последствиями), а вот windows (особенно НТ) это запрещает, т.к. таким образом очень легко систему привести в нестабильное состояние.


Ответ отправлен: 11.11.2002, 13:49
Отправитель: Bob Johnson


Отвечает Maverick

Здравствуйте, Евгений!
Ну это так называемое буферное устройство для обмена данными между компом и перефирийными устройствами.
В них можно писать(out) и читать из них(in)
Винда дает ковыряться не во всех портах, она вообще этого не любит, а в досе, пожалуйста.


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


 Вопрос № 1756

Еще раз здравствуйте все.
Помнится под Дос был исходник на асме по программированию
микросхемы таймера 8253 (или 8254) и обработки прерываний от него. Возможно организовать такое в WinNT/2k/xp ?
(Готов на самые грустные прогнозы)



Вопрос отправлен: 10.11.2002, 17:34
Отправитель: Евгений (ccodex@nserv.iki.rssi.ru)

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

Отвечает Supra

Приветствую Вас, Евгений!
Возможно, но задолбаться можно в доску!!!

Ответ отправлен: 10.11.2002, 23:21
Отправитель: Supra


Отвечает Broken Sword

Добрый день, Евгений!
В XP все катит, могу выслать исходники рабочие по этой теме

Ответ отправлен: 10.11.2002, 20:48
Отправитель: Broken Sword


Отвечает Andrew Vext

Приветствую Вас, Евгений!
В книге Майкла Абраша была программа Zen Timer. Предназначалась она для оценки быстродействия программ. В принципе нечто подобное можно сделать и под NT, написав специальный драйвер. Непонятна цель всего этого - практически все задачи можно решить более простыми путями.
Andrew Vext

Ответ отправлен: 11.11.2002, 12:06
Отправитель: Andrew Vext


Отвечает Bob Johnson

Доброе время суток, Евгений!
И правильно, что готов... НЕТ! Этого так просто даже не сделаешь в Вин 98. Это потому, что таймер управляет много чем в виндовсе (например, переключением задач). Поэтому его частоту нельзя изменять. Готовся решать свою проблему другим способом.


Ответ отправлен: 11.11.2002, 13:49
Отправитель: Bob Johnson


Отвечает baldr

Приветствую Вас, Евгений!
Под WinNT (W2k, WinXP) программировать на низком уровне можно только внутри системного
процесса (IMHO!). А программировать таймер я думаю, нельзя. Совсем. Слишком много на нем завязано в самой системе.


Ответ отправлен: 11.11.2002, 22:37
Отправитель: baldr


 Вопрос № 1757

Доброе время суток всем.
Поставил себе HDD 1,6Gb. Установил туда DOS 6.22,перенес Tasm 2.0,пишу, значит,прогу, потом транслирую, далее линкую, а мне в ответ NO STACK! Хотя стек определяю как
stk segment stack
db 100h dup ('')
stk ends
1.Не подскажете с чем такое связано,раньше не было, когда в эмуляторе Dos работал?
2.И еще, есть ли у кого драйвер: 800.com или аналог?
Огромное спасибо всем.
Alex.



Вопрос отправлен: 10.11.2002, 19:21
Отправитель: Alex

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

Отвечает Supra

Доброе время суток, Alex!
Может пробельчика нет между кавычками.

Ответ отправлен: 10.11.2002, 23:24
Отправитель: Supra


Отвечает St

Привет, Alex!
1) У меня всегда на тасм проходило (для exe-файлов):
S_SEG SEGMENT STACK 'STACK'
DB 200 DUP ('STACK ') ;слова в скобках не обязательны
S_SEG ENDS
2) У меня где-то было. Напишите мне свой адрес на st23@yandex.ru (только напомните свою просьбу :)
St

Ответ отправлен: 10.11.2002, 23:28
Отправитель: St


Отвечает Eugene

Приветствую Вас, Alex!
1)Тебе обязательно надо всунуть 'stack', например
stck segment 'stack' stack;

2)Надо было указать своё мыло, тогда я бы закинул.

Ответ отправлен: 11.11.2002, 09:50
Отправитель: Eugene


Отвечает Bob Johnson

Добрый день, Alex!
Кажется давно здесь пробегал похожий вопрос. Используй более новую версию TASM'a...


Ответ отправлен: 11.11.2002, 13:49
Отправитель: Bob Johnson


Отвечает Portnov

Добрый день, Alex!
Есессно! Tasm2 не понимает спецификацию stack. Просто пишите
assume ..., ss:stack
и все будет хокей! Или возьмите тасм поновее.
С уважением, Portnov.

Ответ отправлен: 11.11.2002, 19:59
Отправитель: Portnov


Отвечает baldr

Добрый день, Alex!
Скорее всего, просто сегментный регистр SS не настроен с помощью assume на сегмент стека.
А указание stack просто говорит компилятору о некоторых особенностях сегмента.
Драйвер 800.com - это старая вещь... У меня на сайте есть замечательная штука - PU1700 .
Очень советую.
http://www.dospage.by.ru


Ответ отправлен: 11.11.2002, 22:37
Отправитель: baldr


 Вопрос № 1758

Здравствуйте уважаемые эксперты.
Вопрос касается работы с параллельными портами.
Мне необходимо использовать порт принтера для управления неким процессом. Я писал на ассемблере (правда для z80). Там все было просто: отправляем число в порт; читаем число из порта, и все.
Сейчас я усиленно изучаю "новый"(для меня)ассемблер и думаю, что плохо знаю конфигурацигурацию компьютера или правила обращения к портам.
Прилагаю текст программы, в ходе выполнения которой я собирался увидеть +5V на 2-9 ногах разъема принтера.
Помогите пожалуйсто разобраться.
С уважением Андрей.


Приложение:


Вопрос отправлен: 10.11.2002, 19:24
Отправитель: Андрей

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

Отвечает Supra

Приветствую Вас, Андрей!
А где команда "in", сначала надо отправить, потом забрать.


Ответ отправлен: 10.11.2002, 23:44
Отправитель: Supra


Отвечает Maverick

Добрый день, Андрей!
Судя по твоему коду, ты просто отправляешь данные ffh в порт данных принтера 378h.
Как ты с помощью этого кода пытаешся изменить питание?
Я не понимаю.


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


 Вопрос № 1759

Привет
Почему ты советуешь использовать вин2к.Как использовать SoftDump.



Вопрос отправлен: 10.11.2002, 20:49
Отправитель: mud

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

Отвечает masquer

Добрый день, mud!
Почему 2к - во-первых сама система надежнее и быстрее, дальше если почитаешь туториалы во многих пишут - вот в 2к это так делается, а в 9х по другому, но про 9х писать не интересно, поэтому будет описание только для 2к. СофтАйс я могу загрузить когда захочу а не при загрузке. Ну еще чего-то по мелочам...
Ну а вообще это мое субъктивное мнение, из недостатков - icedump для nt не может проигрывать mp3 и audiocd :)))))
SoftDump? Судя по названию какой-то memory dumper. У них у всех принцип работы один и тот же - ReadProcessMemory. Ну а как пользоваться - обычно правой кнопкой жмешь на процесс и выбираешь dump full :) А дальше зависит от программы и пакера/протектора...

Ответ отправлен: 11.11.2002, 13:26
Отправитель: masquer


 Вопрос № 1760

Здравствуйте Эксперты !
Спосибо, что решили мне помоч !
Дополняю и поясняю задачу !
Мне надо создать как бы шаблон для открытия и создания файлов
т.е.
Создание файла должно происходит самым простым способом на дос, после я сам все доделаю
Отрытие файла: вывод символов без какого либо форматирования, без прокрутки, под DOS. Тоже самый простой способ.

Если что-то опять не написал пишите, я допишу!
Еще раз спосибо кто откликнулся



Вопрос отправлен: 10.11.2002, 20:41
Отправитель: Саша

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

Отвечает Supra

Приветствую Вас, Саша!
Создать файл через описатель
AH ¦ 3cH
DS:DX ¦ адрес строки ASCIIZ с именем файла
CX ¦ атрибут файла
------+-----------------------------------
AX ¦ код ошибки если CF установлен
¦ описатель файла если ошибки нет

Открыть описатель файла
AH ¦ 3dH
DS:DX ¦ адрес строки ASCIIZ с именем файла "d:путьимя
файла",0
AL ¦ Режим открытия(0-чтение 1-запись 2-вместе)
3fH: Читать файл через описатель
AH ¦ 3fH
BX ¦ описатель файла
DS:DX ¦ адрес буфера для чтения данных
CX ¦ число считываемых байт
-------+-------------------------------------
AX ¦ код ошибки если CF установлен
AX ¦ число действительно прочитанных байт



Ответ отправлен: 10.11.2002, 23:59
Отправитель: Supra



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

Внимание!
Форма может работать некорректно в почтовых программах "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++ (30)
Perl (9)
Delphi (14)
Pascal (22)
Basic / VBA (11)
Java / JavaScript (12)
PHP (10)
MySQL / MSSQL (8)
Пользователю
Windows 95/98/Me (29)
Windows NT/2000/XP (20)
"Железо" (28)
Поиск информации (14)
Администратору
Windows NT/2000/XP (11)
Linux / Unix (16)
Юристу
Гражданское право (9)
Семейное право (4)
Трудовое право (4)
КоАП (4)

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




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

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


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

В избранное