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

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


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

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

Выпуск № 404
от 31.10.2002, 13:50

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


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

Biv
Статус: Опытный
Общий рейтинг: 114.55
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 155.33
[Подробней >>]
Atmion
Статус: Начальный
Общий рейтинг: 117.8
[Подробней >>]
 
masquer
Статус: Профессиональный
Общий рейтинг: 154.5
[Подробней >>]
Supra
Статус: Доверительный
Общий рейтинг: 115.06
[Подробней >>]
LIFO
Статус: Опытный
Общий рейтинг: 129.05
Телефон: 8 01710 24758
[Подробней >>]
 
oleg
Статус: Опытный
Общий рейтинг: 131.13
URL: форум по математике, компьютерным сетям
Телефон: (8432) 995153
[Подробней >>]
igorash
Статус: Профессиональный
Общий рейтинг: 118.25
[Подробней >>]
Maverick
Статус: Опытный
Общий рейтинг: 138.38
URL: Страница по асму и вирмейку
Телефон: 89039415024 (BiLine GSM)
[Подробней >>]
 
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 128.68
[Подробней >>]
Dron
Статус: Профессиональный
Общий рейтинг: 116.49
URL: Операционная система с нуля!
[Подробней >>]
ASMодей
Статус: Профессиональный
Общий рейтинг: 121
[Подробней >>]
 
Ayl
Статус: Профессиональный
Общий рейтинг: 118.02
[Подробней >>]
Portnov
Статус: Профессиональный
Общий рейтинг: 118.65
URL: Мой сайтик...
[Подробней >>]
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 116.21
URL: Пристанище неодинокого программиста
[Подробней >>]


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

