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

Ассемблер? Это просто! Учимся программировать (FAQ)


Служба Рассылок Subscribe.Ru

Ассемблер? Это просто! Учимся программировать (FAQ)
______________________________________

Выпуск N 136

Вопросы, которые поступили от подписчиков рассылки
"Ассемблер? Это просто! Учимся программировать"

Дата выхода: 2001-11-23


От управляющего рассылкой

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


Переход к Windows

Действительно, программирование на Ассемблере в реальном режиме уже подошло к своему логическому завершению, хотя и остался еще один выпуск рассылки "Ассемблер? Это просто! Учимся программировать". Нужно уже давно переходить на Windows, но существуют некоторые существенно тормозящие факторы.

Последнее время я примерно 90% времени посвящаю обработке напечатанного мной материала по программированию, довожу "до нужной кондиции" книгу, которую уже нужно сдавать в издательство. Проблемы здесь такие: материал из рассылки требуется существенно дополнить, вставить графические выдержки программ (скриншоты) (что уже, кстати, можно посмотреть в обновленном архиве предыдущих выпусков), а также все это несколько раз перечитать, подкорректировать, разбить на главы и в целом предоставить в таком виде, в котором требует издательство. Все это, безусловно, далеко не так просто, как мне казалось вначале и требует огромных затрат времени (все-таки 350 страниц - это не так уж и мало). Более того, планируется выпустить двухтомник, первый том которого будет содержать обработанную и дополненную информацию из известной вам рассылки, а второй - справочник программиста (команды процессоров 8086 - Pentium, список функций BIOS и MS-DOS, а также огромное количество теории, т.е. всего того, что не затрагивалось в рассылке и очень полезно программисту).
Я печатаю это не в качестве рекламы, а чтобы вы поняли объем работы, который свалился на мои плечи. Да и очень уж хочется сделать все это до нового года.

Остальные 10% времени уходят на разработку дизайна сайта и новой системы экспертных групп. Сразу хочется предусмотреть по возможности все нюансы. Например, один из сложных этапов - написание программы по обработке почтовой корреспонденции (поступающих вопросов - ответов), причем, работающей без ошибок, что совсем непросто. Как вы поняли, эксперты и подписчики смогут работать как по e-mail (полагаю, многие оценят это новшество), так и с помощью web-интерфейса (как в настоящий момент). Дополнительно разделяются поступающие сообщения на следующие типы:

  • вопрос;
  • дополнение к ответу;
  • благодарность / критика;
  • замечание;
  • предложение.

Все это, естественно, должен выполнять робот. Однако и человеку в какой-то степени необходимо вмешиваться, дабы отфильтровывать никому не нужную рекламу и непубликуемые ответы некоторых т.н. "умных и крутых специалистов компьютерной грамотности", позорящих честь настоящих экспертов (но об этом в следующем пункте). Есть неплохие задумки, которые, если их удастся реализовать, очень оценят как сами эксперты, так и подписчики.
Все то, что я планировал изначально, и что в итоге получилось - меня совсем не устраивает. В частности:

  • невозможность автоматического слежения за лучшими экспертами и опубликования информации о них в специально отведенном разделе на сайте;
  • отсутствие цензуры;
  • не всегда справедливое начисление баллов за ответы;
  • и многое другое.

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


Об "экспертах", Microsoft, Linux
и многом другом

"Настоящим программистам"
посвящается...

За свою недолгую жизнь мне уже доводилось встречаться с начинающими пользователями, строящими из себя "крутых сисадминов" или - что еще забавней - "суперспецов по кодингу". Научившись "тыкать по кнопкам" в произвольном порядке, такие "программеры" зачастую вбивают себе в голову то, что они знают все на свете, и, если кто-то обращается к ним с простейшим вопросом, в котором они сами были полными профанами 5 секунд назад, начинают корчить из себя специалистов, уставших  от "тупых чайников", давая, тем самым, понять собеседнику, что он "полный ламер, ничего не смыслящий в сущности бытия, работе железа, операционных системах, приложениях и еще бог знает в чем". А, узнав, что "этот ламер" к тому же пользуется Win9x, в ход дополнительно идет "распальцовка", с использованием услышанных где-то "крутых идиоматических выражений и терминов компьютерной тематики", смысл которых одинаково не понятен обеим сторонам. Цель при этом преследуется одна: как можно круче выпендриться, показав себя нехилым "спецом" в общении с машиной.

