Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
doc0856.pdf
Скачиваний:
0
Добавлен:
18.03.2024
Размер:
1.28 Mб
Скачать

AVR Instruction Set

LSL – Logical Shift Left

Description:

Shifts all bits in Rd one place to the left. Bit 0 is cleared. Bit 7 is loaded into the C Flag of the SREG. This operation effectively multiplies signed and unsigned values by two.

Operation:

(i)

C

 

b7 - - - - - - - - - - - - - - - - - - b0

0

 

 

 

 

 

 

 

 

Syntax:

 

 

 

 

Operands:

 

 

 

 

 

Program Counter:

(i)

 

LSL Rd

 

 

 

 

0 ≤ d ≤ 31

 

 

 

 

 

PC ← PC + 1

 

 

 

16-bit Opcode: (see ADD Rd,Rd)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0000

 

11dd

 

dddd

 

dddd

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Status Register (SREG) and Boolean Formula:

 

 

 

 

 

 

I

 

 

T

 

 

H

 

S

 

V

N

Z

 

C

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

H:Rd3

S:N V, For signed tests.

V:N C (For N and C after the shift)

N:R7

Set if MSB of the result is set; cleared otherwise.

Z:R7• R6 •R5• R4• R3 •R2• R1• R0

Set if the result is $00; cleared otherwise.

C:Rd7

Set if, before the shift, the MSB of Rd was set; cleared otherwise.

R (Result) equals Rd after the operation.

Example:

add

r0,r4

;

Add r4 to r0

lsl

r0

;

Multiply r0 by 2

Words: 1 (2 bytes)

Cycles: 1

99

0856I–AVR–07/10

LSR – Logical Shift Right

Description:

Shifts all bits in Rd one place to the right. Bit 7 is cleared. Bit 0 is loaded into the C Flag of the SREG. This operation effectively divides an unsigned value by two. The C Flag can be used to round the result.

 

 

Operation:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

b7 - - - - - - - - - - - - - - - - - - b0

 

C

 

 

 

 

 

 

 

 

 

Syntax:

 

 

 

 

Operands:

 

 

 

 

 

 

Program Counter:

(i)

 

LSR Rd

 

 

 

 

0 ≤ d ≤ 31

 

 

 

 

 

 

PC ← PC + 1

 

 

16-bit Opcode:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1001

 

010d

 

dddd

 

0110

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Status Register (SREG) and Boolean Formula:

 

 

 

 

 

 

I

 

 

 

T

 

 

H

 

S

 

V

N

Z

 

C

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S:N V, For signed tests.

V:N C (For N and C after the shift)

N:0

Z:R7• R6 •R5• R4• R3 •R2• R1• R0

Set if the result is $00; cleared otherwise.

C:Rd0

Set if, before the shift, the LSB of Rd was set; cleared otherwise.

R (Result) equals Rd after the operation.

Example:

add

r0,r4

;

Add r4

to

r0

 

lsr

r0

;

Divide

r0

by

2

Words: 1 (2 bytes)

Cycles: 1

100 AVR Instruction Set

0856I–AVR–07/10

AVR Instruction Set

MOV – Copy Register

Description:

This instruction makes a copy of one register into another. The source register Rr is left unchanged, while the destination register Rd is loaded with a copy of Rr.

 

Operation:

 

 

 

 

 

 

 

 

 

 

 

 

 

(i)

Rd ← Rr

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Syntax:

 

Operands:

 

 

 

Program Counter:

(i)

MOV Rd,Rr

 

0 ≤ d ≤ 31, 0 ≤ r ≤ 31

 

 

 

PC ← PC + 1

 

16-bit Opcode:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0010

11rd

dddd

 

 

rrrr

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Status Register (SREG) and Boolean Formula:

 

 

 

 

 

 

I

 

 

T

H

S

V

N

Z

 

C

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Example:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

mov

r16,r0

 

; Copy r0 to r16

 

 

 

 

 

 

 

 

 

call

check

 

; Call subroutine

 

 

 

 

 

 

 

 

 

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

check:

cpi

r16,$11

 

; Compare r16 to $11

 

 

 

 

 

 

 

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ret

 

 

 

; Return from subroutine

 

 

 

 

Words: 1 (2 bytes)

Cycles: 1

101

0856I–AVR–07/10

MOVW – Copy Register Word

Description:

This instruction makes a copy of one register pair into another register pair. The source register pair Rr+1:Rr is left unchanged, while the destination register pair Rd+1:Rd is loaded with a copy of Rr + 1:Rr.

This instruction is not available in all devices. Refer to the device specific instruction set summary.

Operation:

(i)Rd+1:Rd ← Rr+1:Rr

 

Syntax:

 

Operands:

 

 

 

Program Counter:

(i)

MOVW Rd+1:Rd,Rr+1Rrd {0,2,...,30}, r {0,2,...,30}

PC ← PC + 1

 

16-bit Opcode:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0000

0001

dddd

 

 

 

rrrr

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Status Register (SREG) and Boolean Formula:

 

 

 

 

 

 

I

T

H

S

 

V

N

Z

C

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Example:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

movw

r17:16,r1:r0

; Copy r1:r0 to r17:r16

 

 

 

 

 

call

check

 

 

; Call subroutine

 

 

 

 

 

 

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

check:

cpi

r16,$11

 

 

; Compare r16 to $11

 

 

 

 

 

 

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cpi

r17,$32

 

 

; Compare r17 to $32

 

 

 

 

 

 

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ret

 

 

 

 

; Return from subroutine

 

 

Words: 1 (2 bytes)

Cycles: 1

102 AVR Instruction Set

0856I–AVR–07/10

Соседние файлы в предмете Микропроцессорные системы