Команды языка программирования ассемблер. Когда был создан ассемблер(assembler) и машинный язык? Программирование на языке ассемблер

Ассемблер

Ассемблер ― язык программирования низкого уровня. Язык получил свое название от слова assembler - сборщик. Возник еще в 50-е гг. как символический аналог машинного языка.
Команды Ассемблера один в один соответствуют командам процессора и фактически, представляют собой удобную символьную форму записи команд и аргументов. Также, Ассемблер обеспечивает связывание частей программы и данныx через метки, выполняемое при ассемблировании (для каждой метки высчитывается адрес, после чего каждое вхождение метки заменяется на этот адрес).
Поскольку системы команд микропроцессоров различаются, каждый процессор имеет свой набор команд на языке ассемблера.
С помощью ассемблера можно написать такие программы, которые невозможно, или очень сложно написать на других языках програмирования. Например: генераторы ключей (keygen), системные мониторы, драйвера для оборудования или даже операционные системы.
Языки высокого уровня ("C","Pascal","Delphi" и т.д.) не обеспечивают надёжного контроля за потоками данных, адресами памяти или регистрами процессора, а также все они были разработаны под определённый вид операционной системы, ассемблер же может стать этим-же ассемблером, но работающим на неизвестной науке платформе, и делающий программы под эту-же платформу.
Программы на ассемблере, в отличие от программ, написанных на языках высокого уровня получаются в десятки раз меньше, а работают в десятки раз быстрее. Примером может послужить операционная система MenuetOS, которая написана на Flat Assembler и умещающаяся на одной дискете (1.44 Мб), причём в комплект входят прикладные программы, такие как: редактор ассемблерного кода с подсветкой, работа с файловой системой, 3d заставки, некоторое количество игр, просмоторщик картинок, компилятор Flat Assembler, терминал, CD плейер и многое другое. Преимущество состоит в том, что его можно быстро скачать с интернета (даже при маленькой скорости соединения).
На данный момент, большинство специалистов в области программного обеспечения ведут разработки на языках высокого уровня, таких как Паскаль или С, что проще при написании программ, но наиболее мощное и эффективное программное обеспечение полностью или частично написано на языке ассемблера.

Литература
1. Питер Абель - Ассемблер. Язык и программирование для IBM PC - М., 1999.

Ассемблер

Ассемблер (от англ. assembler - сборщик) - компилятор исходного текста программы, написанной на языке ассемблера, в программу на машинном языке.
Как и сам язык, ассемблеры, как правило, специфичны для конкретной архитектуры, операционной системы и варианта синтаксиса языка. Вместе с тем существуют мультиплатформенные или вовсе универсальные (точнее, ограниченно-универсальные, потому что на языке низкого уровня нельзя написать аппаратно-независимые программы) ассемблеры, которые могут работать на разных платформах и операционных системах. Среди последних можно также выделить группу кросс-ассемблеров, способных собирать машинный код и исполняемые модули (файлы) для других архитектур и ОС.
Ассемблирование может быть не первым и не последним этапом на пути получения исполнимого модуля программы. Так, многие компиляторы с языков программирования высокого уровня выдают результат в виде программы на языке ассемблера, которую в дальнейшем обрабатывает ассемблер. Также результатом ассемблирования может быть не исполнимый, а объектный модуль, содержащий разрозненные блоки машинного кода и данных программы, из которого (или из нескольких объектных модулей) в дальнейшем с помощью редактора связей может быть получен исполнимый файл.
Специальные ячейки памяти, расположенные непосредственно в процессоре. Работа с регистрами выполняется намного быстрее, чем с ячейками оперативной памяти, поэтому регистры активно используются как в программах на языке ассемблера, так и компиляторами языков высокого уровня.
Названия регистров происходят от их назначения:

EAX/AX/AH/AL (accumulator register) - аккумулятор;
EBX/BX/BH/BL (base register) -регистр базы;
ECX/CX/CH/CL (counter register) - счётчик;
EDX/DX/DH/DL (data register) - регистр данных;
ESI/SI (source index register) - индекс источника;
EDI/DI (destination index register) - индекс приёмника (получателя);
ESP/SP (stack pointer register) - регистр указателя стека;
EBP/BP (base pointer register) - регистр указателя базы кадра стека.

Команды обработки строк
Для работы со строками, или цепочками символов или чисел (т.е. попросту говоря, с массивами произвольных данных) в МП предусмотрен ряд специальных команд:
movs - пересылка строки;
cmps - сравнение двух строк;
seas - поиск в строке заданного элемента;
lods - загрузка аккумулятора (регистров AL или АХ) из строки;
stos - запись элемента строки из аккумулятора (регистров АХ или AL).

Достоинства

· Язык ассемблера позволяет писать самый быстрый и компактный код, какой вообще возможен для данного процессора.
· Скорость работы - за счёт оптимизации вычислительного алгоритма и/или более рационального обращения к оперативной памяти (например, если все исходные данные хранятся в регистрах процессора, то можно исключить излишние обращения к ОП), перераспределения данных, табличного вычисления функций;
· Объём кода (в том числе за счёт эффективного использования промежуточных результатов). Сокращение объёма кода также нередко повышает скорость выполнения программы.
· Обеспечение максимального использования специфических возможностей конкретной платформы, что также позволяет создавать более эффективные программы, в том числе менее ресурсоёмкие.
· При программировании на языке ассемблера возможен непосредственный доступ к аппаратуре, и, в частности, портам ввода-вывода, регистрам процессора и др. Во многих операционных системах прямое обращение из прикладных программ для записи в регистры периферийного оборудования блокировано для надёжности работы системы и исключения "зависаний".
· Язык ассемблера часто применяется для создания драйверов оборудования и ядра операционной системы, когда важно временное согласование работы периферийных устройств с центральным процессором.
· Язык ассемблера используется для создания "прошивок" BIOS.
· С помощью языка ассемблера часто создаются машиннозависимые подпрограммы компиляторов и интерпретаторы языков высокого уровня, а также реализуется совместимость платформ.
· С помощью программы дизассемблера можно понять алгоритмы работы исследуемой программы при отсутствии листинга на высокоуровневом языке, изучая только машинные коды, но в сложных нетривиальных программах это очень и очень трудоёмко.

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

Совместимость
Программа, предназначенная для одного типа ассемблеров, не может быть откомпилирована на другом без радикальной переделки или автоматической конвертации! Но даже среди ассемблеров "своего" типа наблюдается разброд, разнобой и множество различий: в ключевых словах, в правилах оформления листинга, в поставляемых библиотеках и заголовочных файлов и т. д. Если только совместимость не заявлена явно, транслировать программу нужно тем и только тем ассемблером для которого она предназначена. В противном случае - готовьтесь к переделкам (то есть, к адоптации). Отличия зачастую проявляются в самых неожиданных местах. Некоторые ассемблеры понимают, что "mov eax, x" это тоже самое, что и "mov eax,[x]", некоторые - нет. Они спотыкаются и выдают ошибку. Но еще ничего! Гораздо хуже, когда транслятор молчаливо трактует эту конструкцию как "mov eax, offset x", что совсем не одно и тоже! Так что при переносе программы приходится быть очень и очень осторожным.

Совместимость операционных систем. Программы, ориентированные на MS-DOS, без не только не транспортабельны, но и непереносимы. Для них характерно прямое взаимодействие с оборудованием, доступное в NT только с ядерного уровня, не говоря уже о том, что 16-разрядный код вызывается из 32-разрядных приложений только через DPMI, да и то не без ухищрений.

