Официальный сайт студ.городка НГТУ
Список блогов » 1982 Sinclair Research Ltd. (c)

#113.06.07 12:22Ндя... паходу си - дейситтна атсос...

<Камышовый>
Сообщений: 1421
Email Профиль Приват 

Ндя... паходу си - дейситтна атсос...

Sмена парадигмы

Будущее всегда наступает медленно и незримо. Подкрадывается словно ниндзя, подступает на мягких лапках. Нельзя проснуться однажды утром и осознать – вот он, технотронный скачок, ведь вместо чашки кофе, я возьму шприц и вколю прямо в сердце смесь таурина с чистым адреналином. Человек сильно ограничен в понимании окружающего мира и пусть он хоть трижды огнекрылая валькирия компьютерного андеграунда и неистовый апологет духа робоцивилизации, смену технопарадигмы ему не заметить.

Даже самым прогрессивным из нас свойственен консерватизм и любые, порой незначительные изменения к лучшему мы готовы встретить в штыки. Особо мы недолюбливаем, когда мир меняется не вокруг нас, а внутри, в собственном сознании. Многие люди мнят себя глубоко законспирированными «живыми воплощениями бога» (в простонародье: экспертами), которым трудно, подчас невозможно выкинуть из головы накопленные знания и опыт и начать всё заново.

Не так важно заметили ли вы или нет эволюционный переход. Способность к адаптации позволит вам существовать на любой стадии развития человечества. Осталось только принять сам факт эволюционного скачка.
Cага о трёх яzыках

«На каком языке программировать?» - едва ли не ключевой вопрос в IT сфере за последние 30 лет, особенно актуальный для российской консервативной индустрии программирования. «Правильный» язык должен максимально способствовать «техничному» программированию, помогать развивать хороший стиль и т.п. Определенные вещи «язык адекватного программирования» должен и запрещать (например, оператор безусловного перехода), а другие гарантировать (сокращенное вычисление логических выражений для грамотной организации циклов).

В 1970 г. Никлаус Вирт опубликовал свой первый язык, спроектированный именно с учетом весьма жестких требований, широко известный язык Паскаль. После изобретения Паскаля понимание технологий программирования углубилось (модульные и объектные методы). Сам Вирт учёл это последовательно в двух языках, прямых потомках Паскаля, - это Модула-2 (1980) и Оберон (1988). Модула-2, появившаяся одновременно с другим паскалеобразным языком Ада, разработанным по заказу министерства обороны США, но более простая и эффективная, естественным образом пришла на смену Паскалю в российской космической и оборонной индустрии.

Оберон - наиболее совершенный наследник старого Паскаля, спроектированный с тщательнейшим учетом требований эффективной профессиональной работы. Однако научно-исследовательские разработки Вирта по углублению и расширения возможностей языков были погребены жёсткой маркетинговой политикой фирмы Борланд, производителя Турбо Паскаля. Поэтому часть программистов ушла с Турбо Паскаля на более «современный», «настоящий», «промышленный» продукт фирмы Борланд - Дельфи. Система Дельфи, однако, основана на версии Паскаля, в которую было бездумно добавлено множество модных наворотов, резко усложнивших язык. Для сравнения: язык Оберон, в который Вирт также ввёл ключевые элементы объектно-ориентированного программирования, сравнительно с Паскалем и Модулой-2 выглядит значительно проще, а не сложнее старого Паскаля. Но Оберон качественно мощнее «дельфийского» Паскаля, несмотря на всю сложность последнего (благодаря механизму автоматического управления памятью, до Оберона остававшемуся прерогативой интерпретируемых языков). На будущее заметим, что Оберон существует в нескольких мало отличающихся вариантах, одному из которых ученики Вирта дали название Компонентный Паскаль, чтобы подчеркнуть близость и прямую преемственность со старым Паскалем.

В самой индустрии ПО наибольшую популярность стали приобретать проекты Java и C#, сделанные, хотя и на другой синтаксической основе, но под сильнейшим влиянием именно Оберона. Можно сказать, что индустрия ПО под давлением объективной реальности сумела лучше разобраться в глубинной природе процесса создания ПО, чем программисты, соблазнившиеся поверхностной синтаксической преемственностью «дельфийского» Паскаля с первоначальным вариантом языка.
Тирания мозга веrсии С