Вопрос № 1611. Здравствуйте уважаемые Эксперты! Помогите, пожалуйста, разобраться мне с такой вот штукой. Есть прог... (ответов: 4)
Вопрос № 1612. Hi ! Мне нужно что бы мне написали одну программу на ассемблере(TASM, DOS), готов заплатить деньги. ... (ответов: 2)
Вопрос № 1613. Здравствуйте, товарищи! Вот у меня такой вопрос - вобщем не получается сделать COM file . Делаю я ег... (ответов: 5)
Вопрос № 1614. Привет ув. эксперты! Вопрос конечно совсем не по адресу, но все же(можно конечно адресовать в Поиск... (ответов: 3)
Вопрос № 1615. Здравствуйте эксперты! Скажите пожалуйста, что подразумевается под термином: "ОС реального врем... (ответов: 5)
Вопрос № 1616. Доброго времени суток всем экспертам! У меня в программе 3-мя методами реализуется растровая разверт... (ответов: 4)
Вопрос № 1617. Здравствуйте товарищи! Вот мне надо перевести число в ascii. Pls не посылайте мне алгоритмов тк у ме... (ответов: 7)

Вопросов: 7, ответов: 30


 Вопрос № 1611

Здравствуйте уважаемые Эксперты!
Помогите, пожалуйста, разобраться мне с такой вот штукой.
Есть программа (вообщето говоря уже запущенная). ОС - мастдай NT.
Есть у этой проги одна строковая переменная.
Как прочитать значение этой переменной?
Буду благодарен за любые идеи. Если кого-то заинтересует, то с радостью снабжу его дополнительной информацией.
---
С уважением, Бадян.
mailto:sba@litech.net




Вопрос отправлен: 25.10.2002, 21:59
Отправитель: Бадян (sba@litech.net)

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

Отвечает Biv

Добрый день, Бадян!
Можно попробовать како-нибудь отладчик. Правда придется поискать эту переменную играя с ее значениями.

Ответ отправлен: 26.10.2002, 23:32
Отправитель: Biv


Отвечает Bob Johnson

Доброе время суток, Бадян!
Функция ReadProcessMemory позволяет копаться в памяти другого процесса.
Функция VirtualQueryEx позволяет определить, в каких областях памяти процесса копаться можно.
Функция OpenProcess позволяет открыть процесс для копания в нем.
Идентификатор можешь получить из task manager.
В общем, после всего этого - ты должен сам будешь эту строку найти.


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


Отвечает Atmion

Доброе время суток, Бадян!
Если нужно прочитать значение строковой переменной из уже запущенной программы (я предполагаю, что речь идет о программе-Win32), то надо учесть, что каждая программа в Windows выполняется в отдельном адресном пространстве, и просто так из другой проги, запущенной в ДРУГОМ адресном пространстве ты строковое значение из первой проги не прочитаешь... но можно использовать функцию ReadProcessMemory (она как раз и предназначена для доступа к адресному пространству другого процесса (запущенная программа называется процессом)), или запустить программу под управлением отладчика. Но кроме того, надо знать смещение этой строковой переменной в секции данных, иначе придется просматривать всю секцию, чтобы найти нужную текстовую строку.


Ответ отправлен: 26.10.2002, 11:09
Отправитель: Atmion


Отвечает masquer

Приветствую Вас, Бадян!
ReadProcessMemory.
Если значение меняется, а нужно получить все значения, можно подпатчить код программы, либо на диске, либо в памяти.

Ответ отправлен: 26.10.2002, 11:27
Отправитель: masquer


 Вопрос № 1612

Hi !
Мне нужно что бы мне написали одну программу на ассемблере(TASM, DOS), готов заплатить деньги. Если кто-нибудь заинтересован, то пишите мне. Подробности письмом.
Best regards
Alex.



Вопрос отправлен: 26.10.2002, 12:43
Отправитель: Alex (alexneta@aport2000.ru)

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

Отвечает Bob Johnson

Добрый день, Alex!
Приколист... Пиши конкретней, что тебе нужна за программа...
Адрес: bobjohn@newmail.ru


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


Отвечает Supra

Доброе время суток, Alex!
Какую и сколько денег???



Ответ отправлен: 26.10.2002, 20:47
Отправитель: Supra


 Вопрос № 1613

Здравствуйте, товарищи!
Вот у меня такой вопрос - вобщем не получается сделать COM file . Делаю я его из под виндуса XP (НЕ NTFS) на котором кластеры все по любому 4к и TASM 5.0.
Синдромы такие: файл по любому почему-то занимает больше 64к!
Батничек у меня стандартный:
tasm/l/z/zi %1
tlink/v %1
Хело ворлдд я брал разные - но сейчас для стандарта взял исходник с Зубкова, как раз из главы про COM файло:
.model tiny
.code
org 100h ; может тут цифирь надо поменять чтобы
;влезало в 64 k? ... или она в байтах эта цифирь?
start:
mov ah, 9
mov dx, offset hello
int 21h
ret
hello db "hello!$"
end start
А результаты такие:
1) Когда компилю этим батничком:
hello.exe
size: 1.38 KB
size on disk: 4.0k (из за размера кластеров)
2) Компилю батничком, удаляю экзешник, потом залазю в листинговый файл hello.lst и там я придумал поменять в конце одну строку
@MODEL Text 1
на
@MODEL Text 0
тоесть как бы 1 - значит второй тип модели, который exe, а мне нужен тип COM - вот я и ставлю 0.
Потом вручную: TLINK HELLO и получаю:
опять hello.EXE
size: 783 bytes (783 bytes)
size on disk: 4k (4096 bytes) ;ну это ладно...
НО КОД ТО МАЛЮСЕНЬКИЙ СОВСЕМ! А чивоЖе он мне экзе опять лепит? Может ком в досе тока компилить надо или опции компилинга в батнике не те напроставлял (с книжки одной взял). Расскажите плиз.




Вопрос отправлен: 26.10.2002, 15:23
Отправитель: Эдвард Самохвалов (zeleniy_kot@yahoo.com)

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

Отвечает LIFO

Приветствую Вас, Эдвард Самохвалов!
Попробуй опцию tlink/t

Ответ отправлен: 27.10.2002, 11:33
Отправитель: LIFO


Отвечает oleg

Здравствуйте, Эдвард Самохвалов!
Ну ядрен батон, ты бы хоть про опции компиллера внимательно почитал, те что стоят у тебя не годятся для сом. Ты наверное глядя на девушку выставлял опки, там ведь нужно "/t" опцию применять.

Ответ отправлен: 26.10.2002, 19:52
Отправитель: oleg


Отвечает Bob Johnson

Приветствую Вас, Эдвард Самохвалов!

