Главная страница Комод Кухня Компьютерный стол Плетеная мебель Японский стиль Литература
Главная  Кремниевые микросхемы 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 [ 54 ] 55 56 57 58 59 60

По следующей команде 6D 6400 прибавляется число, хранящееся в ячейке 0064i6, к содержимому аккумулятора. Это и есть число 21 ю. С помощью следующей команды 2В 00 00 производится проверка состояния флага нуля, и, поскольку в данном случае результат суммирования отличен от нуля, счетчик команд переводится в состояние, соответствующее номеру ячейки OOOOie, в которой содержится код операции первой команды. Так будет каждый раз, пока команда с кодом операции 2В не обнаружит установку флага нуля (т. е. пока новое N будет меньше 2ho). Далее вызывается самая первая ко-1манда из ячейки OOOOje, но вызываемое вслед за ней число N является новым N и в данном случае будет равно 1.

Таким образом, программа в процессе прохождения выполнит несколько повторных переходов по петле с постепенно возрастающими значениями N и S, пока, наконец, новое N не станет равным числу 21 ю. При этом чис-ло, хранимое как сумма S, будет искомым ответом. Условный переход по не нулю не состоится, и счетчик ко-манд перейдет в состояние, соответствующее номеру ячейки 0018i6. Выбранная из этой ячейки команда OOie остановит программу, и, если считать содержимое ячейки 0066i6, требуемый ответ будет найден.

Этот пример служит всего лишь иллюстрацией того, как можно запрограммировать задачу и каким образом в типовом микропроцессоре будут выполняться операции по реализации написанной программы. К сожалению, типового микропроцессора реально не существует, а воображаемый микропроцессор рассматривался с общих позиций с тем, чтобы осветить по возможности наибольшее число особенностей существующих микропроцессоров. Так, например, команда сложения с переносом входит в состав команд далеко не всех микропроцессоров. Для некоторых из них не предусмотрена команда очистки аккумулятора. Большинство микропроцессоров ориентировано на реализацию одной команды вычитания, заменяющей собой три команды (СОМР, INC и ADD), использовавшиеся, например, в рассмотренной задаче. При программировании микропроцессора модели 6502 важно помнить, что в составе его команд имеется только команда вычитания с заемом (А-М-CF-A). Если требуется произвести вычитание без заема, необходимо сна-ягала установить флаг переноса. Б наборы команд других мйТфопроцессоров входит команда вычитания с перено-



COM (A-M-CF-A) и команда вычитания без переноса (А-М-А).

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

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

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

Например, если воспользоваться командами очистки аккумулятора (CLA) и уменьшения содержимого ячейки памяти на единицу (DEC) М-то при условии, что результат действия команды DEC оказывает влияние на флаг нуля,

Рис. 11.6. Схема алгоритма сложения, соответст- -~J- вуюа;ая более короткой программе С, Stop J




программу сложения целых чисел от О до 20 можно записать следующим образом:

Метка

Мнемокод

Символический адрес

Комментарий

START

S = 0

LOOP

NUM STORE

Прибавить N

NUM STORE

Новое N

BR NZ

LOOP

Переход, если новое N не равно нулю

ANSWER

Запомнить ответ

Число 20 помещается в ячейку с символическим адресом NUM STORE, после чего можно запускать программу. Ответ будет содержаться в ячейке памяти ANSWER.

Схема этой программы приведена на рис. 11.6.

Обычно микропроцессоры допускают использование нескольких различных видов адресации, и при написании программы на языке ассеблера необходимо как-то различать данные, используемые сразу же, и адреса памяти, хранящие данные для последующего использования. Один из способов их различения - это применение специального символа ф|: для обозначения немедленно используемых данных. Например, запись LDAф(:NUM означала бы загрузку действительного значения NUM, а запись LDA, NUM STORE означала бы загрузку числа, хранящегося в памяти по адресу NUM STORE. В другом распространенном способе предполагается использование скобок. В этом случае запись LDA, NUM означает загрузку числа NUM, а запись LDA (NUM STORE) - загрузку числа, хранящегося в памяти по адресу NUM STORE.



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 [ 54 ] 55 56 57 58 59 60

© 2007 EPM-IBF.RU
Копирование материалов разрешено в случае наличия письменного разрешения