Главная  Микропроцессорные системы 

[0] [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] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92]

(на]яжение), LEVEL (уровень), SIGN (знак), WEIGT (вес) и т. п.

Обычные ограничения, накладываемые конкретным-ассемблером на символические имена ячеек, связаны с необходимостью использовать для записи имени не более 4-5 букв и начинать имя с буквы, а остальные символы могут быть и цифровыми.

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

Таблица 2.13 Таблица 2.14

Ячейка

Содержимое

LDA 50

DD 51

MOV В, А

LDA 52

ADD В

ST A 53

Ячейка

Содержимое

START

LDA К

ADDL

MOV B, A

LDAM

ADDS

STARES

M

Примеры, приведенные в табл. 2.13 и 2.14, показы-вают смысл символической адресации. В табл. 2.13 представлена программа вычисления выражения вида 13+15/2-f21X2, приведенная ранее в табл. 2.1 без использования символической записи команд. В этой программе используется абсолютная адресация памяти - программа размещается в ячейках с И по 19, а числовые данные - в ячейках с 50 по 53.

В табл. 2.14 та же программа записана с использо-



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

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

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

Расстановка меток имеет тот же смысл, что и использование символических адресов: она присваивает каждой ветви программы определенное имя, к которому можно обращаться при передаче управления, т. е. метка является символическим адресом, с которого начинается данная ветвь программы. Проверка условий и операции передачи управления выбора направления дальнейших вычислений реализуются с помощью команд условного перехода типа /С, JNC, JZ, JNZ, JP, JM и некоторых других. Таким образом, используя указанные типы команд, удается совместить процедуру проверки условий и передачи управления в одной команде. Однако так бывает не во всех микро-ЭВМ. В тех случаях, когда в наборе команд имеются команды типа SKIP (пропуск по условию), проверка условий осуществляется этими командами, а передача управления - командами безусловного перехода типа IMP.

Рассмотрим программирование операций управления на простом примере. Пусть результат цифрового накопления помещается в ячейку памяти с символическим адресом SUM. Для принятия решения о наличии или об отсутствии сигнала в некоторый момент времени произ-


Рис. 2.20, Схема программы обнаружения



водится сравнение накопленной суммы с пороговым уровнем, числовая величина которого хранится в ячейке с адресом LEVEL. Если {SUM) {LEVEL), т. е. если сигнал обнаружен, в ячейку RES должна быть записана единица, в противном случае - нуль. Схема программы показана на рис. 2.20, а сама Таб лица2.15

программа приведена в табл. 2.15.

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

Лучше всего это сделать, используя команду сравнения двух чисел вида СМР. Критерием выполнения данного неравенства является состояние регистра переполнения. Если после выполнения команды СМР (РП)=0, то неравенство выполнено, если же (РП) = 1, то {A)<i{LEVEL). Соответствующие ветви программы обозначим YES и N0, эти символы и будут метками. Далее каждая ветвь программы вырождается в операцию пересылки содержимого одной ячейки памяти {К или L) в другую {RES). В качестве команды, определяющей направление вычислительного процесса, в программе, представленной в табл. 2.15, использована команда условного перехода вида JC (переход по состоянию регистра переполнения). Если (РП) = 1, то эта команда осуществляет переход к команде, расположенной в ячейке N0, в противном случае выполняется следующая команда, т. е. ветвь программы с меткой YES. Последней командой этой ветви является команда безусловного перехода JMP OMEGA, обеспечивающая останов программы в том случае, когда она выполняется по ветви YES.

Ячейка

Содержимое

ALPHA

LDA SUM

CMP LEVEL

JCNO

LDA К

STA RES

JMP OMEGA

LDAL

STA RES

OMEGA

LEVEL



[0] [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] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92]

0.0009