+ All Categories
Home > Documents > TEP Instrukční soubor

TEP Instrukční soubor

Date post: 15-Jan-2016
Category:
Upload: declan
View: 47 times
Download: 0 times
Share this document with a friend
Description:
TEP Instrukční soubor. č.9. TEP. Téma Assembler AVR Předmět TEP Autor Juránek Leoš Ing. AVR instrukční soubor. Nová kapitola. Instrukční soubor. Přesunové Aritmetické Logické a bitové Řízení programu. Přesunové instrukce. Registr  registr MOV, MOVW Registr  RAM - PowerPoint PPT Presentation
25
TEP Instrukční soubor č.9
Transcript
Page 1: TEP Instrukční soubor

TEPInstrukční soubor

č.9

Page 2: TEP Instrukční soubor

Téma Assembler AVR Předmět TEP Autor Juránek Leoš Ing.

TEP

Page 3: TEP Instrukční soubor

AVRinstrukční soubor

Nová kapitola

Page 4: TEP Instrukční soubor

Přesunové

Aritmetické

Logické a bitové

Řízení programu

Instrukční soubor

Page 5: TEP Instrukční soubor

Registr registrMOV, MOVW

Registr RAMLDI, LDS, LD, LDD

Registr RAMSTS, ST, STD

Registr Registr I/OIN, OUT

Registr paměť programuLPM

ZásobníkPUSH,POP

Přesunové instrukce

Page 6: TEP Instrukční soubor

MOV R1,R0

Registr -> registr

MOV Rd,Rr Rd Rr r,d=0,31 Copy register

MOVW Rd+1:Rd,Rr+1:Rr Rd+1:Rd Rr+1:Rr r,d even r,d=0,2,..30 Copy register pair

Přesuň registr R0 do R1

Přesuň registr R1 do R17 a R0 do R16

MOVW R17:R16,R1:R0

1

2

Registr registr

Page 7: TEP Instrukční soubor

Registr RAM

LDI R16,127Naplň registr R16 číslem 127

LDS R19,0x200Načti hodnotu adresy 0x200 do registru R19 (přímá adresace)

Registr <- RAM

LDI Re,K8 Re K8 e=16,31 Load Immediate

LDS Rd,k Rd (k) d=0,31 Load Direct from Data Space

LD Rd,P Rd (P) P=X,Y,Z Load Indirect

LD Rd,P+ Rd (P) ; P=P+1 P=X,Y,Z Load Indirect and Post-Increment

3

4

Page 8: TEP Instrukční soubor

Registr RAM

LDI XL,0x01LDI XH,0x03

LD R19,X

Načti hodnotu adresy (0x0301), která je v registru X, do registru R19 (nepřímá adresace)

Po načtení inkrementuj registr X

LD R19,X+

Registr <- RAM

LDI Re,K8 Re K8 e=16,31 Load Immediate

LDS Rd,k Rd (k) d=0,31 Load Direct from Data Space

LD Rd,P Rd (P) P=X,Y,Z Load Indirect

LD Rd,P+ Rd (P) ; P=P+1 P=X,Y,Z Load Indirect and Post-Increment

5

6

Page 9: TEP Instrukční soubor

Registr RAM

STS 0x200,R19Ulož obsah registru R19 na adresu 0x200 (přímá adresace)

Registr -> RAM

STS adr,Rr (adr) Rr r=0,31 Store Direct

ST P,Rr (P) Rr P=X,Y,Z Store Indirect

ST P+,Rr (P) Rr ; P=P+1 P=X,Y,Z Store Indirect and Post-Increment

7

Page 10: TEP Instrukční soubor

Registr Registr I/OObsluha SFR RAM 0x20 - 0x5F (64 adres)

IN Rd,P Rd (P) d=0,31 In Port

OUT P,Rd (P) Rd d=0,31 Out Port

OUT PORTA,R19Zapiš do registru PORTA obsah registru R19

IN R19,PINF Přečti hodnotu z registru PINF do registru R19

9

10

Page 11: TEP Instrukční soubor

Registr paměť programuČtení z paměti programu

LPM R0 (Z) pouze Z Load Program Memory

LPM Rd,Z Rd (Z) pouze Z Load Program Memory

LPM Rd,Z+ Rd (Z) ; Z=Z+1 pouze Z Load Program Memory and Post-Increment

LDI ZL,LOW(TAB*2)LDI

ZH,HIGH(TAB*2)

LPM R2,Z…TAB: .DB 1,2,3,4

Přečti hodnotu z tabulky, která je součástí paměti programu (na adrese TAB) do registru R2

11

Page 12: TEP Instrukční soubor

ZásobníkZapsání do zásobníku, čtení ze zásobníku

PUSH Rd Rd ((SP)) , (SP) (SP)-1 d=0,31 Push register on Stack

POP Rd (SP) (SP)+1 , ((SP)) Rd d=0,31 Pop register from Stack

PUSH R12POP R12

Ulož registr R12 do zásobníku;Obnov registr R12 ze zásobníku

12

Page 13: TEP Instrukční soubor

Kontrolní úkoly Jakou instrukci použijeme pro přesun dat mezi

registry? Jakou instrukce použijeme pro zápis do paměti SRAM