Таким образом, прежде чем транслировать ассемблерную программу, необходимо отождествить для какого транслятора и операционной системы она предназначена! С ассемблерными фрагментами, выхваченными из "родного" контекста, приходится еще хуже. Допустим, в некоторой статье описывается интересный антиотладочный прием и приводится ассемблерный код, но как встроить его в свою программу - не говорится. Знакомая ситуация, не правда ли? Непосредственная трансляция невозможна - транслятор дико материться, но ничего не говорит.

Ассемблирование программы

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

Asm --> .obj --> .exe/.dll/.com

На первой стадии (.asm --> .obj) из ассемблерного файла путем компиляции получаются файлы промежуточного объектного кода, имеющего расширение.obj (при этом могут использоваться дополнительные inc-файлы). Файл с расширением.obj содержит оптимизированный машинный код при условии, что не встретились синтаксические и семантические ошибки. Если в исходном файле с программой на языке ассемблера обнаруживаются ошибки, то программисту выдается список обнаруженных ошибок, в котором ошибки указываются с номером строки, в которой они обнаружены. Программист циклически выполняет действия по редактированию и компиляции до тех пор, пока не будут устранены все ошибки в исходном файле. На этом этапе уже возможно получение готовой программы, но чаще всего в ней не хватает некоторых компонентов. Если компилятор по какой-либо причине (неверно прописан путь к такому файлу или файл отсутствует) не может найти inc-файл, то выдается предупреждение и obj-файл получен не будет.

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

В результате ассемблирования получается так называемый "объектный файл". В качестве дополнительной возможности ассемблер может создать файл листинга программы.

Обычно для получения файлов объектного кода необходимо выполнить соответствующую программу ассемблера (программы ML.EXE фирмы Microsoft и TASM.EXE фирмы Borland), указав в командной строке имя файла с текстом программы.

Эта форма вызова является минимально необходимой. Кроме имени текстового файла, необходимо указывать опции ассемблирования. Более подробную информацию об опциях программы ассемблирования следует искать в документации к этим программам.

Компоновка программы

Следующая стадия (.obj --> .exe/.dll/.com) называется линковкой или компоновкой и служит для замещения символьных имен, используемых программистом, на реальные адреса.

Сравните шестнадцатеричное содержимое OBJ и EXE файла, который у вас получился. В EXE-файле присутствует та же последовательность байтов, что и в OBJ-файле. Но помимо этого еще присутствует: имя ассемблированного файла, версия ассемблера, "имя собственное" сегмента и так далее.

Это "служебная" информация, предназначенная для тех случаев, когда ваш исполнимый файл вы хотите собрать из нескольких. При разработке больших приложений исходный текст состоит, как правило, из нескольких модулей (файлов с исходными текстами), потому что хранить все тексты в одном файле неудобно - в них сложно ориентироваться.

Каждый модуль по раздельности компилируется в отдельный файл с объектным кодом. В каждом из этих файлов прописаны свои сегменты кода/данных/стека, которые затем надо объединить в одно целое. А исполнимый файл нам нужно получить только один - с единым сегментом кода/данных/стека. Именно это LINK и делает: завершает определение адресных ссылок и объединяет, если это требуется, несколько программных модулей в один. И этот один у нас и является исполнимым.

Кроме того, к нашим модулям надо добавить машинный код подпрограмм, реализующих различные стандартные функции (например, вычисляющих математические функции SIN или LN). Такие функции содержатся в библиотеках (файлах со стандартным расширением.LIB), которые либо поставляются вместе с компилятором, либо создаются самостоятельно. Поэтому процесс подготовки обязательно включает в себя этап компоновки, когда определяются все неизвестные при раздельном ассемблировании адреса совместно используемых переменных или функций.

Процесс объединения объектных модулей в один файл осуществляется специальной программой-компоновщиком или сборщиком (программа LINK.EXE фирмы Microsoft и TLINK.EXE фирмы Borland), которая выполняет связывание объектных модулей и машинного кода стандартных функций, находя их в библиотеках, и формирует на выходе работоспособное приложение - исполнимый код для конкретной платформы.

Исполнимый код - это законченная программа с расширением COM, DLL или EXE, которую можно запустить на компьютере с установленной операционной системой, для которой эта программа создавалась. Имя исполняемого файла задастся именем первого.OBJ файла. Для линковки нужно в командной строке набрать:

link prog1.obj prog2.obj или tlink prog1.obj prog2.obj

Содержимое объектного файла анализируется компоновщиком. Он определяет, есть ли в программе внешние ссылки, то есть содержит ли программа команды вызовов процедур, находящихся в одной из библиотек объектных модулей (link library). Компоновщик находит эти ссылки в объектном файле, копирует необходимые процедуры из библиотек, объединяет их вместе с объектным файлом и создает исполняемый файл (executable file). В качестве дополнительных возможностей компоновщик может создать файл перекрестных ссылок, содержащих план полученного исполняемого файла.

Используемые источники
1. https://ru.wikipedia.org/
2. http://natalia.appmat.ru/
3. http://www.codenet.ru/
4. http://wasm.ru/
5. Нортон П., Соухэ Д. Язык ассемблера для IBM PC. М.: Компьютер, 1992.

Государственное Бюджетно-Образовательное Учреждение

Предмет : информатика

Реферат

Тема: История языков программирования.

Ассемблер.

Выполнил : ученик 8 класса,

средней школы №1467

Сорокин Николай

Руководитель : Цветкова Оксана Михайловна

Введение

С увеличением объёма вычислений появился первый счётный переносной инструмент – “Счёты”.

В начале 17 века возникла необходимость в сложных вычислениях. потребовались счётные устройства, способные выполнять большой объём вычислений с высокой точностью. В 1642 г. французский математик Паскаль сконструировал первую механическую счётную машину – “Паскалину”.

В 1830 г. английский учёный Бэбидж предложил идею первой программируемой вычислительной машины (“аналитическая машина”). Она должна была приводиться в действие силой пара, а программы кодировались на перфокарты. Реализовать эту идею не удалось, так как было не возможно сделать некоторые детали машины.

Первый реализовал идею перфокарт Холлерит. Он изобрёл машину для обработки результатов переписи населения. В своей машине он впервые применил электричество для расчётов. В 1930 г. американский учёный Буш изобрел дифференциальный анализатор – первый в мире компьютер.

Большой толчок в развитии вычислительной техники дала вторая мировая война. Военным понадобился компьютер, которым стал “Марк-1” – первый в мире цифровой компьютер, изобретённый в 1944 г. профессором Айкнем. В нём использовалось сочетание электрических сигналов и механических приводов. Размеры: 15 X 2,5 м., 750000 деталей. Могла перемножить два 23-х разрядных числа за 4 с.

В 1946 г. группой инженеров по заказу военного ведомства США был создан первый электронный компьютер – “Эниак”. Быстродействие: 5000 операций сложения и 300 операций умножения в секунду. Размеры: 30 м. в длину, объём – 85 м3., вес – 30 тонн. Использовалось 18000 эл. ламп.

Первая машина с хронимой программой – ”Эдсак” – была создана в 1949 г., а в 1951 г. создали машину “

Юнивак” – первый серийный компьютер с хронимой программой. В этой машине впервые была использована магнитная лента для записи и хранения информации

Для чего нужен язык программирования?

