Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Ассемблер? Это просто! Учимся программировать (FAQ)
Ассемблер? Это просто! Учимся программировать (FAQ)
Выпуск N 015 |
Вопросы, которые поступили от подписчиков рассылки
"Ассемблер? Это просто! Учимся программировать"
Дата выхода: 2001-06-06
Вопрос №34
Здравствуйте, уважаемые гуру!
Помогите инфой какой-либо
Мне хотелось бы узнать как запрограммировать шину USB
Дайте плз какую либо информацию или Инетовские ссылочки, где это можно найти
PS. WinAPI и тому подобное не нужно - на самом низком уровне
Заранее благодарю
Ответ
Вот это я понимаю вопрос, так вопрос... :)
Даже в хелпы лезть бесполезно...
но сейчас что нибудь найдем я думаю...
http://www.usb.org/developers/docs.html
Сам такими вещами не занимался, так что ты посмотри там, там много документации, еще могу посоветовать покопаться в ядре линукс, FreeBSD.
желаю удачи...
Кстати, разберешься - мне расскажешь?
Отправил: Dron
Эксперт отправил ответов (всего): 16
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №35
Эксперты, здравствуйте!
Каким образом можно перезагрузить, выключить ПК?
Если не трудно, напишите листинг, пожалуйста.
Ответ
Как выключить не знаю, здесь надо функции PowerSaving'а юзать...А вот перегрузить - запросто...
jmp far f000:fff0
Отправил: Dron
Эксперт отправил ответов (всего): 17
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №35
Эксперты, здравствуйте!
Каким образом можно перезагрузить, выключить ПК?
Если не трудно, напишите листинг, пожалуйста.
Ответ
Перезагрузить компьютер можно следующми способами:
1) Нажать маленькую красную кнопку на системном блоке.
2) Нажать большую белую кнопку там же, подождать 2 мин и нажать ее
снова.
3) Выполнить прерывание int 19h - это должно убить досовский процесс.
4) Выполнить команды cli jmp $-1, после чего повторить пункт 2
5) Попытаться сбросить процессор.
Ну, а способов выключения ПК существует великое множество, самый
эфективный - дернуть за рубильник в подъезде.
Отправил: Unknown
Эксперт отправил ответов (всего): 2
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №36
Приветствую! Уважаемые эксперты, мой вопрос может показаться весьма глупым, но тем не менее...
как на ассемблере реализовать сишные функции atoi
и itoa.
Ответ
Hi Dennis! В ассемблере нет такой халявы как в C--. Тут придется все делать самому, используя инструкции сопроцессора. Работа сопроцессора рассматривалась в номере 25. Вот процедура вывода на экран десятичных чисел из этого номера.
Приложение:
Отправил: Unknown
Эксперт отправил ответов (всего): 4
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №37
Уважаемые эксперты !
У меня на одной из дискет, заражена загрузочная дорожка
каким то вирусом. Как посмотреть дебаггером содержимое содержимое нулевого сектора дискеты? Хочу сравнить нормальную, чистую дискету и зараженную.
Спасибо.
Олег.
Ответ
начнем с того, что на дискете (да и на жестком диске тоже) нет нулевого сектора. самый первый сектор - первый, т.е. он имеет номер 1. дебаггеры в общем-то не предназначены для просмотра содержимого диска, для этого лучше использовать, например, diskedit.exe из нортоновских утилит (хорошая вещь! :)).
но если очень надо с помощью дебаггера, то можно вот как:
1) пишем коротенькую програмульку, которая читает содержимое нужного нам сектора (используя 13h прерывание) в память (код прилагается)
2) открываем ее в дебаггере и запускаем
3) ну а содержимое сегмента DS дебаггер показывает :))
вот и все.
С наилучшеми пожеланиями,
Андрей Беженарь aka BELTSY
RTFM_Helpers Moderator, http://hi-tech.nsys.by/ - низкоуровневое программирование, ВСЁ про ассемблер
Приложение:
Отправил: BELTSY
Эксперт отправил ответов (всего): 9
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №36
Приветствую! Уважаемые эксперты, мой вопрос может показаться весьма глупым, но тем не менее...
как на ассемблере реализовать сишные функции atoi
и itoa.
Ответ
привожу упрощенный вариант этих функций (см. Приложение). atoi() у меня не учитывает пробелы в начале строки и знак, в отличии от atoi() в С. То же самое с itoa(), она только для беззнаковых целых у меня.
но суть не меняется:
atoi() - берем по одной цифре, умножаем на radix^i, где radix - система исчисления в которой задается число, i - положение цифры, если их пронумеровать справа на лево, i = 0..n-1, n - количество цифр.
и все это складывается. например: '537' (radix 10) = 7*1 + 3*10 + 5*100. приведенный код лекго можно модифицировать, чтобы было как в C:
1) читаем строку, пока не встретим знак, читаем и его
2) читаем по символу и пихаем их в стек, пока не встретим символ с ascii кодом < 30h, или > 39h (т.е. не цифра), или \0 (конец строки в С).
3) вытаскивам по символу из стека и выполняем вышеописанный и ниженаписанный :)) алгоритм
4) в зависимости от знака трансформируем число (т.е. если не '-', то и делать ниче не надо)
itoa() - делим число на radix, остаток как раз будет следующая нужная нам цифра, а целую часть дальше делим, пока есть что делить.
Этот код еще можно оптимизировать.
С наилучшеми пожеланиями,
Андрей Беженарь aka BELTSY
RTFM_Helpers Moderator, http://hi-tech.nsys.by/ - низкоуровневое программирование, ВСЁ про ассемблер
ЗЫ: И тут вполне можно обойтись без сопроцессора, уважаемый Unknown.
Приложение:
Отправил: BELTSY
Эксперт отправил ответов (всего): 10
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №38
Уважаемый эксперт!
Я только приступил к изучению языка ассемблера, и поэтому мне трудно объективно оценить сложность той или иной задачи.
Просьба помоч мне в этом.
Дело в том, что мой компьютер подключен к интернету через локальную сеть предприятия на котором я работаю.Доступ осуществляется по логину выделенному на отдел. Т.е по одному логину в инет заходят с нескольких компьютеров.Месячный лимит доступа(по траффику) также выделяется на логин, а не на отдельный компьютер.В связи с этим возникло желание написать программку учитывающей траффик работы с интернетом на отдельном компьютере.
НАСКОЛЬКО ТРУДНА ТАКАЯ ЗАДАЧА!
Помогите остудить мое желание! фразой типа: "Забудь, это не для тебя..." - не обижусь.
Буду признателен также и за ссылки, поскольку самому найти в интернете готовую программу не удалось(все либо для юниксов, админов, или модемов).
Сам сижу на arcnet'-е под Win98
Ответ
Если я правильно понял вопрос, то нужна программа, которая будет вести статистику входа в Инет. Т.е. нужно чтоб она секла время входа, время выхода, общее время в сети, говорила, сколько денег ушло на инет, сколько осталось.. ТАк ??? Тогда я не пойму - причем тут ассм ??? На нем писать?? Да еще и под Вин32 ??? Это точно не для новичков. Я могу взяться за это дело (с изучением деталей) на VC++. Так проще и быстрее. Разумеется за плату в $0. Т.е. даром.
Отправил: K.A. NiCK
Эксперт отправил ответов (всего): 1
Экспертная группа: Общие вопросы по программированию на Ассемблере под Win32
Вопрос №40
Приветствую вас, эксперты!
Как за счет оперативной памяти уменьшить размер СВАП - файла? Можно ли его не использовать совсем? Хватит ли моих 128Мб RAM для этих целей?
С уважением, СКСофт!
Ответ
Пропишите в файле System.ini параметр:
[386Enh]
ConservativeSwapfileUsage=1
После этого, система будет использовать свап - файл только тогда, когда закончится оперативная память. А с вашими 128Мб СВАП может вообще не использоваться т.е. он будет на диске но его размер будет равен нулю. У меня 160 РАМ, после выполнения вышеприведенных действий СВАП стал равен 0.
Отправил: Evgos (http://ospelnikov.narod.ru - Личная страничка)
Эксперт отправил ответов (всего): 3
Экспертная группа: Пользовательская работа с Windows
Вопрос №40
Приветствую вас, эксперты!
Как за счет оперативной памяти уменьшить размер СВАП - файла? Можно ли его не использовать совсем? Хватит ли моих 128Мб RAM для этих целей?
С уважением, СКСофт!
Ответ
уменьшить размер swap за счет оперативной памяти можно (причем это единственный способ) добавляя ее. свап растет когда видовсу не хватает оперативной памяти, если ему ее будет на все хватать, он и сам не будет использовать свап. хватит ли 128М? все зависит от того какие у вас цели. если поставите вин 2000, будете использовать среды визуальной разработки приложений (типа Delphi или CBuilder и т.п.), или обрабатывать звук/видео и т.д. и т.п., то скорее всего не хватит, будет нужен свап. если вин '98 и использовать в нем IE, Word, Outlook, да Excel иногда, то должно вполне хватить. можете запустить Системный монитор и смотреть сколько памяти уходит. зафиксируйте максимум и потом прикупите оперативной памяти до этой отметки (или даже чуть больше). после этого скорее всего свап больше использоваться не будет.
С наилучшеми пожеланиями,
Андрей Беженарь aka BELTSY
RTFM_Helpers Moderator, http://hi-tech.nsys.by/ - низкоуровневое программирование, ВСЁ про ассемблер
Отправил: BELTSY
Эксперт отправил ответов (всего): 11
Экспертная группа: Пользовательская работа с Windows
Вопрос №34
Здравствуйте, уважаемые гуру!
Помогите инфой какой-либо
Мне хотелось бы узнать как запрограммировать шину USB
Дайте плз какую либо информацию или Инетовские ссылочки, где это можно найти
PS. WinAPI и тому подобное не нужно - на самом низком уровне
Заранее благодарю
Ответ
http://www.intel.com/design/litcentr/index.htm
Тут в самом низу страницы ты найдешь поле со списком, над которым будет надпись Universal Serial Bus. В этом списке ты сможешь выбрать все что тебя интересует. Неплохо знать, что USB придумана Intel. Меньше таких вопросов возникает.
Отправил: Александр
Эксперт отправил ответов (всего): 18
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №42
Привет всем экспертам!
1. Подскажите пожал-ста как перевести число из восьмиричной системы исчисления в шестнадцатиричную, не используя двоичную и десятичную, то бишь напрямую.
И если можно поподробнее, чтоб въехать.
2. И расшифруйте мне чайнику как расшифровывается "имхо" и "ака"?
Всем заранее большое спасибо!
Ответ
1. Что значит напрямую. Все равно придется делать, что-то вроде Z=X[0]*512+X[1]*64+X[2]*8+X[3], а этот самый Z переводить в 16-ричную. Хотя конечно если ты напишешь алгоритм деления в 8-ичной системе, то все то же самое, что и при переводе из десятичной в любую другую. Делишь на нужное основание, записываешь промежуточный остаток. Потом частное еще раз делится, и так до тех пор пока не получишь неделимый остаток.
Потом все это записывается в обратном порядке.
Пример
13в десятичной в двоичной = ?
13/2 = 6 остаток *1*
6/2 = 3 остаток *0*
3/2 = 1 остаток *1*
*1* - дальше не делится. Вот и получили 1101, ч.т.д.
2. имхо(IMHO - In My Humble Opinion) - на мой скромный взгляд.
ака(AKA - Also Known As) - Также известен как.
Отправил: Александр
Эксперт отправил ответов (всего): 19
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Подписаться на рассылки
Регистрация в качестве эксперта
Ведущий рассылки,
Калашников Олег:
Assembler@Kalashnikoff.ru
ICQ No.: 68951340
URL сайта подписчиков:
http://www.Kalashnikoff.ru
______________
По вопросам сотрудничества, рекламы и спонсорства обращайтесь:
- Публичное размещение материала из рассылки: Cooperation@Kalashnikoff.ru
- Реклама на сайте, в книге и рассылках: http://www.Kalashnikoff.ru/Reklama.html, Reklama@Kalashnikoff.ru
- Издание книги (спонсорство): Sponsor@Kalashnikoff.ru
(C) Москва, 2001. Авторское право принадлежит Калашникову О.А. Публичное размещение материала из рассылки, а также его использование полностью или частично в коммерческих или иных подобных целях без письменного согласия автора влечет ответственность за нарушение авторских прав. |
Реклама на сайте Kalashnikoff.ru
http://subscribe.ru/
E-mail: ask@subscribe.ru | Отписаться | Relayed by Corbina
Рейтингуется SpyLog |
В избранное | ||