Programowanie mikroprocesora ColdFire - instrukcje asemblera
|
|
- Feliks Biernacki
- 8 lat temu
- Przeglądów:
Transkrypt
1 Programowanie mikroprocesora ColdFire - instrukcje asemblera 1
2 Rodzaje instrukcji procesora ColdFire (1) Arytmetyczne Transferu danych Sterujące przepływem programu Logiczne oraz arytmetyczne przesunięcia Operacje na bitach Specjalne Diagnostyczne Sterujące pamięcią podręczną 2
3 Rodzaje instrukcji procesora ColdFire (2) 3
4 Rozszerzona lista instrukcji ColdFire V2 4
5 Asemblacja programu (1) /opt/labtools/cold-asm test.asm /opt/gnutools/bin/m68k-elf-as -Wa -as -m 528x gp.asm -g -o test.o > test.lst -a[sub-option...] -mcpu=<cpu> turn on listings, set cpu [default 68020] s - include symbols Architecture variants are: cpu x x x -m[no-]float enable/disable architecture extension -m[no-]div enable/disable ColdFire architecture extension -m[no-]usp enable/disable ColdFire architecture extension -m[no-]mac enable/disable ColdFire architecture extension -m[no-]emac enable/disable ColdFire architecture extension -g --gen-debug generate debugging information /opt/gnutools/bin/m68k-elf-ld -T /opt/labtools/cobra5282-ram.ld test.o -o test.elf -o FILE, --output FILE -T FILE, --script FILE test.asm Set output file name Read linker script => test.o, test.lst => test.elf 5
6 Asemblacja programu (2) file test.elf test.elf: ELF 32-bit MSB executable, Motorola version 1 (SYSV), statically linked, not stripped lab@dmakow:/home/dmakow/motorola/!/asm/link# file test.lst test.lst: ISO-8859 assembler program text lab@dmakow:/home/dmakow/motorola/!/asm/link# file test.o test.o: ELF 32-bit MSB relocatable, Motorola version 1 (SYSV), not stripped lab@dmakow:/home/dmakow/motorola/!/asm/link# file test.asm test.asm: ISO-8859 assembler program text 68K GAS test.asm 1.equ 2 _start: MAIN: C FFFF C1C1 page 1 IPSBAR, 0x Plik test.lst bra.w MAIN MOVE.L #-1000,%D0 MULS.W %D1, %D0 6
7 Rejestry procesora a GDB (gdb) info r d0 d1 d2 d3 d4 d5 d6 d7 a0 a1 a2 a3 a4 a5 fp sp 0x0 0xc 0x20 0x28ebc06c 0x0 0x85820a45 0xd6d6d6d6 0x605b3e56 0x x5c44 0x6de0c5d3 0x x167a 0x80014cc1 0x5b94 0x5b x x5c44 0x6de0c5d3 0x x167a 0x80014cc1 0x5b94 0x5b94 ps pc vbr cacr acr0 acr1 rambar mbar 0x2704 0xffc2cda4 0x100 0x0 0x600b0000 0x5d xf x1ffff xffc2cda x5d csr aatr tdr pbr pbmr abhr ablr dbr dbmr 0x x5 0x xffc04ee0 0x0 0x0 0x0 0x0 0x
8 Kod instrukcji (Opcode) 8
9 Notacja 9
10 Instrukcje arytmetyczne (1) 10
11 ADD Tryby adresowania argumentu źródłowego <ea>y: Dy, Ay, (Ay), (Ay)+, -(Ay), (d16,ay), (d8,ay,xi), (xxx).w/l, #<data>, (d16,pc), (d8,pc,xi) Tryby adresowania argumentu docelowego <ea>x: (Ax), (Ax)+, -(Ax), (d16,ax), (d8,ax,xi), (xxx).w/l 11
12 ADDA.L <ea>y, Ax Tryby adresowania argumentu źródłowego <ea>y: Dy, Ay, (Ay), (Ay)+, -(Ay), (d16,ay), (d8,ay,xi), (xxx).w/l, #<data>, (d16,pc), (d8,pc,xi) ADD.L %D0, %D1 ADD.L %D0, %D0 ADD.L %D0, %A0 ADD.L %A0, %D0 ADDA.L %D0, %A0 ADDA.L %A0, %A0 ADDA.L %A0, %D a 2 001e Error: operands mismatch -- statement `adda.l %A0,%D0' ignored D3F0 1CEC D3FC ADDA.L ADDA.L -20(%A0, %D1*4), %A1 #0x03, %A1 12
13 ADDI.L #<data>, Dx 1 001a ADDI.L #0x09, %D ADDI.L #0x03, %D1 3???? ADDI.L #1, %A0 Error: operands mismatch -- statement `addi.l #1,%A0' ignored 13
14 ADDQ.L #<data>, <ea>x 1-8 Tryby adresowania argumentu docelowego <ea>x: Dx, Ax, (Ax), (Ax)+, -(Ax), (d16,ax), (d8,ax,xi), (xxx).w/l 1 001a FFFF FFFF 5682 ADDI.L #0x01, %D1 ADDI.L #0xFFFFFFFF, %D1 ADDQ.L #0x3, %D a 5 001a 6 001c D2B ADD.L ADD.L ADD.L #0x03, %D1 => ADDQ #0x09, %D1 => ADDI 0x03, %D1 => ADD ADDQ.L #0x9, %D3 gp.asm:30: Error: operands mismatch -statement `addq.l #0x9,%D3' ignored ADDQ.L #0x0, %D2 gp.asm:31: Error: operands mismatch -statement `addq.l #0x0,%D2' ignored 14
15 ADDX.L Dy, Dx D D983 ADDX.L ADDX.L %D3, %D4 %D3, %D4 Dodawanie 64-bitowych liczb całkowitych ADD.L ADDX.L %D0, D2% %D1, %D3 [D2] <= [D2] + [D0] [D3] <= [D3] + [D1] + [Y] 15
16 SUB 1 001a 93F0 1CEC SUB.L -20(%A0, %D1*4), %A e 95D0 SUBA.L (%A0), %A SUBI.L #0x03, %D SUBQ.L #0x3, %D SUBX.L %D0, %D3 16
17 NEG / NEGX Generuje liczbę ujemną w kodzie U C E e 4480 MOVE.L #1000,%D0 NEG.L %D0 D0 = 1000 D0 =
18 EXT / EXTB MOVE.B EXTB.L # - 0x55,%D0 %D0 0xEEEE.EEAB 0xFFFF.FFAB MOVE.B EXT.W # - 0x55,%D0 %D0 0xEEEE.EEAB 0xEEEE.FFAB MOVE.W EXT.L # 0xF667,%D0 %D0 0xEEEE.F667 0xFFFF.F xA = 1010 b
19 Instrukcje arytmetyczne (2) Instrukcje arytmetyczne realizują pięć podstawowych operacji ADD, SUB, MUL, DIV, REM. Dodatkowo w powyższej grupie umieszczono instrukcje porównujące, zerujące oraz instrukcję negacji. Instrukcje MUL, DIV oraz REM operują na argumentach ze znakiem: mnożenie liczb 16 bitowych zwraca liczbę 32 bitową, mnożenie liczb 32 bitowych zwraca liczbę 32 bitową, dzielenie liczby 32 bitowej zwraca dwie liczby 16 bitowe (wynik dzielenie oraz reszta), dzielenie liczby 32 bitowej zwraca liczbę 32 bitową - wynik dzielenie lub, dzielenie liczby 32 bitowej zwraca liczbę 32 bitową reszta z dzielenia. Grupa instrukcji umożliwiających realizację operacji wielokrotnej precyzji: ADDX, SUBX, EXT, NEGX. Operacje umożliwiające wykorzystanie modułu EMAC przetwarzanie sygnałów, filtry cyfrowe, itd. 19
20 MULU operacja mnożenia MULU.W MULU.L <ea>y. Dx <ea>y. Dx Operacja Wynik Dx 16 x x bit 32-bit Tryby adresowania argumentu źródłowego (Word) <ea>y: Dy, (Ay), (Ay)+, -(Ay), (d16,ay), (d8,ay,xi), (xxx).w/l, #<data>, (d16,pc), (d8,pc,xi) Tryby adresowania argumentu źródłowego (Longword) <ea>y: Dy, (Ay), (Ay)+, -(Ay), (d16,ay) Bit V rejestru CCR jest zawsze zerowany nie ma informacji o przepełnieniu MOVE.L #1000,%D0 MOVE.L #300,%D1 MULU.W %D1, %D0 (gdb) p $d1 $3 = 300 (gdb) p $d0 $4 =
21 MULS operacja mnożenia (ze znakiem) MULS.W MULS.L <ea>y. Dx <ea>y. Dx Operacja Wynik Dx 16 x x bit 32-bit Tryby adresowania argumentu źródłowego (Word) <ea>y: Dy, (Ay), (Ay)+, -(Ay), (d16,ay), (d8,ay,xi), (xxx).w/l, #<data>, (d16,pc), (d8,pc,xi) Tryby adresowania argumentu źródłowego (Longword) <ea>y: Dy, (Ay), (Ay)+, -(Ay), (d16,ay) Bit V rejestru CCR jest zawsze zerowany nie ma informacji o przepełnieniu MOVE.L # -1000,%D0 MOVE.L #300,%D1 MULS.W %D1, %D0 (gdb) p$d0 $1 = (gdb) p$d1 $2 =
22 DIVU (dzielenie liczb dodatnich) DIVU.W DIVU.L <ea>y. Dx <ea>y. Dx Operacja Wynik Dx 32-bit Dx/16bit <ea>y 32-bit Dx/32bit <ea>y 16reszta:16wynik 32-bit wynik Tryby adresowania argumentu źródłowego (Word) <ea>y: Dy, (Ay), (Ay)+, -(Ay), (d16,ay), (d8,ay,xi), (xxx).w/l, #<data>, (d16,pc), (d8,pc,xi) Tryby adresowania argumentu źródłowego (Longword) <ea>y: Dy, (Ay), (Ay)+, -(Ay), (d16,ay) MOVE.L #1000,%D0 MOVE.L #20,%D1 DIVU.W %D1, %D0 (gdb) p $d1 $3 = 50 (gdb) p/x $ps $4 = 0x2700 MOVE.L #1000,%D0 MOVE.L #300,%D1 DIVU.W %D1, %D0 (gdb) p $d1 $3 = 0x (gdb) p/x $ps $4 = 0x
23 DIVS (dzielenie liczb ze znakiem) DIVS.W DIVS.L <ea>y. Dx <ea>y. Dx Operacja Wynik Dx 32-bit Dx/16bit <ea>y 32-bit Dx/32bit <ea>y 16reszta:16wynik 32-bit wynik Tryby adresowania argumentu źródłowego (Word) <ea>y: Dy, (Ay), (Ay)+, -(Ay), (d16,ay), (d8,ay,xi), (xxx).w/l, #<data>, (d16,pc), (d8,pc,xi) Tryby adresowania argumentu źródłowego (Longword) <ea>y: Dy, (Ay), (Ay)+, -(Ay), (d16,ay) MOVE.L # ,%D0 MOVE.L #20,%D1 DIVU.W %D1, %D0 (gdb) p $d1 $3 = 0xffce (0xFFCE= - 50) (gdb) p/x $ps $4 = 0x2708 MOVE.L #1000,%D0 MOVE.L # - 300,%D1 DIVS.W %D1, %D0 (gdb) p $d1 $1 = 0x64.fffd (0xFFFD= - 3) (gdb) p/x $ps $4 = 0x
24 REMS / REMU (reszta z dzielenia) Operacja REMS.L REMU.L <ea>y. Dw:Dx <ea>y. Dw:Dx Wynik 32-bit Dx/32bit <ea>y 32-bit Dx/32bit <ea>y 32-bit reszta w Dw 32-bit reszta w Dw Tryby adresowania argumentu źródłowego (Longword) <ea>y: Dy, (Ay), (Ay)+, -(Ay), (d16,ay) MOVE.L # 1000,%D0 MOVE.L # 300,%D1 MOVE.L # 0xD2D2D2D2,%D2 REMU.L %D1, %D2:%D0 (gdb) p $d2 $7 = 100 (gdb) p $d1 $8 = 300 (gdb) p $d0 $9 = 1000 (gdb) 24
25 Instrukcje sterujące przepływem programu (1) 25
26 Bcc.B <label>, Bcc.W <label> BCC.L read_uart Error: Invalid instr. for this architecture; needs 5407,... statement ignored BCC.W read_uart 26
27 Struktura warunkowa typu SWITCH (1) short TEST; switch (TEST){ TEST:.align 2.byte 0x0001 case 0:... break; case 1:... break; case 2:... break; default:... break; } 27
28 Struktura warunkowa typu SWITCH (2) CASE: MOVE.B EXTB.L BEQ.S SUBQ.L BEQ.S SUBQ.L BEQ.S OTHERS: CLR.B BRA.S TEST, %D0 %D0 ACT1 #1, %D0 ACT2 #1, %D0 ACT3 sprawdź zmienną TEST %D1 EXIT ACT1: CLR.B BRA.S %D2 EXIT case if TEST=0 ACT2: CLR.B BRA.S %D3 EXIT case if TEST=1 ACT3: CLR.B BRA.W %D4 EXIT case if TEST=2 EXIT: 28
29 Konwersja HEX na ASCII (1) HEX A... F -> -> -> -> -> ASCII??...?...? D1 - licznik 0-15 D0 - wynik ASCII ASCII:.byte 0x00, 0x00, 0x
30 Konwersja HEX na ASCII (2) 0 LEA CLR.L NEXT: MOVE.L ADDI.L a 0C CMPI.L BLS.B E80 ADDQ.L EXIT: MOVE.L ADDQ.L CMPI.L 34 BNE ASCII, %A3 %D1 %D1,%D0 #0x30, %D0 #0x39, %D0 EXIT #0x7, %D0 %D0, (%A3)+ #1,%D1 #16, %D1 NEXT skok BLS.W E80 ADDQ.L EXIT: MOVE.L HEX clr.l next: 0 move.l 1 addi.l 2 cmpi.l 3 bls.s 4 addq.l exit: 5 move.l.. addq.l. bra 9 A B C D E F ASCII %D1 0x30 %D1, %D0 0x31 #0x30, %D0 0x32 #0x39, %D0 0x33 exit 0x34 #0x7, %D0 0x35 %D0, %D3.. %D1 #1,. next 0x39 0x41 0x42 0x43 0x44 0x45 0x46 EXIT #0x7, %D0 %D0, %D3 30
31 Bcc tablica warunków 31
32 Scc.B Dx BSR GET_DATA GET_DATA zwraca dana lub -1 w przypadku niepowodzenia CLR.B TST.L FLAG %D0 SPL.B MOVE.B %D1 %D1,FLAG BMI.S NEXT MOVE.B #0xFF, %D1 MOVE.B %D1, FLAG NEXT: HALT 32
33 BRA.sz <label> BRA - skok bezwarunkowy względny ( lub ) BRA.W LCD_subroutine BRA.B LCD_subroutine FF BRA.L LCD_subroutine Error: invalid instruction for this architecture; needs 68020,... statement `bra.l exit' ignored 33
34 JMP <ea>y Skok bezwarunkowy do adresu absolutnego podanego jako argument. Instrukcja umożliwia wykonanie skoku w zakresie dostępnej przestrzeni adresowej (4 GB, w kodzie instrukcji umieszczony zostaje 32-bitowy adres). Tryby adresowania argumentu <ea>y: (Ay), (d16,ay), (d8,ay,xi), (xxx).w/l, (d16,pc), (d8,pc,xi) a c ED0 4EF0 7CF6 4EF8 FF00 4EF9 EFFF FF00 JMP JMP JMP JMP (%A0) -10(%A0, %D7*4) 0xFFFFFF00 0xEFFFFF00 34
35 JSR <ea>y <=> BSR.sz <label> JSR <ea>y Skok bezwarunkowy do po podprogramu (adres absolutny podany jako argument). Instrukcja umożliwia wykonanie skoku w zakresie dostępnej przestrzeni adresowej (4 GB, w kodzie instrukcji umieszczony zostaje 32-bitowy adres). Programy wykonujące skok do etykiet są nierelokowalne. Tryby adresowania argumentu <ea>y: (Ay), (d16,ay), (d8,ay,xi), (xxx).w/l, (d16,pc), (d8,pc,xi) BSR.sz <label> Skok bezwarunkowy JSR, JMP do po podprogramu (adres względny). Programy wykonujące skok do etykiet są relokowalne. EXCEPTION_1:... JSR... RTS BSR.W... EXCEPTION_1 LED_display LED_display: RTS 35
36 NOP Instrukcja nie wykonująca żadnej operacji. Zwiększa licznik programu. Instrukcja synchronizuje potok. Wykorzystywania do generowania niewielkich opóźnień. MOVE.L #0, %D0 MOVE.L #1000, %D NEXT: 01b4 4E71 01b6 4E71 01b8 4E71 NOP NOP NOP NOP NOP NOP NOP NOP ADDQ.L #1, %D0 CMP.L %D1, %D0 BNE NEXT EXIT: 36
37 TFP.sz #<data> Instrukcja nie wykonująca żadnej operacji. Zwiększa licznik programu. Instrukcja nie synchronizuje potoku. Wykorzystywania do wyrównywania programu. if (a == b) else TPF.W #2 z = 1; z = 2; CMP.L BEQ.B MOVEQ.L BRA.B label0: MOVE.L label1: %D0, %D1 label0 #2, %d2 label1 #1, %d2 37
38 TST.sz <ea>y Instrukcja porównuje podany operand z wartością równą zero, ustawia bity rejestru statusowego SR. while (Data == 0) { Data--; } NEXT: TST.L BEQ.B SUBQ.L BRA.B EXIT:... Data:.long 5 Data EXIT #1, Data NEXT Tryby adresowania argumentu <ea>y: Dy, Ay, (Ay), (Ay)+, -(Ay), (d16,ay), (d8,ay,xi), (xxx).w/l, #<data>, (d16,pc), (d8,pc,xi) 38
39 RTS 39
40 Instrukcje transferu danych Instrukcje przenoszenia danych operują na 8, 16 lub 32 bitach. Umożliwiają przesłanie danych z pamięci do pamięci, z pamięci do rejestru lub odwrotnie. Procesory wyposażone w jednostką do obliczeń zmiennoprzecinkowych posiadają rozbudowaną liczbę instrukcji operujących na liczbach zmiennoprzecinkowych pojedynczej lub podwójnej precyzji. 40
41 LEA.L <ea>y, Ax Ładuje obliczony adres efektywny do rejestru Ax. Nie modyfikuje CCR. MOVE.L #0x100, %D4 LEA LEA 0x , %A5 0x5(%A0, %D4.L*2), %A6 (gdb) p $fp $2 = (void *) 0x Tryby adresowania argumentu <ea>y: (Ay), (d16,ay), (d8,ay,xi), (xxx).w/l, (d16,pc), (d8,pc,xi) 41
42 Program relokowalny Odczyt danej z tablicy: Zapis danej do tablicy: MOVE.B MOVE.B TABLE(%PC), %D0 %D0, TABLE(%PC) Error: operands mismatch -statement `move.b %D0,TABLE(%PC)' ignored LEA MOVE.B TABLE:.byte TABLE(%PC), %A0 %D0, (%A0) 0x1, 0x2, 0x3, 0x44, 0x55, 0x66 42
43 PEA.L <ea>y MOVEA.L MOVE.L #0xF , %A0 #0x100, %D0 PEA -10(%A0, %D0*2) (gdb) bt 8 #0 _stext () at gp.asm:27 #1 0xf000019c in?? () #2 0x in?? () #3 0x in?? () #4 0xaffbcaff in?? () #5 0xafdfecff in?? () #6 0xeffffeff in?? () #7 0xdffeebff in?? () Tryby adresowania argumentu <ea>y: (Ay), (d16,ay), (d8,ay,xi), (xxx).w/l, (d16,pc), (d8,pc,xi) 43
44 Przekazywanie parametrów do procedury (1) void ProcessData (int &DataToSend, int &ReceivedData, int &FrameNumber, int &BaudRate) { } void main (void) { int DataToSend=0xAA11; int ReceivedData=0xBB22; int FrameNumber=0xCC33; int BaudRate=0xDD44; Process Data (DataToSend,ReceivedData, FrameNumber, BaudRate); } DataToSend: ReceivedData: FrameNumber: BaudRate:.align 4.long.long.long.long 0xAA11 0xBB22 0xCC33 0xDD44 MOVEA.L MOVEA.L MOVEA.L MOVEA.L MOVEA.L PEA PEA PEA PEA BSR LEA HALT #0x0, %A0 #0x3, %A3 #0x4, %A4 #0x5, %A5 #0x6, %A6 DataToSend ReceivedData FrameNumber BaudRate ProcessData 16(%SP), %SP ProcessData: LEA LEA MOVEM.L MOVEM.L MOVEM.L LEA RTS 4(%SP), %A0-16(%SP), %SP %A3-%A6,(%SP) (%A0), %A3-%A6 (%SP), %A3-%A6 16(%SP), %SP 44
45 Stos po wykonaniu skoku do podprogramu PEA DataToSend PEA ReceivedData PEA FrameNumber PEA BaudRate BSR ProcessData... ProcessData: LEA 4(%SP), %A0 LEA -16(%SP), %SP MOVEM.L %A3-%A6,(%SP) MOVEM.L (%A0), %A3-%A
46 Stos po wykonaniu drugiej inst. MOVEM Mapa pamięci stosu: (gdb) bt 12 #0 ProcessData () at gp.asm:43 #1 0x in?? () #2 0x in?? () #3 0x in?? () #4 0x in?? () #5 0x in _stext () at gp.asm:35 #6 0x in BaudRate () at gp.asm:342 #7 0x c in FrameNumber () at gp.asm:342 #8 0x in ReceivedData () at gp.asm:342 #9 0x in DataToSend () at gp.asm:342 #10 0x ?? () #11 0xe9affbff in?? () Mapa pamięci w której przechowywane są zmienne: (gdb) x/4x 0x x10264 <DataToSend>: 0x0000aa11 0x0000cc33 0x0000bb22 0x0000dd44 Rejestry procesora przed wykonaniem instrukcji MOVEM: (gdb) info r a0 0x5c54 0x5c54 a3 0x3 0x3 a4 0x4 0x4 a5 0x5 0x5 fp 0x6 0x6 sp 0x5c40 0x5c40 ps 0x pc 0x x10046 Rejestry procesora po wykonaniu drugiej instrukcji MOVEM: (gdb) info r a0 0x5c54 0x5c54 a3 0x x10284 a4 0x x10280 a5 0x1027c 0x1027c fp 0x x10278 sp 0x5c40 0x5c40 ps 0x pc 0x1005e 0x1005e 46
47 Alokacja pamięci na stosie 0x0...0 A7 d 0x0...0 zaalokowana pamięć Podprogramy wykorzystują struktury umieszczone na stosie przeznaczone do przechowywania: parametrów przekazywanych do podprogramu (wartości oraz adresy), adres powrotu z podprogramu, kopia rejestrów roboczych podprogramu (D0-D7/A0-A5), kopia poprzedniej wartości rejestru ramki A6, zarezerwowany obszar pamięci na stosie przeznaczony na zmienne lokalne. Adres powrotu 0xF...F BSR A7 Adres powrotu 0xF...F LEA -d(%a7), %A7 47
48 Ramka stosu 0x0...0 ramka stosu podprogramu A7 Stack Pointer d Zmienne lokalne Poprzedni wsk. ramki Kopia rejestrów systemowych Adres powrotu Parametry 0xF...F b (b<0) A6 Frame Pointer a (a>0) LINK UNLINK %FP, # -size %FP 48
49 Link.W Ay, #<displacement> / Unlink Ax Alokacja ramki stosu LINK Ay, # rozmiar Dealokacja ramki stosu UNLINK Ax 49
50 Przykład Napisać procedurę obliczającą wartość R równania: R = (P2 + Q2)/(P2 - Q2). Parametry P oraz Q przekazywane są przez stos, natomiast obliczona wartość R zwracana jest przez referencję. CALC (short P, short Q, short &R) { int temp_1; int temp_2; temp_1 = P * P; temp_2 = temp_1; temp_1 = temp_1 + Q * Q; temp_2 = temp_2 - Q * Q; } R = temp_1 / temp_2; 50
51 Program główny MAIN: FP MOVEA.L MOVEA.L MOVEQ.L MOVEQ.L MOVE.L # 0x00A6A600, %A6 # 0xA10000A1, %A1 # 5, %D0 # 4, %D1 # 0xD6D6D6D6, %D6 MOVE.W MOVE.W PEA BSR %D0,-(%SP) %D1,-(%SP) R CALC odłóż zmienna P na stos odłóż zmienna Q na stos odłóż referencję do R na stosie wywołanie procedury CALC LEA 8(%SP),%SP usuń zmienne ze stosu P,Q,R dealokacja pamięci na stosie P Q HALT R:.align 4.word 0xABCD R 51
52 Podprogram CALC: LEA MOVEM.L LINK MOVE.W MULU MOVE.L MOVE.L MOVE.W MULU ADD.L SUB.L MOVE.L DIVU LEA MOVEA.L MOVE.W UNLK MOVEM.L LEA RTS -8(%SP), %SP %D6/%A1,(%SP) %A6, # -8 22(%A6), %D6 %D6,%D6 %D6, -4(%A6) %D6, -8(%A6) 20(%A6), %D6 %D6, %D6 %D6, -4(%A6) %D6, -8(%A6) -4(%A6), %D6-6(%A6), %D6 16(%A6), %A1 (%A1),%A1 %D6, (%A1) %A6 (%SP), %D6/%A1 8(%SP), %SP rezerwacja miejsca na stosie (kopia D6, A1) wykonanie kopi rejestrów D6, A1 rezerwacja miejsca na zmienne temp_1, temp_2 zapisanie zmiennej P do D6 P*P zapisanie wyniku mnożenia do temp_1 zapisanie wyniku mnożenia do temp_2 odczytanie zmiennej Q do D6 Q*Q dodanie temp_1 do D6 (P2 + Q2) odjęcie D6 od temp_2 (P2 - Q2) zapisanie (P2 + Q2) w D6 obliczenie (P2 + Q2)/(P2 - Q2) wyznaczenie miejsca na stosie, gdzie znajduje się adres zmiennej R odczytanie adresu zmiennej R zapisanie wyniku dzielenie (część całkowita) usuniecie ramki stosu, dealokacja pamięci na stosie odtworzenie wartości rejestrów D6, A1 dealokacja pamięci na stosie (2 x 4B) powrót z podprogramu 52
53 Struktura stosu po zainicjowaniu zmiennych SP po wykonaniu LINK %A6, # -8 0x5c44 8 bajtów zarezerwowane przez LINK %A6, # Zmienna lokalna temp_2 Zmienna lokalna temp_1-24 Kopia rejestru %A6-22 (poprzednia wart.) SP po wykonaniu MOVEM 0x5c SP po wykonaniu BSR 0x5x58 SP przed wykonaniem BSR 0x5c5c Oryginalna wartość %SP 0x5c %A6 + 4 kopia %D6 kopia %A1 Adres powrotu z procedury -6 Adres zmiennej R -4 Zmienna Q -2 Zmienna P 0 Frame Pointer (%A6 = 0x5c4c) TOS %A6 + 8 %A %A %A = 0x5c60 %A = 0x5c62 %A
54 Zawartość stosu oraz rejestrów przed 2 obliczeniem Q bt 10 #0 CALC () at gp.asm:46 #1 0x in?? () #2 0x in?? () #3 0x00a6a600 in?? () #4 0xd6d6d6d6 in?? () #5 0xa10000a1 in?? () #6 0x in MAIN () at gp.asm:32 #7 0x000102d8 in R () at gp.asm:386 #8 0x in?? () #9 0x933beaf7 in?? () (gdb) info r d0 0x5 d1 0x4 d6 0x4 fp 0x5c4c sp 0x5c44 ps 0x2700 pc 0x1004e x5c4c 0x5c x1004e <CALC+34> (gdb) x/w 0x000102d8 0x102d8 <R>: 0xabcd zmienna temp_2 zmienna temp_1 kopia rejestru A6 kopia rejestru D6 kopia rejestru A1 adres powrotu z proc. CALC referencja do zmiennej R zmienne Q.W oraz P.W wartość odłożona przed wywołaniem MAIN D6 A1 A6 P Q = 0xD6D6D6D6 = 0xA10000A1 = 0x00A6A600 =5 =4 54
55 Zawartość stosu oraz rejestrów przed wykonaniem RTS (gdb) bt 7 #0 CALC () at gp.asm:59 #1 0x in MAIN () at gp.asm:32 #2 0x000102d8 in R at gp.asm:386 #3 0x in?? () #4 0x933beaf7 in?? () #5 0xe9afbbfc in?? () #6 0xa5a34aff in?? () (gdb) info r d0 0x5 d1 0x4 d6 0xd6d6d6d6 a1 0xa10000a1 fp 0xa6a600 sp 0x5c58 ps 0x2700 pc 0x xa10000a1 0xa6a600 0x5c x10072 <CALC+70> (gdb) x/w 0x000102d8 0x102d8 <R>: 0x
56 Zawartość stosu oraz rejestrów po usunięci zmiennych P, Q, R ze stosu (gdb) bt 5 #0 MAIN () at gp.asm:34 #1 0x933beaf7 in?? () #2 0xe9afbbfc in?? () #3 0xa5a34aff in?? () #4 0xafdee4e7 in?? () (gdb) info r d0 0x5 d1 0x4 d6 0xd6d6d6d6 a1 0xa10000a1 fp 0xa6a600 sp 0x5c64 ps 0x2700 pc 0x1002a xa10000a1 0xa6a600 0x5c x1002a <MAIN+38> (gdb) x/w 0x000102d8 0x102d8 <R>: 0x
57 MOVE.sz <ea>y, <ea>x Tryby adresowania argumentu źródłowego <ea>y: Dy, Ay, (Ay), (Ay)+, -(Ay), (d16,ay), (d8,ay,xi), (xxx).w/l, #<data>, (d16,pc), (d8,pc,xi) Tryby adresowania argumentu docelowego <ea>x: Dx, (Ax), (Ax)+, -(Ax), (d16,ax), (d8,ax,xi), (xxx).w/l, (d16,pc), (d8,pc,xi) Ograniczenia: MOVE.L 0x100, -0x10(%A5) Error: Operands mismatch statement 'move.l 0x100, -0x10(%A5)' ignored 57
58 MOVEA.sz <ea>y, Ax Tryby adresowania argumentu źródłowego <ea>y: Dy, Ay, (Ay), (Ay)+, -(Ay), (d16,ay), (d8,ay,xi), (xxx).w/l, #<data>, (d16,pc), (d8,pc,xi) 58
59 MOVEM.L #list, <ea>x (1) Tryby adresowania argumentu docelowego <ea>x i źródłowego <ea>y: (Ax), (d16,ax), (Ay), (d16,ay) gp.asm:21: Error: operands mismatch -- statement MOVEM.L %D0-%D2/%A0-%A2, -(%A7) `movem.l %D0-%D2/%A0-%A2,-(%A7)' ignored MOVEM.L (%A7)+, %D0-%D2/%A0-%A2 `movem.l (%A7)+,%D0-%D2/%A0-%A2' ignored MOVEM.L %D0-%D2/%A0-%A2, 0x100 `movem.l %D0-%D2/%A0-%A2,0x100' ignored 59
60 MOVEM.L #list, <ea>x (2) STOS 0x move.l move.l move.l move.l move.l move.l move.l move.l #0x010000d0,%d0 #0x020000d3,%d3 #0x030000d5,%d5 #0x040000a2,%a2 #0x050000a3,%a3 #0x060000a4,%a4 #0x070000a5,%a5 #0x080000a6,%a6 LEA -32(%SP), %SP MOVEM.L %D0/%A2-%A6/%D3/%D5, (%A7) LEA 32(%SP), %SP (gdb) x/9x 0x5c64 0x5c64: 0x010000d0 0x5c74: 0x050000a3 0x5c84: 0x x020000d3 0x060000a4 Wolna przestrzeń D0 A7-32 D3 D5 A2 A3 A4 A5 A6 0x x030000d5 0x070000a5 Ostatnia dana A7 Stos A7 0x040000a2 0x080000a6 60
61 MOVEQ.L #<data>, Dx MOVEQ.L #0x1FF, %D0 MOVE.L #0x1FF, %D0 gp.asm:24: Error: operands mismatch - statement `moveq.l #0x1FF,%D0' ignored 61
62 MOVE.W CCR, Dx MOVE.W %CCR, %D0 MOVE.W %D0, %CCR MOVE.W %CCR, %D0 MOVE.W #<data>, %CCR (gdb) p/x $ps $4 = 0x2700 1: x/i $pc 0x10008 <MAIN+4>: movew 0xFFFF,%CCR (gdb) p/x $ps $5 = 0x271F 62
63 Instrukcje logiczne AND, EOR, NOT, OR - Logiczne operacje arytmetyczne, operand pobierany z rejestru lub pamięci ANDI, EORI, ORI - Logiczne operacje arytmetyczne, operand w postaci natychmiastowej 63
64 AND.L <ea>y, Dx / AND.L Dy, <ea>x Tryby adresowania argumentu źródłowego <ea>y: Dy, (Ay), (Ay)+, -(Ay), (d16,ay), (d8,ay,xi), (xxx).w/l, #<data>, (d16,pc), (d8,pc,xi) Tryby adresowania argumentu docelowego <ea>x: (Ax), (Ax)+, -(Ax), (d16,ax), (d8,ax,xi), (xxx).w/l AND.L %D0, %D0 gp.asm:29: Error: operands mismatch -AND.l AND.l AND.l %A1,%A1 %A1,%D1 %D1,%A1 statement `and.l %A1,%A1' ignored statement `and.l %A1,%D1' ignored statement `and.l %D1,%A1' ignored 64
65 ANDI.L #<data>, Dx MOVE.L ANDI.L #0xDEADBEEF, %D1 #0x00FFFF00, %D1 (gdb) p/x $d1 $2 = 0xdeadbeef 44 ANDI.L #0x00FFFF00, %D1 1: x/i $pc 0x10010 <MAIN+12>: andil #0x00ffff00,%d1 (gdb) s (gdb) p/x $d1 $3 = 0x00ADBE00 65
66 Przykłady MOVE.L MOVE.L MOVE.L MOVE.L #0xABCDEF12, %D0 #0xABCDEF12, %D1 #0xABCDEF12, %D2 #0xABCDEF12, %D3 ANDI.L 0xFF , %D0 (gdb) p/x $d0 $1 = 0xab ORI.L 0xFF , %D1 (gdb) p/x $d1 $2 = 0xffcdef12 EORI.L 0xFF , %D2 (gdb) p/x $d2 $3 = 0x54cdef12 NOT.L %D3 (gdb) p/x $d3 $4 = 0x543210ed MOVE.L EOR.L #0xABCDEF12, %D0 %D0, %D0 (gdb) p/x $d0 $4 = 0x0 66
67 Operacje przesunięć Instrukcje przesunięcia operują wyłącznie na rejestrach. Operacje wykonywane są na podwójnych słowach (DW). Przesunięcie definiowane jest przez podany argument (od 1 do 8) lub określony rejestrem (przesunięcie modulo 64). 67
68 Operacje przesunięć arytmetycznych ASL / ASR MOVE.L ASL.L #0x ,%D0 #4, %D0 D0 = #0x MOVE.L ASL.L #0x ,%D0 #8, %D0 D0 = #0x
69 ASR.L #<data>, Dx Operacja przesunięcia arytmetycznego w prawo zachowuje znak liczby zapisanej w kodzie U2. MOVE.L ASR.L #0x ,%D0 #4, %D0 D0 = #0x MOVE.L ASR.L #4, #0x ,%D0 %D0 D0 = #0xf MOVE.L ASR.L #0x ,%D0 #8, %D0 D0 = #0xff MOVE.L #0x ,%D0 ASR.L #9, %D0 gp.asm:31: Error: operands mismatch -statement `asl.l #12,%D0' ignored 69
70 Operacje przesunięć logicznych MOVE.L #0x ,%D0 LSL.L #4, %D0 D0 = 0x MOVE.L #0x ,%D0 LSL.L #8, %D0 D0 = 0x MOVE.L #0x2,%D0 LSL.L #1, %D0 LSL.L #1, %D0 LSL.L #1, %D0 D0 = 0x4 D0 = 0x8 D0 = 0x10 70
71 LSR MOVE.L #0x ,%D0 LSR.L #4, %D0 D0 = 0x MOVE.L #0x ,%D0 LSR.L #8, %D0 D0 = 0x MOVE.L #0x10,%D0 LSR.L #1, %D0 LSR.L #1, %D0 LSR.L #1, %D0 D0 = 0x8 D0 = 0x4 D0 = 0x2 71
72 SWAP.W Dx 72
73 Użycie SWAP CLR.L %D7 CLR.L %D6 MOVE.L # 1000,%D0 MOVE.L # 300,%D1 DIVU.W %D1, %D0 MOVE.W %D0, %D7 SWAP.W %D0 MOVE.W %D0, %D6 HALT (gdb) p $d0 $1 = 1000 (gdb) p $d1 $2 = 300 (gdb) p $d0 $3 = 0x SWAP.W %D0 1: x/i $pc 0x1001e <MAIN+26>: swap %d0 (gdb) p $d0 $4 = 0x30064 (gdb) p/x $d6 $5 = 0x64 (gdb) p/x $d7 $6 = 0x3 73
74 Instrukcje operujące na bitach Instrukcje operujące na bitach wykorzystują dane zapisane w rejestrach lub pamięci. Operacje wykonywane są na podwójnych słowach (DW). 74
75 BITREV.L Dx Dx[0] Dx[1] Dx[31] = = = Dx'[31] Dx'[30] Dx'[0] MOVE.L BITREV.L #0x , %D1 %D1 (gdb) p/x $d1 $1 = 0x (gdb) s 28 BITREV.L %D1 1: x/i $pc 0x1000a <MAIN+6>: bitrev %d1 (gdb) p/x $d1 $2 = 0x
76 BYTEREV.L Dx MOVE.L BYTEREV.L #0xABCDEF12, %D1 %D1 (gdb) p/x $d1 $2 = 0xabcdef12 (gdb) s 28 BYTEREV.L %D1 1: x/i $pc 0x1000a <MAIN+6>: byterev %d1 (gdb) p/x $d1 $3 = 0x12efcdab 76
77 BTST.sz Dy, <ea>x / BTST.sz #<d>, <ea>x Tylko dla Dy Tryby adresowania argumentu docelowego <ea>x: Dx, (Ax), (Ax)+, -(Ax), (d16,ax) Tryby adresowania argumentu docelowego <ea>x: Dx, (Ax), (Ax)+, -(Ax), (d16,ax), (d8,ax,xi), (xxx).w/l, (d16,pc), (d8,pc,xi) 77
78 BTST.sz #<data>, <ea>x MOVE.L #0x , %D2 BTST.L #32, %d2 SR = 0x2700 MOVE.L #0x , %D3 BTST.L #31, %d3 SR = 0x2704 MOVE.L #0x , %D4 BTST.L #32, %d4 SR = 0x270c 0xc= 1100 Przykład zastosowania BTST Napisać program zliczający liczbę jedynek w binarnym słowie. D0 32-bit dane wejściowe, wynik 6-bit D1 licznik bitów o wartości 1 D2 wskaźnik badanego bitu 0-31 D0.31 D0.15 D0.0 78
79 Przykład zastosowania BTST MOVE.L #0x ,%D0 MOVE.L #0xD1D1D1D1,%D1 MOVE.L #0xD2D2D2D2,%D2 BSR HALT ONES_COUNT ONES_COUNT: LEA MOVEM.L CLR.L MOVEQ NEXT_BIT: BTST BEQ.S ADDQ.L LOOP_TEST: SUBQ.L BGE MOVE.L MOVEM.L LEA RTS -8(%A7), %A7 D1-D2, %A7 %D1 #31, %D2 %D2, %D0 LOOP_TEST #1, %D1 #1, %D2 NEXT_BIT %D1, %D0 %A7, %D1-D2% 8(%A7), %A7 (gdb) bt 7 #0 NEXT_BIT () at gp.asm:35 #1 0xd1d1d1d1 in?? () #2 0xd2d2d2d2 in?? () #3 0x a in ONES_COUNT () at gp.asm:25 #4 0x in?? () #5 0x in?? () #6 0x in?? () (gdb) p/x $d0 $4 = 0x8 (gdb) p/x $d1 $5 = 0xd1d1d1d1 (gdb) p/x $d2 $6 = 0xd2d2d2d2 79
80 BCLR.sz Dy,<ea>x / BCLR.sz #<d>,<ea>x 80
81 BSET.sz Dy,<ea>x / BSET.sz #<d>,<ea>x 81
82 BCHG.sz Dy,<ea>x / BCHG.sz #<d>,<ea>x 82
83 FF1.L Dx MOVE.L FF1.L #0x , %D5 %D5 (gdb) p/x $d5 $4 = 0x0 MOVE.L FF1.L #0x , %D5 %D5 (gdb) p/x $d5 $4 = 0x4 MOVE.L FF1.L #0x , %D5 %D5 (gdb) p/x $d5 $4 = 0x9 MOVE.L FF1.L #0x , %D5 %D5 (gdb) p/x $d5 $4 = 0x20 83
84 Systemowe instrukcje sterujące (1) 84
85 HALT W trybie superużytkownika instrukcja wstrzymuje pracę procesora po ukończeniu wszystkich rozpoczętych instrukcji lub cykli zapis/odczyt. Daje możliwość łatwego debugowania procesora przez interfejs BDM. Przejście do stanu bezczynności jest sygnalizowane stanem 0xF na liniach diagnostycznych PST. Instrukcja synchronizuje pipeline. Procesor może wznowić prace po odebraniu rozkazu GO z modułu BDM. 85
86 MOVE.W <ea>y, SR (gdb) p/x $ps $4 = 0x2704 (gdb) s 25 MOVE.W 0xFFFF, %SR 1: x/i $pc 0x10008 <MAIN+4>: movew 0xffff,%sr (gdb) p/x $ps $5 = 0xb71f Tryby adresowania argumentu źródłowego <ea>y: Dy, #<data> Instrukcja synchronizuje potok. 86
87 MOVEC.L Ry, Rc Rejestry systemowe mogą być wyłącznie zapisywane. Jedyną możliwością ich odczytu jest użycie trybu diagnostycznego, np. BDM. 87
88 RTE 88
89 STOP #<data> Instrukcja zapisuje 16 bitowy operand do rejestru statusowego (w zależności od uprawnień użytkownika) oraz powoduje zakończenie wykonywanego zadania. Zawartość licznika programu jest zwiększana, jednak pobieranie nowej instrukcji jest wstrzymane. Instrukcja synchronizuje potok. Po wykonaniu instrukcji STOP procesor przechodzi do trybu obniżonego poboru mocy. Procesor może wznowić pracę w przypadku zaistnienia wyjątku, przerwania lub resetu. 89
90 STRLDSR #<data> Instrukcja umieszcza kopię rejestru statusowego na stosie, a następnie ładuje rejestr wartością natychmiastową. Jeżeli podczas wykonywania instrukcji bit 13 jest wyzerowany (przejście do trybu użytkownika) nastąpi wygenerowanie wyjątku privilege violation. 90
91 ILLEGAL Wykonanie instrukcji powoduje wywołanie wyjątku niedozwolonej instrukcji (illegal instruction exception). 91
92 Trap #<vector> Wykonanie polecenia Trap powoduje wygenerowanie wyjątku o numerze podanym w postaci operandu. Adres wiersza w tablicy wyjątków obsługującego dany wyjątek można policzyć zgodnie z równaniem: 0x * #<vector> Moduł procesora ColdFire umożliwia obsłużenie do 16 zdefiniowanych zdarzeń 92
93 Pulse Wykonanie instrukcji powoduje zwiększenie licznika programu PC ustawienie wyjścia diagnostycznego PST na wartość równą 4. Wyjście wykorzystywane jest jako zewnętrzny trigger, co umożliwia debugowanie w czasie rzeczywistym oraz pomiar wydajności systemu. Manual BreakPoint wyk. rozkazu HALT Kanał diagnostyczny BDM Diagnostyka w czasie rzeczywistym 93
94 WDDATA.sz <ea>y Wykonanie instrukcji powoduje zwiększenie licznika programu PC, ustawienie wyjścia diagnostycznego DDATA (4 bit) na wartość zapisaną w pamięci pod adresem <ea> oraz ustawienie trigger'a PST = 4. Daje to możliwość podglądu pamięci lub pobranych operandów w czasie rzeczywistym. Tryby adresowania argumentu źródłowego <ea>y: (Ay), (Ay)+, -(Ay), (d16,ay), (d8,ay,xi), (xxx).w/l 94
95 WDEBUG.L <ea>y Instrukcja pobiera dwa długie słowa umieszczone w pamięci pod adresem <ea> ((Ay), (d16, Ay)) i konfiguruje wskazany rejestr Drc (Debug Control Register). Instrukcja synchronizuje potok. Instrukcja musi zostać wyrównana do granicy 4 bajtów (4 słowa). Umożliwia to wykonanie rozkazów modułu BDM bezpośrednio z procesora ColdFire. 95
96 Sterujące rejestry trybu debugowania 96
97 Systemowe instrukcje sterujące (2) 97
98 Instrukcje sterujące pamięcią podręczną Instrukcje sterujące pamięcią podręczną są instrukcjami uprzywilejowanymi. 98
99 Egzamin Sala Seminaryjna Egzamin: ~
Programowanie mikroprocesora ColdFire - instrukcje asemblera
Programowanie mikroprocesora ColdFire - instrukcje asemblera 1 Format instrukcji procesora Motorola ColdFire (1) Operand docelowy Operand źródłowy ADD.L operacja #1, #2 typ operandu 1-3 słów 16 bit 18,33cm
Tryby adresowania procesorów rodziny ColdFire
Tryby adresowania procesorów rodziny ColdFire 1 Format instrukcji (1) Operand docelowy Operand źródłowy ADD.L operacja #1, #2 typ operandu 1-3 słów 16 bit 18,33cm 16 bit 32 bit 48 bit 2 Format instrukcji
Moduł wspierający diagnostykę i sprzętowe debugowanie
Moduł wspierający diagnostykę i sprzętowe debugowanie 1 Diagnostyka mikroprocesorowego systemu czasu rzeczywistego Programowe emulatory procesorów, Sprzętowe emulatory procesorów, Debugery programowe,
Architektura mikroprocesorów z rdzeniem ColdFire
Architektura mikroprocesorów z rdzeniem ColdFire 1 Obsługa sytuacji wyjątkowych (Exception Processing) 2 Wyjątki Wyjątek (ang. exception) mechanizm kontroli przepływu danych występujący w mikroprocesorach
Architektura komputerów. Asembler procesorów rodziny x86
Architektura komputerów Asembler procesorów rodziny x86 Architektura komputerów Asembler procesorów rodziny x86 Rozkazy mikroprocesora Rozkazy mikroprocesora 8086 można podzielić na siedem funkcjonalnych
. III atyka, sem, Inform Symulator puterów Escape rchitektura kom A
Symulator Escape Konfiguracja ogólna Enable MUL and DIV Complete Set of Comp.Oper Sign Extension of B/H/W Memory Oper on B/H/W Program Program Dane Dane Załaduj konfigurację symulatora (File -> OpenFile)
Jednostka mnożąco-sumującą EMAC (Enhanced Multiply-ACcumulate unit)
Jednostka mnożąco-sumującą EMAC (Enhanced Multiply-ACcumulate unit) 1 Moduł MAC (1) Jednostka arytmetyczna przeznaczona do operacji wykorzystywanych podczas cyfrowej obróbki sygnałów DSP (Digital Signal
Architektura komputerów
Architektura komputerów Wykład 3 Jan Kazimirski 1 Podstawowe elementy komputera. Procesor (CPU) 2 Plan wykładu Podstawowe komponenty komputera Procesor CPU Cykl rozkazowy Typy instrukcji Stos Tryby adresowania
Struktura i działanie jednostki centralnej
Struktura i działanie jednostki centralnej ALU Jednostka sterująca Rejestry Zadania procesora: Pobieranie rozkazów; Interpretowanie rozkazów; Pobieranie danych Przetwarzanie danych Zapisywanie danych magistrala
Architektura typu Single-Cycle
Architektura typu Single-Cycle...czyli budujemy pierwszą maszynę parową Przepływ danych W układach sekwencyjnych przepływ danych synchronizowany jest sygnałem zegara Elementy procesora - założenia Pamięć
Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski
Układ wykonawczy, instrukcje i adresowanie Dariusz Chaberski System mikroprocesorowy mikroprocesor C A D A D pamięć programu C BIOS dekoder adresów A C 1 C 2 C 3 A D pamięć danych C pamięć operacyjna karta
Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2
Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2 Literatura: www.zilog.com Z80 Family, CPU User Manual Cykle magistrali w mikroprocesorze Z80 -odczyt kodu rozkazu, -odczyt-zapis pamięci,
Technika Mikroprocesorowa
Technika Mikroprocesorowa Dariusz Makowski Katedra Mikroelektroniki i Technik Informatycznych tel. 631 2648 dmakow@dmcs.pl http://neo.dmcs.p.lodz.pl/tm 1 Sprawy formalne 1. Zaliczenie 2. Projekt z Techniki
MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW
MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW Projektowanie urządzeń cyfrowych przy użyciu układów TTL polegało na opracowaniu algorytmu i odpowiednim doborze i zestawieniu układów realizujących różnorodne funkcje
Protokół komunikacyjny sondy cyfrowej CS-26/RS-485 (lub RS-232)
2011-07-04 Protokół komunikacyjny sondy cyfrowej CS-26/RS-485 (lub RS-232) Parametry transmisji : 9600, N, 8, 1 Sonda CS-26/RS-485 dołączona do interfejsu RS-485 pracuje poprawnie w trybie half-duplex.
Architektura mikroprocesorów z rdzeniem ColdFire
Architektura mikroprocesorów z rdzeniem ColdFire 1 Rodzina procesorów z rdzeniem ColdFire Rdzeń ColdFire V1: uproszczona wersja rdzenia ColdFire V2. Tryby adresowania, rozkazy procesora oraz operacje MAC/EMAC/DIV
Technika mikroprocesorowa I Wykład 2
Technika mikroprocesorowa I Wykład 2 Literatura: www.zilog.com Z80 Family, CPU User Manual Cykle magistrali w mikroprocesorze Z80 -odczyt kodu rozkazu, -odczyt-zapis pamięci, -odczyt-zapis urządzenia we-wy,
Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów
Marcin Stępniak Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów 1. Informacje Poniższe laboratoria zawierają podsumowanie najważniejszych informacji na temat
Mikrokontroler ATmega32. Język symboliczny
Mikrokontroler ATmega32 Język symboliczny 1 Język symboliczny (asembler) jest językiem niskiego poziomu - pozwala pisać programy złożone z instrukcji procesora. Kody instrukcji są reprezentowane nazwami
Architektura komputerów
Architektura komputerów Wykład 8 Jan Kazimirski 1 Assembler x86 2 Podstawowe instrukcje x86 Instrukcje transferu danych Arytmetyka binarna i dziesiętna Instrukcje logiczne Instrukcje sterujące wykonaniem
Zadanie Zaobserwuj zachowanie procesora i stosu podczas wykonywania następujących programów
Operacje na stosie Stos jest obszarem pamięci o dostępie LIFO (Last Input First Output). Adresowany jest niejawnie przez rejestr segmentowy SS oraz wskaźnik wierzchołka stosu SP. Używany jest do przechowywania
CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki
Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki Komputer jest urządzeniem, którego działanie opiera się na wykonywaniu przez procesor instrukcji pobieranych z pamięci operacyjnej
Programowanie niskopoziomowe
Programowanie niskopoziomowe ASSEMBLER Teodora Dimitrova-Grekow http://aragorn.pb.bialystok.pl/~teodora/ Program ogólny Rok akademicki 2011/12 Systemy liczbowe, budowa komputera, procesory X86, organizacja
4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/2012 2 / 24
Wymagania proceduralnych języków wysokiego poziomu ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH modele programowe procesorów ASK MP.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad.
Organizacja typowego mikroprocesora
Organizacja typowego mikroprocesora 1 Architektura procesora 8086 2 Architektura współczesnego procesora 3 Schemat blokowy procesora AVR Mega o architekturze harwardzkiej Wszystkie mikroprocesory zawierają
Podstawy programowania w języku C i C++
Podstawy programowania w języku C i C++ Część czwarta Operatory i wyrażenia Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu,
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Lista instrukcji procesora 8051 część 2 Skoki i wywołania podprogramów, operacje na stosie, operacje bitowe
Lista instrukcji procesora 8051 część 2 Skoki i wywołania podprogramów, operacje na stosie, operacje bitowe Ryszard J. Barczyński, 2009 2013 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego
Poradnik programowania procesorów AVR na przykładzie ATMEGA8
Poradnik programowania procesorów AVR na przykładzie ATMEGA8 Wersja 1.0 Tomasz Pachołek 2017-13-03 Opracowanie zawiera opis podstawowych procedur, funkcji, operatorów w języku C dla mikrokontrolerów AVR
1. Pobrać plik masm.zip (Macro Assembler 6.15 & Segmented Executable Linker 5.60) (http://www.cs.put.poznan.pl/mantczak/teaching/itc/masm.zip).
J.Nawrocki, M. Antczak, G. Palik, A. Widelska Plik źródłowy: 07cw4-asm.doc; Data: 2007-09-26 6:00 Ćwiczenie nr 4 Język asemblera Środowisko uruchomieniowe 1. Pobrać plik masm.zip (Macro Assembler 6.15
Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]
Procesor ma architekturę akumulatorową. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset or Rx, Ry, A add Rx load A, [Rz] push Rx sub Rx, #3, A load Rx, [A] Procesor ma architekturę rejestrową
Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika
Rejestry procesora Procesor podczas wykonywania instrukcji posługuje się w dużej części pamięcią RAM. Pobiera z niej kolejne instrukcje do wykonania i dane, jeżeli instrukcja operuje na jakiś zmiennych.
Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne
Spis treści 5 Spis treœci Co to jest mikrokontroler? Wprowadzenie... 11 Budowa systemu komputerowego... 12 Wejścia systemu komputerowego... 12 Wyjścia systemu komputerowego... 13 Jednostka centralna (CPU)...
Architektura komputerów
Architektura komputerów Tydzień 5 Jednostka Centralna Zadania realizowane przez procesor Pobieranie rozkazów Interpretowanie rozkazów Pobieranie danych Przetwarzanie danych Zapisanie danych Główne zespoły
organizacja procesora 8086
Systemy komputerowe Procesor 8086 - tendencji w organizacji procesora organizacja procesora 8086 " # $ " % strali " & ' ' ' ( )" % *"towego + ", -" danych. Magistrala adresowa jest 20.bitowa, co pozwala
Technika Mikroprocesorowa
Technika Mikroprocesorowa Dariusz Makowski Katedra Mikroelektroniki i Technik Informatycznych tel. 631 2648 dmakow@dmcs.pl http://neo.dmcs.p.lodz.pl/tm 1 Sprawy formalne 1. Zaliczenie 2. Projekt z Techniki
Technika Mikroprocesorowa
Technika Mikroprocesorowa Dariusz Makowski Katedra Mikroelektroniki i Technik Informatycznych tel. 631 2648 dmakow@dmcs.pl http://neo.dmcs.p.lodz.pl/tm 1 Sprawy formalne 1. Zaliczenie 2. Projekt z Techniki
Lista Rozkazów: Język komputera
Lista Rozkazów: Język komputera Większość slajdów do tego wykładu to tłumaczenia i przeróbki oficjalnych sladjów do podręcznika Pattersona i Hennessy ego Lista rozkazów Zestaw rozkazów wykonywanych przez
Architektura Systemów Komputerowych, Wydział Informatyki, ZUT
Laboratorium: Wprowadzenie Pojęcia. Wprowadzone zostaną podstawowe pojęcia i mechanizmy związane z programowaniem w asemblerze. Dowiemy się co to są rejestry i jak z nich korzystać. Rejestry to są wewnętrzne
Sprzęt i architektura komputerów
Radosław Maciaszczyk Mirosław Łazoryszczak Sprzęt i architektura komputerów Laboratorium Temat: Mikroprocesory i elementy asemblera Katedra Architektury Komputerów i Telekomunikacji 1. MIKROPROCESORY I
Kurs Zaawansowany S7. Spis treści. Dzień 1
Spis treści Dzień 1 I Konfiguracja sprzętowa i parametryzacja stacji SIMATIC S7 (wersja 1211) I-3 Dlaczego powinna zostać stworzona konfiguracja sprzętowa? I-4 Zadanie Konfiguracja sprzętowa I-5 Konfiguracja
Logiczny model komputera i działanie procesora. Część 1.
Logiczny model komputera i działanie procesora. Część 1. Klasyczny komputer o architekturze podanej przez von Neumana składa się z trzech podstawowych bloków: procesora pamięci operacyjnej urządzeń wejścia/wyjścia.
Programowanie Niskopoziomowe
Programowanie Niskopoziomowe Wykład 8: Procedury Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie Plan Wstęp Linkowanie z bibliotekami zewnętrznymi Operacje na stosie
Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych
Ćwiczenie nr 3 Wyświetlanie i wczytywanie danych 3.1 Wstęp Współczesne komputery przetwarzają dane zakodowane za pomocą ciągów zerojedynkowych. W szczególności przetwarzane liczby kodowane są w systemie
Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy
Wstęp do informatyki Architektura komputera Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki System komputerowy systemowa (System Bus) Pamięć operacyjna ROM,
Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek
Wstęp do informatyki Architektura komputera Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki System komputerowy systemowa (System Bus) Pamięć operacyjna ROM,
Architektura komputerów. Komputer Procesor Mikroprocesor koncepcja Johna von Neumanna
Architektura komputerów. Literatura: 1. Piotr Metzger, Anatomia PC, wyd. IX, Helion 2004 2. Scott Mueller, Rozbudowa i naprawa PC, wyd. XVIII, Helion 2009 3. Tomasz Kowalski, Urządzenia techniki komputerowej,
Jerzy Nawrocki, Wprowadzenie do informatyki
Magistrala systemowa Jerzy Nawrocki, Jerzy Nawrocki Wydział Informatyki Politechnika Poznańska jerzy.nawrocki@put.poznan.pl Cel wykładu Asembler i koncepcja von Neumanna Wprowadzenie do programowania na
end start ; ustawienie punktu startu programu i koniec instrukcji w assemblerze.
Struktura programu typu program.com ; program według modelu tiny name "mycode" ; nazwa pliku wyjściowego (maksymalnie 8 znaków) org 100h ; początek programu od adresu IP = 100h ; kod programu ret ; koniec
Magistrala systemowa (System Bus)
Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki systemowa (System Bus) Pamięć operacyjna ROM, RAM Jednostka centralna Układy we/wy In/Out Wstęp do Informatyki
Programowanie w elektronice: Podstawy C
Programowanie w elektronice: Podstawy C Projekt Matematyka dla Ciekawych Świata, Robert Ryszard Paciorek 2019-05-05 C / C++ są najpopularniejszymi językami kompilowanymi do kodu maszynowego
Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów
Adresowanie obiektów Bit - stan pojedynczego sygnału - wejście lub wyjście dyskretne, bit pamięci Bajt - 8 bitów - wartość od -128 do +127 Słowo - 16 bitów - wartość od -32768 do 32767 -wejście lub wyjście
Projekt prostego procesora
Projekt prostego procesora Opracowany przez Rafała Walkowiaka dla zajęć z PTC 2012/2013 w oparciu o Laboratory Exercise 9 Altera Corporation Rysunek 1 przedstawia schemat układu cyfrowego stanowiącego
petla:... ; etykieta określa adres w pamięci kodu (docelowe miejsce skoku) DJNZ R7, petla
Asembler A51 1. Symbole Nazwy symboliczne Symbol jest nazwą, która może być użyta do reprezentowania wartości stałej numerycznej, wyrażenia, ciągu znaków (tekstu), adresu lub nazwy rejestru. Nazwy symboliczne
UTK Można stwierdzić, że wszystkie działania i operacje zachodzące w systemie są sterowane bądź inicjowane przez mikroprocesor.
Zadaniem centralnej jednostki przetwarzającej CPU (ang. Central Processing Unit), oprócz przetwarzania informacji jest sterowanie pracą pozostałych układów systemu. W skład CPU wchodzą mikroprocesor oraz
Lista instrukcji mikroprocesora 8086. Programowanie w assemblerze
Lista instrukcji mikroprocesora 8086 Programowanie w assemblerze Lista instrukcji mikroprocesora 8086 Lista instrukcji mikroprocesora 8086 Lista instrukcji mikroprocesora 8086 Lista instrukcji mikroprocesora
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski
Układ sterowania, magistrale i organizacja pamięci Dariusz Chaberski Jednostka centralna szyna sygnałow sterowania sygnały sterujące układ sterowania sygnały stanu wewnętrzna szyna danych układ wykonawczy
A Machine Architecture that is Really Intuitive and Easy. Dane: notacja dwójkowa, zapis w kodzie dopełnieniowym
MARIE A Machine Architecture that is Really Intuitive and Easy http://computerscience.jbpub.com/ecoa Słowo 16b Dane: notacja dwójkowa, zapis w kodzie dopełnieniowym od 8000h (- 32,768 = -2^15) do 7FFFh
J. Duntemann Zrozumieć Assembler Leo J. Scanlon Assembler 8086/8088/80286 S. Kruk Programowanie w Języku Assembler
ASSEMBLER J. Duntemann Zrozumieć Assembler Leo J. Scanlon Assembler 8086/8088/80286 S. Kruk Programowanie w Języku Assembler Geneza (8086, 8088). Rejestry Adresowanie pamięci Stos Instrukcje Przerwania
Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1
Operatory Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1 Przypomnienie: operatory Operator przypisania = przypisanie x = y x y Operatory arytmetyczne
Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI
Dr inż. Grażyna KRUPIŃSKA Grazyna.Krupinska@fis.agh.edu.pl D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI Wyrażenia 2 Wyrażenia w języku C są bardziej elastyczne niż wyrażenia w jakimkolwiek innym języku
Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania
Architektura Systemów Komputerowych Jednostka ALU Przestrzeń adresowa Tryby adresowania 1 Jednostka arytmetyczno- logiczna ALU ALU ang: Arythmetic Logic Unit Argument A Argument B A B Ci Bit przeniesienia
Kompilator języka C na procesor 8051 RC51 implementacja
Kompilator języka C na procesor 8051 RC51 implementacja Implementowane typy danych bit 1 bit char lub char signed 8 bitów char unsigned 8 bitów int lub signed int 16 bitów unsigned int 16 bitów long lub
4 Standardy reprezentacji znaków. 5 Przechowywanie danych w pamięci. 6 Literatura
ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH reprezentacja danych ASK.RD.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 1 2 Standardy reprezentacji wartości całkowitoliczbowych
Sprzęt i architektura komputerów
Radosław Maciaszczyk Mirosław Łazoryszczak Sprzęt i architektura komputerów Laboratorium Temat: Mikroprocesory i elementy asemblera Katedra Architektury Komputerów i Telekomunikacji 1. MIKROPROCESORY I
Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4
Przedmiot : Programowanie w języku wewnętrznym Ćwiczenie nr 4 str. 1. 1. Użycie Asemblera. Polecenie JMP. Polecenie nakazuje procesorowi wykonywanie kodu programu od nowego innego miejsca. Miejsce to jest
Programowalne układy logiczne
Programowalne układy logiczne Mikroprocesor Szymon Acedański Marcin Peczarski Instytut Informatyki Uniwersytetu Warszawskiego 6 grudnia 2014 Zbudujmy własny mikroprocesor Bardzo prosty: 16-bitowy, 16 rejestrów
Podstawy techniki cyfrowej Mikroprocesory. Mgr inż. Bogdan Pietrzak ZSR CKP Świdwin
Podstawy techniki cyfrowej Mikroprocesory Mgr inż. Bogdan Pietrzak ZSR CKP Świdwin 1 Mikroprocesor to układ cyfrowy wykonany jako pojedynczy układ scalony o wielkim stopniu integracji zdolny do wykonywania
ARCHITEKTURA PROCESORA,
ARCHITEKTURA PROCESORA, poza blokami funkcjonalnymi, to przede wszystkim: a. formaty rozkazów, b. lista rozkazów, c. rejestry dostępne programowo, d. sposoby adresowania pamięci, e. sposoby współpracy
ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH
ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH reprezentacja danych ASK.RD.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 c Dr inż. Ignacy Pardyka (Inf.UJK) ASK.RD.01 Rok
Architektura komputera. Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt
Architektura komputera Architektura von Neumanna: Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt Zawartośd tej pamięci jest adresowana przez wskazanie miejsca, bez względu
Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.
Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice
Ćwiczenie 3. Konwersja liczb binarnych
1 Laboratorium Architektury Komputerów Ćwiczenie 3 Konwersja liczb binarnych Komputery wykonują operacje przetwarzania danych na wartościach binarnych, podczas gdy współczesna cywilizacja posługuje się
Język FBD w systemie Concept
Adresowanie obiektów Bit - stan pojedynczego sygnału - wejście lub wyjście dyskretne, bit pamięci Bajt - 8 bitów - wartość od -128 do +127 Słowo - 16 bitów - wartość od -32768 do 32767 -wejście lub wyjście
Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86
Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86 Spis treści Wprowadzenie... 11 1. Architektura procesorów rodziny x86... 17 1.1. Model procesorów
PODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA
PODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje Deklaracja zmiennych Zmienne łańcuchowe
Lista rozkazów mikrokontrolera 8051
Lista rozkazów mikrokontrolera 8051 Spis treści: Architektura mikrokontrolera Rozkazy Architektura mikrokontrolera Mikrokontroler 8051 posiada trzy typy pamięci: układ zawiera pamięć wewnętrzną (On-Chip
Rozszerzalne kody operacji (przykład)
Tryby adresowania natychmiastowy (ang. immediate) bezpośredni (ang. direct) pośredni (ang. indirect) rejestrowy (ang. register) rejestrowy pośredni (ang. register indirect) z przesunieciem (indeksowanie)
Metody Realizacji Języków Programowania
Metody Realizacji Języków Programowania Bardzo krótki kurs asemblera x86 Marcin Benke MIM UW 10 stycznia 2011 Marcin Benke (MIM UW) Metody Realizacji Języków Programowania 10 stycznia 2011 1 / 22 Uwagi
Podstawy programowania w języku C
Podstawy programowania w języku C WYKŁAD 1 Proces tworzenia i uruchamiania programów Algorytm, program Algorytm przepis postępowania prowadzący do rozwiązania określonego zadania. Program zapis algorytmu
Mikroprocesor Operacje wejścia / wyjścia
Definicja Mikroprocesor Operacje wejścia / wyjścia Opracował: Andrzej Nowak Bibliografia: Urządzenia techniki komputerowej, K. Wojtuszkiewicz Operacjami wejścia/wyjścia nazywamy całokształt działań potrzebnych
!"#!"$%! %$"#%!!$! www.falownikilg.pl !"!#$ )&! &
!"#!"$%! %$"#%!!$! &#'#%$ ()*%$"#% %& %& &&& )&! * )&! &!"!#$ &'( & &# +,,- www.falownikilg.pl 0)1$!"$$&2&$$! 34&$!"$+$"5 / #'( =( &#( & #& ( "( ('!! (& "!('( # #'( + #-1 / &* # '( #&'( #"! "!(!#= ( (
/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>
Szablon programu: /* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include /* opcjonalne: deklaracja typów o rozmiarze jednego i dwóch
Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory
Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory Poniżej pozwoliłem sobie za cytować za wikipedią definicję zmiennej w informatyce.
Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.
Wykład 3 ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors. Waldi Ravens J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 75 / 146 deklaracje zmiennych instrukcja podstawienia
PROGRAMOWANIE NISKOPOZIOMOWE
PROGRAMOWANIE NISKOPOZIOMOWE PN.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 1 / 27 Wprowadzenie
2. PORTY WEJŚCIA/WYJŚCIA (I/O)
2. PORTY WEJŚCIA/WYJŚCIA (I/O) 2.1 WPROWADZENIE Porty I/O mogą pracować w kilku trybach: - przesyłanie cyfrowych danych wejściowych i wyjściowych a także dla wybrane wyprowadzenia: - generacja przerwania
Mikrokontrolery AVR ATmega
Mikrokontrolery AVR ATmega Literatura: 8-bit Microcontroller AVR with 32KBytes In-System Programmable Flash ATmega32 [www.atmel.com] 8-bit AVR Instruction Set [www.atmel.com] Baranowski Rafał, Mikrokontrolery
Wstęp. do języka C na procesor 8051. (kompilator RC51)
Wstęp do języka C na procesor 8051 (kompilator RC51) Kompilator języka C Kompilator RC51 jest kompilatorem języka C w standardzie ANSI Ograniczeń w stosunku do ANSI jest niewiele głównie rzadkie operacje
Zasady wykonywania programu drabinkowego w sterowniku
Zasady wykonywania programu drabinkowego w sterowniku Programowanie sterownika Modicon Micro 612xx w środowisku uruchomieniowym Modsoft odbywa się przy pomocy języka drabinkowego wspomaganego blokami funkcyjnymi.
Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne
Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne 1. Bit Pozycja rejestru lub komórki pamięci służąca do przedstawiania (pamiętania) cyfry w systemie (liczbowym)
Programowanie Niskopoziomowe
Programowanie Niskopoziomowe Wykład 10: Arytmetyka całkowitoliczbowa Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie Plan Wprowadzenie Instrukcje przesunięcia bitowego
1. Wstęp Różnice pomiędzy mikrokontrolerami ST7 a ST7LITE Rdzeń mikrokontrolerów ST7FLITE... 15
3 1. Wstęp... 9 2. Różnice pomiędzy mikrokontrolerami ST7 a ST7LITE... 11 3. Rdzeń mikrokontrolerów ST7FLITE... 15 3.1. Jednostka centralna...16 3.2. Organizacja i mapa pamięci...19 3.2.1. Pamięć RAM...20
PLC2: Programowanie sterowników logicznych SIEMENS SIMATIC S7-300/400 - kurs zaawansowany
PLC2: Programowanie sterowników logicznych SIEMENS SIMATIC S7-300/400 - kurs zaawansowany DZIEŃ 1 Nowy projekt i konfiguracja sprzętowa: Zakładka General okna parametrów zasilacza Zakładka General okna
Procedury. int mult (int mcand, int mlier){ int product = 0; while (mlier > 0) { product = product + mcand; mlier = mlier -1; } return product; }
main() { int i,j,k,m;... i = mult(j,k);... m = mult(i,i);... Procedury int mult (int mcand, int mlier){ int product = 0; while (mlier > 0) { product = product + mcand; mlier = mlier -1; return product;
PROGRAMOWANIE NISKOPOZIOMOWE. Systemy liczbowe. Pamięć PN.01. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012
PROGRAMOWANIE NISKOPOZIOMOWE PN.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 1 2 4 c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 1 / 27 c Dr
Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład 6 Wskaźniki Krzysztof Banaś Podstawy programowania 1 Adresy zmiennych Język C pozwala na operowanie adresami w pamięci stąd, między innymi, kwalifikowanie C jako języka relatywnie
Przykładowe pytania DSP 1
Przykładowe pytania SP Przykładowe pytania Systemy liczbowe. Przedstawić liczby; -, - w kodzie binarnym i hexadecymalnym uzupełnionym do dwóch (liczba 6 bitowa).. odać dwie liczby binarne w kodzie U +..
Akademia Górniczo- Hutmicza w Krakowie Katedra Elektroniki WIET
Akademia Górniczo- Hutmicza w Krakowie Katedra Elektroniki WIET Technika mikroprocesorowa Instrukcja 3 Stos i podprogramy Autor: Paweł Russek Tłumaczenie: Marcin Pietroń http://www.fpga.agh.edu.pl/tm ver.