Компьютеpы появились очень давно в нашем миpе, но только в последнее вpемя их начали так усиленно использовать во многих отpаслях человеческой жизни. Ещё десять лет назад было редкостью увидеть какой-нибудь персональный компьютер - они были, но были очень дорогие, и даже не каждая фирма могла иметь у себя в офисе компьютер. А теперь? Теперь в каждом третьем доме есть компьютер, который уже глубоко вошёл в жизнь самих обитателей дома.

Сама идея создания искусственного интеллекта появилась давным давно, но только в 20 столетии её начали приводить в исполнение. Сначала появились огромные компьютеры, которые были подчастую размером с огромный дом. Использование таких махин, как вы сами понимаете, было не очень удобно. Но что поделаешь? Но мир не стоял на одном месте эволюционного развития - менялись люди, менялась их Среда обитания, и вместе с ней менялись и сами технологии, всё больше совершенствуясь. И компьютеры становились всё меньше и меньше по своим размерам, пока не достигли сегодняшних размеров.

Но человеку ведь тоже надо как-нибудь общаться с машиной - ведь кому нужна неуправляемая машина? Сначала люди вели своё общение с компьютерам посредством перфокарт. Перфокарты - это небольшие карточки, на которые нанесены ряды цифр. У компьютера имелся “дисковод”, в который вставлялись сами карты и он при помощи маленьких иголочек ставил дырочки на цифрах. Такое общение мало кому доставляло удовольствие - ведь не очень удобно таскать с собой кучи перфокарт, которые после одного использования приходилось выбрасывать.

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

Современные вычислительные машины представляют одно из самых значительных достижений человеческой мысли, влияние которого на развитие научно-технического прогресса трудно переоценить. Области применения ЭВМ непрерывно расширяются. Этому в значительной степени способствует распространение персональных ЭВМ, и особенно микроЭВМ.

За время, прошедшее с 50-х годов, цифровая ЭВМ превратилась из “волшебного”, но при этом дорогого, уникального и перегретого нагромождения электронных ламп, проводов и магнитных сердечников в небольшую по размерам машину – персональный компьютер – состоящий из миллионов крошечных полупроводниковых приборов, которые упакованы в небольшие пластмассовые коробочки.

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

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

Очень широкое распространение получили игры, построенные на основе микропроцессоров. Сегодня игровая индустрия занимает очень большую часть рынка, постепенно вытесняя с него другие развлечения детей. Но для детского организма очень вредно сидеть часами за монитором и отчаянно нажимать на клавиши, так как у ребёнка может развиться своеобразная болезнь - когда у него только одно на уме – компьютер, и больше ничего. Дети с такой болезнью обычно становятся агрессивными, если их начинают ограничивать в доступе к играм. У таких детей сразу пропадает какое-либо желание делать что-то, что не относится к компьютеру и что им не интересно - так они начинают забрасывать свою учёбу, что ведёт к не очень хорошим последствиям.

Уже сейчас компьютеры могут чётко произносить различные фразы, словосочетания, проигрывать музыку и.т.д. Человек теперь может сам записать какие-нибудь слова, предложения и даже музыкальные композиции на своём компьютере для того, чтобы потом компьютер мог их воспроизводить в любое назначенное время.

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

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

Устное общение с компьютерами позволит упростить его программирование, однако остаётся нерешённая проблема, на каком именно языке следует с ним общаться. Многие предлагают для этих целей английский язык, но он не обладает точностью и однозначностью, необходимыми с точки зрения компьютера и исполняемых в нём программ. В этой области уже многое сделано, но ещё много предстоит сделать.

Мы часто жалуемся, что другие люди не понимают нас; но пока и сами персональные компьютеры не способны до конца понять нас, или понять, что мы хотим сказать с полуслова. И в течение какого-то периода времени нам придётся довольствоваться такими машинами, которые просто следуют нашим указаниям, исполняя их “с точностью до миллиметра”.

Для общения с компьютерами, ещё во времена перфокарт, тогдашние программисты использовали язык программирования, очень похожий на современный Ассемблер. Это такой язык, где все команды, поступающие к компьютеру пишутся подробно при помощи специальных слов и значков{?}.

В наше время усиленно используются языки программирования более высокого уровня, работать с которыми намного легче чем с Ассемблером, так как в них одно слово может заменять сразу несколько команд. И притом большинство языков программирования высокого уровня в названиях команд, используемых при общении с компьютером, используют эквиваленты, названные на английском языке, что, естественно, облегчает программирование. Но в них есть один минус по сравнению с языками, подобными Ассемблеру - в Ассемблере все команды, поступаемые из программы чётко распределяются в памяти компьютера, занимая свободные места, тем самым значительно выигрывая в скорости; а языки высокого уровня не умеют этого, соответственно теряя в скорости исполнения программы. А в нашем сегодняшнем мире всем известно, что: “Время - деньги”.

Хотя, пока компьютер уступает человеку с точки зрения творческой деятельности, потому что машина не наделена пока такими качествами, которые смогли бы ей помочь создать что-нибудь новое, что не введено в её память самим человеком.

Боьшинство людей, по-видимому, считают, что термины “вычислительная машина” и “вычислительная техника” синонимами и связывают их с физическим оборудованием, как, например, микропроцессором, дисплеем, дисками, принтерами и другими истройствами, привлекающими внимание людей, когда человек видит компьютер. Хотя эти устройства и важны, всё-таки они составляют только “верхушку айсберга”. На начальном этапе использованаия современного компьютера мы имеем дело не с самим компьютером, а с совокупностью правил, называемых языками программироваания, на которых указываются действия, которые должен выполнять компьютер. Важное значение языка программирования подчёркивается тем фактом, что сама вычислительная машина может рассматриваться как аппаратный интерпретатор какого-нибудь конкретного языка, который называется машинным языком. Для обеспечения эффективной работы машины разработаны машинные языки, использование которых представляет известные трудностидля человека. Большинство пользователей не чувствуют этих неудобств благодаря наличию одного или нескольких языков, созданных для улучшения связи человека с машиной. Гибкость вычислительной машины проявляется в том, что она может исполнять программы-трансляторы (в общем случае онм называются компиляторами или интерпретаторами) для преобразования программ с языков, ориентированных на пользователей, в программы на машинном языке. (В свою очередь даже сами программы, игры, системные оболочки являются ни чем иным, как довольно простая программа-транслятор, которая по мере работы, или игры обращается при помощи своих команд к “компьютерным внутренностям и наружностям”, транслиуя свои команды в машинные языки. И всё это происходит в реальном времени.)

Машинные языки, языки ассемблера и

языки высокого уровня

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

1. Машинные языки

2. Ассемблерные языки

3. Языки высокого уровня.

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

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

Одним из языко высокого уровня является язык программирования С.

История языка С

Язык с берет свое начало от двух языков, BCPL и B. В 1967 году Мартин Ричардс разработал BCPL как язык для написания системного программного обеспечения и компиляторов. В 1970 году Кен Томпсон использовал В для создания ранних версий операционной системы UNIX на компьютере DEC PDP-7. как в BCPL, так и в В переменные не разделялись на типы- каждое значение данных занимало одно слово в памяти и ответственность на различение, например, целых и действительных чисел целиком ложилась на плечи программиста.

Язык С был разработан (на основе В) Деннисом Ричи из Bell Laboratories и впервые был реализован в 1972 году на компьютере DEC PDP-11. Известность С получил в качестве языка ОС UNIX. Сегодня практически все основные операционные системы были написаны на С и/ или С++. По прошествии двух десятилетий С имеется в наличии на большинстве компьютеров. Он не зависит от аппаратной части.