Заветной же мечтой таких "компьютерных гениев" является либо сам факт подержаться за компакт-диск с "Линуксом", либо установить на свои компьютеры эту ОС (в очень редких случаях), при этом выучить две команды типа "ls" и "Х", либо продолжать работать с Windows, заявляя всем, что давно пора бы переходить на "Unix", т.к. "маст дай должен умереть", да и весь компьютерный мир уже давно позабыл о существовании "форточек". А мысль о том, что у самих руки корявые огромными усилиями из головы выметается. К этому стоит добавить, что UNIX-подобные системы им нужны как козе баян. С таким же успехом можно купить "Феррари" с кондиционером и ездить на ней по деревне, напевая "Ой, цветет калина"...

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

Естественно, что о существовании таких ОС, как Windows 2000 или Windows XP на основе технологии NT, "программисты-виртуозы" краем уха что-то там слышали или даже читали, но чтобы эти системы делились на несколько подгрупп (семейств) - ... А спроси их, что это за технология такая - NT, и чем она отличается от используемой в Win9x или в их любимом и прославляемом "Линуксе" (и отличается ли вообще), - вы в лучшем случае получите ответ, достойный занесения его в книгу "Дети программистов от 2 до 5".
На вопрос "А чем, собственно, Linux отличается от Windows NT?" вы услышите один или несколько из приведенных ниже ответов:

  • Linux - рулеzzz форева! Windows - маст дай! - такой жаргончик вгонит в могилу любого пользователя.
  • Да ты что?! Это же LINUX!!! - больше, видимо, человеку ответить нечего.
  • Linux не виснет и не имеет дыр в защите! - попросите его показать программу, не поддающуюся взлому и не имеющую ни одной ошибки, тем более операционную систему. Если же он такую и покажет, причем будет с пеной у рта доказывать, что так оно и есть - можете смело обозвать его ламером.
  • Linux ставят на сервера, а это говорит о многом. - не более чем о том, что и Windows 2000 Pro / Server также стоит на многих мощных серверах, например, Microsoft.com, который ежедневно поддается атаке десятков, а то и сотен хакеров, жаждущих "показать кузькину мать" Гейтсу. Да и я построил "сетку" на работе на базе Windows 2000 Server и не жалею.
  • И т.д. и т.п. - лишь пустые громогласные слова (чаще всего - рекламные слоганы), принятые на вооружение из различных источников.

Я, конечно, понимаю, что сейчас модно критиковать все продукты Microsoft. В настоящий момент в компьютерном мире, на мой взгляд, развивается примерно один из следующих сценариев:

А) Конкуренты Microsoft, борясь за потребителя, стараются любыми средствами опорочить результаты творчества своего "противника". Но так как открыто этого делать нельзя, то для достижения своих целей используются "мальчики-марионетки", описывающие все ужасы Windows во всевозможных форумах, конференциях, чатах и пр., особо подчеркивая, что настоящий программист никогда не сядет за "виндузу". При этом становится модным критика в адрес крупнейшего в мире гиганта, которая, безусловно, никак не отражается на деятельности Microsoft (знаете, как Моська на слона...).

Б) Microsoft сама умышленно делает то, что написано в пункте А), при этом, еще и приплачивает своим несчастным конкурентам. Цель такова: по американским законам (так же, как и по российским) не допускается существование монополий, т.е. компаний, захвативших более 60-70% рынка. Государство призвано активно бороться с этим "явлением", т.к. последствия всем известны. В случае попытки расформирования "империи Гейтса" (что уже безуспешно практиковалось), Microsoft с горечью сообщает: "Какие же мы монополисты?! Вон, посмотрите, сколько разных UNIX'ов есть, не считая OS/2, Netscape, Opera, The Bat! и пр. Да и пишут о нас как плохо! Ой, как плохо! Еще "ломают" наши серверы, ой-ой, как "ломают"! Бедные мы! Нас защищать надо!" При этом не только у судьи, но и у адвокатов истца градом текут слезы, и первый решает оставить в покое "дышащую на ладан" компанию...
Что ж, если оно так и есть, то стоит только позавидовать самому удачливому бизнесмену, первоклассному программисту Биллу Гейтсу и в целом компании Microsoft. А "мальчикам-марионеткам" порекомендовать шире смотреть на все происходящее в мире, лично поработать с той или иной программой, слушать только себя и иметь свое собственное мнение.

Я ни в коем случае не хочу подчеркнуть то, что пользователи UNIX-систем вот такие "программисты". Если человек установил себе Linux, и знает зачем и для чего он ее использует, - разговор совсем другой...

