Регистр состояния SREG

Этот регистр представляет собой набор флагов, показывающих текущее состояние МК. Эти флаги автоматически устанавливаются в “1” или в “0” при наступлении определенных событий (в соответствии с результатами выполнения команд). Все разряды этого регистра доступны как для чтения, так и для записи. После сброса МК все разряды регистра сбрасываются в “0”.

Регистр состояния SREG - №1 - открытая онлайн библиотека

флаг С - флаг переноса. = 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.)