ASSEMBLER. Mnemonik Dyrektywa Operandy (argumenty) - liczby i inne nazwy z prawej strony mnemoników, oddzielamy je przecinkiem, Instrukcja!

Wielkość: px
Rozpocząć pokaz od strony:

Download "ASSEMBLER. Mnemonik Dyrektywa Operandy (argumenty) - liczby i inne nazwy z prawej strony mnemoników, oddzielamy je przecinkiem, Instrukcja!"

Transkrypt

1 ASSEMBLER strona 1 Definicje ASSEMBLER Mnemonik Dyrektywa Operandy (argumenty) - liczby i inne nazwy z prawej strony mnemoników, oddzielamy je przecinkiem, Instrukcja! " # Instrukcja maszynowa - binarny odpowiednik instrukcji Komentarz#$%;% Liczba - szesnastkowa: %H&$# %0 1202H, 0A010H #' zwyczajnie - ósemkowa: %Q lub O. - binarna: %B EOL = Carrier Return (13) + Line F()" * $ # : NAZWA w Asemblerze WORD 2 + DWORD 4 + QWORD 8 10 bajtów TBYTE 10 paragraf PARA 16 strona PAGE 256 segment SEGMENT (!"# ") Architektura mikroprocesora * ##,-cykl rozkazowy,. pojedynczej instrukcji. Na jeden cykl rozkazowy przypada kilka cykli maszynowych+ # kilku cykli zegarowych. Jeden cykl zegarowy wykonywany jest w jednym takcie zegara. Poszczególne cykle maszynowe +,/' BU"0 # #+ $# IU"0 +potok). EU "0 123,,# " AU"0 #!!, 1+$ #+,+ 4/ #5/# #, Adresy 67),8 # 7+,-segmentu (okienko #+# " #offset"$+# #,8+ # #,.#offsetu( ## (20 - bitowego) o jeden bajt, natomiast (! "#%(& ## segmentu o 16 bajtów (adres segmentowy - adres paragrafu). (! ) - adres nie jest jednoznaczny,9$ # #(:+!!(:+7 #++#, Zapis adresu - w postaci: <segment> : <offset> 0100H:0001H.

2 ASSEMBLER strona 2 Dekodowanie adresu (:7)# +;",<(:!!,* adres 20-bitowy. Bufor obrazu 8=>55$,8 # ')?@))A")?)))A",B$ 7'(8=>55 $7 ;",8 )CA,-#+,9(:)+, (!"3 $ # bajty (np. write() ) Data BIOS# )DDDD')))E,!!)(E", < $+8=>55 '25/04/97 Restart (zimny) - w BIOS zapisana pod adresem 0FFFF:0000 instrukcja skoku do procedury startowej. Rejestry Rejestry segmentowe+(:+, CS (code segment" #,8+# #$ #>= DS (data segment"#,3 + SS (stack segment" ES (extra segment) - zawiera adres dodatkowego segmentu danych Dodatkowe rejestry segmentowe (386 / 486) FS i GS - (nazwa od kolejnych liter alfabetu" + (!" "+, Rejestry ogólnego przeznaczenia +! przechowywanie offsetów: BX, BP, SP, SI, DI,8# #+,'SS : SP. (!"B!!++8F>F<F, ++'@ # +'AX, BX, CX, DX. Odpowiednio # '8X = AH + AL,= +MSB (most significant byte"lsb (least significant byte) Rejestry 32-bitowe (386 / 486) * +?-=-=5<5" G7+ nazwa 32-bitowego odpowiednika tworzona jest zgodnie ze schematem: AX EAX. (!"B EAX to AX) * H- rejestr IP!!+# #,->-/#5-$+ maszynowa. (! ) ## CS:IP (! ) 5- $ Rejestr znaczników (!"(:#$+( + +,* #$$ + OF (overflow flag) $# przeznaczenia DF (direction flag) - znacznik kierunku nie wskazuje niczego, (!",J<D#K+L +)# +,/( STD, 0 - CLD. (!"$K)L

3 ASSEMBLER strona 3 IF (interrupt enable flag" >-/ STI (na 1) oraz CLI)",9$$)#, TF (trap flag) SF (sign flag) - znacznik znaku ustawiany, gdy wynik operacji jest ujemny (1 na najstarszym bicie), zerowany - wynik dodatni. ZF (zero flag) - znacznik zera ustawiony, gdy wynikiem operacji jest 0 (! ), zerowany, gdy cokolwiek innego. AF (auxiliary carry flag) - znacznik przeniesienia pomocniczego # kodowanych binarnie - BCD - bajt traktowany jako para 4-bitowych nybli!)i, PF (parity flag" $ + jest parzysta, zerowany - gdy nieparzysta. CF (carry flag) - znacznik przeniesienia,d#!stc (CF = 1), CLC (CF = 0), CMC (CF = -CF) AC (alignment check";@:"#+ # ;,* ;@:$#G7# # + + +, Kopiowanie rejestru flag 32M nale y u yæ stosu - naspierw PUSHF a potem POP Rodzaje danych i adresacje Instrukcje wymagaj# H+ H+ ) i adresu! operand przeznaczenia). Operand przeznaczenia stoi za zwyczaj,mov DX, AX <F 8FH+, Rodzaje danych 5G + ' Dane natychmiastowe#adresowaniu natychmiastowemu - dana zawarta jest w segmencie kodu zaraz po ", (! "3 +@H+", Dane natychmiastowe to #,MOV AX, 1 < +!! # $(:@ ", Dane rejestrowe >-/,<# #adresowaniu rejestrowemu (ukrytemu). Sprowadza # ' MOV AX, BX - w BX jest dana rejestrowa, która zostanie zapisana jako dana rejestrowa w AX. (!"H+@+(:, < ##$(3? #,!"* #$ + #,<,B +$ #,B# # [ ], którymi wskazujemy, w jakich + #, = $' (!"* przedrostka zmiany segmentu. [ <rejestr_offsetu> ] [BX] - # dla BX i offsetu zawartego w BX [ <rejestr_bazowy> + <rejestr_indeksu> ] [BX + DI] - # # segmentu DS!!+$?F<5 (!" +! ## " [ <rejestr_bazowy> + <dana_natychmiastowa> ] [SI + 1] - $ # - <N O #$"#!!", (!"# + " # ##+#"

4 ASSEMBLER strona 4 [ <rejestr_bazowy> + <rejestr_indeksu> + <dana_natychmiastowa> ] [BX + DI + 7] - adresowanie indeksowe # # #<=!!+!!++$, (!"# + + <rejestr_bazowy> wskazuje adres tablicy, <rejestr_indeksu> - element tablicy (rekord), <dana_natychmiastowa> - konkretne pole w danym # $+ " Adresowanie wielowymiarowe - dla tablic o wielu wymiarach <NO Pdana_natychmiastowa> - pole w rekordzie, <rejestr_indeksu> - konkretny element +$"K)L"' nr_wiersza * nr_kolumny <$# +,*!! $,* $+!!,B#$$ #' DS dla offsetów BX, SI, DI SS dla offsetu SP (!" SP dla BP 9$ $ przedrostka zmiany segmentu w postaci <rejestr_segmentu> :!!,ES:[BX], CS:[SI], ES:[BX + DI] itd. Tworzenie programu exe 6 G',3 #+, =!# =4J3 4BQ' PO=4J34BQR SR SR%nazwa_klasy ] np. MojeDane SEGMENT. gdzie: PO R S$ # $' BYTE - od pierwszego wolnego bajtu WORD PARA - od pierwszego wolnego adresu podzielnego przez 16 PAGE - od pierwszego wolnego adresu podzielnego przez 256 (!"$ $ #-818 R S! + $' PUBLIC# ++# #+ + COMMON# + $T $# + MEMORY ( AT <NO - segment zostanie umieszczony pod adresem segmentowym znanym w czasie $ PNO STACK =Q8>6 +$ równej ich sumie (!"9$ $ #PRIVATE#, [ N&S +$# #+ 6!$ENDS +PO, 6! +" END poza +,8# # 4B<, 8 +,7)U(E) w kodzie programu,2 # $ #! 4V/",3+ NOT <op> po obliczeniu zostanie $,B2QPop>.!"#$%&#$%'#$ B "'.486 (MASM/TASM) lub P486N (TASM). $-/=AD!-2-D$#@)@:$,