přímou adresací? Jakou instrukce použijeme pro čtení z paměti SRAM

nepřímou adresací? Jakou instrukce použijeme pro zápisu do I/O registru? Jakou instrukce použijeme pro čtení z paměti

programu?

Page 14: TEP Instrukční soubor

8 bitové sčítání, odčítání ADD, ADC, SUB, SUBI, SBC, SBCI

16 bitové sčítání, odčítáníADIW, SBIW

8 bitové násobeníMUL, MULS, MULSU, FMUL, FMULS, FMULSU

Nulování, nastavení, doplněkSER, CLR, COM, NEG

Aritmetické instrukce

Page 15: TEP Instrukční soubor

LogickéAND, ANDI, OR, ORI, EOR, SBR, CBR

BitovéLSL, LSR, ROR, ROL, ASR, SWAP…

SREGBSET, BCLR …

Bity v I/OSBI, CBI

Logické a bitové instrukce

Page 16: TEP Instrukční soubor

IN R16,PORTKORI

R16,0b00001000OUT PORTK,R16

Nastav bit 3 v I/O registru PORTK

12

IN R16,PORTKANDI

R16,0b11111110OUT PORTK,R16

Nuluj bit 0 v I/O registru PORTK

13

Logické instrukce

AND Rd,Rr Rd Rd & Rr r,d=0,31 Logical AND

ANDI Re,K8 Re Re & K8 e=16,31 Logical AND with Immediate

OR Rd,Rr Rd Rd | Rr r,d=0,31 Logical OR

ORI Re,K8 Re Re | K8 e=16,31 Logical OR with Immediate

EOR Rd,Rr Rd Rd EOR Rr r,d=0,31 Logical Exclusive OR

SBR Re,K8 Re Re | K8 r,d=0,31 Set Bit(s) in Register

CBR Re,K8 Re Re & (0xFF-K8) r,d=0,31 Clear Bit(s) in Register

Logické instrukce

Page 17: TEP Instrukční soubor

SBI PORTA,0Nastav bit 0 v I/O registru PORTA

14

Bity v I/O

SBI P,b I/O(P,b) 1 Set bit in I/O register

CBI P,b I/O(P,b) 0 Clear bit in I/O register

CBI DDRB,7Nuluj bit 7 v I/O registru DDRB

15

Bity v I/O

Page 18: TEP Instrukční soubor

Kontrolní úkoly Jakou instrukci použijeme pro přesun dat mezi

registry? Jakou instrukce použijeme pro zápis do paměti SRAM

přímou adresací? Jakou instrukce použijeme pro čtení z paměti SRAM

nepřímou adresací? Jakou instrukce použijeme pro zápisu do I/O registru? Jakou instrukce použijeme pro čtení z paměti

programu?

Page 19: TEP Instrukční soubor

Kontrolní úkoly Chceme vynulovat 3. bit v registru R20. Jakou

nastavíme masku a jakou logickou operaci toto provedeme?

Page 20: TEP Instrukční soubor

Instrukce řízení programu Skoky Nepodmíněné (Jump)

RJMP, JMP, IJMP Podmíněné (Branch)

BRNE, BREQ, BRxx…

Přeskoky (Skip)SBIC, SBIS, SBRC, SBRS

Podprogramy (Subroutine)RCALL, RET, RETI…

Page 21: TEP Instrukční soubor

Nepodmíněný skok

OPAKUJ:……RJMP OPAKUJ

Instrukce

RJMP OPAKUJ

OPAKUJ:

Program pokračuje na adrese návěští (modifikuje se čítač programu PC)

Page 22: TEP Instrukční soubor

Podmíněný skok

Podmínka

Instrukce

Ne

Ano

OPAKUJ:

OPAKUJ:CPI R1,25BREQ OPAKUJNOPNOP

Podmínku vyhodnotíme instrukcí CPI, která nastaví podmínkový registr SREG a volbou vhodného typu skoku program pokračuje na adrese návěští (modifikuje se čítač programu PC), jinak se provede další instrukce.

Page 23: TEP Instrukční soubor

Přeskok

Podmínka

Instrukce

Ne

Ano

SBRC R1,3RJMP OPAKUJNOPNOP

Podmínku vyhodnotíme instrukcí typu SKIP, pokud je podmínka vyhodnocena TRUE přeskočíme následující instrukci, jinak pokračuje další instrukcí.

Page 24: TEP Instrukční soubor

Podprogram

ROUT1

RET

ROUT1

RCALL ROUT1

NOP…

ROUT1:…RET

Program pokračuje na návěští ROUT1. Do zásobníku (SP) se zapíše návratová adresa. Podprogram musí končit instrukcí RET, která vyzvedne návratovou adresu ze zásobníku a modifikuje čítač programu PC.

Page 25: TEP Instrukční soubor

Kontrolní úkoly Instrukce ADD R1, R0; obsah registru

R1=0b11110000, R0=0b10101111.Jaký bude obsah registrů R0, R1 a příznaku C po vykonání instrukce?

Instrukce LD R1,X+; X=0x305; SRAM(0x305)=124.Jaký bude obsah R1, X, SRAM(0x305) po vykonání instrukce?

Instrukce INC R1; R1=0xFF. Jaký bude obsah registru R1 po vykonání instrukce?


Recommended