Регистр состояния SREG.
Этот регистр представляет собой набор флагов, показывающих текущее состояние МК. Эти флаги автоматически устанавливаются в “1” или в “0” при наступлении определенных событий (в соответствии с результатами выполнения команд). Все разряды этого регистра доступны как для чтения, так и для записи. После сброса МК все разряды регистра сбрасываются в “0”.
флаг С - флаг переноса. = 1 если в результате выполнения операции произошел выход за границы байта.
флаг Z - флаг нуля. = 1 если результат выполнения операции равен нулю.
Режимы адресации.
Большинство команд, использующих регистры общего назначения, могут использовать любые регистры общего назначения. Исключение составляют шесть команд, оперирующих с константами (они работают только со второй половиной регистрового файла r16-r31). Такие команды имеют режим непосредственной адресации:
ldi Rd,K - загрузить константу K в Rd.
cpi Rd,K - сравнить константу K и содержимое рег. Rd
subi Rd,K - вычесть константу K из содержимого регистра Rd, результат поместить в рег. Rd.
sbci Rd,K - вычесть константу K и флаг переноса из содержимого регистра Rd, результат поместить в рег. Rd
andi Rd,K - лог. И между константой K и содержимым регистра Rd, результат поместить в регистровую пару Rd.
ori Rd,K - лог. ИЛИ между константой K и содержимым регистра Rd, результат поместить в регистр Rd.
В МК-ах AVR фирмы ATMEL предусмотрены несколько способов адресации:
1.) Все выше описанные команды относятся к непосредственной адресации – когда - данные, над которыми осуществляется операция, находятся в самой команде;
2.) регистровая адресация - данные, над которыми осуществляется операция, находятся в регистрах Rr (источник) и Rd (приемник)
inc Rd – увеличить на единицу (инкремент) содержимое регистра Rd.
dec Rd - уменьшить на единицу (декремент) содержимое регистра Rd.
mov Rd,Rr – скопировать содержимое регистра Rr в регистр Rd.
and Rd,Rr - лог.И меджу содержимым регистра Rr и регистра Rd. Результат находится в Rd.
cp Rd,Rr - сравнить содержимое регистра Rr и регистра Rd. (Rd-Rr);
3.) прямая адресация - пересылка данных между одним из РОН и ячейкой памяти ОЗУ
lds Rd,address – скопировать данные из ячейки памяти с указанным в команде адресом в регистр Rd.
sts address,Rr - скопировать данные из регистра Rr в ячейку памяти с указанным в команде адресом.
4.) косвенная адресация - данные, над которыми осуществляется операция находятся в ячейке памяти, адрес которой хранится в регистре X, Y или Z.
ld Rd,X -загружает один байт из адресного пространства памяти данных в РОН Rd. Адрес ячейки памяти, к которой производится обращение, содержится в регистровой паре Х.
st Y,Rr - …
5.) косвенная с преддекрементом - данные, над которыми осуществляется операция находятся в ячейке памяти, адрес которой получается в регистре X, Y или Z, после вычитания из него единицы
ld Rd,-X
st -Z,Rr
6.) косвенная с постинкрементом - данные, над которыми осуществляется операция находятся в ячейке памяти, адрес которой хранится в регистре X, Y или Z; после чего, содержимое регистра X, Y или Z увеличивается на единицу
ld Rd,X+
st Z+,Rr
7.) относительная косвенная адресация - данные, над которыми осуществляется операция находятся в ячейке памяти, адрес которой получается суммированием содержимого регистра Y или Z с константой, задавемой в команде
ldd Rd,Y+q (q=0..63.) - (содержимое индексного регистра не изменяется)
std Z+q,Rr (q=0..63.)
Дата добавления: 2016-12-27; просмотров: 2910;