Уход в «дельфийский» Паскаль вместо «правильного» Оберона это лишь одна сторона проблемы программирования. В хаосе последних 10-15 лет проявилась ещё более тревожная и опасная тенденция: распространение C-образных языков.

В середине 1970-х была создана и в дальнейшим широко распространилась в разных вариациях (в т.ч. знаменитый Linux) весьма мощная операционная система Unix. Вместе с ней в мир программирования «въехал» и получил распространение язык C, использованный для её написания. В дальнейшем на его основе был построен (как и «дельфийский» Паскаль, бездумным прямым добавлением множества новомодных, зачастую непроверенных средств) язык C++.

Язык C был сочинен (именно сочинен, т.к. проектированием это назвать нельзя) из бесхитростно проинтерпретированных практических соображений как замена ассемблеру в написании операционной системы Unix (которая сама по себе явилась, безусловно, прорывной разработкой). При создании C была проигнорирована вся накопленная к тому времени мудрость создания высоконадежных языков программирования. В результате на C легко написать совершенно нечитаемые конструкции. Приведу цитату с форума:

{Известны 10 преимуществ Паскаля перед Си:) Я приведу только одно, но самое важное:
На Си Вы можете написать:
for(;P("\n").R-;P("\ "))for(e=3DC;e-;P("_ "+(*u++/8)%2))P("| "+ (*u/4)%2);
На Паскале Вы НЕ МОЖЕТЕ такого написать.}

При таком аморфном синтаксисе программист совершенно не защищен от случайных ошибок (причем в C рассыпано и множество других «граблей»).

Было обнаружено, что плотность ошибок в больших программных текстах на языке C при прочих равных (квалификация разработчиков, объем и сложность ПО, время разработки и т.п.) в 16 раз превышает плотность ошибок в программах на наиболее совершенном потомке Паскаля BlackBox’е (об этом языке речь пойдет ниже).

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

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

Стихийное распространение в среде юных партизан от программирования порочной мифологии, возникшей вокруг языков C/C++, имеет резоны в примитивных архетипах подростковой психологии. К этому стихийному явлению нельзя относиться пренебрежительно по следующим причинам. Во-первых, на примере программистов, учившихся на фортране еще в 1960-х г., мы видим, как долго и упорно сохраняются в зрелом возрасте эмоциональные предпочтения и привычки программистского мышления, зафиксировавшиеся в юности (это явление отражено в старом анекдоте: «Пожилому программисту требуется домработница, говорящая на фортране»). Обучать современным эффективным методам программистов с уже сложившимися привычками почти невозможно, и такие программисты постоянно «тащат» в серьезные проекты эти негодные инструменты. Во-вторых, масса фанатов C/C++ создает стадный эффект: с одной стороны, на него ориентируются коммерческие издательства (которые, как показывает опыт, функционируют как мощный усилитель любого мракобесия, если только находится достаточно покупателей; напомним, что изначально потребность знать C была создана распространением операционной системы Unix, а теперь и Linux). С другой стороны, новички-самоучки (коих множество) не имеют другого ориентира, кроме правила «иди за толпой». Наконец, менеджеры под давлением сиюминутных обстоятельств вынуждены ориентироваться на «предложение» рынка рабочей силы. Возникает порочный замкнутый круг, который разрывается только в относительно специфических классах приложений (встроенные системы управления и т.п.), где в игру вступает неумолимая объективная реальность, разрушающая мифологию. В-третьих (и это самое главное), продолжающий расти массив программ, написанных на C/C++, есть постоянный источник проблем - от потерь времени пользователей (современные версии Windows продолжают регулярно падать, как и 15 лет назад, хотя и научились лучше сохранять работу), до дыр безопасности, связанных с дефектами программ (переполнение буфера, утечки памяти и др.). Дефекты, порожденные использованием таких опасных языков программирования, как C/C++, очень трудно устранять.

{В августе 2001 г. вице-президент Microsoft Джим Олчин объявил во время доклада на открытии конференции Intel Developers Forum в Сан Хосе, что в новой операционной системе Windows XP все возможные проблемы из разряда переполнение буфера были устранены посредством специального анализа исходных текстов на предмет безопасности (security audit). Но в декабре того же года была найдена «дыра» в одной из программ в составе Windows XP (в программах поддержки стандарта подключения внешних устройств Universal Plug and Play), причем, дыра оказалась именно из категории «переполнение буфера».}
The stanд…