5 ASSEMBLER strona 5 7@:+ (7(; zastosowanie) rejestr AC zawsze równy 0 $# mamy 386, w przeciwnym razie 486 Segment stosu Adres segmentu stosu przechowuje SS,9 <2=,1 (6? +! <2=?52=, =#==') #, B SP wskazuje na koniec stosu (SS + rozmiar stosu). 3 #===='=-# =='=- Szczyt stosu",3 #==')=='=-# #, SS + rozmiar SS:0 ( - zmniejsza#=- =='=-,2# PUSH$7@:" natychmiastowej) lub PUSHF!", PUSHF PUSH AX PUSH [BX] PUSH 21H (!"2 (+@,? # '=='=-=='=-( (!" Zdejmowanie ze stosu. # # $=-,1# POP (ogólne) lub POPF (dla flag). (!"2$(@", POPF POP AX POP [BX] Inicjalizacja stosu <!# DUP (patrz: Segment danych) np. DB 64 DUP( STACK!!! ); (!" #$!,%&"# H <4?/J,Q# Segment danych Typ danych - w asemblerze oznacza rozmiar danych. SS:SP Definiowanie zmiennych <!$#"! : DB (define byte) - definiuj bajt DW (define word)! DD (define double)! + DQ! + DT!()+E+" np. <*XKL#7+, (! ) W przypadku gdy zmienna L(: #'MOV AL, zm, $ #L(:+,B+specyfikatora zmiany typu.. #$,zmienna DW 0FFFFH.

6 ASSEMBLER strona 6 )*+,.+string" #,3 # +,- ##DB (! ) +#+,>+ # lub $ +8=>55,Q #<?(#,Q <?, Y+! +,3 + + %, np. lancuch DB Ala, ma kota, $ Eol DB 0DH, OAH, $ <$ $ $ "#! ' -. EQU $ - <*+,. 'PO#$ PN O$ - zwraca +,* PN O stringu, $ - na pierwszy bajt zaraz po #PO#$+stringu np. Napis DB Ala ma kota, ale kot jest zielony Dl EQU $ - Napis )/(, 9$ ## ze stringówdup,.!# ' <nazwa_zmiennej> DB <ile> DUP( <N O" <? PO + <N O string, liczba lub? # #, np. Nazwa DB 10 DUP( Luke ) ; Nazwa zajmie 40B Temp DB 10 DUP(?) ; Temp zajmie 10B, nie inicjalizowana (! ) - #'Usizeof ( <N O" Zmienne anonimowe Q#, DB 100 DUP(?),<# # #, (! ) - offset zmiennej w DST$++#!$ Dyrektywa LABEL <$$ #,3 # #' <nazwa_zmiennej> LABEL <N #O gdzie: <N #O,WORD, DWORD B## + #+! jednej z dyrektyw definicji zmiennych (DB, DW). Z <NO# nie trzeba #specyfikatora zmiany typu ", Tablice <!# DB + # stringu lub </-"+ $ </- T$ +, Tab DB ()+()+(, Tab DB 100 DUP( 12 ) + ())+7, 3,DW+ # ",-' Tab DW 0B800H DW 0A000H DW 0000H... (!"-# +#, wówczas,9$ n-+$n. (!"2 #$elem. tablicy (n"!$k7l #i-tego #i*n+ =AY

