Bevezetés az assembly nyelvbe

Hasonló dokumentumok
Bevezetés az assembly nyelvbe

Mikrovezérlık története (nagyon) röviden

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Mechatronika és mikroszámítógépek

Mechatronika és mikroszámítógépek

1. Az utasítás beolvasása a processzorba

A számítógép alapfelépítése

Mechatronika és mikroszámítógépek. 2018/2019 I. félév. Külső megszakítások

Mikrokonverterrel vezérelt digitális jelgenerátor fejlesztése

1. Bevezetés. 2. A mikroszámítógépek felépítése

Mikrovezérlők Alkalmazástechnikája

Balaton Marcell Balázs. Assembly jegyzet. Az Assembly egy alacsony szintű nyelv, mely a gépi kódú programozás egyszerűsítésére született.

A Számítógépek felépítése, mőködési módjai

Az vevő- és vezérlőáramkör programja

Mikrokontrollerek. Tihanyi Attila május 8

Mérési utasítás Mikrokontroller programozás 2.sz. mérés

MCS-51-es MIKROKONTROLLER ÖSSZEFOGLALÓ KÉSZÍTETTE: DR. KÓNYA LÁSZLÓ Tartalomjegyzék

Járműfedélzeti rendszerek I. 3. előadás Dr. Bécsi Tamás

A MiniRISC processzor

Assembly utasítások listája

assume CS:Code, DS:Data, SS:Stack Start mov dl, 100 mov dh, 100 push dx Rajz

találhatók. A memória-szervezési modell mondja meg azt, hogy miként

Bevezetés a számítástechnikába

Digitális rendszerek. Utasításarchitektúra szintje

Bevezetés a méréstechnikába és jelfeldolgozásba. Tihanyi Attila április 24.

Jelfeldolgozás a közlekedésben

A 32 bites x86-os architektúra regiszterei

A mikroszámítógép felépítése.

[cimke:] [feltétel] utasítás paraméterek [; megjegyzés]

Adatelérés és memóriakezelés

Mikroprocesszor CPU. C Central Központi. P Processing Számító. U Unit Egység

Assembly Utasítások, programok. Iványi Péter

Egyszerű RISC CPU tervezése

Assembly. Iványi Péter

16F628A megszakítás kezelése

Az integrált áramkörök kimenetének kialakítása

A 6502 mikroprocesszor

Mi az assembly? Gyakorlatias assembly bevezető. Sokféle assembly van... Mit fogunk mi használni? A NASM fordítóprogramja. Assembly programok fordítása

DDS alapú szinusz jelgenerátor fejlesztése

assume CS:Code, DS:Data, SS:Stack Start: xor di, di mov si, 1 Torles int 10h mov dl, 40 xor bh, bh mov ah, 02h Kesleltet int 16h

Máté: Assembly programozás

Mikrovezérlők mechatronikai alkalmazásai

Archi2 Gyak. (Processzorok Utasításszintű Kezelése) 2014 ősz

Számítógép Architektúrák (MIKNB113A)

Informatika 1 2. el adás: Absztrakt számítógépek

Bevezetés az informatikába

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

Processzorok Utasításszintű Kezelése tavasz

Assembly Rekurzív függvények, EXE, C programok. Iványi Péter

Vezérlés és irányítástechnológia (Mikroprocesszoros irányítás)

Mechatronika és mikroszámítógépek

Digitális technika II. (vimia111) 5. gyakorlat: Mikroprocesszoros tervezés, egyszerű feladatok HW és SW megvalósítása gépi szintű programozással

Számítógép architektúrák

A SAB80515/80535-ÖS MIKROKONTROLLER

Stack Vezérlés szerkezet Adat 2.

Számítógépek felépítése, alapfogalmak

MSP430 programozás Energia környezetben. Az I/O portok kezelése

1. ábra: Perifériára való írás idődiagramja

Pénzügyi algoritmusok

PE/COFF fájl formátum

Assembly programozás levelező tagozat

AVR assembly és AVR C modulok együttes használata AVR C projektben. Összeállította: Sándor Tamás

Az MSP430 mikrovezérlők digitális I/O programozása

Mintavételes szabályozás mikrovezérlő segítségével

Bevezetés a számítástechnikába

Computer Architectures