Вообще вся ситуация здесь выглядит совершеннейшим абсурдом: то, чего можно без труда добиться просто выбором качественного и простого языка программирования, решается ... невообразимо сложным и дорогостоящим способом, а главной причиной, в конечном счете, оказывается умственная инерция программистов, в начале карьеры подвергшихся «заражению холерой C». Отсюда понятно, почему серьезные специалисты употребляют такие сильные выражения как «развращение малолетних», «интеллектуальная зараза» и т.п., говоря о языках C/C++.

Разумеется, проблемы C/C++ ощущаются и в индустрии (не все же там, в конце концов, «программные анархисты» или менеджеры), даже несмотря на то, что конкуренция здесь ослаблена из-за быстрого расширения сферы IT. Именно поэтому возник язык Java, представляющий из себя попытку сделать то, что не сумели сделать авторы C++, а именно, не просто бездумно добавить на предательски ненадежную основу C все возможные новомодные средства, но и сделать какой-то осмысленный отбор, а также перепроектировать «основание» языка, исключив коварные ловушки, которыми знаменит C. При этом сильнейшее влияние оказал виртовский Оберон (компилятор которого, по сообщению Вирта, команда создателей Java изучила в исходниках, дав ему высокую оценку, за несколько лет до выпуска Java) - строгая типизация, автоматическое управление памятью, отказ от множественного наследования - фактически, это отказ от главных культовых свойств C, делающих его столь опасным («полная свобода программисту, включая свободу делать любые ошибки»). Разумеется, чтобы убедить фанатов C согласиться с таким отказом, нужен был сильный способ отвлечь их внимание, и средство для этого было найдено в анти-майкрософтовских движениях, широко распространенных в мире IT. Дорогостоящая маркетинговая кампания, в значительной степени построенная на эксплуатации этой «обманки», имела успех.

Успех маркетинга Java привлек достаточно разработчиков, чтобы преимущества Java в плане производительности из-за отказа от культовой «свободы» C моли себя проявить. Вслед за Java возник и ее «близнец» С#. Однако, оба этих языка - это, прежде всего, инструменты конкурентной борьбы соответствующих корпораций за удержание разработчиков: именно поэтому эти языки постоянно усложняются - это делает почти невозможным перенос больших массивов программных текстов на другие языки, прочно привязывая разработчиков к соответствующей платформе. Разработчики же, исходя из мифических соображений «эффективности» и т.п. и не понимая долгосрочную цену своих решений, стремятся использовать все средства, предоставляемые языком, «увязая» в ловушке.
Выход zдесь

Блэкбокс (BlackBox) - весьма удачный и наиболее популярный вариант Оберона, реализующий язык программирования Компонентный Паскаль.

Авторы Блэкбокса - небольшая группа учеников Н.Вирта, объединившаяся в компанию Oberon mcrosystems Inc.. Один из них - Клеменс Шиперский - является ведущим авторитетом актуальной методологии компонентно-ориентированного программирования, в настоящее время сотрудник стратегического исследовательского подразделения Майкрософт (!). Блэкбокс доступен бесплатно и с полными исходными текстами, защищен одной из стандартных лицензий «открытого кода», аналогично системе Linux (по настоянию пользователей Блэкбокс использует одну из стандартных лицензий SleepyCat, в которых смягчен экстремистский характер лицензии GPL). Блэкбокс представляет собой полноценную операционную среду, «погруженную» в другие операционные системы и допускающую взаимодействие с ними. В настоящее время полная версия Блэкбокса работает под MS Windows, а полноценная серверная версия работает под Linux.

Блэкбокс изолирует программиста и пользователя от операционной системы, предоставляя уникальные возможности разработки приложений с интерактивной графикой - как стандартного типа, так и, что самое интересное, нестандартные. По отзывам профессиональных программистов - более мощную и современную, чем графическая система .NET.