И, возвращаясь к нашим "программистам", добавлю, что доказывать что-либо таким людям - пустая трата времени. Обижаться - нет смысла. Куда интересней и прикольней продолжать с ними эту "игру", при этом строить умное и обалдевшее от их "суперграмотности" лицо, продолжая задавать до поры до времени простейшие вопросы. А дальше - все зависит от вашей фантазии...

Что касается меня, то скажу, что даже хорошим программистом себя никогда не считал и не считаю. Как говорится, век живи - век учись!

_______________

Хотелось бы еще написать о других "моральных уродах", которых в Интернете развелось как собак нерезаных, но не буду повторяться, т.к. эту тему мы уже затрагивали в самом начале выхода этой рассылки. Единственное, о чем хотелось бы попросить читателей, задающих вопросы, - не обижаться на таких темных личностей и относиться к ним с пониманием, как к психически больным или умственно отсталым людям, которые умудряются влезть туда, куда их совсем не звали.

_______________

Конечно, все мы, эксперты, раньше учились, задавались дурацкими и примитивными вопросами, откапывали где-то экзотическую литературу, читали, пробовали, экспериментировали, ставили перед собой задачи и даже пытались писать вирусы (с кем не бывает!). В результате достигали того, чего хотели. Сейчас всевозможной литературы - завались. Читатели даже капризно перебирают кучу сайтов, дабы найти именно то, что их больше всего устраивает. Компьютеры есть почти в каждой квартире, информация прямо из монитора лезет. Казалось бы: сиди и читай! Так читайте, друзья мои! Учитесь! Я очень надеюсь, что эксперты вам в этом будут и дальше помогать, а я, кроме своих редко высылаемых ответов, постараюсь делать работу максимально удобной и комфортной для обеих сторон.

Только тот человек считается настоящим программистом, который умеет объяснять сложнейшие вещи наиболее простым и понятным для любого пользователя языком, но никак не наоборот.

Вот, вроде и все, что хотел сказать. Потратил пару часов, но зато высказался "по полной программе". Ваши мнения по поводу всего вышеизложенного можете отправлять по адресу Assembler@Kalashnikoff.ru. Буду очень рад ознакомиться.

_______________

P.S. для читателей. Если вы возмущены ответом того или иного эксперта, то, пожалуйста, пришлите мне этот ответ по указанному в конце рассылки адресу. Виновные или непорядочные эксперты будут сильно наказаны. Заранее спасибо.

Вечно ваш,
Калашников Олег (Experts@Kalashnikoff.ru)


Вопрос №1516

Привет всем!
Тут кто-то заикался о рассылке по Protected Mode. Так я этот вопрос давно задавал, но в ответ тишина. Давайте кто хочет вырязят желание. А то реальный режим уже давно никому не нужен,а защищенный это рулез. Правда я нашел по нему исчерпывающую инфу и мне пока хватает.

Ответ

Здравствуйте, DIGiT!
А как на счет вертуального режима?????????
Почему-то все его игнорируют ??? - В чем дело ???
Или слабо ????


Отправил эксперт: Exilit
Эксперт отправил ответов (всего): 7

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1516

Привет всем!
Тут кто-то заикался о рассылке по Protected Mode. Так я этот вопрос давно задавал, но в ответ тишина. Давайте кто хочет вырязят желание. А то реальный режим уже давно никому не нужен,а защищенный это рулез. Правда я нашел по нему исчерпывающую инфу и мне пока хватает.

Ответ

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

