Раздел 2 Основы программирования на ассемблере
Раздел 2 Основы программирования на ассемблере Тема 2. 1 Основы автоматизации вычислительного процесса 1. Понятие и структура машинной команды 2. Синтаксис команд Ассемблера. 3. Способы задания операндов 4. Псевдооператоры или директивы 5. Загрузка и выполнение программ на компьютере Ранее были даны определения алгоритма и программы (см. лекция 1). Алгоритм может быть записан в разных формах: словесной, формульной, табличной, графической или на языке программирования. Не останавливаясь на особенностях форм записи алгоритма, отметим, что языки, представляющие алгоритм в виде последовательности читаемых программистом (не двоично-кодированных) команд, называются алгоритмическими языками. Алгоритмические языки подразделяются на машинно-ориентированные, процедурно-ориентированные, объектно-ориентированные и проблемно-ориентированные. Машинно-ориентированные языки (их еще называют ассемблеры) относятся к языкам программирования низкого уровня - программирование на них наиболее трудоемко, но позволяет создавать оптимальные программы, учитывающие функционально-структурные особенности конкретного компьютера. Программы на этих языках, при прочих равных условиях, будут более короткими (для ЭВМ) и более быстрыми. Кроме того, знание основ программирования на машинно-ориентированном языке позволяет специалисту подробно разобраться с архитектурой компьютера. Отличительной особенностью таких языков является генерация транслятором в большинстве случаев одной машинной команды на один оператор языка. Все остальные языки программирования относятся к языкам высокого уровня и основаны на макрокомандах. Макрокоманда при трансляции генерирует много машинных команд, как правило, более десяти, а в некоторых случаях и несколько сотен команд. Этим обстоятельством объясняется большие объемы машинных кодов программ при малой длине исходных текстов.
Все языки программирования, и языки машинно-ориентированные, и языки высокого уровня, для их восприятия компьютером требуют наличия программ перевода - трансляторов на машинный язык. Трансляторы бывают двух видов: трансляторы-компиляторы и трансляторы-интерпретаторы. Компиляторы при трансляции переводят на машинный язык сразу всю программу и затем хранят ее в памяти машины в двоичных кодах. Интерпретаторы каждый раз при исполнении программы заново переводят в машинные коды каждую макрокоманду и передают ее для непосредственного выполнения компьютеру. В памяти интерпретируемые программы хранятся в виде исходных макрокоманд и потому в любой момент читаемы человеком. Откомпилированные программы в памяти ЭВМ практически человеком не читаемы. Но их можно вызвать в специальную программу-отладчик (DEBUG и его разновидности), который переведет эту программу на язык Ассемблера и, тем самым, сделает ее " человекочитаемой" (это еще один довод в пользу изучения языка ассемблер). Алгоритм решения задачи, заданный в виде последовательности команд на языке вычислительной машины (в кодах машины) называется машинной программой. Команда машинной программы (далее команда) - это элементарная инструкция машине, выполняемая ею автоматически без каких-либо дополнительных указаний или пояснений. Машинная команда состоит из двух частей: операционной и адресной.
Рисунок 1. Функциональные части машинной команды Операционная часть команды (КОП - код операции) - это группа разрядов в команде, предназначенная для записи аббревиатуры выполняемого действия.
Адресная часть команды (адреса) - это группа разрядов в команде, в которых записываются чаще всего идентификаторы данных или имена регистров Ml 111, хранящих информацию, или метки машинных команд. Часто эту часть называют адресами операндов, т. е. чисел, участвующих в операции. По количеству записываемых адресов (обозначаются а1, а2, а3,... ) команды делят на безадресные, одно-, двух- и трехадресные. В трехадресной команде (рис. 2) а1 и а2 - адреса первого и второго чисел, участвующих в операции, а3 - адрес ячейки памяти или регистра, куда следует поместить результат выполнения операции.
Рисунок 2. Типовая структура трехадресной команды Двухадресная команда имеет структуру, представленную на рисунке 3. В таких командах, как правило, al — адрес ячейки или регистра, где расположено первое число, и куда после завершения операции должен быть записан результат выполнения команды (обратите внимание: при этом " старое" значение первого числа изменяется). Второе участвующее в операции число хранится в а2.
Рисунок 3. Типовая структура двухадресной команды В одноадресной команде (рис. 4) единственный адрес al может обозначать либо адрес ячейки памяти или регистра, где хранится участвующее в операции число, либо адрес ячейки памяти или регистра, куда следует поместить результат операции.
Рисунок 4. Типовая структура одноадресной команды Безадресная команда содержит только код операции, а информация для нее должна быть заранее, до появления этой команды в программе, помещена другими командами в определенные регистры Ml ill (безадресные команды могут использоваться только совместно с командами другой адресности). В изучаемом нами Ассемблере применяются двух, одно и безадресные команды. Итак, команды представляют краткую нотацию (запись) системы команд.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|