Благодаря сочетанию эффективности, автоматического управления памятью и легкости создания специальной интерактивной графики Блэкбокс оказался весьма привлекательным для сложных научных расчетов синтетического характера («умные» численные алгоритмы, символическая алгебра большого объема, системы обработки данных и моделирования). Например, на Блэкбоксе создано ПО для расчета бортовых фазированных решеток истребителя Eurofighter; полный объем ПО - около миллиона строк. На Блэкбоксе сделана система управления крупнейшего каскада ГЭС на Амазонке (корпорация Astom Power), a также целый ряд других приложений, в т.ч. для экспериментальной и теоретической ядерной физики.

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

Подчеркнем, что BlackBox, хотя и аналогичен виртуальным машинам Java и .NET, но работает с эффективным компилируемым кодом. Благодаря этому программы, написанные на Компонентном Паскале в Блэкбоксе, качественно более эффективны, чем программы на Java и С#. В то же время сохраняется возможность компилировать Компонентный Паскаль как в Java, так и в MSIL (известный компилятор GPCP - Gardens Point Component Pasca).

Offline

#213.06.07 11:25хдета спиздил...

<Камышовый>
Сообщений: 1421
Email Профиль Приват 

хдета спиздил...

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

Коррекция ошибок. К спине пришивают твою же фотографию. Если на выходе ты не похож - корректируют лицо.

Время жизни пакета. Все перемещения по коридору - пока горит спичка. Hе успел - умри героем.

DNS. Чтобы узнать, где колодец в деревне Гадюкино, ты сначала идешь к президенту, потом к губернатору и т. д.

Динамический IP. Каждое утро все меняются паспортами.

Текст-ориентированный протокол. Вместо тебя отправляют твой словесный портрет.

MIME-код. Справка, что ты не верблюд.

Уровни протоколов. Чистое поле. Hужно перейти от одного края к другому. Строится огромная арка, внутри арки мостовая, посреди мостовой кладут ж/д полотно, к рельсам приваривают сваи и на них ставят огромную гранитную глыбу с туннелем внутри, в туннеле прокладывают трубу диаметром полметра, по которой ты и ползешь, пока горит спичка, к президенту (сжатый и с коррекцией ошибок).

Пинги. Иди, посмотри, Иван Петрович не ушел еще?.

Маскарадинг. Один паспорт на всю семью.

IPv6. Китайский паспорт.

DHCP. Вы проснулись после дикой пьянки. Первые ваши слова - "кто я?" и "где я?". Сосед, который не запивал водку пивом, вам сообщает все ваши параметры: кто вы и где. Этот сосед выступает в роли DHCP-сервера. Учтите, что в сети могут быть так называемые "ложные DHCP-сервера", например, жена - на ваш вопрос "кто я?" она выдаст неверную информацию: "алкоголик ты проклятый". Так что не всегда динамическая выдача параметров безопасна, рекомендуется записывать свои параметры (как зовут, ваш адрес и т.д.) на бумажке.

Маршрут по умолчанию. Подойдите к прохожему и спросите "не подскажите ли вы, как пройти к моргу имени Hевмировича-Данченко?". С большой долей вероятности вас пошлют. Так вот это и есть маршрут по умолчанию, другими словами, если адрес назначения не известен, то пакеты посылаются на маршрут по умолчанию (синонимы: шлюз по умолчанию, default gateway).

Понятие TTL. Представьте себе, что вам 5 лет и вы хотите кушать. Вы идете к папе и говорите: "Папа, я хочу кушать". Ваш папа смотрит телевизор, согласно таблице маршрутизации, он посылает вас к маме. Вы идете к ней и просите "Мамааа, я хочу кушать". Мама болтает с подругой по телефону и, согласно своей таблице маршрутизации, посылает вас к папе. И так вы ходите, как дурак, от папы к маме и обратно, туда-сюда, туда-сюда, а все потому, что криворукие админы (папы и мамы) неправильно настроили таблицу маршрутизации.

Чтобы защититься от таких ситуаций, придумали понятие TTL (Time To Live), что, применительно к нашей, ситуации означает количество терпения у мальчика, пока он не скажет "заколебало" и не упадет перед ногами мамы или папы в беспомощном состоянии. Последний, по правилам (стандарты - это заведено в семье), обязан послать короткий нелестный отзыв в адрес того, кто послал мальчика кушать. Это так называемый icmp-пакет "мальчик исдох".