Előszó avagy Murphy és az optimizmus. Tartalomjegyzék

Számítógépek felépítése, alapfogalmak

Operandus típusok Bevezetés: Az utasítás-feldolgozás menete

A Számítógépek hardver elemei

Máté: Számítógép architektúrák

Aritmetikai utasítások I.

Adatbázis-kezelés ODBC driverrel

INTEL 8085 gépi utasításkészlete

A regiszterek az assembly programozás változói. A processzor az egyes mőveleteket kizárólag regiszterek közremőködésével tudja végrehajtani.

Assembly Címzési módok. Iványi Péter

BELÉPTETİ RENDSZER TERVEZÉSE

Assembly. Iványi Péter

Máté: Számítógép architektúrák

Intel x86 utasításkészlet + disassembler működése

Silabs STK3700, Simplicity Studio laborgyakorlat

Számítógép Architektúrák

Máté: Számítógép architektúrák

Máté: Számítógép architektúrák

A PicoBlaze vezérlő alkalmazása a LOGSYS kártyán

Járműfedélzeti rendszerek I. 5. előadás Dr. Bécsi Tamás

Bevezetés a mikrovezérlők programozásába: I/O portok kezelése, számrendszerek, bitműveletek

Aritmetikai és logikai műveletek. Adattömb kezelése.

Számítógépek felépítése

Járműfedélzeti rendszerek I. 4. előadás Dr. Bécsi Tamás

Intel x86 utasításkészlet

Máté: Assembly programozás

S z á m í t ó g é p e s a l a p i s m e r e t e k

2016/08/31 02:45 1/6 Hardver alapok

Az MSP430 energiatakarékos használata

Digitális technika II., 2009/2010 tavasz 1. vizsga A csoport

ALKALMAZÁSOK ÉS ESETTANULMÁNYOK I-II.

Miért van szükség fordítóprogramokra? Fordítóprogramok célja és szerkezete. Miért van szükség fordítóprogramokra?

A Számítógépek hardver elemei

A számítógép alapfelépítése

Átírás:

Jelfeldolgozás a közlekedésben 2015/2016 II. félév Bevezetés az assembly nyelvbe

Memóriacímzési módok Általános forma: instruction destination, source Addressing Modes Címzési mód Instruction /Utasítás Register Regiszter MOV A, B Direct Direkt pl. SFR regiszterek MOV 30H,A Indirect Indirekt pl. felső 128 B RAM, pointer ADD A,@R0 Immediate Constant Konstans/Literál ADD A,#0x80 Relative Relatív SJMP AHEAD Absolute Abszolút AJMP BACK Long Távoli LJMP FAR_AHEAD Indexed Indexelt MOVC A,@A+DPTR 2016.02.25. Bevezetés az assembly nyelvbe 2

Memóriacímzési módok Regiszter címzés Pl. MOV P5, A F5 85 Legyen <A> = 2CH, ez lesz áttöltve a P5 portra. Direkt címzés Pl. MOV A, 20H E5 20 Legyen <20H> = B7H, ez lesz áttöltve az akkumulátorba. Indirekt címzés - pointer Pl. MOV @R0,A F6 Legyen <R0> = 82H; <A> = A9H; Eredmény : 82H című rekesz tartalma A9H lesz. Fontos : indirekt címzéshez csak az R0, R1 és DPTR használható. 2016.02.25. Bevezetés az assembly nyelvbe 3

Memóriacímzési módok Külső memória (64 k) elérése: Pl. MOVX A,@DPTR E0 Legyen <DPTR> = 1200H; <1200H> = C5H; Eredmény : A = C5H lesz. Indexelt címzés Pl. MOVC A,@A+DPTR 02 80 02 A kód szegmensnek (ROM) az <A> + DPTR című memória értéke lesz áttöltve az akkumulátorba. Az akkumulátor index regiszterként használatos Ciklus szervezéséhez (vagy táblázat kezeléséhez) használjuk 2016.02.25. Bevezetés az assembly nyelvbe 4