В конце 70-х годов С превратился в то, что мы называем «традиционный С». В 1983 году Американским комитетом национальных стандартов в области компьютеров и обработке информации был учрежден единый стандарт этого языка.

Заключение

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

Список использованной литературы

1. Том Сван “Освоение Turbo Assembler”, Диалектика, Киев, 1996 г.

2. Березин Б.И., Березин С.Б. “Начальный курс программирования”, Диалог МИФИ, Москва, 1996 г.

3. Лекции Комлевой Нины Викторовны по предмету “Языки программирования и методы трансляции”

4.Х.М.Дейтел, Как программировать на С, Издательство Бином, Москва, 2000 г.

Ассе́мблер (asm, assembler); от англ. assemble - собирать, монтировать) - язык программирования низкого уровня, вспомогательная программа в составе операционной системы для автоматического перевода исходной программы, подлежащей выполнению на компьютере, на машинный язык; вид транслятора . Понятия ассемблера отражают архитектуру электронно-вычислительной машины. Ассемблер - символьная форма записи машинного языка, использование которой упрощает написание машинных программ. Для одного и того же компьютера могут быть разработаны разные языки ассемблера. В отличие от языков высокого уровня, в котором проблемы реализации алгоритмов скрыты от разработчиков, язык ассемблера тесно связан с системой команд компьютера. Ассемблер обеспечивает доступ к регистрам, указание методов адресации и описание операций в терминах команд процессора. Он может содержать средства более высокого уровня: встроенные и определяемые макрокоманды, соответствующие нескольким машинным командам, автоматический выбор команды в зависимости от типов операндов, средства описания структур данных.

Особенности ассемблера

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

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

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

Обычно программы или участки кода пишутся на языке ассемблера в случаях, когда разработчику нужно оптимизировать быстродействие (при создании драйверов), размер кода. Большинство компиляторов позволяют комбинировать в одной программе, код написанный на разных языках программирования. Это позволяет писать сложные программы используя высокоуровневый язык, не теряя быстродействия в критических ко времени задачах, используя для них части написанные на языке ассемблера. Комбинирование достигается вставкой фрагментов на языке ассемблера в текст программы (специальными директивами языка) или написанием процедур на языке ассемблера. Этот способ используется для несложных преобразований данных, но он неприменим в полноценном ассемблерном коде с данными и подпрограммами с множеством входов и выходов, не поддерживаемых высокоуровневыми языками.

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

1. Когда и кем были изобретены счетно-перфорационные машины? Какие задачи на них решались?

2. Что такое электромеханическое реле? Когда создавались релейные вычислительные машины? Каким быстродействием они обладали?
3. Где и когда была построена первая ЭВМ? Как она называлась?
4. Какова роль Джона фон Неймана в создании ЭВМ?
5. Кто был конструктором первых отечественных ЭВМ?
6. На какой элементной базе создавались машины первого поколения? Каковы были их основные характеристики?
7. На какой элементной базе создавались машины второго поколения? В чем их преимущества по сравнению с первым поколением ЭВМ?
8. Что такое интегральная схема? Когда были созданы первые ЭВМ на интегральных схемах? Как они назывались?
9. Какие новые области применения ЭВМ возникли с появлением машин третьего поколения?
10. Что такое микропроцессор? Когда и где был создан первый микропроцессор?
11. Что такое микроЭВМ и персональный компьютер?
12. Какие типы ПК наиболее распространены в мире?
13. Что такое суперкомпьютер?
14. Что такое кластерные системы ПК?
15. В чем особенность компьютеров пятого поколения?

Назовите первое вычислительное устройство. Абак Калькулятор Арифмометр русские счеты Какую идею выдвинул в середине

19 века английский математик Чарльз Бэббидж?

Идею создания программно управляемой счетной машины, имеющей арифметическое устройство, устройство управления, а также устройство ввода и печати

Идею создания сотового телефона

Идею создания роботов, управляемых компьютером

В каком году и где была создана первая ЭВМ на основе электронных ламп?

1945 год, США

1944 г, Англия

1946 г, Франция

На какой базе были созданы ЭВМ третьего поколения?

Интегральные схемы

полупроводники

электронные лампы

сверхбольшие интегральные схемы

Как назывался первый персональный компьютер?

Назовите центральное устройство компьютера.

Процессор

Системный блок

Блок питания

Материнская плата

Процессор обрабатывает информацию представленную:

В десятичной системе счисления

На английском языке

На русском языке

На машинном языке (в двоичном коде)

Для ввода числовой и текстовой информации используется

Клавиатура

Сканер используется для…

Для ввода в компьютер изображений и текстовых документов

Для рисования на ней специальной ручкой

Перемещения курсора на экране монитора

Получения голографических изображений

10. Какой тип принтера целесообразно использовать для печати финансовых документов?

Матричный принтер

Струйный принтер

Лазерный принтер

Какой тип принтера целесообразно использовать для печати рефератов?

Матричный принтер

Струйный принтер

Лазерный принтер

Какой тип принтера целесообразно использовать для печати фотографий?

Матричный принтер

Струйный принтер

Лазерный принтер

При несоблюдении санитарно – гигиенических требований компьютера вредное влияние на здоровье человека может оказать…

Монитор на электронно – лучевой трубке

Монитор на жидких кристаллах

Плазменные панели

При выключении компьютера вся информация стирается из…

Оперативной памяти

Жесткого диска

Лазерного диска

В каком устройстве компьютера осуществляется хранение информации?

Внешняя память;

процессор;

Оптические дорожки имеют меньшую толщину и размещены более плотно на …

Цифровом видеодиске (DVD – диске)

Компакт диске (CD – диске)

В устройства ввода входят…

В устройства вывода входят…

Клавиатура, мышь, джойстик, световое перо, сканер, цифровая камера, микрофон

Звуковые колонки, монитор, принтер, наушник

Жесткий диск, процессор, модули памяти, материнская плата, дискета

Программой называется…

Компьютерная программа может управлять работой компьютера, если она находится…

В оперативной памяти

На гибком диске

На жестком диске

На CD – диске

Данные – это…

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

Информация, представленная в цифровой форме и обрабатываемая на компьютере

Данные, имеющие имя и хранящиеся в долговременной памяти

Файл – это…

Текст распечатанный на компьютере

Информация, представленная в цифровой форме и обрабатываемая на компьютере

Программа или данные, имеющие имя и хранящиеся в долговременной памяти

При быстром форматировании гибкого диска …

Производится очистка каталога диска

Стираются все данные

Производится дефрагментация диска

Производится проверка поверхности диска

При полном форматировании гибкого диска…

стираются все данные

производится полная проверка диска

производится очистка каталога диска

диск становится системным

В многоуровневой иерархической файловой системе...

Файлы хранятся в системе, представляющей собой систему вложенных папок

Файлы хранятся в системе, которая представляет собой линейную последовательность

История развития вычислительной техники:

1. Назовите первое вычислительное устройство.
1) Абак
2) Калькулятор
3) Арифмометр
4) русские счеты

2. Какую идею выдвинул в середине 19 века английский математик Чарльз Бэббидж?
1) Идею создания программно управляемой счетной машины, имеющей арифметическое устройство, устройство управления, а также устройство ввода и печати
2) Идею создания сотового телефона
3) Идею создания роботов, управляемых компьютером
3. Назовите первого программиста вычислительных машин.
1) Ада Лавлейс
2) Сергей Лебедев
3) Билл Гейтс
4) Софья Ковалевская

