Home
Add Document
Sign In
Register
Kubatova Y36SAP 8. Strojový kód Jazyk symbolických instrukcí asembler JSA pro ADOP a AVR Kubátová Y36SAP-strojový kód 1
Home
Kubatova Y36SAP 8. Strojový kód Jazyk symbolických instrukcí asembler JSA pro ADOP a AVR Kubátová Y36SAP-strojový kód 1
1 Y36SAP 8 Strojový kód Jazyk symbolických instrukcí asembler JSA pro ADOP a AVR 2007-Kubátová Y36SAP-strojový kód 1 Architektura souboru instrukcí, I...
Author:
Pavlína Doležalová
72 downloads
244 Views
124KB Size
Report
DOWNLOAD PDF
Recommend Documents
BADAN MODEL HIRARKI KD 11 KD 10 KD 9 KD 8 KD 7 KD 6 KD 5 KD 4 KD 3 KD 2 KD 1
Kubatova Y36SAP procesor - control unit obvodový a mikroprogramový řadič RISC Y36SAP-control unit 1
KD
KD
Kd
Strana 1. Zasedání KD -
Strana 1. Zasedání KD -
KD-DV6201. Varování - 1 -
S - 1 : KD
No Kd SR Kd Sek Kd Gab NPSN Nama Sekolah Jenis Status Alamat 1
KD-S741R
RENCANA PELAKSANAAN PEMBELAJARAN KD 1
SKS KD
KD-G341
Zasedání KD
SKS = KD
KD-R431
KD-S741R
KD-R401
Zasedání KD
KD-G331
KD-G511
KD-AVX20. Jen pro KD-AVX40. Pro zrušení ukázky viz strana 7. INSTRUKCE
Informace o probíhající stavbě za měsíce leden až únor 2013 (stavba 82. KD KD, expozice 5. KD - 7. KD)
Kubatova
19.4.2007
Y36SAP 8
Strojový kód Jazyk symbolických instrukcí – asembler JSA pro ADOP a AVR 2007-Kubátová
Y36SAP-strojový kód
1
Architektura souboru instrukcí, ISA - Instruction Set Architecture Architektura počítače ISA Vysoká
Úroveň abstrakce
Aplikace Operační systém Překladač Architektura souboru instrukcí Architektura procesoru
I/O Systém
Číslicový návrh Nízká 2007-Kubátová
Y36SAP-8
VLSI obvodový návrh Y36SAP-strojový kód
2
1
Kubatova
19.4.2007
Instrukční soubor – kritický interface
software
instruction set
hardware
2007-Kubátová
Y36SAP-strojový kód
3
Vytváření programů ve strojovém kódu
2007-Kubátová
Y36SAP-8
Y36SAP-strojový kód
4
2
Kubatova
19.4.2007
Vývoj softwaru – úrovně abstrakce Vyšší programovací jazyk
a = b+c If (a > MAX) a = MAX for (i==0; i
Překladač Jazyk symbolických instrukcí
mov reg1, konst[0] mov reg2, konst[2] add reg1, reg2 jc lab
Asembler 0000 1111 0101 0111 1011 0001 1110 0011 1100 1000 1001 0110
Strojový kód Procesor Řídící signály 2007-Kubátová
Y36SAP-strojový kód
5
ISA: Co musí být definováno? Instruction Fetch Instruction Decode
Formát a kódování instrukcí – Jak se instrukce dekóduje?
Umístění operandů a výsledku – Kolik explicitních operandů je v instrukci pro ALU? – Jak jsou operandy umístěny v paměti nebo jinde?
Operand Fetch Execute Result Store Synchron Interrupt? 2007-Kubátová
Y36SAP-8
– Který operand může být v paměti?
Typy dat a velikosti operandů Operace v ISA – Které jsou podporovány ?
Výběr další instrukce – Skoky, větvení programu, volání podprogramů – „fetch-decode-execute“ je implicitní! Y36SAP-strojový kód
6
3
Kubatova
19.4.2007
Jednoduchý procesor von Neumannova typu CPU
DB D7:D0
CU Paměť
ALU
AB A7:A0 CB
Registry
IF
Sběrnice CPU musí obsahovat ALU, CU a registry pro dočasné uchování dat, instrukcí a pomocných proměnných CPU pro běh programu prochází základním cyklem počítače: 1. Instruction Fetch IF – načtení instrukce 2. Instruction Decode ID – dekódování instrukce 3. Operand Fetch OF – načtení operandu(ů) 4. Instruction Execution IE – vykonání instrukce 5. Write Back WB – zapsání výsledku (také Result Store) 2007-Kubátová
ID OF IE WB Interrupt?
Y36SAP-strojový kód
7
Jaké instrukce? • ?? bitový procesor • Registry – kolik, jakých, jak přístupných, PC, IR, PSW, adresace?, datové? • Paměť ?? 16 bitů adresuje 64 Kslov.... slovo?? • příznaky Z (Zero), S (Sign), C (Carry), O (Overflow) a další? • instrukce v JSI: – aritmetické ADD, SUB, AND, OR, XOR, NEG, NOT, MOV, CMP • Přímý operand, nepřímý operand
– řídící JMP, JO, JNO, JS, JNS, JC, JNC, JZ, JNZ, JE, JNE, JG, JL, JGE, JLE, JA, JB, JAE, JBE – uložení do paměti – ST – HALT, OUT, IND
• reprezentace hodnot – přímý kód, doplňkový kód, nezáporná čísla • syntaxe jazyka symbolických instrukcí 2007-Kubátová
Y36SAP-8
Y36SAP-strojový kód
8
4
Kubatova
19.4.2007
Návrh instrukcí procesoru ADOP • • • • •
jaké jak kódované jak dlouhé jaká adresace operandů kolik registrů
2007-Kubátová
Y36SAP-strojový kód
9
Architektura ADOP Registry … 16 registrů dostupných programátorovi: R0 – R11 universálních (datových) registrů SP – ukazatel zásobníku PC – programový čítač PSW – stavový registr, Příznaky Z … zero, C … carry, S … sign, O … overflow, ES … extended sign (znaménko 2. operandu v binárních operacích)
ZR – obsahuje konstantní nulu
Paměť …big endian, kapacita 216 B – 64KB 2007-Kubátová
Y36SAP-8
Y36SAP-strojový kód
10
5
Kubatova
19.4.2007
Přesuny dat • MOV kam, co kam .... registr co ... registr (obsah registru), přímý operand 4, 8, 16 bitový, operand nepřímo adresovaný
• ST co, kam • PUSH, POP 2007-Kubátová
Y36SAP-strojový kód
11
Deklarace proměnných • pseudoinstrukce – vyhrazení místa v paměti (pro výsledek) – zadání vstupních dat
data: SHORT - jednobytový operand se znaménkem BYTE - jednobytový operand bez znaménka WORD - dvoubytový operand deklarace ... DS, DB, DW 2007-Kubátová
Y36SAP-8
Y36SAP-strojový kód
12
6
Kubatova
19.4.2007
Aritmetické • binární – – – – –
ADD ADC SUB SBB CMP
• unární – NOT – INC – DEC
2007-Kubátová
Y36SAP-strojový kód
13
CMP - porovnání jako SUB, ale neuloží výsledek, jen příznaky
2007-Kubátová
Y36SAP-8
Y36SAP-strojový kód
14
7
Kubatova
19.4.2007
Logické • binární – AND – OR – XOR
• unární – NEG
2007-Kubátová
Y36SAP-strojový kód
15
Posuvy • • • • •
SHL, SHR, ASR – aritmetický posun vpravo, RRC, RLC
2007-Kubátová
Y36SAP-8
Y36SAP-strojový kód
16
8
Kubatova
19.4.2007
Skoky ... nepodmíněný skok JMP label // label .... návěští
Př. cosi: label1:
2007-Kubátová
MOV JMP ADD rrc
r0, 1 label1 r0, r5 r0
1 2 3
Y36SAP-strojový kód
17
Skoky ... podmíněné skoky
2007-Kubátová
Y36SAP-8
Y36SAP-strojový kód
18
9
Kubatova
19.4.2007
Podmínky ve skocích • Z, NZ, • C, NC, • S, NS • O, NO, Složené podmínky se používají pro vyhodnocení porovnání (CMP) resp. odečtení dvou operandů a testují logický výrazy nad příznaky: • GE (gretaer or equal) – !SF && !OF || SF && OF (výraz je ekvivalentní s SF == OF) • LT (less then) – negace podmínky GE, • GT (greater then) – GE && !Z • LE (less or equal) – negace podmínky GT, • AT (above then) – C && !Z • BE, (below equal) – negace podmínky AT • TRUE – podmínka vždy splněna
Y36SAP-8
2007-Kubátová
Y36SAP-strojový kód
19
2007-Kubátová
Y36SAP-strojový kód
20
10
Kubatova
19.4.2007
Příklad Napište program v JSI ADOP, který nalezne největší číslo v poli.
2007-Kubátová
Y36SAP-strojový kód
21
// nalezení maximálního prvku v poli
mov r0, 0x8000
rep:
// doposud max hodnota do R0
mov r2, pole
// pointer na začátek pole do R2
cmp r0, [r2]
// porovnání dosavadní maximální hodnoty
jge next
next:
mov r0, [r2]
// nalezení nové maximální hodnoty
add r2, 2
// přesun na další prvek v poli
cmp r2, endPole // otestování zda je dosaženo konce pole
end:
jeq end
// skok na konec
jmp rep
// opakování
st r0, [max]
// uložení výsledku
halt max: dw 0 pole:dw 1, -13, 33, 0x7777 2007-Kubátová
Y36SAP-strojový kód
22
endPole:
Y36SAP-8
11
Kubatova
19.4.2007
Simulátor http://service.felk.cvut.cz/jws/proc/procwww/ umožňuje psát programy v JSI, překládat, krokovat, spouštět a sledovat změny obsahu registrů a paměti
2007-Kubátová
Y36SAP-strojový kód
23
LABORATOŘ - Mikropočítač AVR Produkt firmy Atmel, které mají na jednom čipu integrován • procesor • paměť programu • paměť dat • rozsáhlou sadu periferíí (vstupně-výstupní brány, čítače, časovače, převodníky, komunikační rozhraní apod.) 2007-Kubátová
Y36SAP-8
Y36SAP-strojový kód
24
12
Kubatova
19.4.2007
AVR Butterfly • LCD displej - 6 alfanumerických znaků (po 14 segmentech) • Joystick - 5 směrů (nahoru, dolů, doleva, doprava, kolmý stisk (enter)) • Čidlo teploty • Čidlo osvětlení • Krystalový oscilátor 32,768 kHz (pro měření času) • Elektroakustický měnič (piezo) • Napájení z baterie 2007-Kubátová
Y36SAP-strojový kód
25
Architektura ATMEGA169
2007-Kubátová
Y36SAP-8
Y36SAP-strojový kód
26
13
Kubatova
19.4.2007
ATMEGA169 • Univerzální registry - 32 osmibitových registrů (R0 až R31) • Posledních šest z nich tvoří po dvojicích tři indexregistry (Slouží k adresování přístupu do paměti) • Speciální registry – Programový čítač - 16bitový (Program Counter - PC) – Ukazatel na vrchol zásobníku - 16bitový (Stack Pointer - SP) – Registr příznaků - 8bitový (Status Register - SREG)
• Paměť dat: 1 KB, organizace 1K x 8 bitů, čtení i zápis • Paměť programu: 16KB, organizace 8K x 16 bitů, pouze čtení (zápis speciálním způsobem) • Periferie – např. řadič displeje (LCD) • Vnitřní zdroj hodinového kmitočtu 2007-Kubátová
Y36SAP-strojový kód
27
Registry
2007-Kubátová
Y36SAP-8
Y36SAP-strojový kód
28
14
Kubatova
19.4.2007
Stavový registr – SREG („flagy“)
2007-Kubátová
Y36SAP-strojový kód
29
Skoky • Nepodmíněný skok JMP • Podmíněné skoky BRxx (BR namísto J) změna běhu programu bez zapamatování místa odkud se „skákalo“ Na rozdíl od podprogramu, kdy je třeba si zapamatovat, kam se vrátit. 2007-Kubátová
Y36SAP-8
Y36SAP-strojový kód
30
15
Kubatova
19.4.2007
Podobně BRBS 2007-Kubátová
Y36SAP-strojový kód
31
Další podmíněné skoky • BRCS – BRCC .......... S – set, C – clear Syntax: BRCS k • • • •
BREQ ... Z=1, BRNE ....... Z=0, BRGE ... N xor V = 0 .... Procesor umí nastavit či vynulovat příznaky v SREG
2007-Kubátová
Y36SAP-8
Y36SAP-strojový kód
32
16
Kubatova
19.4.2007
Podprogramy • Volání ... CALL k
k je adresa
post-dekrementace • Návrat z podprogramu .... RET Při volání se ukládá návratová adresa na zásobník, Při návratu se obnovuje původní obsah PC ze zás. pre-inkrementace 2007-Kubátová
Y36SAP-strojový kód
33
Zásobník - stack Operace: PUSH Rr... uložení registru na zásobník Rr → STACK
POP Rd ... nahrání registru ze zásobníku Rd ← STACK
2007-Kubátová
Y36SAP-8
Y36SAP-strojový kód
34
17
Kubatova
19.4.2007
Zásobník ... • Zásobník roste směrem k nižším adresám • Obsah SP registru ukazuje na vrchol zásobníku – na první prázdnou položku, na kterou se bude zapisovat např. instrukcí PUSH • Je simulován v hlavní paměti
2007-Kubátová
Y36SAP-strojový kód
35
.... zásobník
8 bitů 000
data data
3FF 2007-Kubátová
Y36SAP-8
Y36SAP-strojový kód
36
18
Kubatova
19.4.2007
Přesuny dat • • • •
MOV ... Přesun dat mezi registry LD, LDS ... Přesun dat z paměti do registru LDI ... Nahrání konstanty do registru ST ... Přesun dat z registru do paměti
Poznámka: LD a ST používá nepřímou adresaci 2007-Kubátová
Y36SAP-strojový kód
37
Posuvy • LSL, LSR – posuvy logické (SHIFT) • ROL, ROR – rotace přes Carry • ASR – aritmetický posuv vpravo (? Vlevo?) ..... A řada dalších instrukcí, viz web SAP
2007-Kubátová
Y36SAP-8
Y36SAP-strojový kód
38
19
×
Report "Kubatova Y36SAP 8. Strojový kód Jazyk symbolických instrukcí asembler JSA pro ADOP a AVR Kubátová Y36SAP-strojový kód 1"
Your name
Email
Reason
-Select Reason-
Pornographic
Defamatory
Illegal/Unlawful
Spam
Other Terms Of Service Violation
File a copyright complaint
Description
×
Sign In
Email
Password
Remember me
Forgot password?
Sign In
Our partners will collect data and use cookies for ad personalization and measurement.
Learn how we and our ad partner Google, collect and use data
.
Agree & close