Memóriacímzési módok Konstans/Literál címzés Pl. ADD A,#25 24 19 Legyen <A> = 20H; Az eredmény A = 39H lesz. Legyen <A> = F0H; Az eredmény A = 09H és CY=1 lesz. Relatív címzés Pl. SJMP #25 80 17 és nem 19! Előre ugrik 23-at a jelen utasítás (2 byte) végétől! Pl. SJMP #-20 80 EA -16H és nem -14H! Visszafelé ugrik 22-őt a jelen utasítás (2 byte) végétől! Az ugrás -128.. 127 címtartományban lehet (8 bit komplemens) Ugró és feltételes ugró utasítások használják (CJNE, DJNZ, JZ stb.) 2016.02.25. Bevezetés az assembly nyelvbe 5

Memóriacímzési módok Abszolút címzés Pl. AJMP #200H 02 00 Előre ugrik a 200H címre Az ugrás 0..2047 (0..=7FFH) címtartományban lehet (11 bit) Az AJMP és ACALL utasítások használják Távoli címzés Pl. LJMP #8002H 02 80 02 Előre ugrik a 8002H címre A cím 16 bit, ugrás 0..=FFFFH címtartományban lehet (16 bit) Az LJMP és LCALL utasítások használják 2016.02.25. Bevezetés az assembly nyelvbe 6

Utasítás csoportok Arithmetic Operations - Aritmetikai Logical Operations - Logikai Data Transfer Operations - Adatmozgatás Boolean Variable Op. - Bit szintű logika Program Branching Op. - Elágazások Általános forma: instruction destination, source 2016.02.25. Bevezetés az assembly nyelvbe 7

Aritmetikai utasítások Mnemonic Description Mnemonic Description ADD A, Rn A = A + [Rn] INC A A = A + 1 ADD A, direct A = A + [direct memory] INC Rn [Rn] = [Rn] + 1 ADD A,@Ri A = A + [memory pointed to by Ri] INC direct [direct] = [direct] + 1 ADD A,#data A = A + immediate data INC @Ri [@Ri] = [@Ri] + 1 ADDC A,Rn A = A + [Rn] + CY DEC A A = A - 1 ADDC A, direct A = A + [direct memory] + CY DEC Rn [Rn] = [Rn] - 1 ADDC A,@Ri A = A + [memory pointed to by Ri] + CY DEC direct [direct] = [direct] - 1 ADDC A,#data A = A + immediate data + CY DEC @Ri [@Ri] = [@Ri] - 1 SUBB A,Rn A = A - [Rn] - CY MUL AB Multiply A & B SUBB A, direct A = A - [direct memory] - CY DIV AB Divide A by B SUBB A,@Ri A = A - [@Ri] - CY DA A Decimal adjust A SUBB A,#data A = A - immediate data - CY 2016.02.25. Bevezetés az assembly nyelvbe 8

Logikai utasítások Mnemonic Description Mnemonic Description ANL A, Rn A = A & [Rn] XRL A, Rn A = A XOR [Rn] ANL A, direct A = A & [direct memory] XRL A, direct A = A XOR [direct memory] ANL A,@Ri A = A & [memory pointed to by Ri] XRL A,@Ri A = A XOR [@Ri] ANL A,#data A= A & immediate data XRL A,#data A = A XOR immediate da ta ANL direct,a [direct] = [direct] & A XRL direct,a [direct] = [direct] XOR A ANL direct,#data [direct] = [direct] & immediate data XRL direct,#data [direct] = [direct] XOR immediate data ORL A, Rn A = A OR [Rn] CLR A Clear A ORL A, direct A = A OR [direct] CPL A Complement A ORL A,@Ri A = A OR [@Ri] RL A Rotate A left ORL A,#data A = A OR immediate data RLC A Rotate A left (through C) ORL direct,a [direct] = [direct] OR A RR A Rotate A right ORL direct,#data [direct] = [direct] OR immediate data RRC A Rotate A right (through C) SWAP A Swap nibbles 2016.02.25. Bevezetés az assembly nyelvbe 9

