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

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


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

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

Выпуск № 534
от 02.05.2003, 13:40

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


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

Maverick
Статус: Профессиональный
Общий рейтинг: 134.69
URL: Задачи по ассемблеру
Телефон: 89039415024 (BeeLine GSM)
[Подробней >>]
keleb-glin
Статус: Опытный
Общий рейтинг: 109.89
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 150.34
URL: Программирование
[Подробней >>]
 
Tigran K. Kalaidjian
Статус: Доверительный
Общий рейтинг: 115.27
[Подробней >>]
Portnov
Статус: Профессиональный
Общий рейтинг: 111.4
URL: Мой сайтик...
[Подробней >>]
masquer
Статус: Профессиональный
Общий рейтинг: 140.23
[Подробней >>]
 
Gibbel
Статус: Профессиональный
Общий рейтинг: 108.36
URL: Страничка обо мне и моих друзьях
Телефон: +7 902 168 02 65
[Подробней >>]
Igoryk
Статус: Профессиональный
Общий рейтинг: 118.5
URL: IgorykSoft
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 123.16
URL: моя рассылка по Protected Mode
[Подробней >>]
 
Andrew Vext
Статус: Опытный
Общий рейтинг: 106.07
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 118.92
[Подробней >>]


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

Вопрос № 3067. Здравствуйте, уважаемые эксперты. Я пишу дипломную работу на асме в 11 классе. Создаю файловую оболо... (ответов: 4)
Вопрос № 3068. Здравствуйте Эксперты! Дайте ссылки на доки(описания) процессоров Intel и AMD. Интересует только опи... (ответов: 3)
Вопрос № 3069. Доброго времени суток! Взял на днях Microsoft msdn library2003 на 3-х компактах! А на коробочке напи... (ответов: 4)
Вопрос № 3070. Здравствуйте уважаемые эксперты. Прошу Вас помочь в вот каком деле: Работаю в русской версии WinXP P... (ответов: 2)
Вопрос № 3071. Здравствуйте, эксперты. Извините, что вопрос задаю не по ассемблеру... Но я в полной растеренности. ... (ответов: 2)
Вопрос № 3072. Windows маст дью, DOS форевер... (ответов: 4)
Вопрос № 3073. Привет, Bob Johnson! Не хватает там, например, в приложении 2, 4-ый раздел, где остальные команды? С... (ответов: 1)
Вопрос № 3075. Уважаемые эксперты! Помогите начинающему программисту. Столкнулся с такой штукой. В Hiew при просмот... (ответов: 6)

Вопросов: 8, ответов: 26


 Вопрос № 3067

Здравствуйте, уважаемые эксперты. Я пишу дипломную работу на асме в 11 классе. Создаю файловую оболочку для доса. Вот возник у меня вопрос с выводом размера файла на экран. Размер находится в одной из переменных. Подскажите, пожалуйста, каким способом этот размер лучше вывести на экран, разумеется в десятеричной системе счисления. Спасибо.



Вопрос отправлен: 27.04.2003, 12:25
Отправитель: a1 (a111_666@mail.ru)

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

Отвечает Maverick

Приветствую Вас, a1!
Че то я не понял, пишешь файловую оболочку и такие вопросы.
В чем проблема?
Переводишь в десятичную систему.
Приводишь к ASCII.
Выводишь на экран.
Где ступор?


Ответ отправлен: 28.04.2003, 05:05
Отправитель: Maverick


Отвечает keleb-glin

Здравствуйте, a1!
Сначала надо перевести 16-ричное число в десятичное. Это, я надеюсь, ты умеешь. (Ну, типа, в цикле делишь число на 10-основание системы и потом берёшь остатки в обратном порядке). Потом надо по очереди выделять цифры и, прибавляя к каждой ascii-код нуля, кажись, 48 (при компиляции прокатит add al, '0' )получать ascii-коды соответствующих символов. и далее - на экран.