4. В каком году и где была создана первая ЭВМ на основе электронных ламп?
1) 1945 год, США
2) 1950, СССР
3) 1944 г, Англия
4) 1946 г, Франция

5. На какой базе были созданы ЭВМ третьего поколения?
1) Интегральные схемы
2) полупроводники
3) электронные лампы
4) сверхбольшие интегральные схемы

6. Как назывался первый персональный компьютер?
1) Apple II
2) IBM PC
3) Dell
4) Корвет
Устройство компьютера.........................15
1. Назовите центральное устройство компьютера.
1) Процессор
2) Системный блок
3) Блок питания
4) Материнская плата
2. Как записывается и передается физическая информации в ЭВМ?
1) цифрами;
2) с помощью программ;
3) представляется в форме электрических сигналов.

3. Процессор обрабатывает информацию представленную:
1) В десятичной системе счисления
2) На английском языке
3) На русском языке
4) На машинном языке (в двоичном коде)
4. Для ввода числовой и текстовой информации используется
1) Клавиатура
2) Мышь
3) Трекбол
4) Ручка
5. Важнейшей характеристикой координатных устройств ввода является разрешающая способность, которая обычно составляет 500 dpi (dot per inch – точек на дюйм (1 дюйм = 2,54 см)), что означает…
1) При перемещении мыши на один дюйм указатель мыши перемещается на 500 точек
2) При перемещении мыши на 500 точек указатель мыши перемещается на один дюйм
6. Сканер используется для…
1) Для ввода в компьютер изображений и текстовых документов
2) Для рисования на ней специальной ручкой
3) Перемещения курсора на экране монитора
4) Получения голографических изображений
Устройства вывода информации.................21
1. Какой тип принтера целесообразно использовать для печати финансовых документов?
1) Матричный принтер
2) Струйный принтер
3) Лазерный принтер
2. Какой тип принтера целесообразно использовать для печати рефератов?
1) Матричный принтер
2) Струйный принтер
3) Лазерный принтер

1. Какой тип принтера целесообразно использовать для печати фотографий?
1) Матричный принтер
2) Струйный принтер
3) Лазерный принтер
2. При несоблюдении санитарно – гигиенических требований компьютера вредное влияние на здоровье человека может оказать…
1) Монитор на электронно – лучевой трубке
2) Монитор на жидких кристаллах
4) Плазменные панели
3. Устройство, которое обеспечивает запись и считывание информации называется…
1) Дисководом или накопителем

4. При выключении компьютера вся информация стирается из…
4) Оперативной памяти
5) Жесткого диска
6) Лазерного диска
7) Дискеты
13. В каком устройстве компьютера осуществляется хранение информации?
1) Внешняя память;
2) монитор;
3) процессор;
2. Оптические дорожки имеют меньшую толщину и размещены более плотно на …
1) Цифровом видеодиске (DVD – диске)
2) Компакт диске (CD – диске)
3) Дискете
3. На каком диске информация хранится на концентрических дорожках, на которых чередуются намагниченные и ненамагниченные участки
1) На дискете
2) На компакт диске
3) На DVD – диске

4. В устройства ввода входят…

1) Жесткий диск, процессор, модули памяти, материнская плата, дискета
5. В устройства вывода входят…
1) Клавиатура, мышь, джойстик, световое перо, сканер, цифровая камера, микрофон
2) Звуковые колонки, монитор, принтер, наушник
3) Жесткий диск, процессор, модули памяти, материнская плата, дискета
6. Программой называется…

7. Компьютерная программа может управлять работой компьютера, если она находится…
1) В оперативной памяти
2) На гибком диске
3) На жестком диске
4) На CD – диске
8. Данные – это…
1) Последовательность команд, которую выполняет компьютер в процессе обработки данных
2) Информация, представленная в цифровой форме и обрабатываемая на компьютере
3) Данные, имеющие имя и хранящиеся в долговременной памяти
9. Файл – это…
1) Текст распечатанный на компьютере
2) Информация, представленная в цифровой форме и обрабатываемая на компьютере
3) Программа или данные, имеющие имя и хранящиеся в долговременной памяти

10. При быстром форматировании гибкого диска …
1) Производится очистка каталога диска
2) Стираются все данные
3) Производится дефрагментация диска
4) Производится проверка по

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

язык программирование ассемблер

Введение

Язык программирования ассемблер

История языка

Программирование на языке ассемблер

Преимущества и недостатки языка

Turbo Assembler (TASM)

Система прерывания программ

Механизм прерывания

Работа механизма прерывания

Заключение

Список литературы

Приложение

Введение

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

Несмотря на то, что в настоящее время программист может использовать большое количество языков программирования, которые гораздо проще Ассемблера, знание Ассемблера и умение программировать на нем никогда не будут лишними. Этот факт подтверждается следующими доводами:

1. На других языках программирования не всегда возможно написать приложение, которое полно бы удовлетворяло требованиям. А в некоторых случаях полностью невозможно. На языке программирования Ассемблер можно написать любое приложение.

2. Иногда языки программирования высокого уровня не могут обеспечить требуемое быстродействие. А приложение созданное на Ассемблере всегда быстродействующее.

3. Размер приложений созданных на языках высокого уровня имею гораздо больший размер, чем приложения созданные на Ассемблере.

4. Язык Ассемблер позволяет работать непосредственно с аппаратными средствами, что в некоторых случаях дает программисту преимущество и требуемый результат. Приложение на языке высокого уровня работает с аппаратными устройствами через написанные модули, т. е. не позволит программисту что-либо изменить, а, следовательно, получить требуемый результат.

5. Знание языка Ассемблер дает большее преимущество перед теми, кто программирует только на языках высокого уровня. Знающий Ассемблер знает и структуру компьютера, и структуру аппаратных устройств.

Цель работы:

описать язык программирования Ассемблер;

выявить преимущества и недостатки языка;

описать Turbo Assembler;

ознакомиться с механизмом прерывания.

Язык программирования ассемблер

История ассемблера

Программисты уже были знакомы с понятием подпрограммы: Грейс Хоппер и ее коллеги применяли подпрограммы на гарвардском «Марке-1» во время второй мировой войны, однако каждая подпрограмма решала свою специфическую задачу.

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

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

Морис Уилкс назвал мнемоническую схему для «Эдсака» и библиотеку подпрограмм собирающей системой (по-английски assembly system - отсюда слово «ассемблер»), поскольку она собирала последовательности подпрограмм.

Ассеммблер (от англ. assembler - сборщик) - компьютерная программа, компилятор исходного текста программы, написанной на языке ассемблера, в программу на машинном языке.

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

Использование термина «язык ассемблера» может вызвать ошибочное мнение о существовании единого языка низкого уровня или хотя бы стандарта на такие языки, что абсолютно не соответствует истине. Поэтому при именовании языка, на котором написана конкретная программа, желательно уточнять, для какой архитектуры она предназначена и на каком диалекте языка написана.

Программирование на языке ассемблер

Ассемблер - язык программирования низкого уровня, представляющий собой формат записи машинных команд, удобный для восприятия человеком.

Команды языка ассемблера один в один соответствуют командам процессора и, фактически, представляют собой удобную символьную форму записи команд и их аргументов. Также язык ассемблера обеспечивает базовые программные абстракции: связывание частей программы и данных через метки с символьными именами и директивы.

Директивы ассемблера позволяют включать в программу блоки данных (описанные явно или считанные из файла) ; повторить определённый фрагмент указанное число раз; компилировать фрагмент по условию; задавать адрес исполнения фрагмента, менять значения меток в процессе компиляции; использовать макроопределения с параметрами и др.