Adat mozgató utasítások Mnemonic MOV @Ri, direct MOV @Ri, #data MOV DPTR, #data 16 MOVC A,@A+DPTR MOVC A,@A+PC MOVX A,@Ri MOVX A,@DPTR MOVX @Ri, A MOVX @DPTR,A PUSH direct POP direct XCH A,Rn XCH A, direct XCH A, @Ri XCHD A,@Ri Description [@Ri] = [direct] [@Ri] = immediate data [DPTR] = immediate data A = Code byte from [@A+DPTR] A = Code byte from [@A+PC] A = Data byte from external ram [@Ri] A = Data byte from external ram [@DPTR] External[@Ri] = A External[@DPTR] = A Push into stack Pop from stack A = [Rn], [Rn] = A A = [direct], [direct] = A A = [@ Rn], [@Rn] = A Exchange low order digits 2016.02.25. Bevezetés az assembly nyelvbe 10

Bit vezérelt utasítások Mnemonic Description CLR C Clear CY CLR bit Clear direct bit SETB C Set CY SETB bit Set direct bit CPL C Complement CY CPL bit Complement direct bit ANL C,bit AND bit with CY ANL C,/bit AND NOT bit with CY ORL C,bit OR bit with CY ORL C,/bit OR NOT bit with CY MOV C,bit MOV bit to CY MOV bit,c MOV CY to bit JC rel Jump if CY set JNC rel Jump if CY not set JB bit,rel Jump if specified bit set JNB bit,rel Jump if specified bit not set JBC bit,rel if specified bit set then clear it and jump 2016.02.25. Bevezetés az assembly nyelvbe 11

Elágazások Mnemonic Description ACALL addr11 Absolute subroutine call LCALL addr16 Long subroutine call RET Return from subroutine RETI Return from interrupt AJMP addr11 Absolute jump LJMP addr16 Long jump SJMP rel Short jump JMP @A+DPTR Jump indirect JZ rel Jump if A=0 JNZ rel Jump if A NOT=0 CJNE A,direct,rel CJNE A,#data,rel CJNE Rn,#data,rel Compare and Jump if Not Equal CJNE @Ri,#data,rel DJNZ Rn,rel DJNZ direct,rel Decrement and Jump if Not Zero NOP No Operation 2016.02.25. Bevezetés az assembly nyelvbe 12

8051 ASM alapstruktúrák 1. Egyszerű elágazás (If-Then-Else) If a=2 then p5:=255 else p5:=31; cjne a,#2,else ; ha a<>2 ugrás az else-re mov P5,#0xFF ; then ág sjmp forward else: mov P5,#31 ; else ág forward: If r1>=r2 then r2:=r2+1 else r2:=r2-1; clr c mov a,r1 subb a,r2 jc else inc r2 sjmp forward else: dec r2 forward: ; Carry=0, ha r1>=r2 ; then ág ; else ág 2016.02.25. Bevezetés az assembly nyelvbe 13

8051 ASM alapstruktúrák 2. Értékvizsgálat (Case) Case r1 of 1 : P5:=$1F; 2 : P5:=$2F; 4 : P5:=$3F; 8 : P5:=$4F else P5:=$5F; end; case_1: cjne r1,#1,case_2 orl P5,#0x1F sjmp forward case_2: cjne r1,#2,case_4 orl P5,#0x2F sjmp forward case_4: cjne r1,#4,case_8 orl P5,#0x3F sjmp forward case_8: cjne r1,#8,case_else orl P5,#0x4F sjmp forward case_else: orl P5,#0x5F forward: 2016.02.25. Bevezetés az assembly nyelvbe 14

8051 ASM alapstruktúrák 3. Feltételes Ciklusok while r2<>[0xa8] do [0xA8]:=[0xA8]+1; r0:=$80 repeat r0:=r0/2; until r0=$10 whileloop: mov a,r2 cjne a,0xa8,loopkernel sjmp forward loopkernel: inc 0xA8 sjmp whileloop forward: mov r0,#0x80 repeat_loop: mov a,r0 mov b,#2 div ab mov r0,a cjne r0,#0x10,repeat_loop 2016.02.25. Bevezetés az assembly nyelvbe 15

