1
0
Prechádzať zdrojové kódy

Merge branch 'master' of u21-25kudinov/ISRPO into master

ypv 2 mesiacov pred
rodič
commit
b8e277a50a

BIN
Ассемблер.jpg


+ 68 - 0
Ассемблер_Кудинов.md

@@ -0,0 +1,68 @@
+# Ассемблер
+
+## Введение
+
+![Ассемблер](Ассемблер.jpg)
+
+Ассемблер — это низкоуровневый язык программирования, который непосредственно отражает архитектуру конкретного компьютера. Он предназначен для написания программ, которые могут напрямую управлять аппаратным обеспечением.
+
+## История Ассемблера
+
+Первая версия Ассемблера создана в 1949 году. Ассемблер был создан для первых ЭВМ на электронных лампах, программы для которых писали на машинном языке. А так как памяти у компьютеров было мало, то команды вводили, переключая тумблеры и нажимая кнопки. Даже несложные вычисления занимали много времени.
+
+Проблему решили, когда ЭВМ научились хранить программы в памяти. Уже в 1950 году была разработана первая программа-транслятор, которая переводила в машинный код программы, написанные на понятном человеку языке. Эту программу назвали программой-сборщиком, а язык — языком ассемблера (от англ. assembler — сборщик).
+
+Появление ассемблера сильно облегчило жизнь программистов. Они смогли вместо двоичных кодов использовать команды, состоящие из близких к обычному языку условных обозначений. Кроме того, ассемблер позволил уменьшить размеры программ — для машин того времени это было важно.
+
+
+## Устройство языка ассемблера
+
+Ассемблер можно считать языком второго поколения, если за первый принять машинный язык. Он работает непосредственно с процессором, и каждая его команда — это инструкция процессора, а не операционной или файловой системы. Перевод языка ассемблера в машинный код называется ассемблированием.
+
+Команды ассемблера состоят из кодов операций и операндов. Операнды — это адреса, из которых процессор будет брать данные для вычислений и в которые будет помещать результат. Адресами могут быть ячейки оперативной памяти и регистры — память внутри процессора. Процессор работает с регистрами гораздо быстрее, чем с оперативной памятью.
+
+Коды операций в языке ассемблера мнемонические, то есть удобные для запоминания.
+
+Не думайте, что ассемблер — всего лишь набор инструкций процессора с удобной для программиста записью. Это полноценный язык программирования, на котором можно организовать циклы, условные переходы, процедуры и функции.
+
+
+Пример программы «Hello World» на Ассесмблере
+
+```
+.MODEL SMALL
+.STACK 100h
+.DATA
+HelloMessage DB 'Hello, World!',13,10,'$'
+.CODE
+START:
+mov ax,@data
+mov ds,ax
+mov ah,9
+mov dx,OFFSET HelloMessage
+int 21h
+mov ah,4ch
+int 21h
+END START
+```
+
+
+## Преимущества и недостатки
+
+|Преимущества|Недостатки|
+-------|--------------|
+|Ассемблер потребляет малое количество ресурсов компьютера.|Программы на ассемблере частенько сложны для чтения и понимания, чем программы, написанные на высокоуровневом языке.
+|Программы, написанные на языке ассемблера, работают быстрее программ, написанных на языках более высокого уровня, потому что они ближе к  машинному коду, который понимает компьютер.|На ассемблере тяжело создавать более серьезные проекты.
+|Программы на ассемблере по размеру меньше, чем программы, написанные на яызках более высокого уровня, поскольку они не требуют использования библиотек и других вспомогательных оболочек.|Программы на ассемблере зависят от компьютера, то есть их можно запускать только на компьютере определенного типа.
+
+
+## Заключение
+
+Даже из нашего примера «Hello, World!» видно, что ассемблер не так удобен в разработке, как языки высокого уровня. Больших программ на этом языке сейчас никто не пишет, но есть области, где он незаменим:
+
+На ассемблере разрабатывают встроенные программы для микроконтроллеров. Этоминиатюрные компьютеры, установленные в системах сигнализации, пультах управления, датчиках, бытовой технике, модемах и во многих других устройствах. Микроконтроллеры используются даже в робототехнике и спутниковых навигационных системах. Объём памяти у этих мини-компьютеров ограничен, а ассемблер удобен для их программирования тем, что одна его команда транслируется в одну команду в двоичном коде. По исходному тексту программы можно определить время её исполнения и объём памяти для её хранения.
+
+На ассемблере пишут драйверы устройств и некоторые компоненты операционных систем — например, ядро или загрузчик. Любительские операционные системы MenuetOS и KolibriOS полностью написаны на ассемблере. Ассемблерный код есть в программах для игровых приставок и мультимедийных кодеков.
+
+Ассемблер применяется в реверс-инжиниринге — обратной разработке программ. Реверс-инжиниринг используют, чтобы понять, как работают программы, какой у них алгоритм. Это нужно в тех случаях, когда создатель по каким-то причинам не хочет публиковать исходный код. Обратной разработкой занимаются антивирусные компании, исследующие вирусы и трояны, создатели драйверов и операционных систем, а также просто любопытные. Ещё её активно применяют компьютерные злоумышленники всех мастей: взламывают программы, ищут уязвимости, пишут вирусы, генераторы ключей и тому подобное.
+
+Если вы хотите разрабатывать новые микропроцессоры или стать реверс-инженером, то есть смысл серьёзно заняться изучением языка ассемблера.

+ 14 - 0
Ассемблер_Кудинов_вопросы.md

@@ -0,0 +1,14 @@
+Что делает программист при создании программы на ассемблере?
+Программист при написании программы на ассемблере оперирует памятью.
+
+С чем работает ассемблер?
+Ассемблер работает непосредственно с процессором.
+
+Что представляют из себя операнды?
+Операнды — это адреса, из которых процессор будет брать данные для вычислений и в которые будет помещать результат.
+
+Что такое ассемблирование?
+Ассемблирование – это перевод программы на языке ассемблера в машинный код.
+
+Можно ли далее следующие проекты создать на Ассемблере: операционная система, сервер, интегрированная среда разработки, игровой движок, двухмерная игра, трехмерная игра?
+Можно, но разработка таких программ будет очень долгой и трудной. Более того, большая их часть будет запускаться только на определенном типе компьютера.