Рассылка закрыта
При закрытии подписчики были переданы в рассылку "О карьере и профессиональном развитии IT-специалистов" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Октябрь 2000 → | ||||||
1
|
||||||
---|---|---|---|---|---|---|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
18
|
19
|
20
|
21
|
22
|
||
24
|
25
|
26
|
27
|
28
|
29
|
|
30
|
31
|
Статистика
+11 за неделю
Низкоуровневое программирование для дZeнствующих # 2
НИЗКОУРОВНЕВОЕ
ПРОГРАММИРОВАНИЕ # 2
|
|
Вы
читали "Хроники Амбера" Роджера Желязны?
Попытаемся вас все же отговорить от "колупания" низкого уровня. Ну подумайте хорошенько - какого черта вам это нужно?! В delphi приложения за 5 минут ваяются, а на "асме" знаете сколько?! У вас что, забот больше в жизни нет, кроме как искать приключений на собственную задницу? Хотите писать программы - пишите. В конце концов если есть задача - для ее решения любые способы хороши... И не имеет большого значения ни объем откомпилированной программы, ни ее требовательность к ресурсам - "машины" нонче знаете какие пошли?! Сплошная крутизна и мегагерцы! А многочисленные среды для создания приложений!? (Ах, я таю, таю - тащите тазик...). Ни строчки кода! Сплошное кликанье мышкой! Ведь это так круто! Прогу написать? В два счета! (Я крутой, крутой, крутой). Открываем форму. Небрежная пробежка по многочисленным панелям с компонентами... Кликаем на нужный, перетаскиваем на форму... готово! Объект Button1 типа TButton! Хотите - в виде звездочки будет выглядеть? Ща только 1st Class проинсталлю... Готово! Окно программы, С КНОПКОЙ - за 5 сек! Полноценное окно и кнопка полноценная! А в окне даже менюшка выскакивает - если в левом вернем углу нажать! И все это - одним легким небрежным движением! Какой там ассемблер? Delphi - вот это вещь! Бац-бац - и слобал какое-нить бухгалтерское приложение. Бац - и продал его подороже с умным видом какому-нибудь мелкому промышленному предприятию. (Только не признавайтесь никогда, что за вечер слАбали - не правильно поймут.) А бабки состриг - и на пиво есть, и на интернет тоже. Хорррошая жизнь! А коли жизнь хороша - можно и в арканоида с чистой совестью... А ассемблер? Ну что такое ассемблер? Средневековому мракобесию сродни. Дьявольщина и сатанизм сплошной. Черная магия! Демонов каких-то из преисподней вызывать... Заклинания... call-jmp-mov-nop-ret, чур меня! (Крест животворящий целую, азъ есм иже еси!). А талмуды ассемблерные??? Ето же вообще еретические труды, чертями писаные! Гримуары окаянные, кои, душу сатане не продав, и в руки крещеные взять не можно! Не, ребята! Не нужен вам asm, ой как не нужен! И страшно, и не пишет на нем уже никто давным-давно! На улицу достаточно выйти, чтоб все понять. Где вы видели многоэтажный дом из кирпича? Из блоков все сделано - из бло-ков! Ну и что, что разваливается? Строителям тоже жить на что-то нужно! Ну прикиньте, что было бы, если б каждый выстроенный дом не нужно было обслуживать, ремонтировать, что-нить переподгонять, замазывать, маскировать, переделывать, перегре:бывать... А то и было бы, что строители б тогда без работы остались - а кому это нафик нужно?! Понятна аналогия? Изучение ассемблера - это есть большая идеологическая ошибка. Асм, как язык программирования, должно предать забвению. А его же, но как сотояние души - на "костер" визуального программирования! И MMX-у туда побольше с 3DFX-ом... знаете как рванет??? И не нужно надеяться на то, что скоро будет достигнут "предел минимизации", когда уже нельзя будет на одной и той же площади расположить большее количество транзисторов... Тогда мол, железо будет уже невозможно совершенствовать - начнут совершенствовать софт. Оптимизировать процедуры, избавляться от балласта и все такое... И типа тут ваши знания и востребуются... Не верьте! Они мою сестру обманули! Говорили, что "предел" - это 0.18 микрон, а в газетах пишут, что уже по 0,15-микронной технологии дочерта чего делается! Короче - намного интереснее на www.outpersonals.com, www.alt.com, www.friendfinder.com и прочие. Интереснее, и для организма полезнее. Идите лучше туда. Там приключения на ваше хм... мягкое место тоже найдуться - но они будут намного приятнее, чем те, которые вы найдете, связавшись с нашим "извращенцким" проектом...
[2] Система счисления (сие не подвластное человеческой логике определение взято из математической энциклопедии) - это совокупность приемов представления обозначения натуральных чисел. Этих "совокупностей приемов представления" существует очень много, но самая совершенная из всех - та, которая подчиняется позиционному принципу. А согласно этому принципу один и тот же цифровой знак имеет различные значения в зависимости от того места, где он расположен. Такая система счисления основывается на том, что некоторое число n единиц (radix) объединяются в единицу второго разрада, n единиц второго разряда объединяются в единицу третьего разряда и т. д. [3] "Разрядам" нас учили еще в начальных классах школы. Например, у числа 35672 цифра "2" имеет первый рязряд, "7" - второй, "6" - третий, "5" - четвертый и "3" - пятый. А "различные значения" цифрового знака "в зависимости от того места, где он расположен" и "объединение в единицу старшего разряда" на тех же уроках арифметики "объяснялось" следующим образом:
35672
= 30000 + 5000 + 600 + 70 + 2 [4] Очень наглядно это отображают обыкновенные бухгалтерские счеты. Набранное на них число 35672 будет выглядеть следующим образом:
Чтобы набрать число 35672 мы должны передвинуть
влево две "костяшки" на первом "прутике", 7 на втором, 6 на третьем,
5 на четвертом и 3 на пятом. (У нас ведь 1 "костяшка" на втором -
это то же самое, что и 10 "костяшек" - на первом, а одна на третьем
равна десяти на втором - и так далее...) Пронумеруем наши "прутики"
снизу вверх - да так, чтобы номером первого был "0"... И снова посмотрим
на наши выражения: (медитируйте)
[5]
Пальцев на руках у человека 10, поэтому и считать мы привыкли
в системе счисления с основанием 10, то есть в десятичной. Если вы
хорошо представляете себе счеты и немного поупражнялись в разложении
чисел аналогично выражению 1, то перейти на систему счисления с основанием,
отличным от привычной, особого труда для вас не составит. Нужно всего
лишь представить себе счеты, на каждый прут которых нанизано не привычные
10 костяшек, а... скажем, 9 или 8, или 16 или 32 или 2 и... попробовать
мысленно считать на них. [7]
Числа в любой системе счисления строятся аналогично десятичной. Только
на "счетах" не с 10, а с другим количеством костяшек.
1 раз 100 (10 раз по 10) Если же мы используем символы 123 для предоставления, например, шестнадцатеричного числа, то подразумеваем следующее:
1 раз 256 (16 раз по 16) Короче - полный беспредел. Говорим одно, а подразумеваем другое. И последнее - не для красного словца сказано. А потому что так оно и есть... Истина где-то рядом... [8] Трудность у вас может возникнуть при использовании символов A, B, C и т. д. Чтобы решить эту проблему раз и навсегда, необходимо назубок вызубрить ма-а-аленькую табличку "соответствия" между употребляемыми в "компьютерном деле" систем счисления:
Следуя этой таблице, число 5BC в шестнадцатеричном формате "строится" так: 5
раз 256 (16 раз по 16) А теперь, если пораскинуть мозгами, с легкостью переведем 5BC из шестнадцатеричной в десятичную систему счисления: 5*256 + 11*16 + 12 = 1468
Вот и объединили цифры с буквами. Пространство со временем
поучимся объединять немного позже - если не испугаетесь сложностей
низкоуровневого программирования.
[9] Двоичная система
по-компьютерному обзывается "bin", "родная" десятичная - "dec", а
шестнадцатеричная - "hex". Это так компьютерщики обозвали те системы
счисления, с которыми имеют дело... А обозвали потому, что у них ведь
полный бардак в голове, оказывается! [10]
Еще немного про перевод между "радиксами". (Вообще-то это
плевое дело - конечно, если представляешь себе, что такое "совокупность
приемов представления обозначения натуральных чисел"). 42936/16
= 2683(8) 8 - младшая
цифра А вот и обратный процесс - перевод из HEX в DEC числа A7B8h:
10*16=160
160+7=167
(10 -
потому что Ah=10d) Преобразования чисел в системы счисления с другим основанием проводятся аналогично... Счеты! Обыкновенные бухгалтерские счеты, только с "плавающим" числом "костяшек" на каждом "прутике"... (медитируйте) [11] Если чесна, то конкретный "рисунок" цифр - единица там палкой обозначается, двойка - лебледем - это все лишь историческая случайность. Мы запросто можем считать в "троичной" системе счисления с цифрами %, *, _ (где запятая - это знак препинания, а вовсе не число): %, *, _, *%, **, *_, _%, _*, __, *%%, *%*, *%_, **%... Или использовать родные цифры в десятичной системе счисления, но по другому "вектору упорядоченных цифр" - 1324890576 1, 3, 2, 4, 8, 9, 0, 5, 7, 6, 31, 33,34, 34,38, 39, 30, 35, 37... Правда,
этим немножко затрудняется понимание происходящего? А ведь тоже десятичная
система! И рисунок цифр как-бы знакомый :-))) [12]
Теперь самая интересная часть Марлезонского балета.
Ah=1010b Каждой шестнадцатеричной цифре соответствует тетрада (4 штуки) ноликов и единичек. Все, что потом нужно сделать - "состыковать" эти тетрады. Круто? Вас еще не то ждет! [13] Кстати (наверняка вы это уже знаете): 00000123
= 123 но, ... но это так... кстати... [14] И, напоследок, еще несколько слов про HEX и BIN :). Зайдите в Norton Commander, наведите указатель на какой-нить файл и нажмите там F3. А когда он откроется - на F4. Там какие-то нездоровые циферки попарно сгруппированы. Это и есть "нолики и единички" (которыми в компьютере все-все-все описывается) но в шестнадцатеричном формате... (медитируйте)
Следует основательно разобраться с системой счисления. Минимум, что должен вынести из этой главы юзвер, вступивший на скользкий путь низкоуровневого программирования - это научиться переводить числа между DEC, HEX и BIN... хе-хе... В УМЕ!
Прежде
чем начать программировать на "низком уровне", необходима
небОльшая теоретическая подготовка. Однако мы допускаем, что небольшое
теоретизирование в самом начале курса отпугнет определенное количество
дZенствующих программеров. А посему, прямо ща :) мы предлагаем вам
написать вашу первую низкоуровневую программу. (дZенствуйте
до следующего понедельника)
В следующий понедельник - более детальное знакомство с debug.com. А также: регистры, адресация памяти, прерывания и т. д. и т. п. |
Рассылка
"Низкоуровневое программирование для дZенствующих", #2
|
http://subscribe.ru/
E-mail: ask@subscribe.ru |
В избранное | ||