7 ASSEMBLER strona 7 (!"-#, wówczas rejestr $"#, (!"+# ' <nazwa_tablicy>[ <indeks> ] np. tab[2] PO+,1$"+ definiowania tablicy (np. DB, DW ), ewentualnie od zadeklarowanego dla <NO # dyrektywy LABEL. Szybkie odwzorowania - tworzenie +i-tym #$i. ( f ( i )",Q# ",<#f( i ), '$i T)+C$i = (+7, 0 <! # EQU + +# +,!,", Stala EQU 2-7*4 Imie EQU Cindy Data EQU 0FFFF:0005 (! ) EQU dziala jak #define, na etapie $, Zmiana typu * #$ +# # (",B4J5B><4>B2Q $ #np. B4J ",2# specyfikatorów zmiany typu - BYTE PTR, WORD PTR itp. np. NEG BYTE PTR [BX] (!"$, (: (: specyfikator zmiany BYTE PTR i zostanie tam zapisana starsza +, MOV AL, BYTE PTR Zmienna Segment kodu Definiowanie Etykiet Etykieta$ #T w kodzie, adres segmentu itp. ). *!+, /T ##>=,4#!## ' <etykieta> : gdzie <etykieta> - dowolny string np. Tutaj : (!"2#,MOV SI, Tutaj. 12!( #,=,B# END # tej etykiety. ((+,3 <+ +8==/3 4,/# # 'ASSUME CS:Kod, DS:Dane, SS:Stos, gdzie Kod, Dane i Stos to etykiety - nazwy +,2#Dane SEGMENT a Dane ENDS #!#Dane SEGMENT a Dane ENDS# # #!,B #$. (!"B <=,B $ #,1## +' mov AX, Dane mov DS, AX

8 ASSEMBLER strona 8 Procedury Definiowanie - PROC +Tnazwa procedury,b#!# # ENDP +, Moja PROC mov AX, Dane mov DS, AX dec CX. ret Moja ENDP * CALL <nazwa_procedury> np. call Moja. >8YY!! = 2B = 16b) i skacze do wskazanego miejsca. (! ) - -#RET + >8YY14Q, (!" #$, 4* - "$,5 #KL #!,8 #,B +#$#!# $, Moja PROC ; zabezpieczenie wart. rejestrow push AX pushf XOR AX, AX ;modyfikowany rejestr AX CMP AX, zmienna ;modyfikowane flagi ; przywrocenie wartosci z momentu wywolania popf pop AX ret Moje ENDP Przekazywanie parametrów do procedur przez odpowiednie rejestry #++,"! procedura zwróci wynik przez stos $$$, * $,!" # zawiera adres powrotu z procedury $ "# =='R=-7S ( * # + # #K L,= =-,B $ #,D#?-,* + +$ $=-# #+ #?-;?-:, -# + # ' Moja PROC ;zabezpieczenie rejestrów push BP push AX push BX! "#$%&''()*+#$%, *+#$%-)$+ ; pod SP+8 - adres powrotu z procedury dla RET mov BP, SP mov BX, [BP+10] mov AX, [BP+12] pop BX pop AX pop BP ;do BX trafia drugi. ;do AX pierwszy

9 ASSEMBLER strona 9 ret Moja ENDP - ' push arg1 push arg2 call Moja pop arg2 pop arg2 '/0 / 1' (!"* $++$ -2-$#,* # ADD SP, N gdzie N$+, Zmienne lokalne 9$ $,*# $N - bajtów miejsca (SUB SP, N ). W tym momencie mamy do dyspozycji N+,< #?-+ +=-, (!"9$ #,+ #?- #N+ +# $?-#N np. mov BP, SP )$%," sub SP, 4 mov BP, SP ;SP wskazuje na ostatn222 ; pod BP pierwszy. (!"* 8<<=-N. (!"-, sub SP, 4; mov BP, SP ;OPIS ZMIENNYCH LOKALNYCH: )$"1 )$%&"1 ''& +( *!+ +H $ tej procedury. <#( +! $ ",<#,!$$ +# -12>#! $ # +, DodajDomysl PROC mov AX, 2 mov BX, 2 Dodaj: add AX, BX ret DodajDomysl ENDP * $#'CALL < N$O. (! ) < ' nazwa procedury co dana procedura robi $ +$ wej. +! $ $

10 ASSEMBLER strona 10 Makroinstrukcje 3 KLpreprocesingu asemblacji. 2#, Definiowanie 3!#!"!# ## ' <nazwa_makra> MACRO <parametr1>, <parametr2>, P Oparametry +preprocesingu) argumenty. Parametr makra" $3 8>12! Argument makra$, 2 + +"# P O <!#ENDM. (! ) - etykiety lokalne! ",* 7 3 8>12" ' LOCAL <etykieta1>, <etykieta2>, 4#!, -$ +" Gotoxy MACRO WspX, WspY LOCAL Petla, Koniec mov DH, WspX mov DL, WspY Petla: dec CX Koniec:mov AX,[BX] ENDM (!"14Q " (! ) - przed ENDM nie stoi nazwa makra (!"$#+ parametrów (##+ parametrze $ # ) + +$ $ # #). "# ' <nazwa_makra> <argument1>, <argument2>, np. Gotoxy 10, 20 (!" #+ +",.arg., (!">8YY Przekazywanie dalekiego adresu +!!$, #!"#LES wg. schematu: Clrscr MACRO AdresBuf, Czymczysc LES DI, DWORD PTR AdresBuf * ' Clrscr 0B800H:0000H, Wzorzec programu exe ; SEGMENT STOSU - START Stos SEGMENT STACK DB 64 DUP ( STACK!!! ) Stos ENDS ; SEGMENT STOSU - KONIEC ; SEGMENT DANYCH - START Dane SEGMENT Zmienna DB Dane ENDS ; SEGMENT DANYCH - KONIEC ; SEGMENT KODU - START Kod SEGMENT assume CS:Kod, DS:Dane Main PROC Start: ( mov AX, Dane ; )0 3#45

11 ASSEMBLER strona 11 mov DS, AX mov AH, 4CH mov AL, 0 int 21H Main ENDP '/ 67#82' '39979:3;3: Kod ENDS ; SEGMENT KODU - KONIEC END Start Program typu com zbiory.+,e(7+,exe) programy.# :;6? dla programów.com stos jest generowany automatycznie, miejsce na niego przydzielane jest w ramach segmentu $$ # program.! NEAR) " 7E:?PSP + #<2=" ' ORG 100H Wzorzec programu Kod SEGMENT assume CS:Kod, DS:Kod, SS:Kod ORG 100H Start: jmp Main 0'( 4 Zmienna DB Main PROC NEAR ret Main ENDP Kod ENDS END Start Tworzenie programu wynikowego H+ Warning: No STACK segment! ) EXE2BIN,exe na.com 5++ -,- #,- # ' nie posiada punktu startowego (nic po END) T+ " +" #" $$procedury $" # segmentu kodu: PUBLIC <etykieta1>, <etykieta2>, PO# $ * #$!$ -12>4B<- $ # dane ' PUBLIC <zmienna1>, <zmienna2>, #$! + zmienne (np. <?<* </-" )

12 ASSEMBLER strona 12 (!"$ #$ =4J3 4BQ #PUBLIC. (!" te same nazwy+ #$, (!" +ASSUME. -' """""""""""""""""" """""""""""""""""" Dane Dane Kod SEGMENT PUBLIC PUBLIC Eol, Ekran Eol DB 0DH, 0AH, $ 2em Ekran DW 184FH ; y = 18H = 24D, x = 4FH = 79D ENDS SEGMENT PUBLIC PUBLIC DodajDomysl, Dodaj ASSUME CS:Kod, DS:Dane DodajDomysl PROC mov AX, 2 mov BX, 2 Dodaj: add AX, BX ret DodajDomysl ENDP Kod ENDS END (+,+ $ $ # #' EXTERN <nazwa_procedury> : PROC np. EXTERN ClrScr: PROC <#K!L#$,8 ###, (!"<# (!"9$ +$, $ danych! ' EXTERN <nazwa_zmiennej> : <specyfikator_typu>, gdzie specyfikator typu$$ + ",3 # $' BYTE, WORD, DWORD#! <?<*<<, (!"J# KstringL DUP( ) jest ona definiowana przy pomocy dyrektywy DB BYTE - ' EXTERN Eol:BYTE, Ekran:WORD (!"- ##specyfikatora typu -12> (! ) Deklaracja ta jest w segmencie danych 6!+ Z.obj +# # + +, Biblioteki makr?#! + segmentu kodu). Plik taki ma rozszerzenie.mac,* (KL +" # INCLUDE +#, Przerwania / /## #. W odpowiedniej chwili oprócz!0kod typu,3 +7E:+ +,B 0 ;,<# + +,2 +

13 ASSEMBLER strona 13, )",- programów Przerwania programowe * K)L#7E: ;77 #"++ " (6?183,6 adres - wektor przerwania. Tabela ta zwana jest +,-#?52=<2= $,* <2=Tnumer przerwania) # " #+, * # INT <numer_przerwania> np. INT 21H. Przed skokiem do odpowiedniej procedury (przerwania) INT wykonuje: $+("!#5D $ "QD >=!!5- $ 8 + IRET+ przeciwne do INT. (! ) istnieje warunkowa wersja INT INTO (overflow) Przerwania zarezerwowane -)(DA 5&,3,#!' )00$# ) (0 0# debugowanie krok po kroku 2 0 G0 0 # ;00#, -7)AGDA <2=, 7) 0 7( 0 <2= 22h adres powrotu po wykonaniu programu 7G 0$Ctrl-Break 7; 0 # 25h odczyt sektorów z dysku 26h zapis sektorów na dysk 7C 0 # 12,++3* -,<!#' <nazwa>proc FAR IRET <nazwa> ENDP * #5D$!, 5BQ,!,++3* 1. # $ 2. # " $##! 21H DOS: ustawienie wektora przerwania funkcja AH = 25H, AL - numer przerwania, DS:DX odczyt wektora przerwania funkcja AH = 35H, AL - numer przerwania, ES:BX! - ' ; w segmencie danych istnieje linia: wektor DW 0 2(MojePrzerw ; w segmencie danych istnieje linia: adres DD MojePrzerw / '

14 ASSEMBLER strona 14 mov AH, 35H mov AL. 0 int 21H (' mov wektor[0], BX mov AX, ES mov wektor[1], AX ;zapisanie nowego adresu *+#4*0 '.6 mov AH, 25H mov AL. 0 int 21H ;przywrócenie pierwotnych wart. lds DX, DWORT PTR wektor mov AH, 25H mov AL. 0 int 21H <2=# E) # 21H,* + $AH oraz +$, (!"0D!>D,J>DT)0 # $>DT( +!8F, (!"0 +#%)&, AH Operacja 1 Wyniki 2 2 *$Ctrl-Break) DL = znak kursor za znakiem 5 Wydruk znaku DL = znak 6 *$Ctrl-Break) DL = znak kursor za znakiem 9 * $ %[& <='<FT (!"%[&, 40 patrz!" BX = 1, 2 1 ># AL = znak $Ctrl-Break) 6 Odczyt znaku z klawiatury (bez kontroli Ctrl-Break) DL = 0FFH 8YT$ = 0, gdy brak znaku 7 >$ AL = znak (bez kontroli Ctrl-Break) 8 >$ AL = znak A Ctrl-Break) *! "# $ $ %&'%! DS:DX = adres bufora, (! ) pierwszy bajt bufora $ bajtu, 7, Drugi bajt bufora $$ przeczytanych znaków B Odczyt stanu klawiatury AL = FFH - brak znaku, T)0# C *!! 8YT! * $ (1, 6, 7, 8, A)! Czas i data 2A Pobranie daty CX = rok <AT <YT 2B Ustawienie daty CX = rok ( ) <AT <YT AL = 0 data poprawna TDD0# 2C Pobranie czasu CH = godzina CL = minuty DH = sekundy DL = setne sekundy

15 ASSEMBLER strona 15 2D Ustawienie czasu CH = godzina CL = minuty DH = sekundy DL = setne sekundy Komunikacja asynchroniczna 3 $ AL = znak 4 $ DL = znak 2 + D Zapis zmienionych buforów dyskowych z powrotem # E *$ # DL = numer dysku AL = 0 czas poprawny TDD0# 8YT$+ 7 #" (0 = A, 1 = B, 2 = C ) 19 -$ AL = nr dysku (j. w.) 2E.H! DL=0 8YT)0 T(0 30 Pobranie numeru wersji MS-DOS AL = numer wersji AH = numer zmiany BX, CX = / DS:DX = adres wektora AL = numer przerwania 35 - AL = numer przerwania ES:BX = adres wektora 1! Utworzenie katalogu <='<FT 3A /# DS:DX = j. w. 3B Zmiana katalogu roboczego DS:DX = adres katalogu do + $ 47-0 <=T # )T$ 1 = A, 2 = B ) DS:DX = adres 64- bajtowego bufora <='=5T docelowego 36 Pobranie wolnego obszaru na dysku <YT #,," 8FT$+ klaster, = 0FFFFH w #?FT$ klastrów >FT$+ sektor <FT$ klastrów 3C Utworzenie pliku <='<FT CX = atrybuty pliku (patrz " 3D Otwarcie pliku <='<FT AL =0 otwarcie do odczytu =1 zapisu =2 odczyt & zapis 3E.# BX = uchwyt pliku " 3F 2 " BX = uchwyt pliku " >FT$ + DS:DX = adres bufora AH = uchwyt do pliku " AH = uchwyt do pliku " 8FT$ bajtów = 0 odczyt poza plik 40. " BX = uchwyt pliku 8FT$

16 ASSEMBLER strona 16 " >FT$+ <='<FTH+, bajtów 41 /# <='<FT 43 Nadawanie atrybutów plikowi AL = 1 <='<FT CX = atrybuty (patrz pod " 54 Pobranie znacznika sprawdzania AL = 0 brak zapisu sprawdzania = 1 zapis ze sprawdzaniem 56 Zmiana nazwy pliku <='<FT 4='<5T. 31. # AL = kod powrotu <FT # paragrafach 4B. AL = 0 <='<FT nazwy programu ES:BX = adres bloku parametrów 4C. AL = kod powrotu dla ErrorLevel 4D -# AL = kod powrotu dla 62 Pobranie adresu bloku PSP BX = adres segmentu PSP programu. # 48. #183"?FT$ paragrafów 49. # ES = adres segmentu ze # 4A.$ # ES = adres segmentu obszaru # -# AX = adres segmentu z # 59 -# BX = 0 AX = rozszerz. kod?at# BL = zalecana reakcja >AT Atrybuty pliku$+,. +' 0 read only, 1 70G0;0 E0 backup) Uchwyt pliku0! 5W2,5# +' )0$<2= " (0$$) 70$#+niezmienialne) G0 " 4 drukarka = ; <2=@ +,3 #, (210%40 (!"># " +?52= <2="# $AH

17 ASSEMBLER strona 17 VIDEO (BIOS) - przerwanie 10H. gotoxy AH = 02H, do BH - strona karty graficznej (zwykle = 0), DL +#K\LDH +#K& +#! ) liczone od 0 scrolling okna/ekranu (czyszczenie okna/ekranu) AH = 06H, CX +#+DX - +# +#) +KL K\L AL$scrollingu, (! ) AL = 0 - czyszczenie ekranu. odczyt typu karty AH = 1AH, AL = 0 (!8Y!" Konfiguracja (BIOS) - przerwanie 11H, zapisuje do AX+ + +' 0 - istnieje FDD 1 - istnieje koprocesor 2 - zainstalowana mysz G$183 4,5 - tryb video :C$D<< I()(($ istnieje GamePort 13 - zainstalowany modem (wew.) 14,15 - il. druk. Programy rezydentne Program rezydentny +#!, - # #, * +$ #,* +$ $ # Q=1,- +! +,5 + "+,*, # #, -#!' KEEP - funkcja 31H przerwania 21H,- ' AH - 31H AL -$,ERRORLEVEL) <F # (:! D $, &<2=" #,Gdy program otrzymuje kontrolê, funkcja EXEC (4bH) alokuje blok pamiêci zaczynajacy siê od PSP i zawieraj¹cy ca³¹ dostêpn¹ pamiêæ. Pamiêæ ta przydzielana jest procesowi. Wykorzystuj¹c funkcjê 31H <2= # <F$<FU(:?+",D + #+ #!;@A, TSR - przerwanie 27H,B' <F+ ##$!!#<= #(, D <2= # # -=-$<F,-##, (!"-7CA <2= $+ 77A7;A! + Critical Error lub Ctrl - Break, (!"-7CA# +PT:;6?!? (:<F" Dyrektywy zaawansowane EVEN0 H + #, <nazwa> GROUP <nazwa_segmentu1> [,<nazwa_segmentu2>, ]0 PO :;, 5D]]PO,R4Y=4S,4B<5D0 #$ $PO,8 4Y=4 $ IF: 5D40) 5D0) 5D<4D0! 5DB<4D! Operatory 2 +,

18 ASSEMBLER strona 18 arytmetyczne +, -, *, /, MOD0P$(OP OP$7O SHL, SHR P$(OP OPO logiczne AND, OR, XOR0P$(OP OP$7O NOT0B2QP$O relacji #P(OP OP7O #' EQ a1 = a2, NE a1!= a2, LT a1 < a2, GT a1 > a2, LE a1 <= a2, GE a1 >= a2 (+! $$H0$H[ SEG 0$ OFFSET0$!! LENGTH 0 0$!"! </- TYPE0 Q^-4'(0?^Q470* 21<;0<* 21<,<'( NEAR, -2 FAR. SIZE zwraca iloczyn LENGTH i TYPE atrybutu PTR0# 'P O-Q1POP O?^Q4* 21<,B481D81", DS:, ES:, SS:, CS: - atrybuty zmiany segmentu SHORT0'93-=A21QPO!PO(7C+ instrukcji aktualnej. THIS0H HIGH zwraca starszy bajt 16-bitowej liczby LOW 0W Koprocesor _"08 #,7@C, Budowa + ((,=!!,=$ + $$,1+ #stosu koprocesora. Stos ten ", Typy danych Y '(0(E0+:;0,6,<# # #$!"' Word Integer - 16b, , 32767, 5 cyfr Short Integer - 32b, -2 * 10^9, 2 * 10^9, 9 cyfr Long Integer - 64b, -2 * 10^18, 9 * 10^18, 18 cyfr Short Real - 32b, 10^-37, 10^38, 7 cyfr Long Real - 64b, 10^-307, 10^308, 16 cyfr Temporary Real - 80b, 10^-4932, 10^4932, 19 cyfr Packed <@)(@!# (@! Instrukcje koprocesora Instrukcja, D?Y<PH+O FBSTP <przeznaczenie> D5Y<PH+O FIST <przeznaczenie> FISTP <przeznaczenie> Opis + # #P O # #P O_0" #P O

19 ASSEMBLER strona 19 DY<PH+O FST <przeznaczenie> FSTP <przeznaczenie> FXCH <przeznaczenie> Arytmetyczne D8<<RP OPH+OS D8<<-P OPH+O D58<<H+ D=/?RP OPH+OS D=/?-P OPH+O D5=/?PH+O D=/?1RP OPH+OS D=/?1-P OPH+O D5=/?1PH+O D3/YRP OPH+OS D3/Y-P OPH+O D53/YPH+O D<5MRP OPH+OS D<5M-P OPH+O D5<5MPH+O D<5M1RP OPH+OS D<5M1-P OPH+O D5<5M1PH+O FSQRT FSCALE FPREM FRNDINT XTRACT FABS FCHS Porównania D>23 RPH+OS D>23-RPH+OS FCOMPP D5>23 PH+O D5>23-PH+O FTST FXAM / F2XM1 FYL2X FYL2XP1 FPTAN # # (!"# 7 #H+ H+" odwróconym# H+H+ przeznaczenie) dodaje rzeczywiste dodaje rzeczywiste i zdejmuje ze stosu odejmuje rzeczywiste odejmuje rzeczywiste i zdejmuje ze stosu odejmuje rzeczywiste (odwrócona) odejmuje rzeczywiste i zdejmuje ze stosu (odwrócona) (odwrócona) dzieli rzeczywiste dzieli rzeczywiste i zdejmuje ze stosu dzieli rzeczywiste (odwrócona) dzieli rzeczywiste i zdejmuje ze stosu (odwrócona) (odwrócona) pierwiastek kwadratowy ##7 #$ wydzielenie cechy i mantysy * $# Zmiana znaku + # porównuje rzeczywiste porównuje rzeczywiste i zdejmuje ze stosu porównuje rzeczywiste i 2 razy zdejmuje ze stosu + + sprawdza, czy szczyt stosu jest 0 bada szczyt stosu!, oblicza 2^X - 1 oblicza Y * log_2 (X) oblicza Y * log_2 (X+ 1) #$

20 ASSEMBLER strona 20 FPATAN 0, FLDZ FLD1 FLDPI FLDL2T FLDL2E FLDLG2 FLDLN2 0+! DY<>* PH+O FSTCW/ FNSTCW <przeznaczenie> FSTSW / FNSTSW <przeznaczenie> FSTSW/ FNSTSW AX FSAVE/ FNSAVE <przeznaczenie> D1=Q21PH+O DY<4BMPH+O FSETPM FSTENV / FNSTENV <przeznaczenie> FWAIT FINIT / FNINIT FENI / FNENI FDISI / FNDISI DCLEX / FNCLEX FINCSTP FDECSTP FFREE FNOP #$arcus tangens $Temporary Real) ),) (,) -5 N7()" N7" N()7" log_e (2) #!$, +, # # #8F zachowaj stan odtwórz stan $ ustaw wirtualny tryb pracy #$ wait (zatrzymuje proc., zabezp. przed korzyst. z tych samych obszarów RAM) inicjuje (resetuje) koprocesor zezwala na przerwania blokuje reakcje przerwania #H H zwalnia (zeruje) rejestry nic nie rób Niebieskie karty 5 ##,. #! znaczników!,8+#! ## symbole operandów: r8@ + r16-16-bitowy rejestr ogólnego przeznaczenia sr - jeden z rejestrów segmentowych m8+ # " m16 # i8 - bajt natychmiastowy i16 d8-8-bitowe przemieszczenie$# +,-,9# aktualnej instrukcji. d16(: + Instrukcje Rozkazy transmisji danych (! "5!+, MOV <op1>, <op2> $ 7" (,2 ' (!" $, # (!",

21 ASSEMBLER strona 21 (!" + (!" + $(MOV 16bitów 8bitów) (!"! + * 7 ( $, LEA <op1>, <op2> przenosi efektywny adres operandu 2 do operandu 1 np. LEA DX, Zmienna LDS <op1>, <op2> przenosi daleki adres <op2> do pary rejestrów DS:<op1> LES <op1>, <op2> przenosi daleki adres <op2> do pary rejestrów ES:<op1> LAHF przenosi do AH+ SAHF +$8A IN <op1>, <op2> P (O$ RP 7OS (!" '8Y$@8F<F OUT <op1>, <op2> RP (OS$P 7O (!" '$@8Y<F8F XCHG <op1>, <op2> #$, XLAT zapisuje w AL # <='R?F8YSê, gdy pod DS:BX jest tablica bajtów, a do AL ` PUSHA (286) - $'8F>F<F?F=-?-=5<5, (!"* $SP$ -/=A8$ # -2- #=- #=-# +" +8F>F<F?F # POPA 7@:"$$-/=A8 =- PUSHAD i POPAD (386) - jak PUSHA i POPA, tylko dla rejestrów 32-bitowych IN <op1>, <op2> - przenosi dane z portu do akumulatora. <op1> = AL przenoszony jest bajt, = AX przenoszone jest P 7O 0 $<F, OUT <op1>, <op2> P (O 0 $ <FP 7O w AL lub AX. Operacje arytmetyczne (!"2!'2D=D.D8D-D>D INC <op> #($! ) nie zmienia CF. DEC <op> ($! ) nie zmienia CF NEG <op> $ 5-5 ADD <op1> <op2> dodaje <op2> do <op1>, dla bez i ze znakiem SUB <op1> <op2> odejmuje <op2> od <op1>, dla bez i ze znakiem MUL <op> 8F$#:EEGE <F8F bity w AX). < O@+#AL@",P OP(:O P(:O+AX", (! ) MUL modyfikuje AX i DX (! ) < OB54 IMUL <op> 3/Y!8F$#G7C:C DIV <op> ##8F Pop>, wynik trafia do AL, a do AH trafia modulo. 3 (:#<F8F!8F<F IDIV <op> jak DIV, tylko dla liczb ze znakiem ADC <op1> <op2> P 7OP (O>D SBB <op1> <op2> P 7OP (O >D CBW $AL ustawiony 8A CWD $AX ustawiony <F AAA #?><AX). W BCD w ramach # ;;"!)I,888 # '$; +8Y$#OI dodaje 6 do AL., zeruje 4 starsze >D8D $8A#,9$8Y,PTI>D8D zerowane. AAD?><8F AAM?><8F AAS?><8F (!".8=>55!!$ 8=>55 #?><+$, DAA?>< 7!### ;!# DAS korygowanie wyniku odejmowania dla liczb traktowanych jako upakowane BCD

22 ASSEMBLER strona 22 Operacje logiczne (!"B $seg. do innego (!"< AND <op1>, <op2> dokonuje logicznego and + P (OP 7O wynik umieszcza w <op1>. < O@(:, OR <op1>, <op2> jak w AND, tylko dla logicznego or. XOR <op1>, <op2> jak w AND, tylko dla logicznego xor. NOT <op> neguje wszystkie bity <op>, wynik w <op> (! ) nie modyfikuje adnych znaczników (nawet ZF) Wydzielanie bitu +("8B<# " Ustawianie bitu##+,k(l# 21#W + Zerowanie bitu#+k(lb2q"+ 21#"B2Q" Szybkie zerowanie danejf21,xor AX, AX zeruje AX. Instrukcje przesuwania SHL <op>, <licznik> przesuwa bity <op> w lewo, uzupe³nia 0-wym bitem, <op> - pamiêæ lub rejestr, <licznik> - liczba 1 lub rejestr CL (nie CX), w CL jest iloœæ, o jaki¹ nale y przesun¹æ bity, ewentualnie przesuniêcie o 1. (! ) wysuwane bity trafiaj¹ do CF (a z niego donik¹d) (! ) przesuniêcie 16-krotne = zerowanie s³owa 7@:"PO$,SHL AX, 7 7@:"$ #POG(bo np. 32 daje to samo co 0) SAL <op>, <licznik> =AY SHR <op>, <licznik> =AY 7@:", SAR <op>, <licznik> jak SHR, ale uzupe³nia najstarszym bitem (bitem znaku) ROL <op>, <licznik> rotuje bity <op> w lewo, wysuniêty bit trafia na koniec oraz do CF 7@:" ROR <op>, <licznik> jak ROL, tylko w prawo, wysuniêty bit trafia na pocz¹tek oraz do CF 7@:" RCL <op>, <licznik> rotuje bity <op> w lewo, wysuniêty bit trafia do CF a bit z CF na koniec7@:" RCR <op>, <licznik> jak ROL, tylko w prawo, wysuniêty bit trafia do CF, a bit z CF na pocz¹tek 7@:" Szybciej jest zapisaæ kilka razy SH? <op>, 1 >Y #;" = ##+,3/YCC" (!" a #KL!$ n " $7 #ii * n (co szybko =AY" +( ((+/ JMP <etykieta> skok do <etykieta> (<etykieta> - wczeœniej zdefiniowana etykieta$ segment:offset), skok jest bezwarunkowy. (!" G7" J? <etykieta> PO$%]&+" (!"5bliskie R(7@(7CS (!" # instrukcji (!"< (!",#T+) (!"5signed i unsigned. Liczby ze znakiem - najstarszy bit = 1, gdy liczba ujemna Relacje#' W#less / greater) liczby ze znakiem (signed) W above / below) liczby bez znaku Relacje po wykonaniu CMP: Relacja dla: bez znaku ( (co testuje) dla: ze znakiem ( (co testuje)

23 ASSEMBLER strona 23 = JE ZF = 1 JE ZF = 1 < > JNE ZF = 0 JNE ZF = 0 > JA CF = 0 i ZF = 0 JG ZF = 0 lub SF = OF JNBE JNLE < JB CF = 1 JL SF < > OF JNAE JNGE >= JAE CF = 0 JGE SF = OF JNB JNL <= JBE JNA CF = 1 lub ZF = 1 JLE JNG ZF = 1 i SF < > OF 5!' mnemonik co testuje JNS skok, gdy brak znaku SF = 0 JS skok, gdy jest znak SF = 1 JNO OF = 0 JO OF = 1 JP/JPE $ PF = 1 JNP/JPO $ PF = 0 JCXZ <etykieta> PO>FT) " (! ) tylko skoki bliskie [ ] (! ) nie istnieje instrukcja przeciwna JCXNZ + +>FPO), (!" #9>F.Y22-,B54>FPO)# $ #+ ##>F), CMP <op1>, <op2> + $# PPTTOTO",<'wynik = <op1> - <op2>, zapomina wynik a tylko ustawia znaczniki. (!",9]$# >3-9]9]" $!, TEST <op>, <maska>+p O 8B<KL ustawia znaczniki. (! ) TEST modyfikuje ZF! B2QPop> BT <op>, <nr> (386) $PO)" P O CF. (! ) TEST jest szybsze, ale tylko dla sprawdzania, czy bit jest 1. LOOP <etykieta> ## ' zmniejsza CX o 1 $>FPO) skacze do <etykieta> $>FT) przerywa## Y22- LOOPNZ / LOOPNE <etykieta> # Y22-# ' zmniejsza CX o 1 $>FPO).DT) skacze do <etykieta> $>FT).DT( przerywa## Y22- LOOPZ / LOOPE <etykieta> # Y22-# ' zmniejsza CX o 1 $>FPO).DT( skacze do <etykieta> $>FT).DT) przerywa## Y22- (!"5Y22-]# +$ # $ $ $"#+W+",* + Y22-]>3- +, +( *+, 5 # ' (!" H+ wskazywany jest przez DS:SI (suorce index) (!" docelowy wskazywany jest przez ES:DI (destination index) (! ) $ +$CX (!" AX#!" (!"!=5<5"!DF, gdy DF=0 # DF=1,

24 ASSEMBLER strona 24 REP STOS{W/B} 4='<5$7U>F+" >F zawartym w AX (bajtem z AL). (!"- #>F(,* +H4='<5 ", (! ) Gdy DFT( ++"#4='<5 <5 7(" # KL",B<5, STOS{W/B} 8F8Y" 4='<5<5#<DT("7 modyfikuje CX REP MOVS{W/B} - odpowiednik instrukcji REP STOSW (bez REP =Q2=*"+ <='=5 8FW8Y" 4='<5 LODS{W/B} <='R=5SW 8FW8Y,B#=5W, SCAS{W/B} +"W 4='R<5S$8FW8Y, B# #<5, CMPS{W/B} +W <='R=5S4='R<5S$<D#=5<5, REP 3 2M==Q2=$>FPO) # >F($5- +# #+14-" REPE / REPZ przedrostek dla SCAS, CMPS, gdy CX<>0 # >F$.DT(+ ##5-(" REPNE / REPNZ przedrostek dla SCAS, CMPS, gdy CX<>0 # >F$.DT)+ ##5-(" INS{W/B} <F# $ OUTS{B/W} <F H+ +(, / NOP0 +H HLT0 niemaskowalne WAIT0 $ Q4=Q0$ #

Architektura komputerów. Asembler procesorów rodziny x86

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

Bardziej szczegółowo

Załącznik do ćwiczenia w środowisku MASM32 wersji 10 Sterowanie przebiegiem wykonania programu

Załącznik do ćwiczenia w środowisku MASM32 wersji 10 Sterowanie przebiegiem wykonania programu Załącznik do ćwiczenia w środowisku MASM32 wersji 10 Sterowanie przebiegiem wykonania programu Rozkaz cmp jest opisany w grupie rozkazów arytmetycznych (załącznik do ćwiczenia 3). Rozpatrzmy rozkazy procesorów

Bardziej szczegółowo

Sterowanie pracą programu

Sterowanie pracą programu Sterowanie pracą programu Umożliwia podejmowanie decyzji w oparciu o określone warunki. Skoki bezwarunkowe Podstawową instrukcją umożliwiającą przeniesienie sterowania do innego punktu programu oznaczonego

Bardziej szczegółowo

Programowanie komputera

Programowanie komputera Programowanie komputera Program jest algorytmem przetwarzania danych zapisanym w sposób zrozumiały dla komputera. Procesor rozumie wyłącznie rozkazy zapisane w kodzie maszynowym (ciąg 0 i 1). Ponieważ

Bardziej szczegółowo

PODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA

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

Bardziej szczegółowo

INSTRUKCJE Instrukcje przeniesienia: Instrukcje konwersji: Arytmetyczne instrukcje:

INSTRUKCJE Instrukcje przeniesienia: Instrukcje konwersji: Arytmetyczne instrukcje: INSTRUKCJE Instrukcje przeniesienia: mov, lea, les, push, pop, pushf, popf Instrukcje konwersji: cbw, cwd, xlat Arytmetyczne instrukcje: add, inc sub, dec, cmp, neg, mul, imul, div, idiv Logiczne instrukcje:

Bardziej szczegółowo

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów

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

Bardziej szczegółowo

J. Duntemann Zrozumieć Assembler Leo J. Scanlon Assembler 8086/8088/80286 S. Kruk Programowanie w Języku Assembler

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

Bardziej szczegółowo

organizacja procesora 8086

organizacja procesora 8086 Systemy komputerowe Procesor 8086 - tendencji w organizacji procesora organizacja procesora 8086 " # $ " % strali " & ' ' ' ( )" % *"towego + ", -" danych. Magistrala adresowa jest 20.bitowa, co pozwala

Bardziej szczegółowo

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

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.

Bardziej szczegółowo

Zadanie Zaobserwuj zachowanie procesora i stosu podczas wykonywania następujących programów

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

Bardziej szczegółowo

Architektura Systemów Komputerowych

Architektura Systemów Komputerowych Jarosław Kuchta Architektura Systemów Komputerowych ćwiczenie 3 Arytmetyka całkowita instrukcja laboratoryjna Wprowadzenie Celem ćwiczenia jest zapoznanie się z budową i sposobem działania jednostki arytmetyczno-logicznej

Bardziej szczegółowo

Architektura Systemów Komputerowych, Wydział Informatyki, ZUT

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

Bardziej szczegółowo

end start ; ustawienie punktu startu programu i koniec instrukcji w assemblerze.

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

Bardziej szczegółowo

Programowanie niskopoziomowe

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

Bardziej szczegółowo

Architektura komputerów

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

Bardziej szczegółowo

Sprzęt i architektura komputerów

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

Bardziej szczegółowo

Floating Point Unit Koprocesor umożliwia działania na liczbach ułamkowych (zmiennoprzecinkowych) 8 rejestrów 80-bitowych: st0,,st7 Typy danych

Floating Point Unit Koprocesor umożliwia działania na liczbach ułamkowych (zmiennoprzecinkowych) 8 rejestrów 80-bitowych: st0,,st7 Typy danych Lab 8 FPU Floating Point Unit Koprocesor umożliwia działania na liczbach ułamkowych (zmiennoprzecinkowych) 8 rejestrów 80-bitowych: st0,,st7 Typy danych Pojedyncza precyzja. Liczby takie zajmują po 32

Bardziej szczegółowo

Sprzęt i architektura komputerów

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

Bardziej szczegółowo

Wprowadzenie do Architektury komputerów. Asembler procesorów rodziny x86

Wprowadzenie do Architektury komputerów. Asembler procesorów rodziny x86 Wprowadzenie do Architektury komputerów Asembler procesorów rodziny x86 Rozkazy mikroprocesora Rozkazy mikroprocesora 8086 można podzielić na siedem funkcjonalnych grup: 1. Rozkazy przesłania danych w

Bardziej szczegółowo

PROGRAMY REZYDENTNE Terminate and State Resident, TSR

PROGRAMY REZYDENTNE Terminate and State Resident, TSR PROGRAMY REZYDENTNE Terminate and State Resident, TSR O co tu chodzi Podstawowe reguły Jak może program zostać rezydentnym Przechwytywanie przerwań Jak się samoznaleźć w pamięci Aktywacja TSR-u. Problemy

Bardziej szczegółowo

5. Mikroprocesory 8086 i 8088

5. Mikroprocesory 8086 i 8088 Mikroprocesory 8086 i 8088 5. Mikroprocesory 8086 i 8088 Mikroprocesory 8086 i 8088 (ich twórca - firma Intel - stosuje oznaczenia iapx86 i iapx88 odpowiednio) są układami wielkiej skali integracji (LSI)

Bardziej szczegółowo

Architektura komputerów

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

Bardziej szczegółowo

Zuzanna Hartleb i Artur Angiel

Zuzanna Hartleb i Artur Angiel ARCHITEKTURA KOMPUTERÓW - LABORATORIUM Program hybrydowy Dokumentacja ćw. 1-4 Zuzanna Hartleb i Artur Angiel 2010-06-16 Działanie Program pobiera od użytkownika liczbę zmiennoprzecinkową, sprawdza poprawnośd

Bardziej szczegółowo

Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4

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

Bardziej szczegółowo

CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki

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

Bardziej szczegółowo

Wprowadzenie do Architektury komputerów. Asembler procesorów rodziny x86

Wprowadzenie do Architektury komputerów. Asembler procesorów rodziny x86 Wprowadzenie do Architektury komputerów Asembler procesorów rodziny x86 Budowa procesora rodziny x86 Rejestry procesora 8086 ogólnego przeznaczenia Dla procesorów 32-bitowych: EAX, EBX, ECX, EDX Dla procesorów

Bardziej szczegółowo

Architektura komputerów. Komputer Procesor Mikroprocesor koncepcja Johna von Neumanna

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,

Bardziej szczegółowo

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Ć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

Bardziej szczegółowo

Programowanie Niskopoziomowe

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

Bardziej szczegółowo

CPU. Architektura FLAGS Bit: dr Paweł Kowalczyk; DPTNS, KFCS UŁ. SI 16 bit. 16 bit. 16 bit.

CPU. Architektura FLAGS Bit: dr Paweł Kowalczyk; DPTNS, KFCS UŁ. SI 16 bit. 16 bit. 16 bit. Architektura 8086 8086 posiada 4 rejestry ogólnego użytku AX, BX, CX, DX, 2 rejestry indeksowe SI, DI, 3 rejestry wskaźnikowe SP, BP, IP, 4 rejestry segmentowe CS, DS, SS i ES oraz rejestr flag FLAG AH

Bardziej szczegółowo

Lista instrukcji mikroprocesora 8086. Programowanie w assemblerze

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

Bardziej szczegółowo

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

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,

Bardziej szczegółowo

PROGRAMOWANIE NISKOPOZIOMOWE. Systemy liczbowe. Pamięć PN.01. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012

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

Bardziej szczegółowo

Mikrokontroler ATmega32. Język symboliczny

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

Bardziej szczegółowo

Technika mikroprocesorowa I Wykład 2

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,

Bardziej szczegółowo

Ćwiczenie 3. Konwersja liczb binarnych

Ć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ę

Bardziej szczegółowo

Informacje wstępne. Historia Maszyna Turinga

Informacje wstępne. Historia Maszyna Turinga Informacje wstępne 1 Wykład obejmuje wprowadzenie do techniki mikroprocesorowej omówienie budowy i sposobu działania mikroprocesora pamięci cyfrowe magistrale urządzenia wejścia wyjścia rozwiązania stosowane

Bardziej szczegółowo

Jak wiemy, wszystkich danych nie zmieścimy w pamięci. A nawet jeśli zmieścimy, to pozostaną tam tylko do najbliższego wyłączenia zasilania.

Jak wiemy, wszystkich danych nie zmieścimy w pamięci. A nawet jeśli zmieścimy, to pozostaną tam tylko do najbliższego wyłączenia zasilania. Jak wiemy, wszystkich danych nie zmieścimy w pamięci. A nawet jeśli zmieścimy, to pozostaną tam tylko do najbliższego wyłączenia zasilania. Dlatego trzeba je zapisywać do pliku, a potem umieć je z tego

Bardziej szczegółowo

PROGRAMOWANIE NISKOPOZIOMOWE

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

Bardziej szczegółowo

STRUKTURA I ORGANIZACJA STOSU (FILO- First In Last Out) Rejestry stosu: SS i SP (Stack Segment i Stack Pointer)

STRUKTURA I ORGANIZACJA STOSU (FILO- First In Last Out) Rejestry stosu: SS i SP (Stack Segment i Stack Pointer) STOS I PROCEDURY STRUKTURA I ORGANIZACJA STOSU (FILO- First In Last Out) Rejestry stosu: SS i SP (Stack Segment i Stack Pointer) a) Stan początkowy b) Po załadowania pierwszego elementu (tu - zawartość

Bardziej szczegółowo

Programowanie w asemblerze Architektura procesora

Programowanie w asemblerze Architektura procesora Programowanie w asemblerze Architektura procesora 17 stycznia 2017 Zwana też ISA (Instruction Set Architecture). Klasyfikacja stos; akumulator; jeśli dodatkowe rejestry specjalizowane (np. adresowy), to

Bardziej szczegółowo

Adam Kotynia, Łukasz Kowalczyk

Adam Kotynia, Łukasz Kowalczyk Adam Kotynia, Łukasz Kowalczyk Dynamiczna alokacja pamięci Alokacja pamięci oraz dezalokacja pamięci jest to odpowiednio przydział i zwolnienie ciągłego obszaru pamięci. Po uruchomieniu, proces (program)

Bardziej szczegółowo

Podstawy techniki cyfrowej Mikroprocesory. Mgr inż. Bogdan Pietrzak ZSR CKP Świdwin

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

Bardziej szczegółowo

Procesor Intel 8086 model programisty. Arkadiusz Chrobot

Procesor Intel 8086 model programisty. Arkadiusz Chrobot Procesor Intel 8086 model programisty Arkadiusz Chrobot 26 września 2011 Spis treści 1 Wstęp 2 2 Rejestry procesora 8086 2 3 Adresowanie pamięci 4 4 Ważne elementy języka Pascal 8 1 1 Wstęp Głównym celem

Bardziej szczegółowo

Procesor Intel 8086 model programisty. Arkadiusz Chrobot

Procesor Intel 8086 model programisty. Arkadiusz Chrobot Procesor Intel 8086 model programisty Arkadiusz Chrobot 5 października 2008 Spis treści 1 Wstęp 2 2 Rejestry procesora 8086 2 3 Adresowanie pamięci 4 4 Ważne elementy języka Pascal 6 1 1 Wstęp Głównym

Bardziej szczegółowo

Programowanie Niskopoziomowe

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

Bardziej szczegółowo

Kod hex Instrukcja Opis 37 AAA Koryguj AL po dodawaniu BCD

Kod hex Instrukcja Opis 37 AAA Koryguj AL po dodawaniu BCD AAA ASCII adjust after addition 37 AAA Koryguj AL po dodawaniu BCD AAA powoduje korekcję znajdującego się w AL wyniku dodawania dwóch liczb, o ile dodawane są liczby BCD. Dopiero po korekcji wynik będzie

Bardziej szczegółowo

Architektura komputerów

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

Bardziej szczegółowo

Procesory rodziny x86. Dariusz Chaberski

Procesory rodziny x86. Dariusz Chaberski Procesory rodziny x86 Dariusz Chaberski 8086 produkowany od 1978 magistrala adresowa - 20 bitów (1 MB) magistrala danych - 16 bitów wielkość instrukcji - od 1 do 6 bajtów częstotliwośc pracy od 5 MHz (IBM

Bardziej szczegółowo

Lista rozkazów mikrokontrolera 8051

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

Bardziej szczegółowo

petla:... ; etykieta określa adres w pamięci kodu (docelowe miejsce skoku) DJNZ R7, petla

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

Bardziej szczegółowo

Metody Realizacji Języków Programowania

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

Bardziej szczegółowo

Organizacja typowego mikroprocesora

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ą

Bardziej szczegółowo

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

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

Bardziej szczegółowo

Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach

Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach Marcin Stępniak Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach 1. Informacje Matematyk o nazwisku Bool wymyślił gałąź matematyki do przetwarzania wartości prawda

Bardziej szczegółowo

1. Operacje logiczne A B A OR B

1. Operacje logiczne A B A OR B 1. Operacje logiczne OR Operacje logiczne są operacjami działającymi na poszczególnych bitach, dzięki czemu można je całkowicie opisać przedstawiając jak oddziałują ze sobą dwa bity. Takie operacje logiczne

Bardziej szczegółowo

Programowanie hybrydowe C (C++) - assembler. MS Visual Studio Inline Assembler

Programowanie hybrydowe C (C++) - assembler. MS Visual Studio Inline Assembler Programowanie hybrydowe C (C++) - assembler MS Visual Studio Inline Assembler Wprowadzenie Możliwość wprowadzania kodu asemblerowego bezpośrednio w kodzie źródłowym w języku C lub C++ Nie wymagany MASM

Bardziej szczegółowo

Podstawy programowania w języku C i C++

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,

Bardziej szczegółowo

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

/* 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

Bardziej szczegółowo

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 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

Bardziej szczegółowo

Jerzy Nawrocki, Wprowadzenie do informatyki

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

Bardziej szczegółowo

Programowanie Niskopoziomowe

Programowanie Niskopoziomowe Programowanie Niskopoziomowe Wykład 11: Procedury zaawansowane Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie Plan Wstęp Ramki stosu Rekurencja INVOKE, ADDR, PROC,

Bardziej szczegółowo

Wstęp do assemblera MA51

Wstęp do assemblera MA51 Wstęp do assemblera MA51 Ryszard J. Barczyński, 2017 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku wewnętrznego Assembler Assembler to język programowania

Bardziej szczegółowo

Architektura systemów komputerowych Laboratorium 7 Symulator SMS32 Stos, Tablice, Procedury

Architektura systemów komputerowych Laboratorium 7 Symulator SMS32 Stos, Tablice, Procedury Marcin Stępniak Architektura systemów komputerowych Laboratorium 7 Symulator SMS32 Stos, Tablice, Procedury 1. Informacje 1.1. Stos Stos jest strukturą danych, w której dane dokładane są na wierzch stosu

Bardziej szczegółowo

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

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

Bardziej szczegółowo

Architektura systemów komputerowych Laboratorium 8 Symulator SMS32 Instrukcje skoku i pętle

Architektura systemów komputerowych Laboratorium 8 Symulator SMS32 Instrukcje skoku i pętle Marcin Stępniak Architektura systemów komputerowych Laboratorium 8 Symulator SMS32 Instrukcje skoku i pętle 1. Informacje 1.1. Instrukcje skoku Instrukcje skoku zmieniają wskaźnik instrukcji w rejestrze

Bardziej szczegółowo

Mikroprocesor Intel 8088 (8086)

Mikroprocesor Intel 8088 (8086) Mikroprocesor Intel 8088 (8086) Literatura: Mroziński Z.: Mikroprocesor 8086. WNT, Warszawa 1992 iapx 86,88 Users Manual Intel 80C86 Intersil 1997 [Źródło: www.swistak.pl] Architektura wewnętrzna procesora

Bardziej szczegółowo

Lista rozkazów mikrokontrolera 8051 część pierwsza: instrukcje przesyłania danych, arytmetyczne i logiczne

Lista rozkazów mikrokontrolera 8051 część pierwsza: instrukcje przesyłania danych, arytmetyczne i logiczne Lista rozkazów mikrokontrolera 8051 część pierwsza: instrukcje przesyłania danych, arytmetyczne i logiczne Ryszard J. Barczyński, 2016 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego

Bardziej szczegółowo

Programowanie Niskopoziomowe

Programowanie Niskopoziomowe Programowanie Niskopoziomowe Wykład 4: Architektura i zarządzanie pamięcią IA-32 Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie Plan Wstęp Tryby pracy Rejestry

Bardziej szczegółowo

. III atyka, sem, Inform Symulator puterów Escape rchitektura kom A

. 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)

Bardziej szczegółowo

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych: Zmienna i typ Pascal typy danych Zmienna to obiekt, który może przybierać różne wartości. Typ zmiennej to zakres wartości, które może przybierać zmienna. Deklarujemy je w nagłówku poprzedzając słowem kluczowym

Bardziej szczegółowo

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ę 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ą

Bardziej szczegółowo

1. Asembler i wstawki asemblerowe w C

1. Asembler i wstawki asemblerowe w C Opublikowano w: WEREWKA J..: Programowanie sprzętu komputerowego dla automatyków. Skrypt AGH Nr 1514, Kraków 1998 1. Asembler i wstawki asemblerowe w C Asembler jest językiem programowania na poziomie

Bardziej szczegółowo

Wstęp do Reverse engineeringu

Wstęp do Reverse engineeringu Wstęp do Reverse engineeringu O mnie Agnieszka Bielec Eternal pracuję w CERT Polska jako Malware Analyst CTFy z p4 prowadze bloga eternal.red lubie ścianki wpinaczkowe i rower twitter Reverse Engineering

Bardziej szczegółowo

Język programowania: Lista instrukcji (IL Instruction List)

Język programowania: Lista instrukcji (IL Instruction List) Język programowania: Lista instrukcji (IL Instruction List) Wykład w ramach przedmiotu: Sterowniki programowalne Opracował dr inż. Jarosław Tarnawski 08.12.2009 Norma IEC 1131 Języki tekstowe Języki graficzne

Bardziej szczegółowo

UTK Można stwierdzić, że wszystkie działania i operacje zachodzące w systemie są sterowane bądź inicjowane przez mikroprocesor.

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

Bardziej szczegółowo

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5. Operatory w Javie W Javie występują następujące typy operatorów: Arytmetyczne. Inkrementacji/Dekrementacji Przypisania. Porównania. Bitowe. Logiczne. Pozostałe. Operacje wykonywane są na operandach (argumentach

Bardziej szczegółowo

002 Opcode Strony projektu:

002 Opcode Strony projektu: ReverseCraft assem bler by gynvael.coldwind//vx Opcode Strony projektu: http://re.coldwind.pl/ http://www.uw-team.org/ Zasoby! czyli co możemy użyć... Instrukcje procesora Pamięć Wirtualna Rejestry CPU

Bardziej szczegółowo

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).

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

Bardziej szczegółowo

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41 Programowanie w C++ Wykład 2 Katarzyna Grzelak 5 marca 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41 Reprezentacje liczb w komputerze K.Grzelak (Wykład 1) Programowanie w C++ 2 / 41 Reprezentacje

Bardziej szczegółowo

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe Wykład 15 Wprowadzenie do języka na bazie a Literatura Podobieństwa i różnice Literatura B.W.Kernighan, D.M.Ritchie Język ANSI Kompilatory Elementarne różnice Turbo Delphi FP Kylix GNU (gcc) GNU ++ (g++)

Bardziej szczegółowo

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Programowanie w C++ Wykład 2 Katarzyna Grzelak 4 marca 2019 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Na poprzednim wykładzie podstawy C++ Każdy program w C++ musi mieć funkcję o nazwie main Wcięcia

Bardziej szczegółowo

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście. Typy, operatory, wyrażenia. Wejście i wyjście. Typy, operatory, wyrażenia Zmienna: [] [ '[' ']' ] ['=' ]; Zmienna to fragment pamięci o określonym

Bardziej szczegółowo

Odczyt danych z klawiatury Operatory w Javie

Odczyt danych z klawiatury Operatory w Javie Odczyt danych z klawiatury Operatory w Javie Operatory W Javie występują następujące typy operatorów: Arytmetyczne. Inkrementacji/Dekrementacji Przypisania. Porównania. Bitowe. Logiczne. Pozostałe. Operacje

Bardziej szczegółowo

Struktura i działanie jednostki centralnej

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

Bardziej szczegółowo

Notatka Aplikacyjna NA 03006PL Maj 2016

Notatka Aplikacyjna NA 03006PL Maj 2016 Notatka Aplikacyjna NA 03006PL Spis treści 1. Wstęp... 2 1.1. Wymagania programowe... 2 2. Tworzenie projektu i dodawanie programu w... 3 3. Organizacja okien dla języka IL... 5 4. Składnia języka IL...

Bardziej szczegółowo

Kod znak-moduł. Wartość liczby wynosi. Reprezentacja liczb w kodzie ZM w 8-bitowym formacie:

Kod znak-moduł. Wartość liczby wynosi. Reprezentacja liczb w kodzie ZM w 8-bitowym formacie: Wykład 3 3-1 Reprezentacja liczb całkowitych ze znakiem Do przedstawienia liczb całkowitych ze znakiem stosowane są następujące kody: - ZM (znak-moduł) - U1 (uzupełnienie do 1) - U2 (uzupełnienie do 2)

Bardziej szczegółowo

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

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,

Bardziej szczegółowo

Język C zajęcia nr 11. Funkcje

Język C zajęcia nr 11. Funkcje Język C zajęcia nr 11 Funkcje W języku C idea podprogramów realizowana jest wyłącznie poprzez definiowanie i wywołanie funkcji. Każda funkcja musi być przed wywołaniem zadeklarowana. Deklaracja funkcji

Bardziej szczegółowo

Różności w C++ Marek Pudełko

Różności w C++ Marek Pudełko Różności w C++ Marek Pudełko Kodowanie i reprezentacja liczb 2 Kodowanie uzupełnieniowe U1 i U2 Bity liczby numerujemy od 0 do k 1 Bitom nr j, j < k 1 przyporządkowuje się wagi w j =2 j Najstarszej pozycji

Bardziej szczegółowo

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji

Bardziej szczegółowo

Programowanie mikrokontrolera 8051

Programowanie mikrokontrolera 8051 Programowanie mikrokontrolera 8051 Podane poniżej informacje mogą pomóc w nauce programowania mikrokontrolerów z rodziny 8051. Opisane są tu pewne specyficzne cechy tych procesorów a także podane przykłady

Bardziej szczegółowo

Ćwiczenie nr 4. Zasady kodowania podprogramów

Ćwiczenie nr 4. Zasady kodowania podprogramów Ćwiczenie nr 4 Zasady kodowania podprogramów 4.1 Wstęp W praktyce programowania spotykamy się często z sytuacjami, gdy identyczne czynności wykonywane są w wielu miejscach programu. W takich przypadkach

Bardziej szczegółowo

Ćwiczenie 2. Siedmiosegmentowy wyświetlacz LED

Ćwiczenie 2. Siedmiosegmentowy wyświetlacz LED Ćwiczenie 2 Siedmiosegmentowy wyświetlacz LED 2-1. Cel ćwiczenia Celem ćwiczenia jest zapoznanie się studentów ze sposobem obsługi wielopozycyjnego 7-segmentowego wyświetlacza LED multipleksowanego programowo

Bardziej szczegółowo

Przerwania w architekturze mikrokontrolera X51

Przerwania w architekturze mikrokontrolera X51 Przerwania w architekturze mikrokontrolera X51 (przykład przerwanie zegarowe) Ryszard J. Barczyński, 2009 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku

Bardziej szczegółowo

Zmienne, stałe i operatory

Zmienne, stałe i operatory Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe

Bardziej szczegółowo

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 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.

Bardziej szczegółowo

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

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,

Bardziej szczegółowo

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Temat 1: Podstawowe pojęcia: program, kompilacja, kod Temat 1: Podstawowe pojęcia: program, kompilacja, kod wynikowy. Przykłady najprostszych programów. Definiowanie zmiennych. Typy proste. Operatory: arytmetyczne, przypisania, inkrementacji, dekrementacji,

Bardziej szczegółowo