Каждая модель процессора, в принципе, имеет свой набор команд и соответствующий ему язык (или диалект) ассемблера.

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

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

Ясно, что эффективность и точность языка Ассемблера дают определенные преимущества. Но его детализированность создает и некоторые проблемы. Когда же стоит выбирать для программирования язык Ассемблера?

Конечно, вы должны пользоваться программами на языке Ассемблера, когда нет другого способа написать программу. Например, программисты фирмы IBM писали с использованием процедур Ассемблера все программы управления устройствами ввода-вывода для IBM PC. Для управления устройствами ввода-вывода и системой прерываний, потребовалась та точность языка Ассемблера, которую не может обеспечить ни один другой язык программирования. Аналогично, на языке Ассемблера в фирме IBM писались процедуры диагностики, которые должны проверять каждую деталь аппаратуры.

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

Какая программа не подходит для языка Ассемблера? Конечно, вы можете написать на нем любую программу, однако с большой программой лучше работать в языке высокого уровня, таком как C или C#. Эти языки позволяют вам сосредоточиться на своей проблеме. Вам не приходится непосредственно иметь дело с тонкостями аппаратного оборудования и процессора. Языки высокого уровня позволяют вам отступить назад и за деревьями увидеть лес.

При программировании на языке Ассемблера и только через написание программ на этом уровне детализации вы можете понять, как работает машина на самом нижнем уровне. Если вы хотите узнать о компьютере все, вы должны быть знакомы с языком ассемблера. Единственный способ добиться этого: писать программы на этом языке.

Самыми популярными на сегодняшний день являются пакеты Turbo Assembler (TASM) фирмы Borland, Macro Assembler for Windows32 (MASM32), созданный Hutch (на основе старого MASM фирмы Microsoft), а также Flat Assembler (FASM), и Netwide Assembler (NASM), развиваемый командой NASM Development Team. Все эти ассемблеры предоставляют весьма широкие возможности для программиста. На них можно писать программы как под DOS, так и под Windows.

Существует также множество других видов ассемблера, число которых растет. Например: CodeX Assembler, Gema Assembler, Light Macro Assembler (LASM), Lazy Assembler (LZASM), Table Driven Assembler (TDASM), NewBasic++ Assembler (NBASM), TMA Macro Assembler и др.

Преимущества и недостатки языка

Достоинства

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

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

При программировании на ассемблере возможен непосредственный доступ к аппаратуре, в том числе портам ввода-вывода, регистрам процессора, и др.

Язык ассемблера применяется для создания драйверов оборудования и ядра операционной системы

Язык ассемблера используется для создания «прошивок» BIOS.

С помощью языка ассемблера создаются компиляторы и интерпретаторы языков высокого уровня, а также реализуется совместимость платформ.

Существует возможность исследования других программ с отсутствующим исходным кодом с помощью дизассемблера.

Недостатки

Главное преимущество ассемблера практически полностью нивелируется хорошей оптимизацией в современных компиляторах языков высокого уровня.

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

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

Отсутствует переносимость программ на компьютеры с другой архитектурой и системой команд (кроме двоично-совместимых).

Turbo Assembler (TASM )

Турбо Ассемблер фирмы Borland представляет собой многопроходный ассемблер с разрешением опережающих ссылок, скоростью ассемблирования до 48000 строк в минуту (на компьютере IBM PS/2, модель 60), совместимый с макроассемблером фирмы Microsoft MASM и дополнительной возможностью использования режима расширенного синтаксиса. Независимо от вашего опыта в программировании вы, несомненно, оцените эти особенности, а также ряд других средств, которые значительно облегчают программирование на Ассемблере.

Среди таких средств можно кратко упомянуть следующие:

полная поддержка процессора 80386;

улучшенная синтаксическая проверка типов;

упрощенные директивы определения сегментов;

улучшенное управление листингом;

расширения инструкций POP и PUSH;

расширенный оператор CALL с аргументами и необязательным параметром языка;

локальные метки;

локальные идентификаторы в стеке и аргументы вызова в процедурах;

структуры и объединения;

вложенные директивы;

режим QUIRK, эмулирующий MASM;

полная отладка на уровне исходного текста с помощью Турбо отладчика;

встроенная утилита генерации перекрестных ссылок (TCREF) ;

файлы конфигурации и командные файлы.

Турбо Ассемблер является мощным Ассемблером, работающим с командной строкой, который воспринимает ваши исходные файлы (файлы с расширением *. asm*) и создает из них объектные модули (файлы с расширением *. obj*). После этого вы можете использовать программу-компоновщик фирмы Borland TLINK. EXE, отличающуюся высокой скоростью компоновки, для компоновки полученных объектных модулей и создания выполняемых файлов (файлов с расширением *. exe*).

Турбо Ассемблер создан для работы с процессорами серии 80х86 и 80х87 (более подробно набор инструкций процессоров серии 80х86/80х87 описан в соответствующих руководствах фирмы Intel).

Turbo Assembler, помимо полной поддержки транслятора фирмы Microsoft имеет дополнительные возможности, объединённые в режиме, названном разработчиками Ideal. Использование этого режима даёт возможность начинающему программисту применять более наглядный и простой стиль разработки программ. Более опытные программисты, пишущие на ассемблере, могут использовать такие возможности режима Ideal, как вложенные структуры, объединения.

Важной особенностью режима Ideal является применение проверки типов данных, подобно языкам высокого уровня, что позволяет выявить многие ошибки ещё на этапе трансляции. Среди многих других важных преимуществ режима Ideal можно выделить следующие:

Возможность использования одинаковых имён для обозначения членов различных структур;

Применение операторов HIGH и LOW;

Предварительное вычисление выражений EQU;

Корректное управление сегментами данных объединённых в группы;

Усовершенствованное использования директив;

Разумное использование скобок в выражениях.

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

Традиционным способом, с помощью которого объединяются программы, написанные на С++ и Ассемблере, является разделительная компиляция с последующей компоновкой в один исполняемый файл. При этом можно использовать компилятор Borland C++, который вызывает Turbo Assembler для трансляции ассемблерной программы.

Разработка программы на языке Turbo Assembler включает четыре этапа:

1-й этап. Подготовка исходного текста программы и оформление его в виде текстового файла (одного или нескольких) с помощью какого-нибудь редактора в формате DOS с расширением *. asm*.

2-й этап. Ассемблирование программы с применением транслятора Tasm, результатом которого является объектный файл с расширением *. obj*. Когда программа состоит из нескольких файлов (модулей), то их ассемблирование производится независимо друг от друга. Если в процессе трансляции будут обнаружены ошибки, то объектный файл не создаётся, а формируется сообщение об ошибках. Ошибки устраняются, после чего трансляция повторяется. Объектный файл (двоично-кодированное представление программы) не может быть запущен на исполнение, так как в нём не содержится информация о загрузке сегментов программы в памяти компьютера.

3-й этап. Компоновка программы производится компоновщиком (редактором связей) Turbo Linker и заключается в объединении объектных модулей в один исполняемый файл с назначением стартового адреса программы. Исполняемый файл имеет расширение *. exe*. 2-й и 3-й этапы определяют процесс подготовки исполнительного файла программы, называемого трансляцией.

4-й этап состоит в отладке программы с использованием отладчика Turbo Debugger, который будет являться основным инструментом при изучении форматов команд, их кодирования, а также представления переменных программы в памяти.

Система прерывания программ

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

