Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

ВАЖНО!!! Все пиццы подаются на горячих тарелках (приблизительно 80 оС) !!! Это делается для того, чтобы на столе у гостей пицца как можно дольше сохраняла температуру. 7 страница

Разница между командами CMP и SUB заключается в том, что при выполнении команды CMP результат операции не фиксируется в А. Его содержимое остается неизменным.

Разновидностью команды CMP является команда CPI (ComPare Immediate). По этой команде содержимое А сравнивается с числом, следующим непосредственно за кодом операции.

 

Команда RLC

По команде RLC (Rotate Left in Carry) содержимое А циклически сдвигается влево на один разряд. Другими словами, все разряды перемещаются влево на одну позицию. При этом восьмой бит перемещаются в разряд признака переноса и в разряд b0..

 

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

 

Команда RAL

Команда RAL (Rotate Accumulator Left) используется для циклического сдвига влево содержимого А на один разряд. Восьмой разряд (b7) перемещается в разряд переноса.

 

Команда RRC и RAR

По команде RRC (Rotate accumulator Right in Carry) содержимое А циклически сдвигается на один разряд вправо. Содержимое разряда b0 поступает в разряд переноса и в разряд b7 А.

 

По команде RAR (Rotate Accumulator Right through carry) содержимое А циклически сдвигается вправо на один разряд. Значение разряда b0 поступает в разряд переноса. Прежнее содержимое разряда переноса поступает в разряд b7.

 

 

Команды передачи управления

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

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

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

Эти команды определяют, какое состояние разряда регистра признаков отвечает этому условию (0 или1).

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

Команда условной передачи управления имеет модификации по следующим признакам регистра признаков: ЗНАК, НУЛЬ, ПАРИТЕТ, ПЕРЕНОС.

 

Команда JC

Команда JC (Jump on Carry) осуществляется переход по программе только в том случае, когда в результате выполнения предыдущей операции имеет место переполнение; если признак переноса установлен в 1.

 

Команда JNC

По команде JNC (Jump No Carry) выполняется переход только в том случае, если содержимое разряда переноса регистра признаков равно 0.

 

Команды JZ, JNZ

Команды JZ (Jump on Zero) – команда условного перехода, которая выполняется только в том случае, когда результат выполнения предыдущей операции нулевой, то есть если признак НУЛЬ в регистре признаков имеет значение 1.

Команда JNZ (Jump on No Zero) выполняется только при ненулевом результате, то есть если признак НУЛЬ регистра признаков имеет значение 0.

 

Команда JM, JP

Команда JM (Jump on Minus) выполняется только в том случае, когда результат выполнения предыдущей операции является отрицательным числом, т.е. если содержимое разряда ЗНАК регистра признаков равно 1.

Команда ОЗ (Jump on Positive) выполняется только в том случае, когда результат выполнения предыдущей операции является положительным числом, т.е. если содержимое разряда ЗНАК регистра признаков равно 0.

 

Команда JPE

Команда JPE (Jump on Parity Even) выполняется только в том случае, когда двоичный код результата предыдущей операции содержит четное число единиц.

 

Команда JPO

Команда JPO (Jump on parity Odd) выполняется только в том случае, когда двоичный код результата предыдущей операции содержит нечетное число единиц.

 

Команды CALL и RET

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

 

Специальные команды

Специальные команды не передают т не обрабатыват информацию, но они используются для управления работой МП.

 

Команда HLT

По этой команде (HLT (Halt)) останавливается текущая программа до тех пор, пока не появится запрос прерывания от устройства ввода/вывода.

 

Команды DI, EI

Данные команды являются командами управления прерываниями. По команде DI (Disable Interrupt) МП игнорирует запросы прерывания до тех пор, пока не поступит команда EI (Enable Interrupt).

 

 

СИНТАКСИС И ПОДПРОГРАММЫ

Одним из языков написания программ для 8-разрядных процессоров является машинно-ориентированный язык Ассемблер, который позволяет писать текст программы без использования двоичных чисел, заменяя их мнемокодами команд, и в то же время обеспечивает оптимальную по объему программу. Так как язык Ассемблера ориентирован на конкретную микро-ЭВМ, использующую конкретный тип МП, то разные ЭВМ отличны друг от друга и языки ассемблера для них будут различны. Эти различия относятся к терминам, используемым в командах, и способах адресации операндов. Язык Ассемблера должен соответствовать специфическим особенностям МП. Одно- и двухадресные ЭВМ имеют большую разницу.

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

 

Синтаксис

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

 

МЕТКА ОПЕРАЦИЯ ОПЕРАНД КОММЕНТАРИЙ

 

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

В поле операция записывается код операции, который принят в данном ассемблере. Это аббревиатура полного названия операции.

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

