Язык Си. Часть 1. Си = Синтаксис + Стандартная библиотека.

Основы языка Си.

Основы языка Си включают в себя:

  • синтаксис языка
  • набор функций стандартной библиотеки

В прикладном аспекте мы рассматриваем основы языка Си с точки зрения создания полноценных Windows приложений.

На Си для Windows можно достаточно удобно писать:

  • консольные программы
  • программы с оконным интерфейсом
  • без интерфейса вообще
  • драйверы

Читать далее «Язык Си. Часть 1. Си = Синтаксис + Стандартная библиотека.»

Обязательная теория. Часть 4. Язык программирования.

Понятие языка программирования.

Понятие языка программирования в современное время рассматривается как совокупность определённых возможностей, которые можно с его помощью реализовать и способов реализации этих возможностей. Способ реализации возможностей языка (синтаксис) — по сути и есть язык программирования в узком смысле. Совокупность возможностей — вторая часть любого языка программирования, делающая его либо узко-направленным, либо стандартным, более-менее универсальным. Совокупность возможностей реализуется через наборы библиотек, написанных именно под конкретный язык. Библиотеки содержат определённые функции или классы, позволяющие легко создавать приложения определённой, чаще всего узко-направленной тематики. Читать далее «Обязательная теория. Часть 4. Язык программирования.»

Язык Си. Часть 0. Си и Ассемблер.

Причём здесь Ассемблер?

Зачем необходимо изучать программирование на Си при изучении Ассемблера? На это есть множество значимых причин. Вы поймёте взаимосвязи этих языков, похожесть друг на друга, логику происхождения более абстрактного Си из машинного Ассемблера. Доверьтесь нашему опыту и воспринимайте необходимость изучения программирования на Си как аксиому — обязательное условие изучения Ассемблера. В особенности это касается создания приложений для Windows. Некоторые значимые доводы в пользу Си, мы всё-таки хотели бы обозначить. Читать далее «Язык Си. Часть 0. Си и Ассемблер.»

Обязательная теория. Часть 3. Уровень абстракции.

Уровень абстракции в программировании.

В предыдущей статье, касающейся обязательных для любого программиста теоретических основ программирования, мы ввели в наш лексикон понятие УРОВЕНЬ АБСТРАКЦИИ. Это сделано для стандартизации, мобильности наших знаний.

Основная наша задача — научиться программировать на любом языке. Понимая основы кодирования и обладая навыками профессионального программирования на одном-двух языках, вы изучите любой другой язык программирования за кратчайшее время: одного-двух дней будет достаточно. Читать далее «Обязательная теория. Часть 3. Уровень абстракции.»

MS-DOS и TASM 2.0. Часть 19. Прощай ассемблер MS-DOS!

Прощай ассемблер MS-DOS и здравствуй Windows!

Мы закончили изучать 16 битный ассемблер MS-DOS и приступаем к изучению программирования на 32 битном ассемблере для Windows.

Нужно ли было копаться в коде мёртвой операционной системы, вместо того, чтобы сразу перейти к основам современного программирования? Для последующего успеха в изучении программирования — это необходимо. Практическое применение знаниям 16 битного ассемблера вы вряд ли найдёте в наше время. Пройденный нами этап — это основа теоретических знаний и практического понимания сути программирования через его основополагающее начало. Читать далее «MS-DOS и TASM 2.0. Часть 19. Прощай ассемблер MS-DOS!»

MS-DOS и TASM 2.0. Часть 18. Ещё раз об указателе.

Указатель в программировании.

В статье MS-DOS и TASM 2.0. Часть 9. Указатель просто и понятно было рассмотрено, что такое указатель в программировании (pointer). Сейчас мы перейдём к вопросу практического использования указателя. Ещё раз напомним, что указатель в ассемблере — более широкое понятие, чем в Си и С++, где указатель определён как переменная, значением которой является адрес ячейки памяти. Указатель — не только переменная. Указатель в программировании на ассемблере — адрес определённой ячейки памяти. Жёсткой привязки к понятию «переменной» нет.

Преимущество указателя — простая возможность обращаться к определённой части исполняемого кода либо данных, избегая их дублирования. Например, один раз написав код функции, мы можем обращаться к нему неоднократно, осуществляя вызов указанной функции. Кстати, вызов функции — это переход исполнения кода по указателю, который для удобства «обозвали» понятным для человека названием (ну, например, «MyBestFunc»). Читать далее «MS-DOS и TASM 2.0. Часть 18. Ещё раз об указателе.»

MS-DOS и TASM 2.0. Часть 17. Константы, массивы, структуры и т.д.

Организация данных в ассемблере.

Прежде, чем переходить к рассмотрению вопроса что такое константа, массив, структура в ассемблере, поговорим о понятии абстракции.

Для упрощения написания кода необходимо преобразовать его в понятный для человека вид, желательно не в ущерб для машины. Для этого используют условности и обобщения — определённую степень абстракции. Один из простейших способов абстракции — разбивка кода и данных на части — блоки по определённым правилам и с определёнными особенностями. Затем эти блоки обзывают понятным для человека языком. Читать далее «MS-DOS и TASM 2.0. Часть 17. Константы, массивы, структуры и т.д.»

MS-DOS и TASM 2.0. Часть 16. Прерывания DOS.

Ядро операционной системы — набор системных функций.

Основу операционной системы Windows 95 — Windows XP составляет набор системных функций, содержащихся в файлах с расширением *.DLL, которые располагаются в системных дирректориях … Windows\System,  System32, SysWOW64 (для 64 битных версий операционок) — так называемый Win API. К слову, в Windows 10 поддержка Win API реализована практически в полном объёме, хотя ядро системы несколько изменилось). В MS-DOS ядро также состоит из системных функций, которые называются прерывания DOS. Ну, если точно, то есть прерывания DOS, а есть прерывания BIOS (связаны с управлением компьютерным железом, определённые прерывания DOS  можно реализовать через прерывания BIOS), да и понятие ядра системы можно расширить… Для наших целей и на данный момент отбросим усложнения в сторону! Далее мы будем использовать общее понятие для всех прерываний: прерывания DOS. Читать далее «MS-DOS и TASM 2.0. Часть 16. Прерывания DOS.»

MS-DOS и TASM 2.0. Часть 15. Упрощаем вызов функции в TASM.

Макрос — макрокоманда, макроопределение.

У большинства популярных ассемблеров (TASM, MASM, FASM), имеется определённая «вкусность», которая помогает писать более читабельный и понятный код, а также уменьшает вероятность ошибок. Мы имеем ввиду макросы. Макрос — миникод, который определяет алгоритм действий основных команд ассемблера. Этот код либо уже создан и входит в комплект ассемблера, либо пишется пользователем самостоятельно. В данной статье мы выясним, как использовать макрос функции (процедуры), встроенный в TASM. Читать далее «MS-DOS и TASM 2.0. Часть 15. Упрощаем вызов функции в TASM.»

MS-DOS и TASM 2.0. Часть 14. Конвенции вызова функции.

Параметры функции.

Функции в ассемблере — это часть кода, которая решает конкретную задачу или несколько, объединённых одной целью задач. Функция может вызываться без дополнительного дублирования кода. Человек способен помнить, воспринимать  и использовать ограниченное число информации. Для облегчения понимания и создания кода его структурируют — дробят на определенные части. Читать далее «MS-DOS и TASM 2.0. Часть 14. Конвенции вызова функции.»