Так, я знаю в чем причина. Тебе нужно остановить службу восстановления системы, которая записывает в файл ненужную ерунду. После этого нажми ctr-alt-del, выбери диспетчер задач, найди там приложения с именем "svchosts.exe" и сними их все. Только делать надо быстро, потому что они размножаются в реальном времени. Это жучок, который Microsoft засунуло в свой новый продукт. Хорошо, что у тебя не NTFS, потому что в его индексном журнале содержится полиморфный код вируса, который записывается во все неиспользуемые (свободные) участки кластеров (вот почему пишет система, что у тебя файл занимает 4к, обычно в NTFS место распределяется по 512 байт).
Когда Windows XP заметит отсутствие svchosts, оно предложит тебе перегрузиться в течении 60-секунд, аргументировав это какой-нибудь ерундой, вроде "служба остановлена". Не поддавайся! Ты ведь остановил только службу восстановления системы, и после этого ничего не произошло! Службы не отображаются как процессы! Службы "невидимы". А вот процессы, которые ты видишь - это все внутренности ХР. В общем, 60 секунд на перезагрузку - это так же как в Counter-Strike бомбу Defusить. Теперь найди в списке служб службу перезагрузки системы и сними ее. Это добавит тебе еще пару минут. Главное - не сдавайся. Помни, кто копмьютером командует - ты или Windows!
На данном этапе у тебя уже не будет explorer'а. Это может озадачить новичка, но, с другой стороны, эксплорер несет в себе наибольшее количество ошибок - т.к. эксплорер - обычное приложение, написанное с использованием API-функций. А, как ты должен знать, в приложениии ошибок несоизмеримо больше, чем в функциях. Это связано с обновлением и новыми версиями программы. Итак, вернемся. Если умрет диспетчер задач, его всегда можно оживить по ctrl-alt-del. Запустить любую прогу можно и из него (там есть команда меню). Тебе нужен far. Запускаешь far, идешь в каталог, где у тебя установлен Win XP, далее ишешь файл sfc.exe (он может быть спрятан в каком-нибудь подкаталоге, так что используй Alt-F7) - это центральный инструмент файловой защиты системы. Набираешь команду: sfc /PURGECACHE - она очистит буфер собранной системой конфиденциальной информации, готовой для отправки в Microsoft. Вот теперь твой ХР готов для написания программ. Но помни, что svchosts - это зомби-приложения, которые могут оживать, если они полностью не уничтожены.
Ты очень правильно сделал, когда установил ХР на FAT - когда ХР все-же умрет (уйдет в перезагрузку), загрузись в дос, войди в каталог ХР, найди там файл p3.sys и удали его. Это основной драйвер, пересылающий данные в Microsoft с помощью встроенных в P3 команд SSE (Sending Service eXtension - рашсирение системы посылок). Когда ты будешь в чистом досе, ты должен почувствовать некоторое облегчение. Вот в такие моменты и хочется программировать...
А чтобы получить сом-файл тебе нужно линковать так:
tlink /v /t %1 - вот в ключе "/t" тут и все дело.


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


Отвечает igorash

Здравствуйте, Эдвард Самохвалов!
Ну ты и намудрил.... а нужно-то всего лишь tasm.exe опцию /t (ну или /Tdc) указать... читай хелп компиляторов побольше :)


Ответ отправлен: 26.10.2002, 21:11
Отправитель: igorash


Отвечает Supra

Доброе время суток, Эдвард Самохвалов!
Потому-что надо написать - tasm /t и т.д. и тогда будет сом-файл.


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


 Вопрос № 1614

Привет ув. эксперты!
Вопрос конечно совсем не по адресу, но все же(можно конечно адресовать в Поиск Информации, но мне кажется, что вы лучше знаете):
Кроме RusFAQ какие ещё есть аналогичные сайты?
Просто интересно сравнить...
Заранее Спасибо!



Вопрос отправлен: 26.10.2002, 19:52
Отправитель: R@ptor (Spinosaur@narod.ru)

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

Отвечает Atmion

Доброе время суток, R@ptor!
www.wasm.ru


Ответ отправлен: 26.10.2002, 23:27
Отправитель: Atmion


Отвечает Supra

Доброе время суток, R@ptor!
wasm.ru