Написанная программа может быть введена в память ЭВМ с пульта управления. В этом случае программист определяет адреса самостоятельно. Затем вводит адреса и команды в двоичным кодах с помощью переключателей. Поэтому необходимо все коды перевести в двоичные числа.

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

В поле комментария указываются пояснения команды. Это поле используется для удобства чтения программы и полностью игнорируется ассемблером в процессе трансляции.

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

Для каждой команды должна резервироваться одна строчка. Необходимо нажимать на клавишу ВВОД (ENTER) в конце каждой команды.

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

Если метка отсутствует, то первое поле остается пустым.

В некоторых ассемблерах после метки ставится двоеточие. Метка не должна начинаться с цифры, не должна быть такой же, как команда ассемблера.

Поле комментария должно начинаться с точки с запятой.

 

Директивы ассемблера

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

Директива ORG (origin – начало) задает ассемблеру адрес ячейки памяти для первой команды транслируемой программы. Директива ORG 0400H обеспечивает размещение по адресу 040016 первой команды программы.

Директива EQU (equate – приравнять) используется, когда при написании программы некоторому символическому имени ставится в соответствие определенный операнд.

Директива END – конец используется для указания того, что исходная программа закончилась.

 

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

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

Команда вызова подпрограммы CALL состоит из 3 байт: 1 байт – для кода операции и 2 байта для указания адреса первой команды подпрограммы. Этот адрес задается символическим именем. Кроме этого, по команде выполняются действия, необходимые для возвращения в основную программу после выполнения подпрограммы:
- в счетчике команд фиксируется адрес команды в основной программе, которая следует за командой вызова;
- содержимое счетчика команд (адрес возврата) загружается в стек; содержимое указателя стека модифицируется;
- счетчик команд загружается адрес, задаваемый командой вызова.

После этого начинается выполнение подпрограммы.

Команда возврата из подпрограммы RET (return – возврат) является последней командой подпрограммы. По этой команде выполняется возврат к главной программе, подготовленной командой вызова. Команда возврата содержит только код операции. По этой команде происходит следующее:

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

 

Команды управления стеком

Иногда при выполнении подпрограмм требуется использовать один или несколько регистров общего назначения МП. Но в этих регистрах может находиться информация, которая потребуется далее основной программе. Для сохранения этих данных их необходимо поместить в стек до начала выполнения подпрограммы. Для этого применяется команда PUSH (поместить в стек). Команда POP (вытолкнуть из стека) используется для возврата данных в регистры после выполнения подпрограммы. Команды PUSH и POP всегда оперируют с парой регистров BC, DE, HL; аккумулятором и регистром признаков.

Содержимое аккумулятора и регистра признаков вместе образуют так называемой слово состояния программы PSW (Program Status Word).

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

По команде ПОМЕСТИТЬ В СТЕК выполняются следующие действия:
- содержимое указателя стека сначала декрементируется;
- первые 8 бит загружаются в стек;
- содержимое указателя стека вновь декрементируется;
- последующие 8 бит загружаются в стек;

По команде ВЫТОЛКНУТЬ ИЗ СТЕКА выполняются обратные действия. Сначала второй байт выводится из стека в МП и содержимое указателя стека инкрементируется. Затем первый байт передается из стека в МП, и указатель стека вновь инкрементируется.

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


 



Литература.

1. Микр-ЭВМ /Пер.с англ. под ред. А.Дирксена.-М.:Энергоиздат, 1982. 328с., ил.

2. Гибсон Г., Лю Ю-Ч. Аппаратные и программные средства микро-ЭВМ.-М.:
Финансы и статистика, 1983.-255 с.,ил.

3. Предко М. Справочник по PIC-микроконтроллерам: Пер. с англ.-М.: ДМК Пресс, 2004-512 с.:ил.

4. Однокристальные 8-разрядные FLASH CMOS микроконтроллеры компании Microchip Technology Incorporated. –техническая документация на микроконтроллеры PIC16F873, PIC16F874, PIC16F876, PIC16F877 –М.:
ООО "Микро-Чип", 2002 г.-170 с.,ил.

5. В.Л.Григорьев. Микропроцессор i486. Архитектура и программирование (в 4-х книгах).-М., ГРАНАЛ, 1993.-с.346, ил.87.

6. Руководство по архитектуре IBM PC AT/Ж.К.Голенкова, А.В.Заболоцкий, М.Л.Марсахин и др.; Под общ.ред. М.Л.Марсахина.-Мн.:ООО"Консул", 1992.-949 с.:ил.

 

 

 

<== предыдущая лекция | следующая лекция ==>
ВАЖНО!!! Все пиццы подаются на горячих тарелках (приблизительно 80 оС) !!! Это делается для того, чтобы на столе у гостей пицца как можно дольше сохраняла температуру. 6 страница | Пределы 1 страница
Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 283; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.05 сек.