GPIO Konfigurálása Port Addr GPIO mode Addr Info P0 (bit add) 0x80 P0MDOUT.[7:0] 0xA4 bitenként 0:Open-Drain 1:PushPull P1 (bit add) 0x90 P1MDOUT.[7:0] 0xA5 bitenként 0:Open-Drain 1:PushPull P1MDIN.[7:0] 0xBD bitenként 0:Analog in 1:GPIO P2 (bit add) 0xA0 P2MDOUT.[7:0] 0xA6 bitenként 0:Open-Drain 1:PushPull P3 (bit add) 0xB0 P3MDOUT.[7:0] 0xA7 bitenként 0:Open-Drain 1:PushPull P3IF 0xAD Port 3 interrupt flag register P4 (byte ) 0x84 P74OUT 0xB5 P74OUT.1 -> P4[7:4]; P74OUT.0->P4[3:0] P5 (byte ) 0x85 P74OUT 0xB5 P74OUT.3 -> P5[7:4]; P74OUT.2->P5[3:0] P6 (byte ) 0x86 P74OUT 0xB5 P74OUT.5 -> P6[7:4]; P74OUT.4->P6[3:0] P7 (byte ) 0x96 P74OUT 0xB5 P74OUT.7 -> P7[7:4]; P74OUT.6->P7[3:0] XBR2.6 XBARE Crossbar Enable Bit. 0: Crossbar disabled. All pins on Ports 0, 1, 2, 3, are forced to Input mode. 1: Crossbar enabled. 2016.02.25. Bevezetés az assembly nyelvbe 16

Portok vezérlésének beállítása P74OUT (Port 7 4 output mode) regiszter Alapéretelmezett értéke: 0x00 (reset után ide áll vissza) Px (Ports x data) regiszter x: 7 4 (P4, P5, P6, P7) 2016.02.25. Bevezetés az assembly nyelvbe 17

Watchdog timer Watchdog Timer Control Register (WDTCN) 0xFF Engedélyezés, újraindítás: mov WDTCN,#0xA5 Letiltás: mov WDTCN,#0xDE mov WDTCN,#0xAD Letiltás letiltása: mov WDTCN,#0xFF Tankönyv 89. oldaltól.. 2016.02.25. Bevezetés az assembly nyelvbe 18

Első ASM program Első ASM program: LED villogtatás (mindegyik/csak 1) 1 sec időközzel A mai óra lépései: Ismerkedés a fejlesztői környezettel Általános programváz kialakítása valamennyi programot ez alapján írjuk majd meg RAM SFR memóriaterületek definiálása Kódszegmens megadása Inicializáló szubrutin megírása Programtörzs (végtelen ciklus!!!!!!!) megírása Nagyon egyszerű időzítés megírása (ZH-n nem elfogadható) A megírt program működtetése 2016.02.25. Bevezetés az assembly nyelvbe 19

Új project Silabs IDE 1. Eszköz összeállítása, majd csatlakoztatása USB kábelen keresztül a számítógépre 2. Fejlesztői környezet elindítása 3. Option/Connection Options USB adapter ellenőrzése 4. Project/Tool Chain Integration - SDCC ellenőrzése Assembler: Program Files/SDCC/bin/asx8051.exe Compiler és Linker: Program Files/SDCC/bin/sdcc.exe 5. Project/New Project: C80510F2x és Blank Project (név és hely megadásával) 6. File/New File: ASM Source File és Add to Project (név és hely megadásával) 7. Program megírása, Rebuild All, Connect, DL, Zöld gomb 8. Mentés, végén kimentés wordpad (.txt) formátumba, így elegendő egy projekt az egész ASM félévre 2016.02.25. Bevezetés az assembly nyelvbe 20

A következő órára Otthoni EGYÉNI - feladat: Módosítsuk a mai órán megírt programot úgy, hogy a LED-ek az alábbi sorrendben világítsanak egy végtelen ciklusban!: P5.4, P5.6, P5.5, P5.7 A programot a lehető legegyszerűbben írjuk meg, egy időzítéssel! Egy másodpercig világít, majd jön a következő, amely szintén egy másodpercig világít, stb. Most még használjuk az órán megírt időzítést! Ha időnk engedi, írjuk meg a programot (az órait is) többféleképpen is! (Többféle, egymástól alig különböző megoldás is lehetséges.) Lehet játszani különböző ciklikus LED kiírásokkal, álmodjátok meg Beküldés:.txt formátumban: gyakot megelőző este 8 óra! Tankönyv 3. fejezete (kb. 30 oldal). Következő alkalom: Gombkezelés Szekvenciák 2016.02.25. Bevezetés az assembly nyelvbe 21

Bevezetés az assembly nyelvbe Vége a második gyakorlatnak. 22