Я хочу! Правда, я вообще что-то давно рассылку не получал... Только FAQ. А рассылка заглохла где-то на 30-м выпуске :(


Отправил эксперт: Ayl
Эксперт отправил ответов (всего): 67

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1518

Господа экперты. Подскажите, где можно достать (купить, а лучше скачать) толковый справочник по Win32 API. С подробными описаниями функций, стилей, сообщений и т.п. Желательно (но не обязательно) с примерами вызовов функций.
Заранее спасибо.

Ответ

Здравствуйте, DEMONN!
Купи MSDN, там все или у форточников полазь - может найдешь ( в с мысле MSDN) - какие-то части у них там есть - если не все ...
Если нет зайди на vbrussian.com - там есть ссылка на это дело ...
Еслим кратко то на NikolayAM.narod.ru - неплохой справочник ...


Отправил эксперт: Exilit
Эксперт отправил ответов (всего): 8

Экспертная группа: Общие вопросы по программированию на Ассемблере под Win32

Вопрос №1515

Какая максимальная рабочая температура процессоров Duron?

Ответ

Здравствуйте, Слава!
90 градусов. А вообще кремний был-есть-и пока будет и интегральные схемы пока что делают только на нем. К чему это я - к тому, что значение 90 градусов справедливо для всех процессоров, другое дело насколько быстро каждый из них нагревается.


Отправил эксперт: DivX
Эксперт отправил ответов (всего): 28

Экспертная группа: Модели, виды и типы компьютеров (hard)

Вопрос №1519

Я хотел спросить у WizarX'a
Слухай если ты такой крутой чел и утебя сертификат от мелкософта скажи...как убрать баннеры из ICQ

Ответ

Здравствуйте, Змей!
Тебя интересует ответ ТОЛЬКО от WizarX`а или вообще ОТВЕТ? ;-))))


Отправил эксперт:
Эксперт отправил ответов (всего): 1

Экспертная группа: Пользовательская работа с Windows

Вопрос №1521

Привет всем!
Ayl спасибо за четкий и внятный ответ.

Вопрос такой: Есть число 5 (десятичное), делаем из него
-5, в битовой интерпритации это будет выглядеть так: 5:
0110; -5:1010; число:1010 будет записана в доп. коде.
1) Почему это называется доп. код?
2) Если я укажу таую дерективу: Binar db 1010b будет присвоино переменной Binar число 10 (в десятичной). Но нужно присвоить отрицательное 5 (-5). Собственно я потому и спросил вначале почему запись отриц числа записывается в доп. коде.
Вобше за четностью и нечетностью следит флаг SF, потому если в результате арифм. операции получилось отриц число, то наверное проблем небыло, этот регистр (SF) был в ответе за это!
Вы скажете непроши ли было зиписать так : B db -5, а как тогда с шестнадцатиричным числом: B db FA?
Много получилось...:)
С уважением Alex.

Ответ

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

Спасибо за оценку! :)

Теперь по поводу представления чисел. На самом деле процессору абсолютно наплевать, положительное или отрицательное число он обрабатывает. Именно поэтому при описании диапазонов для той или иной разрядности обычно указывают два - неотрицательный и знаковый. Например:
- с помощью директивы db вы можете задать либо неотрицательное число
в диапазоне от 0 до 255, либо знаковое число от -128 до +127
- с помощью директивы dw вы можете задать либо неотрицательное число
в диапазоне от 0 до 65535, либо знаковое число от -32768 до +32767
Для dd не помню, а считать влом. Там тоже самое, только диапазон больше.

Вещественные числа пока не трогаем, там вообще мрак!

Итак, что же мы имеем. У нас есть число. Хочется, чтобы оно было отрицательным. Но у нас только 8, 16 или 32 бита. Одним надо жертвовать для знака числа. Примем, что если старший бит 0, то число положительное, если 1 - отрицательное. Теперь как представлять отрицательные числа, чтобы с ними было удобно работать?
Посмотрим. Пусть у нас на число отводится 4 разрада. Тогда мы можем представить числа от -8 до +7.
Возьмем два положительных числа, скажем 3 и 5, и вычтем одно из другого (по правилам работы с 2-ичными числами):

0011
-
0101
----
*1110 - * - заем из несуществующего разряда.

А в результате мы должны были получить -2. Итак, -2 = 1110 !
В принципе, так можно поступить со всеми числами из диапазона.
Это представление в дополнительном коде. Почему в дополнительном?
Потому что представление отрицательного числа дополняет представление положительного до 0 (да-да, именно до 0 - перенос из старшего разряда игнорируется! Ну не хватает нам разрядной сетки!).

В результате мы имеем:
0 = 0000
1 = 0001
...
7 = 0111
-8 = 1000 (-8 + 8 = 1000 + 1000 = (1)0000)
-7 = 1001 (-7 + 7 = 1001 + 0111 = (1)0000)
-6 = 1010
...
-2 = 1110
-1 = 1111

Для перевода положительного числа в отрицательное можно воспользоваться следующими способами:
1. Вычесть его из 0
2. а) Инвертировать все биты числа (0 становится 1, 1 - нулем). Этого
можно добиться, выполнив операцию XOR с числом (FF)FF (или -1)
б) Прибавить к результату 1
3. В ассемблере есть команда neg

По поводу записи чисел в программах. Числа нужно записывать так, чтобы было понятно программисту. Например, если я хочу использовать
-5, то я так честно и запишу: a db -5.
Если же мне нужно положительное число, то это будет b db 0fah (или b db 250). Если мне нужен символ, то я его и поставлю. Пусть я даже буду знать его ASCII код. Ну и т.п. Кстати, адреса никогда не бывают отрицательными. Поэтому смещение FFFF - это адрес 65535, а не -1.

Все. Что-то я расписался... :)


Отправил эксперт: Ayl
Эксперт отправил ответов (всего): 68

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1522

День добрый!
Чето я тут одну фишку не понял: в 86 машинах все выражения вычисляются
в области 16-ти битовых чисел. "Результат всех операций берется по модулю"
Как понимать данное утверждение? А как тогда с DD (Define Double Word)?
X DD 8000+8002, как быть с этим, что тут получится.
Да к стате давно хотел спросить как складывать 16-ричные числа?

Ответ

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

1. Правда написана. Так как процессор 16-ти разрядный, то и оперировать он может только 16-разрядными регистрами. Ну не лезет в него больше! Но есть еще один замечательный флаг - флаг переноса CF! Именно он нам и поможет!

Пример: при сложении 65535 (FFFFh) и 1 мы должны получить 65536 (т.е. 10000h). Но это уже 17-тиразрядное число! Результат сложения выглядит так:

1111 1111 1111 1111
+
0000 0000 0000 0001
---------------------
(1) 0000 0000 0000 0000
|
CF

Т.е. мы можем проверить флаг CF и понять, что произошел перенос из старшего разряда. Кроме того, есть команды adc и sbb (сложить с цчетом переноса и вычесть с учетом заема) как раз для обработки чисел, больших 65536.

Пусть у нас в регистрах dx:ax находится число (32 разряда). Нам нужно сложить его с числом cx:bx (тоже 32 разряда). Выполняем:

add ax, bx ; сложить младшие 16 разрядов чисел
adc dx, cx ; сложить с учетом переноса старшие 16 разрядов
jc OverFlow ; если CF установлен - сообщить о переполнении

Цепочка add - adc - adc - ... - adc может быть любой длины!

2. 16-ричные числа, впрочим, как и любые другие числа в позиционных с.с. лучше всего складывать в столбик! :) Желательно при этом знать таблицу сложения в этой с.с. Для 16-тиричной:

0 1 2 3 4 5 6 7 8 9 a b c d e f
------------------------------------------------------------------
0 0 1 2 3 4 5 6 7 8 9 a b c d e f
1 1 2 3 4 5 6 7 8 9 a b c d e f 10
2 2 3 4 5 6 7 8 9 a b c d e f 10 11
3 3 4 5 6 7 8 9 a b c d e f 10 11 12
4 4 5 6 7 8 9 a b c d e f 10 11 12 13
5 5 6 7 8 9 a b c d e f 10 11 12 13 14
6 6 7 8 9 a b c d e f 10 11 12 13 14 15
7 7 8 9 a b c d e f 10 11 12 13 14 15 16
8 8 9 a b c d e f 10 11 12 13 14 15 16 17
9 9 a b c d e f 10 11 12 13 14 15 16 17 18
a a b c d e f 10 11 12 13 14 15 16 17 18 19
b b c d e f 10 11 12 13 14 15 16 17 18 19 1a
c c d e f 10 11 12 13 14 15 16 17 18 19 1a 1b
d d e f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c
e e f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d
f f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e

Вот и все. Поразрядно складываешь - и не забываешь про переносы.


Отправил эксперт: Ayl
Эксперт отправил ответов (всего): 69

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1523

Хотелось бы уточнить ответ на вопрос №1509. Digger при умножении матриц мы перемножаем строки на столбцы, учитывая тот факт, что матрицы не обладают свойством комутативности. И вообше это за формула a(x1,y1)*b(x2,y2)...?

Ответ

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

Я тоже этого не понял. А формула перемножения матриц такова:
A(m*n) * B(n*k) = C(m*k), где
Cij = Ai1*B1j + Ai2*B2j + ... + Ain*Bnj
для i из диапазона 1..m, j из диапазона 1..k

Ait - элемент матрицы A из i-ой строки и t-ого столбца,
Btj - элемент матрицы B из t-ой строки и j-ого столбца,
t из диапазона 1..n


Отправил эксперт: Ayl
Эксперт отправил ответов (всего): 70

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1516

Привет всем!
Тут кто-то заикался о рассылке по Protected Mode. Так я этот вопрос давно задавал, но в ответ тишина. Давайте кто хочет вырязят желание. А то реальный режим уже давно никому не нужен,а защищенный это рулез. Правда я нашел по нему исчерпывающую инфу и мне пока хватает.

Ответ

Здравствуйте, DIGiT!
На самом деле я не заикался, а прямо так и говорил!!! И поделись вообще линками на "исчерпывающую инфу", всем хоца!!!


Отправил эксперт: Broken Sword
Эксперт отправил ответов (всего): 210

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1518

Господа экперты. Подскажите, где можно достать (купить, а лучше скачать) толковый справочник по Win32 API. С подробными описаниями функций, стилей, сообщений и т.п. Желательно (но не обязательно) с примерами вызовов функций.
Заранее спасибо.

Ответ

Здравствуйте, DEMONN! Ставишь любой Борландовский С++ (5.0-5.5) в папке де оно стоит найдешь файло - win32.hlp или чето в этом роде - 10 мегов весит. Там все API на С с примерами и т.п.
А если нада для VB, то ставишь из Visual Studio - API Text Viewer


Отправил эксперт: Broken Sword
Эксперт отправил ответов (всего): 211

Экспертная группа: Общие вопросы по программированию на Ассемблере под Win32

Вопрос №1520

Уважаемые эксперты, как в бейсике, напишется программа:
Нужно вести несколько, чисел в массив, и сложить общее количество, этих чисел, но только при условии, что они больше пять.

Ответ

Здравствуйте, Артём!
Пиши в АЛГОЛ-е лучше, бейсик устарел давно


Отправил эксперт: Broken Sword
Эксперт отправил ответов (всего): 212

Экспертная группа: Общие вопросы по программированию на Ассемблере под Win32

Вопрос №1527

Здарово эксперты:)
Жил был у меня старенький БК
Atari 800XL
а у него был Стример (игрушки там всякие и проги писал
на касеты...) дык вот дело такое: хочу, чтобы в комп
он "втыкался" а для этого надо немного вход переделать...
а вопрос вот в чем...где найти распайку штекера такого старья???

Ответ

Здравствуйте, Baa!
Круто ты проапгрейдился :)
Со стриммером вряд ли у тя что получится - надрываться не стоит - хотя бы схему его нада для ответа - плюс прогу писать, адаптер, я бы лично не за любые деньги повелся, хотя были подобные преценденты для Спектрума :) Предлагаю более простой вариант Поставь себе эмулятор этого Атари, там же где его найдешь - почти факт - найдешь там и массу своих любимых программ :)


Отправил эксперт: UFO
Эксперт отправил ответов (всего): 46

Экспертная группа: Модели, виды и типы компьютеров (hard)

Вопрос №1528

Господа присяжные , и заседатели ! Пишет вам чайник из чайников ! Помогите обнаружить драйвер , открывающий-закрывающий СИДИРОМ , чтобы заставить его работать по, клику мышьи с рабочаго стола , или написать прог!. Комп у меня недавно, но я его неплохо знаю вниз , до железа , а вот высше , с языками , полный ноль , посоветовали , начать , с Паскаля , зря выкинул , деньги на книжку . Помогите , ето мечта , к кому не обращался , все только разводят руками . Зарание спасибо Piton . Koltpiton@mail.ru

Ответ

Здравствуйте, piton!
Драйвер ??? Он что у тебя не работает ???
Если работает и ты его хош открыть/закрыть то советую на VB или чем то еще объектноориентированном, вот пример статейки..

Вот ещё один пример на эту тему: как программно открыть и закрыть CD-ROM. Для демонстрации примера создадим обычный проект, на форму добавим кнопку и добавим следующее объявление API-функции:

Option Explicit
Private Declare Function mciSendString Lib "winmm.dll" Alias _
"mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString _
As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
для события Click кнопки напишем следующий код:

Private Sub Command1_Click()
mciSendString "Set CDAudio Door Open Wait", 0, 0, 0
End Sub
Этот код откроет лоток CD-ROM.

Для закрытия же CD-ROM используем эту же функцию, но с другим первым параметром:

mciSendString "Set CDAudio Door Closed Wait", 0, 0, 0
Вообще же первый параметр функции mciSendString довольно-таки хитрый. Он составной. Так, вместо CDAudio вы можете написать digitalvideo или еще что-нибудь, вместо Door Open или Door Close можно написать audio all off или audio right off или какие-нибудь другие варианты. Подробности всего этого смотри в MSDN->Platform SDK->Graphics and Multimedia Services->Windows Multimedia->Multimedia Reference->Multimedia Command Strings->Set.



Отправил эксперт: Exilit
Эксперт отправил ответов (всего): 9

Экспертная группа: Пользовательская работа с Windows

Вопрос №1532

Всем снова привет!
Ayl ну ты просто святой:)
Мне уже неловко тебя спрашивать..., но до меня недошло что это за пирамида? Что с чем складывается..., может проше на простом примере... таком как (см. ниже):
FFF
+
B2A
------
?????


Ответ

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

Да блин, съехала табличка... Это была таблица сложения в 16-тиричной с.с. :((

А если на примере - то пожалуйста:

7FB4 + 5A8D = ?

1. Складываем 4+D. D 16-ричное = 13 10-тичное. Поэтому 4 + D = 4 + 13 =17. 17 десятичное в 16-ричной с.с. равно 11. 11 > 10 (10 - это основание любой позиционной с.с., записанное в ней самой!). Поэтому 1 пишем в результат, 1 запоминаем в качестве переноса.

2. Складываем B + 8: B = 11(10) ==> B + 8 = 11 + 8 = 19. Плюс перенос ==> 20. 20 (10) = 14 (16). 6 пишем, 1 "в уме" :)

3. Складываем F + A: F = 15 (10), A = 10 (10) ==> F + A = 15 + 10 = 25. Плюс перенос ==> 26. 26 (10) = 1A (16). A пишем, 1 "в уме".

4. Складываем 7 + 5: 7 + 5 = 12 (10). Плюс перенос ==> 13. 13 (10) =
D (16). Переноса нет.

Итог:
7FB4 + 5A8D = DA61.

Все.


Отправил эксперт: Ayl
Эксперт отправил ответов (всего): 71

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1528

Господа присяжные , и заседатели ! Пишет вам чайник из чайников ! Помогите обнаружить драйвер , открывающий-закрывающий СИДИРОМ , чтобы заставить его работать по, клику мышьи с рабочаго стола , или написать прог!. Комп у меня недавно, но я его неплохо знаю вниз , до железа , а вот высше , с языками , полный ноль , посоветовали , начать , с Паскаля , зря выкинул , деньги на книжку . Помогите , ето мечта , к кому не обращался , все только разводят руками . Зарание спасибо Piton . Koltpiton@mail.ru

Ответ

Здравствуйте, piton!
Поищи на www.listsoft.ru, www.softlist.ru, и www.download.ru. Мне где-то там попадалась утилитка для этого под Выньду.


Отправил эксперт:
Эксперт отправил ответов (всего): 1

Экспертная группа: Пользовательская работа с Windows

Вопрос №1529

Господа присяжные , и заседатели ! Пишет вам чайник из чайников ! Помогите обнаружить драйвер , открывающий-закрывающий СИДИРОМ , чтобы заставить его работать по, клику мышьи с рабочаго стола , или написать прог!. Комп у меня недавно, но я его неплохо знаю вниз , до железа , а вот высше , с языками , полный ноль , посоветовали , начать , с Паскаля , зря выкинул , деньги на книжку . Помогите , ето мечта , к кому не обращался , все только разводят руками . Зарание спасибо Piton . Koltpiton@mail.ru

Ответ

Здравствуйте, piton!
Нада использовать MCI
Текст, если не ошиьаюсь "set cd door open".
Хотя и могу соврать.

Точный ответ был на сайте delphi.mastak.ru

Приложение:


Отправил эксперт: progmas (a-kireev,narod.ru - HOMEPAGE)
Эксперт отправил ответов (всего): 1

Экспертная группа: Пользовательская работа с Windows

Вопрос №1527

Здарово эксперты:)
Жил был у меня старенький БК
Atari 800XL
а у него был Стример (игрушки там всякие и проги писал
на касеты...) дык вот дело такое: хочу, чтобы в комп
он "втыкался" а для этого надо немного вход переделать...
а вопрос вот в чем...где найти распайку штекера такого старья???

Ответ

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

Сходи на радиорынок.
В царицино все есть!

Приложение:


Отправил эксперт: progmas (a-kireev,narod.ru - HOMEPAGE)
Эксперт отправил ответов (всего): 2

Экспертная группа: Модели, виды и типы компьютеров (hard)

Вопрос №1498

День добрый, господа эксперты! Спрашивается: учить Асм под DOS нужно, чтобы въехать в Асм под Win32, а на нем писать уже серъезно, или же Асм под DOS все еще нужен сам по себе?

P.S.: Я не против DOS'а, скорее наоборот. Просто интересно узнать сегодняшнее место Асма на программерской арене.

Ответ

Здравствуйте, Xandre!
Лично я считаю так, что Асм нужен ради Асма, я например на работе пишу под совсем разные процессоры, типа МК51, МК52, TMS, AVR, стандартные 086, 188, 386, а под Дос или тем более Виндовс вообще почти не писал


Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 205

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1510

Кто то хотел оживить рассылку, не правда ли????

Ответ

Здравствуйте, WizarX!
И так начнем:
Это случаем не про тебя ???
http://wizardx.narod.ru/
http://love.mail.ru/item/126723.html?126016
....
Возраст 21
Рост 182
Вес 74
Город Новосибирск
Знак Зодиака рак
Образование Незаконченное высшее
Семейное Положение Женат
....
И от куда у тебя в твои 21
12 лет работы с ИТ технологиями ???
ЛАМЕР !!!!!!!!!!!!!!!!!!!!!!!!!!
(ФУХ - отвел душу)


Отправил эксперт: Exilit
Эксперт отправил ответов (всего): 10

Экспертная группа: Пользовательская работа с Windows

Вопрос №1529

Господа присяжные , и заседатели ! Пишет вам чайник из чайников ! Помогите обнаружить драйвер , открывающий-закрывающий СИДИРОМ , чтобы заставить его работать по, клику мышьи с рабочаго стола , или написать прог!. Комп у меня недавно, но я его неплохо знаю вниз , до железа , а вот высше , с языками , полный ноль , посоветовали , начать , с Паскаля , зря выкинул , деньги на книжку . Помогите , ето мечта , к кому не обращался , все только разводят руками . Зарание спасибо Piton . Koltpiton@mail.ru

Ответ

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

#include
#include

int main(int argc, char* argv[])
{
HANDLE hVolume;
DWORD dwBytesReturned;
hVolume = CreateFile( "\\\\.\\f:",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL );

//DeviceIoControl( hVolume,IOCTL_DISK_LOAD_MEDIA,NULL, sizeof(0),NULL, 0,&dwBytesReturned,NULL);
DeviceIoControl( hVolume,IOCTL_STORAGE_EJECT_MEDIA,NULL, sizeof(0),NULL, 0,&dwBytesReturned,NULL);
return 0;
}


это работает на NT , если CD не занят.....если занят может тоже работает.....Первая строчка.... DeviceIoControl загружает cd, вторая выгружает.....(CDROM тут диск f:)


Отправил эксперт: Alexander Lam
Эксперт отправил ответов (всего): 1

Экспертная группа: Пользовательская работа с Windows

Вопрос №1517

Привет всем.
Народ, кто подскажет алгоритм подключения DLL к приложениям.
Я так до сих пор не могу понять. Как решается проблема подключения - ведь и точки входа в ДЛЛки и сами проги (которые их вызывают) - могут распологаться по разным адресам... Сам то я примерно вижу некоторые выходы - но интересно на чем остановились форточники...

Ответ

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

В форточках это происходит так:

push offset DLL_NAME
call LoadLibrary
test eax,eax
jz OBLOMs
push offset PROC_NAME
push eax
call GetProcAddress
test eax,eax
jz OBLOMs
call eax ;или адрес сохраняется

А если DLL собственного приготовления :-) то загружать вообще ненужно,конечно если DLL линкуется вместе с EXE.Все само
подгрузится :-))

Cмотри хелп по win32api там можно еще несколько способов найти.


Отправил эксперт: Hutch
Эксперт отправил ответов (всего): 1

Экспертная группа: пВЭЙЕ ЧПРТПУЩ РП РТПЗТБННЙТПЧБОЙА ОБ бУУЕНВМЕТЕ РПД Win32

Форма подачи вопроса

ВНИМАНИЕ!!! Пожалуйста, НЕ высылайте один вопрос сразу нескольким подгруппам! Дополнения к вопросам, на которые эксперт уже ответил НЕ следует направлять ведущему рассылки (я не успеваю!). Просто скомбинируйте первый вопрос и дополнение к нему, а затем заново отправьте его, используя приведенную ниже форму!

Нажимайте кнопку "Отправить" только ОДИН раз и дождитесь полной загрузки страницы, иначе вопрос будет продублирован!


Ваше имя *:

Ваш e-mail *:

Подгруппы:

Вопрос *:

Прилагаемая программа (если необходимо):


Регистрация в качестве эксперта

Архив выпусков


Управляющий рассылкой,

Калашников Олег: Assembler@Kalashnikoff.ru
ICQ No.:
68951340
URL сайта подписчиков: http://www.Kalashnikoff.ru

Рассылка 'Ассемблер? Это просто! Учимся программировать (FAQ)' Рассылка 'Ассемблер? Это просто! Учимся программировать'


(C) Москва, 2001. Авторское право принадлежит Калашникову О.А. Публичное размещение материала из рассылки, а также его использование полностью или частично в коммерческих или иных подобных целях без письменного согласия автора влечет ответственность за нарушение авторских прав.


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

В избранное