ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Структура команд ORL( дизъюнкция), XRL (сумма по модулю 2) аналогична предыдущей.CLR A - очистка аккумулятора; CPL A - -инвертирование аккумулятора; В этих логических командах признаки не формируются, за исключением бита паритета P, который получает значение единицы, если результат операции записывается в аккумулятор. RR(RL) A - правый(левый) циклический сдвиг; RRC(RLC) A - правый(левый) циклический сдвиг через бит С; При сдвигах формируются признаки P и C.
Битовые команды (БК):
При выполнении БК бит С выполняет функции аккумулятора. Команды пересылки бит: mov C,bit mov bit,C SETB bit(C) - установка бита С (или прямоадресуемого бита) CLR bit (C) - очистка бита С (или прямоадресуемого бита) CPL C(bit) - инверсия бита С (или прямоадресуемого бита) ANL C,bit ORL C,bit При работе с битами используется только прямая адресация.
Команды передачи управления: Длинный безусловный переход и обращение к подпрограмме:
LJMP addr16[ст: мл] – длина команды 3 байта LCALL addr16 - обращение к подпрограмме -длина команды 3 байта
Абсолютные переходы: AJMP addr11 - длина команды 2 байта ACALL addr 11 -переход в пределах 2K В адресе следующей команды замещаются 11 мл. разрядов, причем разряды А10,А9,А8 содержаться в первом байте команды.
Косвенные переходы: JMP @A+DPTR (1байт) - суммируется адрес в процессе выполнения программы. Можно выполнять множественное ветвление по адресу неизвестному в момент написания программы, модифицируя А или DPTR. SJMP rel (2 байта) - относительная адресация; rel величина смещения в дополнительном коде. Это команда короткого безусловного перехода.
Условные переходы:
JZ(JNZ) rel - может быть реализована после любой операции, результат которой записывается в аккумулятор. JC(JNC) rel – переход по значению бита С. DJNZ Rn(ad), rel - Rn:=Rn-1; Если результат операции не равен 0 - выполняется переход, иначе - следующая команда. CJNE A,(ad, # d),rel CJNE (Rn,@Ri),#d,rel Выполняется вычитание из первого операнда второго; если результат операции не равен нулю - выполняется переход, иначе - следующая команда. Содержимое регистров, участвующих в операциях, не изменяется. При сравнении формируется бит С. При программировании в объектном коде адрес перехода вычисляется как: rel:= адрес перехода - адрес команды перехода + длина команды перехода; RET - возврат из подпрограммы RETI - возврат из прерывания.
Битовые переходы: JB(JNB) bit, rel JBC bit, rel Переход выполняется при единичном значении бита, адрес которого указан в команде, после чего бит сбрасывается в 0. Эта команда удобна при реализации семафоров. Семафор представляет собой флаг, расположенный в памяти, информирующий о состоянии связанного с ним ресурса: 1 – свободен, 0 – занято. Захват ресурса допускается только в том случае, если он свободен. Затем семафор должен быть переведен в состояние “ Занято”. Ресурс – всякий объект, распределяемый системой. Например, данные от различных источников должны быть записаны в разделяемую память. WAIT: JBC bit,OK; Проверка флага SJMP WAIT; Ресурс занят . . . OK: Ресурс свободен . . В ОМК отсутствуют команды ввода-вывода. Обращение к внешним устройствам осуществляется как к ячейкам внешней памяти данных. Признаки результата операций фиксируются в слове состояния процессора PSW. В этом слове содержатся поля, определяющие номер текущего банка РОНов, и флаг, функции которого определяются пользователем.
РИС.3.4. Формат слова состояния процессора: С - бит переноса (заема), устанавливается и сбрасывается аппаратно или программно при выполнении арифметических и логических операций; АС - бит вспомогательного переноса (заема) из третьего бита в четвертый; F0 - флаг пользователя, устанавливается, сбрасывается или проверяется программно; RS1,RS0 - выбор банка регистров; OV- бит арифметического переполнения; Р - бит паритета (четности).
Использование команд проиллюстрируем на следующем примере: По сигналу готовности, представляющем собой положительный импульс длительностью 20 мкс, ввести данные через параллельный порт. Разрядность данных 8 бит. Данные записываются в контроллер по условию: xi<=Адоп. Число достоверной информации должно быть К. Вычислить среднее арифметическое и вывести сигналы окончания работы, отрицательный импульс >=40 мкс. При суммировании данных предусмотреть получение результата > 8 бит.
Адоп (0:7)- допустимое значение i(0:7)- номер. Вводимых данных Xi(0:7)- значение вводимых данных Y(0:7) - входной регистр данных К(0:7) - счетчик программируемой задержки n(0:2) - кол- во достоверной информации S (0:16) - сумма Г(0) - входной сигнал N(0:7) - результат вычислений В(0) – выходной импульс Распределение регистров: R2 - счетчик достоверных данных R3- счетчик программируемой задержки R4- младший байт суммы R5 - старший байт суммы R6 - счетчик сдвигов P2 - ввод информации P1(0) - ввод сигнала готовности P1(1) - вывод сигнала
n:.EQUAL 8 k:.EQUAL 20 .ORG 100h mov R2, #n; Подготовка регистров mov R3, #k mov R6, #3 clr A mov R4, A mov R5, A mov P2, #0ffh; Настройка портов mov P1, #xxxxxx01bh setb P1.1 wait1: jnb P1.0, wait1; Анализ готовности wait0: jb P1.0, wait0 mov A, P2; Чтение вводимых данных cjne A, #Aдоп,M1; Сравнение с Адоп M2: clr C; Суммирование add A, R4 jc M3; Проверка переполнения M4: mov R4, A djnz R2, wait1 M1: jnc wait1; Проверка Xi < Адоп sjmp M2 M3: inr R5; Подсчет числа переполнений sjmp M4 M5: clr C; Вычисление средне-арифметического mov A, R5 rrc A mov R5, A mov R4, A djnz R6, M5 clr P1.1;Формирование выходного импульса М6: djnz R3, М6;Время выполнения DJNZ 2мкс, поэтому (R3)=20 setb P1.1 .end
Не нашли, что искали? Воспользуйтесь поиском:
|