Ответ отправлен: 29.04.2003, 19:13
Отправитель: keleb-glin


Отвечает Bob Johnson

Приветствую Вас, a1!
Тебе надо будет преобразовать число в строку. Значительно удобней будет, если твоя оболочка рассчитана на 386 или старше процессор, потому как размер файла - это 4 байта, т.е. двойное слово, а чтобы перевести число в дес. систему надо его последовательно делить на 10 (что будет проще, если использовать 32-разрядные регистры). Тогда получишь цифры справа налево.

mov eax, число
mov ecx, 10
mov ebx, offset buffer + 15
m1:
xor edx, edx
div ecx
add dl, '0'
mov [ebx], dl
dec ebx
test eax, eax
jnz m1
ret



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


Отвечает Tigran K. Kalaidjian

Доброе время суток, a1!
Я бы это делал так: делим число на степень десятки,вместо числа ставим остаток,а к частному прибавляем 30h. Делаем это до тех пор, пока число не уменьшится до нуля. пример для вывода трехзначного числа-в приложении(здесь перед выводом формируется строка из цифр числа)

Приложение:

Ответ отправлен: 29.04.2003, 21:17
Отправитель: Tigran K. Kalaidjian


 Вопрос № 3068

Здравствуйте Эксперты!
Дайте ссылки на доки(описания) процессоров Intel и AMD. Интересует только описание опкодов, какие инструкции поддерживают... Если у кого есть готовые манулы - прошу на e-mail.
З.Ы. Если будете давать ссылки - давайте полные! amd.com и intel.com я знаю :)
З.Ы.Ы Не сочтите за наглость, просто очень-очень-очень влом искать самому, а Вы, возможно, недавно сами скачивали, поэтому знаете :)



Вопрос отправлен: 27.04.2003, 17:06
Отправитель: Илья (b.i@date.by)

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

Отвечает Portnov

Здравствуйте, Илья!
http://www.intel.com/design/Pentium4/manuals/24547207.pdf
http://www.intel.com/design/Pentium4/manuals/24547107.pdf
http://www.intel.com/design/Pentium4/manuals/24547007.pdf


Ответ отправлен: 28.04.2003, 12:51
Отправитель: Portnov


Отвечает masquer

Приветствую Вас, Илья!
Я хоть и скачивал что-то недавно, но такой влом искать что и когда... Чего-нибудь еще написал бы, но такой влом...

Ответ отправлен: 29.04.2003, 12:43
Отправитель: masquer


Отвечает Tigran K. Kalaidjian

Приветствую Вас, Илья!
Описание ушло мылом...

Ответ отправлен: 29.04.2003, 21:21
Отправитель: Tigran K. Kalaidjian


 Вопрос № 3069

Доброго времени суток!
Взял на днях Microsoft msdn library2003 на 3-х компактах!
А на коробочке написано " Note: This version is for use with Visual Studio.NET ONLY" млин эта последняя ONLY
да и вообще вся надпись не больно нравится.
Вобщем вопрос на компакте описаны WinApi которыми можно пользоваться в Win98 win2k WinXP или че-то типа
Win.net(А че ето такое?)?
ЗЫ: Я так понимаю Эту хрень можно поставить как справочную систем тока с Visual Studio.Net ! а с visual C++ уже хрен!
ЗЗы Взял у знакомого WIN2003Server advanced....
Во блин :-)



Вопрос отправлен: 27.04.2003, 17:43
Отправитель: Andrey

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

Отвечает Gibbel

Здравствуйте, Andrey!
Это значит, что справка MSDN будет интегрироваться только в справочную систему VS.NET (но ничто не мешает смотреть тебе ее отдельно, не из IDE) и исходники/файлы заголовков/библиотеки совместимы только с VS.NET

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


Отвечает Bob Johnson