Способность к прерыванию разрешает, казалось бы, сложнейшую проблему эффективности работы нашего компьютера. С одной стороны, мы хотим, чтобы компьютер занимался той работой, которую мы ему дали. С другой стороны, нам нужно, чтобы он реагировал на любую нашу команду, подаваемую, например, с помощью клавиатуры. Если бы компьютер был способен только на то, чтобы не отвлекаясь выполнять то, что ему заранее было задано, он бы не смог ответить на наши запросы своевременно, не следя постоянно за деятельностью клавиатуры. Реагировать на сигналы, посылаемые клавиатурой, равно как и на другие сигналы, требующие внимания в то время, когда компьютер занят другой работой, позволяет ему система прерываний.

Микропроцессор нашего ПК имеет “ врожденную” способность прерывать выполнение операций, при этом у него существует надежное средство откладывать на хранение работу, выполнение которой было прервано. Для этого используется стек микропроцессора. Когда происходит прерывание, запись того, что делал компьютер в этот момент, хранится в стеке, так что по завершении прерывания мы можем вернуться к тому месту, от которого нам пришлось отвлечься. Это один из нескольких способов применения стека, но он является самым важным. Без стека, куда мы можем положить на хранение информацию о выполняемой работе, не могла бы реализоваться сама идея прерывания.

Механизм прерывания

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

Программное прерывание - синхронное прерывание, которое может осуществить программа с помощью специальной инструкции.

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

Кажется очевидным, что возможны самые разнообразные прерывания по самым различным причинам. Поэтому прерывание рассматривается не просто как таковое: с ним связывают число, называемое номером типа прерывания или просто номером прерывания. С каждым номером прерывания связывается то или иное событие. Система умеет распознавать, какое прерывание, с каким номером оно произошло, и запускает соответствующую этому номеру процедуру.

Программы могут сами вызывать прерывания с заданным номером. Для этого они используют команду INT. Это так называемые программные прерывания. Программные прерывания не являются асинхронными, так как вызываются из программы.

В процессорах архитектуры x86 для явного вызова синхронного прерывания имеется инструкция Int, аргументом которой является номер прерывания (от 0 до 255). ВIBM PC-совместимых компьютерах обработку некоторых прерываний осуществляют подпрограммы BIOS, хранящиеся в ПЗУ, и это служит интерфейсом для доступа к сервису, предоставляемому BIOS. Также, обслуживание прерываний могут взять на себя BIOS карт расширений (например, сетевых или видеокарт), операционная система и даже обычные (прикладные) программы, которые постоянно находятся в памяти во время работы других программ (т. н. резидентные программы). В отличие от реального режима, в защищённом режиме x86-процессоров обычные программы не могут обслуживать прерывания, эта функция доступна только системному коду (операционной системе).

MS-DOS использует для взаимодействия со своими модулями и прикладными программами прерывания с номерами от 20h до 3Fh (числа даны в шестнадцатеричной системе счисления, как это принято при программировании на языке ассемблера x86). Например, доступ к основному множеству функций MS-DOS осуществляется исполнением инструкции Int 21h (при этом номер функции и её аргументы передаются в регистрах). Это распределение номеров прерываний не закреплено аппаратно и другие программы могут устанавливать свои обработчики прерываний вместо или поверх уже имеющихся обработчиков, установленных MS-DOS или другими программами, что, как правило, используется для изменения функциональности или расширения списка системных функций. Также, этой возможностью пользуются вирусы.

Работа механизма прерывания

Каждое определённое прерывание идентифицируется своим номером. Например, таймер и клавиатура и принтер имеют каждый свой собственный номер прерывания. Что касается базовой системы ввода/вывода, то её сервисные программы подразделяются на группы, причём за всеми программами группы закрепляется один номер прерывания.

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

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

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

Для примера рассмотрим программу, которая представляет собой исполняемый *. exe файл, после запуска которого на экране периодически появляется государственный флаг России. Период появлений примерно 1 раз в 2 секунды (см. Приложение). Данная программа имеет следующий алгоритм работы (рис. 1) :

Размещено на http://www.allbest.ru/

Рис. 1. Алгоритм работы программы.

Программное обращение к видеодрайверу BIOS реализуется с помощью прерывания INT 10h. При работе в текстовом режиме обычно используются следующие функции драйвера:

02h - установить позицию курсора;

03h - получить позицию курсора;

05h - установить видеостраницу;

06h - инициализировать или прокрутить вверх окно;

07h - инициализировать или прокрутить вниз окно;

09h - вывести символ и атрибут в позицию курсора;

0Ah - вывести символ в позицию курсора;

0Eh - вывести символ в режиме телетайпа;

10h, подфункция 3h - переключить бит мерцание/яркость;

13h - вывести строку в режиме телетайпа.

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

Функции 09h, 0Ah, 0Eh и 13h служат для вывода на экран отдельных символов и символьных строк (в цикле). Предусмотрен вывод одного и того же символа заданное число раз, что можно использовать при создании рамок и других орнаментов.

Функция 0Eh реагирует на управляющие коды, выполняя соответствующие действия. Курсор перемещается после вывода каждого символа.

Функция 13h предназначена для вывода строк с указанием атрибутов как каждого символа в отдельности, так и всей строки. Функция может выполняться в четырех вариантах в зависимости от кода режима, указываемого в регистре AL.

При выводе на экран средствами драйвера BIOS необходимо иметь в виду, что ввод с клавиатуры Ctrl/C не приводит к завершению программы. Следует опасаться бесконечных циклов вывода на экран - выход из них возможен только путем перезагрузки компьютера.

Сигналы внешних аппаратных прерываний (от таймера, клавиатуры, дисков и проч.) поступают в процессор не непосредственно, а через контроллер прерываний, в качестве которого используется микросхема Intel 8259A. Обработка аппаратного прерывания обязательно включает в себя процедуры управления контроллером прерываний. Организация системы аппаратных прерываний заключается в том, что к восьми входным выводам контроллера подключаются выводы устройств, на которых возникают сигналы прерываний. Выход INT контроллера подключается к одноименному входу микропроцессора. При этом, кроме сигнала INT, инициирующего процедуру прерывания в микропроцессоре, контроллер передает в микропроцессор по линиям данных номер вектора, через который должна быть вызвана программа обработки поступившего прерывания. Передаваемый номер вектора образуется в контроллере путем сложения базового номера, записанного в одном из его регистров, с номером входной линии, по которой поступил запрос. Номер базового вектора заносится в контроллер автоматически в процессе начальной загрузки компьютера. Контроллер программируется через порты 20h и 21h. Поскольку базовый вектор всегда равен 8, то номера векторов, закрепленных за аппаратными прерываниями, лежат в диапазоне 8h,..., Fh.

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