Ентерит - воспаление пальца, возникающее при частом нажатии на клавишу "ENTER".

Ping. Вы, конечно, бывали в ситуации "сам дурак". Вы кричите "Петя ты, дурак", а в ответ слышите "Вася, сам дурак". Это простейший пинг. Вы только что пропинговали Васю. Не все отвечают на пинги, особо культурные, например, Microsoft.com не утруждают себя реагированием на ваши запросы. С такими переругиваться бесполезно, мы знаем, что они слышат и злятся, но реакции добиться не можем. Тем не менее, пинг - неплохой способ узнать, жив ли хост, ведь, пиная труп ногами, не добьешься реакции "сам дурак".

Traceroute. Представь себе, что ты живешь на 9-м этаже и хочешь узнать всех жильцов, которые живут от тебя до Клавки с 3-го. Ты берешь взрывпакет и, исходя из формулы свободного падения, рассчитываешь время взрыва пакета над 8-м этажем. Это TTL=1. После того как пакет **анёт - выглянет озверевшая рожа соседа с 8го этажа. Время реакции зависит от загруженности сервера, т.е. от занятости соседа и от шейпов, т.е. в воздухе ли ваша система или ты живешь на планете, где атмосфера - жидкий азот. Так вот, если вообще не дождешься ответа - твой сосед глухой - у него запрещены icmp-ответы, либо он запретил их только для тебя, если его уже достали твои финты и он научился тебя игнорировать. Дальше выставляешь TTL=2 и т.д. Не забывай, что если Клавка живет выше тебя - это No route to host :(.

Offline

#310.06.07 03:58тваюжмать, а она работает!

<Камышовый>
Сообщений: 1421
Email Профиль Приват 

тваюжмать, а она работает!

Код::

.code					;начало программы
main:
	mov ax, @DATA
	mov ds,ax
	mov es,ax

back1:	lea dx, msg1
	mov ah, 9
	int 21h

	lea dx, inpstr 			;запрос строки
	mov ah, 0ah
	int 21h
	
	mov si, dx			;проверка длины строки
	lodsb
	lodsb
	cmp al, 11
	js cont1	
	lea dx, err1
	mov ah, 9
	int 21h
	jmp back1
	
	jmp cont1
msgns:	lea dx, err2
	mov ah, 9
	int 21h
	jmp back1

cont1:	lodsb				;парсер введенной строки
	sub al, 30h			;сначала получаем число месяца
	js msgns
	cmp al, 10			
	jns msgns
	mov bl, al
	lodsb
	cmp al, '.'
	jz cont2
	sub al, 30h
	js msgns
	cmp al, 10			
	jns msgns
	add bl,bl			;умножение на 10
	mov cl, bl			;умножение делается более быстрым способом, чем
	add bl,bl			;если делать командой mul
	add bl,bl
	add bl,cl
	add bl,al
	lodsb				;теперь получаем номер месяца
	cmp al, '.'
	jnz msgns
cont2:	mov bh,bl
	lodsb		
	sub al, 30h
	js msgns
	cmp al, 10			
	jns msgns
	mov bl, al
	lodsb
	cmp al, '.'
	jz cont3
	sub al, 30h
	js msgns
	cmp al, 10			
	jns msgns
	add bl,bl			
	mov cl, bl
	add bl,bl
	add bl,bl
	add bl,cl
	add bl,al
	lodsb	
	cmp al, '.'
	jnz msgns
cont3:	mov cx, bx
	lodsb				;сейчас получаем год
	sub al, 30h			;первая цифра
	js msgns2
	cmp al, 10			
	jns msgns2
	xor bx,bx
	mov bl,al
	add bx,bx			
	mov dx,bx
	add bx,bx
	add bx,bx
	add bx,dx
	lodsb				;вторая цифра...
	sub al, 30h
	js cont9
	cmp al, 10			
	jns cont9

	xor ah,ah
	add bx,ax
	add bx,bx			
	mov dx,bx
	add bx,bx
	add bx,bx
	add bx,dx

	lodsb				;третья...
	sub al, 30h
	js cont9
	cmp al, 10			
	jns cont9
	xor ah,ah
	add bx,ax
	add bx,bx			
	mov dx,bx
	add bx,bx
	add bx,bx
	add bx,dx
	lodsb				;и четвертая цифра
	sub al, 30h
	js cont9
	cmp al, 10			
	jns cont9
	xor ah,ah
	add bx,ax			;получаем в cx - число и месяц, в bx - год
	lodsb 				;проверяем, что строка окончилась нормальным кодом
	cmp al,	13
	jnz msgns2

					;окончание парсинга введеной строки
	jmp cont4
msgns2:	lea dx, err2			;выводит сообщение об ошибке ввода
	mov ah, 9
	int 21h
	jmp back1

cont9:	xor dx,dx			;обработка, если кол-во цифр во введенном годе меньше 4-х
	mov ax,bx
	div nw10
	mov bx,ax	

					;далее приводим число и месяц к нормальному 
					;для прораммиста виду и одновременно проверяем, 
					;не введены ли нули в месяце и числе

cont4:	dec cl				;месяц - 1
	js msgns3
	dec ch				;число месяца - 1
	js msgns4
	mov al, cl			;проверяем корректность введенных чисел:
	cmp cl, 12			;номер месяца - не больше 12-го	
	jns msgns3
	
	push bx				;число месяца - не больше положенного в этом месяце
	lea bx, dpm
	add bl, cl
	adc bh, 0
	mov al, [bx]
	pop bx
	cmp ch, al
	js cont6		
	
	cmp cl, 1			;..., учитывая високосный год
	jnz msgns4
	cmp ch, 28
	jnz msgns4
	test bx, 3
	jnz msgns4
	

	jmp cont6
msgns3:	lea dx, err3			;отрабатывается неверный номер месяца
	mov ah, 9
	int 21h
	jmp back1

msgns4:	lea dx, err4			;отрабатывается неверный ввод числа месяца
	mov ah, 9
	int 21h
	jmp back1
					;проверка пройдена, приступаем к расчету

cont6:					;расчет дня недели
	push bx
	push cx
	mov ax, bx
	div byte ptr n28		;делим текущий год на 28, получая остаток
	mov al,ah			;28 лет - это НОК между 4 (период високосного года) 
	xor ah,ah			;и 7 (число дней в неделе)
	mov bx,ax
	div byte ptr n4			;деление на 4 - учет високосных дней
	mov bh,al
	xor ax,ax
	mov al, bl
	mul word ptr n365		;умножение на 365 - получение дней
	add al,bh			;+ високосные дни
	adc ah,0
	add al, ch			;+ число месяца
	adc ah,0
	lea bx,dpm
	or cl,cl
	jz outrez
loop1:	add al, byte ptr [bx]		;+ количество дней в предыдущих месяцах
	adc ah,0
	inc bx
	dec cl
	jnz loop1
	pop cx
	pop bx
	test bl,3			;+ еще один високосный день, если этот год високосный и 
	jnz outrez			;февраль уже прошел
	cmp cl,2
	jns outrez
	inc ax
	
outrez:	xor dx,dx			;корректируем число получившихся дней
	dec ax				;и считаем номер дня недели
	dec ax
	div word ptr [n7]		;в dl - день недели

	xor dh, dh			;получаем адрес строки с названием дня недели
	shl dx, 4
	mov ax, dx
	lea dx, dow
	add dx, ax
	push dx

	lea dx, msg2			;выводим день недели на экран
	mov ah, 9h
	int 21h
	pop dx
	mov ah, 9h
	int 21h

	mov ax, 4C00h 			;выход из программы
        int 21h


end main				; КОНЕЦ ;-)

Offline

#407.06.07 00:19как закрытая дверь, словно дверь в никуда!

<Камышовый>
Сообщений: 1421
Email Профиль Приват 

как закрытая дверь, словно дверь в никуда!

я не понял! почему некоторым погода не нравится? бл... вспоминается прошлогодняя жара: всю ночь двери-окна настежь и ночью х(ой!)й уснешь.... бл....

Offline

#529.03.07 12:22херню пишу... всякую...

<Камышовый>
Сообщений: 1421
Email Профиль Приват 

херню пишу... всякую...

бго! мона чужие каменты фиксить, кек))

Offline

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.072 сек.
Выполнено 11 запросов.