Приветствую Вас, Andrey!
Нет, там обязательно должны остаться описания функций для win 95 - XP. Может только получиться, что с Visual Studio 6 не будет этот MSDN связан напрямую, т.е. F1 нажимаешь - а в ответ тишина...
> Взял у знакомого WIN2003Server advanced....
Ну а это тебе зачем?


Ответ отправлен: 27.04.2003, 20:07
Отправитель: Bob Johnson


Отвечает keleb-glin

Здравствуйте, Andrey!
Да, msdn интегрируется только с определённой версией VC, с другими - "уже хрен!" (ставить её лучше после VC). В msdn находится туча доков по всему: и WinAPI, и работа с VC, VB, office. Не даром на 3 дисках.

Ответ отправлен: 28.04.2003, 21:54
Отправитель: keleb-glin


Отвечает masquer

Здравствуйте, Andrey!
Я уже не помню, чего я там не нашел, но держу и старую и эту новую на винте, пользуюсь, правда, чаще старой

Ответ отправлен: 29.04.2003, 12:52
Отправитель: masquer


 Вопрос № 3070

Здравствуйте уважаемые эксперты.
Прошу Вас помочь в вот каком деле:
Работаю в русской версии WinXP Professional.
Использую NuMega DriverStudio Release 2.5.
Проблема 1:
При загрузке SoftIce (в ручном режиме) начинает глючить клавиатура (залипают некоторые клавиши - в часнтости Shift.
Пробовал убирать в настройках SoftIce патч клавиатуры не помогает.
Проблема 2:
Ставлю бряк на функцию (например BPX CreateFileA), и все (абсолютно все) программы перестают запускаться. Убираю бряк - всё работает.
Заранее спасибо за помощь.
P.S.: Раньше стоял только NuMega SoftIce 4.05 для WinNt пропатченный для работы в WinXp и проблемы были те же.



Вопрос отправлен: 27.04.2003, 18:38
Отправитель: Andy Caramba (andycaramba@mail.ru)

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

Отвечает Gibbel

Доброе время суток, Andy Caramba!
Ну, вообще-то в WinXP стабильно работают только версии DriverStudio 2.6 и 2.7

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


Отвечает Bob Johnson

Добрый день, Andy Caramba!
Я слышал, что для XP подходят версии 2.6 и 2.7, может быть в этом и причина - обратись на ftp.exetools.com за ними.


Ответ отправлен: 27.04.2003, 20:04
Отправитель: Bob Johnson


 Вопрос № 3071

Здравствуйте, эксперты.
Извините, что вопрос задаю не по ассемблеру... Но я в полной растеренности. Дело в том, что как-то я ползал по net'у (именно ползал, т.к. связь довольно паршивая) в поисках чего-нибудь (чего и сам не помню... кажись обои). Так вот, тыкнул я по какому-то баннеру (непечатные слова) и ввалились ко мне какая-то страничка в сопровождении моего бдительного Касперского: ВИРУС У НАС. Ну я в название вируса не вдумался (хотя и прочитал), и посоветовал Касперскому его казнить... Вечером того же дня сканировал систему и обнаружил тот же казненный мною и Касперским вирус (trojan.js): целый и невредимый. Я его повторно - того. На следущий день: та же петрушка. После удаления сразу еще раз все просканировал - нету... Еще день спустя - ... и так уже неделю!!! Меня напугали, что вирусяка эта - одна из самых злостных; я с горя ушел в запой на 2 дня.
Кто-нибудь зниет, что это за глюк?!!!:(((
Может что с Касперским (базы я менял 2 недели назад)?
Выручайте, товарищи. [жалостливая слеза, кастрированное выражение лица и проч.]
Удачи.



Вопрос отправлен: 27.04.2003, 23:27
Отправитель: Бултых

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

Отвечает Igoryk

Добрый день, Бултых!
Вариант первый - обратить в Касперскому напрямую.
Вариант второй - поискать упоминание строки trojan.js в реестре и в файловой системе. Ну и естественно удалить.

Ответ отправлен: 01.05.2003, 19:05
Отправитель: Igoryk


Отвечает Maverick

Доброе время суток, Бултых!
Не выходи из запоя и все образуется :)
Давай название вируса, нужно поглядеть его описание.


Ответ отправлен: 28.04.2003, 05:05
Отправитель: Maverick


 Вопрос № 3072

Windows маст дью, DOS форевер



Вопрос отправлен: 28.04.2003, 06:16
Отправитель: Билл Гейтс

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

Отвечает keleb-glin

Приветствую Вас, Билл Гейтс!
Не совсем. DOS long life. No OS forever


Ответ отправлен: 28.04.2003, 21:27
Отправитель: keleb-glin


Отвечает Maverick

Приветствую Вас, Билл Гейтс!
Продолжим аналогию...VX рулез - AV отстой
Кто дальше?


Ответ отправлен: 28.04.2003, 10:27
Отправитель: Maverick


Отвечает Gibbel

Приветствую Вас, Билл Гейтс!
Amiga is the best, IBM is sucks!!! ;-)

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


Отвечает Bob Johnson

Здравствуйте, Билл Гейтс!
dew - это значит "пропитывать", "пронизывать". т.е. windows должен "пронизать" нас всех (своей любовью???)?
В общем еще одно письмо на тему "приниси мне еще две большие тетради в клетку на 70 листов, потому что те две на 40, которые ты принес вчера уже закончились".


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


 Вопрос № 3073

Привет, Bob Johnson!
Не хватает там, например, в приложении 2, 4-ый раздел, где остальные команды?
Слышал, в этой книге про генератор случ. чисел должно быть, искал - нифига не нашел. Да в беглом просмотре сразу видно, что неполная она.



Вопрос отправлен: 28.04.2003, 09:20
Отправитель: [-=TT=-] (KunaevNA@PosolskyDom.ru)

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

Отвечает Bob Johnson

Доброе время суток, [-=TT=-]!
Ну так там же наверное просто приведен большой список команд процессора? А это действительно ни к чему, потому как можно и в другом справочнике найти. А вот если нет чего-то еще, то это хреново. Но Andrew Vext говорил, что эта версия - полная.
На счет генератора случайных чисел - ты хреново искал. Я, как ни странно, нашел прямо сразу, хотя книги этой не видел никогда в глаза: глава 5 "Более сложн...", пункт "5.7. Популярные алгоритмы", "5.7.1. Генераторы случайных чисел" - вот и все.
> Да в беглом просмотре сразу видно, что неполная она.
Ничего не могу сказать - не видел оригинала. Но ты наверное прав, т.к. уж главы 11.2 и 11.3 ну маловаты... отстойно...


Ответ отправлен: 29.04.2003, 01:18
Отправитель: Bob Johnson


 Вопрос № 3075

Уважаемые эксперты!
Помогите начинающему программисту. Столкнулся с такой штукой. В Hiew при просмотре дизассемблированного текста можно переключаться из 16 битного режима в 32 битный и обратно. Но когда процессор реально встречает в памяти какую-либо команду, как он узнает, чем оперировать CX или ECX? Т. е. чем обусловлена его работа в данном режиме. Как происходит переключение между этими двумя режимами. Имеет ли это отношение к защищенному режиму, виду заголовка exe-файла или чему-нибудь еще? С уважением, Дмитрий.



Вопрос отправлен: 28.04.2003, 13:39
Отправитель: Дмитрий (demetrius2003@mail.ru)

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

Отвечает Igoryk

Доброе время суток, Дмитрий!
К команде добавляется код 66h. Для 32-значных команд это значит, что выполняется 16-битный код, и наоборот.

Ответ отправлен: 01.05.2003, 19:05
Отправитель: Igoryk


Отвечает Broken Sword

Здравствуйте, Дмитрий!
К заголовку exe-файла - не имеет, к защ. режиму - самое непосредственное. Дело в том, что для того чтобы понять как процессор определяет 32-х битный операнд/адрес использовать или 16-битный тебе по крайней мере нужно знать что такое дескриптор. Так вот, в дескрипторе любого сегмента в защ. режиме есть такой бит D. Если он установлен - то процессор использует 32-х битные адреса и операнды (в сегментах кода). Соответственно, префикс 66h (67h) обращает смысл и используются 16 битные адреса/операнды.
Аналогично, если бит D сброшен, то используются 16 битные адреса/операнды, а префикс 66/67 обращает смысл и приводит к использ. 32-битных адресов
В реальном режиме никаких дескрипторов и соответственно бита D нету, там проц ВСЕГДА использует 16 разрядные адреса/операнды, однако разумеется префикс 66/67 действует и здесь.

Ответ отправлен: 28.04.2003, 16:55
Отправитель: Broken Sword


Отвечает Andrew Vext

Добрый день, Дмитрий!
если команда может работать как в 32-разрядном, так и в 16-разрядном режиме, то при необходимости ассемблер (tasm или masm, или тот, которым вы пользуетесь) при необходимости ставит перед командой байт префикса изменения разрядности.
Пример 1.
Вы пишете программу под DOS (обычный COM-файл), все ваши команды будут 16-разрядными и использовать 16-разрядные регистры (CX,DX,AX и т.д). Если перед командой процессор обнаружит префикс смены разрядности, то следующая команда будет считаться 32-разрядной и работать с 32-разрядными регистрами (ECX, EDX, и т.д.).
Пример 2.
Если вы пишете 32-разрядный код (под Windows или под DPMI), то все команды будут 32-разрядными, а команды перед которыми стоит префикс будут рассматриваться процессором как 16-разрядныме.
Префикс занимает 1 байт и увеличивает время выполнения команды на 1 такт.

Ответ отправлен: 28.04.2003, 16:53
Отправитель: Andrew Vext


Отвечает keleb-glin

Здравствуйте, Дмитрий!
В реальном режиме код всегда 16-битный, то есть для 32 бит нужни префиксы переопределения разрядности (66h и 67h ).
В защищённом режиме существуют два типа сегментов - 16-ти и 32-х разрядные (тип ты естественно задаёшь сам).
Например в 16-ти разрядном сегменте b8... = mov ax, ...; 66b8... = mov eax, ..., а в 32-разрядном - наоборот.

Ответ отправлен: 28.04.2003, 21:10
Отправитель: keleb-glin


Отвечает Bob Johnson

Доброе время суток, Дмитрий!
Это имеет отношение к защищенному режиму. Когда процессор считывает из памяти команду, ее адрес находися в cs:(E)IP. Если процессор работает в реальном (или виртуальном) режиме, то он автоматически предполагает, что команда 16-разрядная (из вопросов совместимости). А вот если он работает в защищенном режиме, то в дескрипторе кода, номер которого загружен в cs есть два бита - один указывает на разрядность данных программы (16 или 32 бита), другой - на разрядность адреса программы (16 или 32 бита). Вот их процессор и использует. Если же тебе нужно вдруг изменить разрядность, то используй префиксы - 66h для данных и 67h для адреса. Они меняют текщую разрядность на противоположную.


Ответ отправлен: 29.04.2003, 01:18
Отправитель: Bob Johnson


Отвечает Ayl

Доброе время суток, Дмитрий!
К защищенному режиму это не имеет отношения. Точнее, только опосредованное. В дескрипторе кодового сегмента существует бит D, который определяет разрядность команд по умолчанию. Если он равен 0, то команды 16-тиразрядные, если 1 - 32-хразрядные. Для реального режима и режима V86 этот бит равен 0.
Кроме этого, с командой могут быть использованы префиксы размера операнда (66h) и размера адреса (67h). Эти префиксы изменяют режим по умолчанию на противоположный (16 <=> 32). 8-миразрядные команды не изменяются.

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



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

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

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




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

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


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

В избранное