Прерывания это готовые процедуры, которые компьютер вызывает для выполнения определенной задачи. Существуют аппаратные и программные прерывания. Аппаратные прерывания инициируются аппаратурой, либо с системной платы, либо с карты расширения. Они могут быть вызваны сигналом микросхемы таймера, сигналом от принтера, нажатием клавиши на клавиатуре и множеством других причин. Аппаратные прерывания не координируются с работой программного обеспечения. Когда вызывается прерывание, то процессор оставляет свою работу, выполняет прерывание, а затем возвращается на прежнее место. Для того чтобы иметь возможность вернуться точно в нужное, место программы, адрес этого места (CS: IP) запоминается на стеке, вместе с регистром флагов. Затем в CS: IP загружается адрес программы обработки прерывания и ей передается управление. Программы обработки прерываний иногда называют драйверами прерываний. Они всегда завершаются инструкцией IRET (возврат из прерывания), которая завершает процесс, начатый прерыванием, возвращая старые значения CS: IP и регистра флагов, тем самым, давая программе возможность продолжить выполнение из того же состояния. Все IBM PC используют микросхему таймера 8253 (или 8254) для согласования импульсов от микросхемы системных часов. Число циклов системных часов преобразуется в один импульс, а последовательность этих импульсов подсчитывается для определения времени, или они могут быть посланы на громкоговоритель компьютера для генерации звука определенной частоты. Микросхема 8253 имеет три идентичных независимых канала, каждый из которых может программироваться. Микросхема 8253 работает независимо от процессора. Процессор программирует микросхему и затем обращается к другим делам. Таким образом 8253 действует как часы реального времени - она считает свои импульсы независимо от того, что происходит в компьютере. Однако, максимальный программируемый интервал составляет приблизительно 1/12 секунды. Для подсчета интервалов времени в часы и минуты нужны какие-то другие средства. Именно по этой причине импульсы от нулевого канала микросхемы таймера накапливаются в переменной, находящейся в области данных BIOS. Это накопление обычно называется подсчетом времени суток. 18. 2 раза в секунду выход канала 0 обрабатывается аппаратным прерыванием (прерыванием таймера), которое ненадолго останавливает процессор и увеличивает счетчик времени суток.

Число 0 соответствует полночи 12: 00; когда счетчик достигает значения эквивалентного 24 часам, он сбрасывается на ноль. Другое время в течение суток легко определяется делением показателя счетчика на 18. 2 для каждой секунды. Счетчик времени суток используется в большинстве операций, связанных со временем.

Заключение

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

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

Список литературы

Касвандс Э. Г. Введение в программирование на языке Ассемблер. ч. 1 - М. : ЮНИТИ - ДАНА, 2006.

Юров В. Assembler. Специальный справочник. - СПб. : Питер, 2007.

Что такое ассемблер. [Электронный ресурс]. - Режим доступа: http://www.assembler.webservis.ru

Ваулин А. С. Языки программирования. кн. 5 - М. : Школа-Пресс, 2008.

Малютин Э. А. Языки программирования. - М. : Просвещение, 2008.

Абель П. Язык Ассемблера для IBM PC и программирования /Пер. с англ. Ю. В. Сальникова - М. ; Высшая школа 2007 - 447 с. : ил.

Программируем на ассемблере. [Электронный ресурс]. - Режим доступа: http://www.kalashnikoff.ru

Зубков С. В. Assembler для DOS, Windows и Unix. - М. : ИНФРА-М, 2009.

Богумирский Б. Эффективная работа на IBM PC в среде Windows 95 СПб, «Питер», 2007.

Юров В., Хорошенко В. Assembler - Учебный курс. - СПб. : Питер, 2007.

Приложение

Код программы

; mov AX, data; инициализация

mov DS, AX; сегментного регистра DS

; Прочитаем и сохраним исходное содержимое вектора 8

mov word ptr old_08h, BX

mov word ptr old_08h+2, ES

; Установим наш обработчик прерываний new_08h

mov DX, offset new_08h

push DS; Сохраним на время DS

push CS; Отправим содержимое CS

int 21h; Вызов DOS (функции 25h)

pop DS; Восстановим DS

; Сымитируем действия, выполняемые в течение 3 с, просто зациклив программу

; Вторая ветвь программы, активизируемая по истечении 3 с

; белая полоса

; синяя полоса

; красная полоса

mov CS: time, 20

; Прикладной обработчик прерываний от таймера,

; активизируемый 18, 2 раза в секунду

push AX; Сохраним два используемых

push BP; в обработчике регистра

dec CS: time; Декремент интервала времени

jnz outint; Пока не 0, выйти из прерывания

; Содержимое ячейки time уменьшилось до 0, выполнить переключение программы

mov BP, SP; ВР=текущая вершина стека

mov AX, offset fin; Смещение точки перехода

mov , AX; /Отправим его в стек на место IP

mov AX, seg fin; /Сегмент точки перехода

mov , AX; /Отправим его в стек на место CS

outint: mov AL, 20h; /Команда EOI в контроллер

out 20h, AL; /прерываний

MOV AX, 0600h ; AH=06 (прокрутка), AL=00 (весь экран)

MOV BH, 07 ; нормальный атрибут

MOV CX, 0000 ; верхняя левая позиция

MOV DX, 184Fh ; нижняя правая позиция

INT 10h ; передача управления в BIOS

MOV AH, 02 ; номер функции

MOV BH, 00 ; номер страницы

MOV DH, 00 ; номер строки

MOV DL, 00; номер столбца

INT 10h ; устанавливаем курсор

pop BP; /Восстановим оба

pop AX; /сохраненных регистра

iret; /Выход из прерывания

time dw 20; /Ячейка для отсчета времени

; /Поля данных

old_08h dd 0; /Ячейка для хранения исходного вектора

Размещено на Allbest.ru

...

Подобные документы

    Эволюция языков программирования от низкого уровня до современности. Языки программирования второго поколения - ассемблер. Императивные, функциональные, логические и объектно-ориентированные языки. Машинная независимость. Парадигмы программирования.

    презентация , добавлен 14.10.2013

    Изучение некоторых аспектов языка Ассемблера и ЭВМ в целом. Построение алгоритмов решения поставленной задачи на языках программирования Си, Ассемблер УМ и IBM PC. Составление блок-схем решений и написание программ на каждом из перечисленных языков.

    курсовая работа , добавлен 20.10.2014

    Изучение языка низкого уровня ассемблер для написания примера программы для 16 битного приложения. Разработка и реализация алгоритма поднесения чисел к степени чисел над полем за основанием 2 (mod 2). Иллюстрация техники создания DOS приложения.

    курсовая работа , добавлен 08.11.2011

    Машинные коды и ассемблер. Первые языки программирования высокого уровня. Язык программирования FORTRAN. Достоинства и недостатки ALGOL. Научные и бухгалтерские программы. Основные принципы, которые соблюдались при создании языка программирования Basic.

    курсовая работа , добавлен 21.06.2014

    Язык программирования как формальная знаковая система, предназначенная для записи программ. Рефал как алгоритмический язык рекурсивных функций. Лисп как ассемблер, ориентированный на работу со списковыми структурами. Пролог: понятие, основные средства.

    презентация , добавлен 22.02.2014

    Особенности ассемблера - машинно-ориентированного языка низкого уровня, применяемого для создания простых приложений. Связывание программ на разных языках. Типичный формат записи команд, инструкции и директивы языка ассемблера. Разработка игры "Змейка".

    курсовая работа , добавлен 20.07.2014

    Характеристика языков программирования: краткая история, хронология. Основные виды языков программирования: ассемблер; бейсик. Создание и использование формул в Excel. Применение операторов в формулах. Использование функций в Excel. Сайт дома отдыха.

    отчет по практике , добавлен 03.06.2011

    Ввод и вывод чисел при помощи подключаемого модуля IO. Особенности работы с одномерными и двухмерными массивами. Тестирование состояние флагов. Рринципы и навыки работы с компилятором и отладчиком. Разработка схемы алгоритма программы на языке ассемблер.

    курсовая работа , добавлен 02.12.2009

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

    презентация , добавлен 22.04.2014

    Ассемблер как символический аналог машинного языка. Архитектура микропроцессора: организация памяти, способы адресации операндов, правила использования регистров. Текст программы. Этапы программирования на ассемблере, алгоритмы выполнения задач.