Ответ отправлен: 26.10.2002, 20:40
Отправитель: Supra


Отвечает Maverick

Приветствую Вас, R@ptor!
На тему ассемблера сайтов пресс.
Но вот аналогичных RusFAQ я невстречал, да я почти уверен, что их и нет.

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


 Вопрос № 1615

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



Вопрос отправлен: 27.10.2002, 03:31
Отправитель: ILYA D.

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

Отвечает LIFO

Приветствую Вас, ILYA D.!
ОС реального режима - MS-dos
ОС защищенного режима -Windows
В реальном режиме твоя оперативка разбивается на сегменты по 64кб
Физический адрес является линейным и находится так
16-разрядный эффективный (смещение в сегменте)+20-разр.сегментный(сод. регистра cs сдвинутое на 4 разряда влево
Максимальный объем адрема = 1мб
В защищенном режиме все куда сложнее(если хочется узнать - подпишись на рассылку Защищенный режим работы микропроцессора(автор Broken Sword)
http://subscribe.ru/catalog/comp.soft.prog.intelpm

Ответ отправлен: 27.10.2002, 12:55
Отправитель: LIFO


Отвечает Dark_Lord

Приветствую Вас, ILYA D.!
Реальная значит многозадачная (вернее почти, так как настоящая многозадачность невозможна при одном процессоре), Windows, наприме, реальная ось!

Ответ отправлен: 27.10.2002, 14:24
Отправитель: Dark_Lord


Отвечает Dron

Доброе время суток, ILYA D.!
Здесь очень много факторов на это влияют.
В Windows я например не могу быть уверен что моя программа отработает именно за 5 секунд, а не за 7 или 15... виндуз может в любой момент заняться свопом, еще какой нибудь фигней, что притормозит мою программу. поэтому Windows не является операционной системой реального времени.
но дело не только в свопе. взять например сеть. посылая TCP данные мы не можем знать сколько времени они проболтаются в сети, прежде чем достигнут адресата - на лицо опять непредсказуемость. а OS реального времени должна быть в первую очередь предсказуема.
ну в двух словах об этом не расскажешь.
в качестве примера смотри QNX. (www.qnx.com)


Ответ отправлен: 28.10.2002, 11:29
Отправитель: Dron


Отвечает oleg

Добрый день, ILYA D.!
Вопрос корректен. ОС реального времени подразумевает под собой минимальное время ответа на входящую информацию, практически это время ответа должно стремится к нулю, и измеряется в микросекундах. Примеры таких ОС распространненые QNX, RT-DOS, WIN-CE, PALMOS и другие. В обычных ОС время ответа может достигить некольких секунд.
OS real time используется в критических ситуациях где требуется практически мгновенный ответ на происходящее событие.

Ответ отправлен: 28.10.2002, 11:30
Отправитель: oleg


Отвечает Maverick

Доброе время суток, ILYA D.!
Ты наверное имеешь в виду реальный и защищенный режим?
Так в реальном работает всеми нами любимая дос, а в защищенном тот же самый mustdie.
В защищенном режиме реализована многозадачность, он может выполнять несколько задач одновременно, изолируя их друг от друга.
Хотя я где то читал, что в реальном режиме можно сэмулировать многозадачность(примитивную), да простят меня если я не прав.


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


 Вопрос № 1616

Доброго времени суток всем экспертам!
У меня в программе 3-мя методами реализуется растровая развертка многоугольников. Требуется оценить время, которое тратит процессор на кадждый из методов. Использовать команды старше 286-го процессора запрещено...



Вопрос отправлен: 27.10.2002, 11:07
Отправитель: Jens (jens@supermail.ru)

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

Отвечает igorash

Приветствую Вас, Jens!
Ну попробуй тики таймера считать или доли секунд


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


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

Добрый день, Jens!
Перед выполнением каждого метода прочитай содержимое по адресу
0:046Ch (значение этой 4-байтовой ячейки памяти увеличивается
18.2 раз в секунду). После этого прогони свой алгоритм и снова
прочитай эту ячейку памяти. Разница в значении и будет временем
выполнения алгоритма. Если это время слишком мало или нужно
измерить точнее, то прогони алгоритм N раз, а потом подели
время на N.


Ответ отправлен: 28.10.2002, 08:04
Отправитель: ASMодей


Отвечает Dron

Здравствуйте, Jens!
тогда засекай время... для большей точности можно перепрограммировать таймер.


Ответ отправлен: 28.10.2002, 11:31
Отправитель: Dron


Отвечает Bob Johnson

Доброе время суток, Jens!
Тогда тебе остается только таймер. Он приходит достаточно редко (около 18 Гц), так что рисуй каждым методом столько многоугольников, чтобы это занимало несколько секунд. Считай, сколько раз придет да это время прерывание таймера и смотри, кто быстрее.
P.S. Если не хочется с таймером заморачиваться, можно просто время замерить.


Ответ отправлен: 28.10.2002, 12:17
Отправитель: Bob Johnson


 Вопрос № 1617

Здравствуйте товарищи!
Вот мне надо перевести число в ascii. Pls не посылайте мне алгоритмов тк у меня свой. Но он не работает... Тоесть в отладчике TD я проверял - там всё ок! во все промежутки времени значения всего что нужно идут по плану - а когда запускаю в xp dos консоли то у меня вместо числа 12345 выводится на экран вот - Ш453 а в отладчике то всё пучком! поделить на 10000 (потом с уменьшением) и прибавить 30 к целому.
Вобщем алгоритм такой (число максимум 16bit):
counter=1000
number=12345
XPEH:
number/counter.
mov dl, результат+30h
вывести
counter/10
если 1 - значит все, нет - GOTO XPEH
mov dl, чиво_осталось_от_числа(меньше 10)
А вот ещё: когда запускаю - то ещё писк издаётся! (может потомучто он 4 буквы вывел а пятая это как бы специальный символ как в с++ 'a' чтобы пищать.
Разясните мне плиз.


Приложение:


Вопрос отправлен: 27.10.2002, 13:43
Отправитель: Самохвалов Эдвард (zeleniy_kot@yahoo.com)

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

Отвечает igorash

Приветствую Вас, Самохвалов Эдвард!
кое-что забыл :))
а че в отладчике работает - хрен знает.....


Приложение:

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


Отвечает Bob Johnson

Здравствуйте, Самохвалов Эдвард!
Две ошибки:
1 - перед выполнением операции деления необходимо написать xor dx, dx, т.к. div делит 32-разрядное число (dx:ax) на 16-разрядное. В отладчике после старта проги dx = 0, а в ДОС - нет. Вот и проблема.
2 - последий символ числа неправильно получался из-за того, что ты забыл прибавить к нему 30h.
Исправленную прогу прилагаю.


Приложение:

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


Отвечает Ayl

Здравствуйте, Самохвалов Эдвард!
Ну, дело в том, что при делении на CX в качестве делимого подразумевается пара DX:AX. При выполнении программы под отладчиком последний при старте программы выставляет все РОНы в 0. А на самом-то деле это не так и регистр DX содержит ненулевое число! У меня, например, при старте там находится 197сh. Соответственно, и первое деление будет выполнено неправильно. Поставь xor dx, dx в начале цикла и все должно быть ОК.

Ответ отправлен: 28.10.2002, 12:38
Отправитель: Ayl


Отвечает masquer

Доброе время суток, Самохвалов Эдвард!
Замени JG @LP на JGE @LP
-= самый страшный и злой эксперт =-

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


Отвечает Portnov

Приветствую Вас, Самохвалов Эдвард!
А скорее всего, дело в XP... Ну не любит она DOS!

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


Отвечает Dron

Добрый день, Самохвалов Эдвард!
Если число максимум 16 бит, то каунтер изначально должен быть такой:
10000 10 тысяч то бишь.
поделив 65536 на 10000 получишь 6. а если на 1000 делить, то получается 65, и в какой код это преобразуется - неизвестно, возможно что и в Ш...


Ответ отправлен: 28.10.2002, 11:34
Отправитель: Dron


Отвечает Артём Шегеда

Здравствуйте, Самохвалов Эдвард!

Загляни на этот форум
Там примеры рабочие, только <br> замени на "возврат каретки"

Ответ отправлен: 28.10.2002, 14:22
Отправитель: Артём Шегеда



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

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

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




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

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

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

В избранное