Karunkról Kari digitális könyvtár

Hasonló dokumentumok
Kitlei Róbert kitlei.web.elte.hu. Karunkról Kari digitális könyvtár

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

A 32 bites x86-os architektúra regiszterei

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

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

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

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

Processzorok Utasításszintű Kezelése tavasz

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

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

Aritmetikai utasítások I.

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

Máté: Assembly programozás

Kitlei Róbert. Assembly programozás ELTE, Lektorálta: Dévai Gergely. Kitlei Róbert Assembly programozás 1

Segédlet az Informatika alapjai I. című tárgy számrendszerek fejezetéhez

A számok kiírása is alapvetően karakterek kiírásán alapul, azonban figyelembe kell venni, hogy a számjegyeket, mint karaktereket kell kiírni.

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

Assembly. Iványi Péter

Dr. Oniga István DIGITÁLIS TECHNIKA 2

Bevezetés az informatikába gyakorló feladatok Utoljára módosítva:

Paraméter átadás regisztereken keresztül

Assembly. Iványi Péter

Assembly programozás levelező tagozat

Analóg és digitális jelek. Az adattárolás mértékegységei. Bit. Bájt. Nagy mennyiségû adatok mérése

Megszakítások és kivételek

Gyakorló feladatok. /2 Maradék /16 Maradék /8 Maradék

Bevezetés az informatikába gyakorló feladatok Utoljára módosítva:

Hardverközeli programozás 1 1. gyakorlat. Kocsis Gergely

SZÁMRENDSZEREK KÉSZÍTETTE: JURÁNYINÉ BESENYEI GABRIELLA

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

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

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

Stack Vezérlés szerkezet Adat 2.

Aritmetikai utasítások

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

Informatikai Rendszerek Alapjai

3. gyakorlat. Kettes számrendszer: {0, 1} Tízes számrendszer: {0, 1, 2,..., 9} 16-os (hexadecimális számrendszer): {0, 1, 2,..., 9, A, B, C, D, E, F}

PE/COFF fájl formátum

SZÁMÉRTÉKEK (ÁT)KÓDOLÁSA

ÁTVÁLTÁSOK SZÁMRENDSZEREK KÖZÖTT, SZÁMÁBRÁZOLÁS, BOOLE-ALGEBRA

2. Fejezet : Számrendszerek

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

Az assembly nyelv sor-orientált nyelv, tehát minden sorba pontosan egy utasítás kerül. Egy sor mezőkből áll a következőképpen:

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

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

I+K technológiák. Számrendszerek, kódolás

Tamás Péter (D. 424) Mechatronika, Optika és Gépészeti Informatika Tanszék (D 407)

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

SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1

Programozás alapjai. 10. előadás

code segment para public 'code' assume cs:code, ds:code, es:nothing, ss:nothing

Programozott soros szinkron adatátvitel

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

C programozás. { Márton Gyöngyvér, 2009 } { Sapientia, Erdélyi Magyar Tudományegyetem }

10-es számrendszer, 2-es számrendszer, 8-as számrendszer, 16-os számr. Számjegyek, alapműveletek.

Harmadik gyakorlat. Számrendszerek

1. gyakorlat

The Architecture of Computer Hardware and Systems Software: An InformationTechnology Approach 3. kiadás, Irv Englander John Wiley and Sons 2003

INFO1 Számok és karakterek

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

Újrakonfigurálható technológiák nagy teljesítményű alkalmazásai

Kedves Diákok! A feladatok legtöbbször egy pontot érnek. Ahol ettől eltérés van, azt külön jelöljük.

4. Fejezet : Az egész számok (integer) ábrázolása

Utasításfajták Memóriacímzés Architektúrák Végrehajtás Esettanulmányok. 2. előadás. Kitlei Róbert november 28.

5.1.4 Laborgyakorlat: A Windows számológép használata hálózati címeknél

1. forduló Az adat, az információ és a hír jelentése és tartalma. A kommunikáció

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

A feladatok legtöbbször egy pontot érnek. Ahol ettől eltérés van, azt külön jelöljük.

Bevezetés az informatikába

Az egér, a botkormány (joystick) és a nyomtató programozása DOS-ban

Programozás. Programozás villamosmérnököknek

Assembly programozás: 2. gyakorlat

Irvine eljárások. ClrScr - Törli a képernyő tartalmát és a kurzort a képernyő bal felső sarkába helyezi (Clear Screen).

Készítette: Nagy Tibor István

A programozás alapjai előadás. A C nyelv típusai. Egész típusok. C típusok. Előjeles egészek kettes komplemens kódú ábrázolása

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

2017/12/16 21:33 1/7 Hardver alapok

Informatika érettségi vizsga

Mintavételezés tanulmányozása. AD - konverzió. Soros kommunikáció

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

Programozás alapjai Bevezetés

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

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

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

o a PC blokkvázlatos felépítése:

Assembly utasítások listája

Assembly Programozás Rodek Lajos Diós Gábor

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

PMU Kezdı lépések. 6-0 Csatlakozás LG GLOFA-GM és SAMSUNG PLC-hez. 6-1 Kommunikáció LG PMU és LG GLOFA-GM7 / GM6 / GM4 között

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

[1] Bevezetés. A "debug" a DOS-ból közvetlenûl indítható a "debug" szó begépelésével. Kilépés hasonlóképpen a "q" paranccsal történik.

GÁBOR DÉNES FŐISKOLA PREZENTÁCIÓ. Vezetőtanár: Ágoston György 2002/ szemeszter. 222 lap

Alapfogalmak. Dr. Kallós Gábor A Neumann-elv. Számolóeszközök és számítógépek. A számítógép felépítése

Intel x86 utasításkészlet

HARDVERKÖZELI PROGRAMOZÁS1

Bevezetés a programozásba I.

ELŐSZÓTJ "Előszó" \l

Máté: Assembly programozás

Gábor Dénes Főiskola Győr. Mikroszámítógépek. Előadás vázlat. 2004/2005 tanév 4. szemeszter. Készítette: Markó Imre 2006

Digitális technika (VIMIAA02) Laboratórium 1

Átírás:

. előadás Jegyzet www.inf.elte.hu Karunkról Kari digitális könyvtár

i az assembly? gépi kód: a számítógép által közvetlenül értelmezett és végrehajtott jelsorozat assembly: a gépi kód emberek számára könnyen értelmezhető reprezentációja

iért érdemes assemblyt tanulni? a legalacsonyabb absztrakciós szint a gépi kód felett gyors, hatékony bizonyos feladatokhoz nélkülözhetetlen új rálátást ad

ilyen assemblert használunk? architektúra: x86-32 két fő gyártó: D, Intel operációs rendszer: inux assembler: nasm több platformra is megtalálható linker: gcc

ilyen más tárgyak kapcsolódnak? Nagy hatékonyságú számítások RIC processzorokkal zeries (I nagygépek) Operációs rendszerek Programnyelvek I. és II.

Platform C64 start ldx #$0d cycle lda hworld,x sta $0400,x dex bne cycle hworld rts.text "hello world!!!"

Platform zeries nagygép TIT 'Hello World (V/C)' HO TRT R 2,0 UING *,2 * WRTR 'Hello World!' * R 5,5 R 4 * ND HO

Platform VX 0:.data.text.align.globl _main _main:.word 2 jbr 4 5:.data 7:.ascii "Hello, world.2"...

Platform x86, DO,.OD tiny.cod ORG 00h HO PROC OV H,09h DX,msg INT 2h OV X,4C00h INT 2h HO NDP msg D 'Hello World$' ND HO

Platform x86, DO, T ; WRITTN IN T (Turbo ssembler).od TIN COD GNT U C:COD, D:COD ORG 00h TRT: mov ah,9 mov dx,offt sg int 2h int 20h sg D 'Hello World',3,0,'$' COD ND ND TRT

Platform x86, NetD, gas.data msg:.string "Hello World\n" len:.long. msg.text.globl _start _start: push $len /* aenge */ push $msg /* dresse */ push $ /* tdout */ movl $0x4, %eax /* write */...

Platform x86, inux, nasm section.text global main main mov eax, 4 mov ebx, mov ecx, mov edx, H int 0x80 mov eax, xor ebx, ebx int 0x80 section.data H db Hello world

datábrázolás ogikai értékek hamis 0 bit igaz és and 0 vagy or 0 0 0 0 0 0 0 nem not kizáró vagy 0 0 0 xor 0 0 0

datábrázolás ogikai értékek bitmanipuláció and 0 0 0 0 0 0 nulla töröl 0 0 0 0 0 or 0 0 0 0 0 0 0 0 egyes beállít 0 0 xor 0 0 0 0 0 0 0 egyes átvált 0 0 0 0 0 eredeti módosító spec. alk. önmagával módosítás: törlés

datábrázolás Nemnegatív számok a bitek sorban a bitek sorszáma számok előjel nélkül 0 0 0 7 6 5 4 3 2 0 2 7 2 6 2 5 2 4 2 3 2 2 2 2 0 28 64 32 6 8 4 2 2 7 + 0 2 6 + 0 2 5 + 2 4 + 2 3 + 2 2 + 0 2 + 2 0 a szám értéke: 57 0 leírása: 000b az egyes bitek helyi értékei

datábrázolás Nemnegatív számok a kezdeti szám ha páros a szám, 2 0 6 nullát írunk, ha 2 2 2 2 3 30 5 7 0 páratlan, egyet majd osztunk kettővel, és folytatjuk amíg maradt a 2 4 3 számból 2 5 2 6 ekkor a végeredményt alulról felfele olvasva kapjuk: 6 = 0 0 2

datábrázolás Nemnegatív számok hexadecimális (tizenhatos) számrendszer 0.. 9 mint tízesben számok leírása 0 0 0 0 0xCD = 4398 0 0 0 2 0 C 0 0 0h = 0 0 3 0 D 0 h posztfixszel 4 0 0 nullát kell írni 5 0 F elé, ha betűvel kezdődik

datábrázolás Nemnegatív számok összeadás 2 8 2 7 2 6 2 5 2 4 2 3 2 2 2 2 0 0 0 22 0 0 0 0 23 0 a teljes szám egy bittel hosszabb, erre majd fel kell készülni 0 0 0 0 2 + 2 + 2 = 2 0 2 +0 2 + 2 = 2 nem keletkezik túlcsordulás 2 + 2 =0 2 a nullát leírjuk, az egyes túlcsordul 434 0

datábrázolás lőjeles számok +52 negálás bitenként not, majd egy hozzáadása -52 nyolc biten ábrázolva ún. kettes komplemens alak nemnegatív szám nullával kezdődik, alakja megegyezik a nemnegatívakkal 0 0 0 0 0 not not not not not not not 0 0 0 + 0 0 0 0 negatív szám egyessel kezdődik

datábrázolás CII karakterek Karakter Ö ű Θ

datábrázolás CII karakterek Karakter Ö ű Θ Karakterkészlet CII IO 8859- Unicode

datábrázolás CII karakterek Karakter Karakterkészlet Kód (hexa) kódolás: CII CII 4 Ö IO 8859- kódolás: IO 8859- D6 ű Unicode 0 7 Θ 03 98 kódolás: UTF-8

datábrázolás CII karakterek Karakter Karakterkészlet Kód (hexa) Ö IO 8859- D6 IO 8859-7 Θ

datábrázolás CII karakterek karakter új sor kocsivissza kódja 0 0 0D 3 szóköz 20 32.. Z 4..5 65..90 a.. z 6..7 97..22 megjegyzés a sorvége jelzése DO, Windows 0D 0, Unix, inux alatt 0 0.. 9 30..39 48..57 a számjegyek az angol ábécé betűi sorban, kihagyás nélkül sok karakter nincs benne, ezért fejlesztették ki a Unicode-ot minden karaktert egy nyolc bites számmal kódolunk

memória felépítése R lineáris memóriamodell a memória byte-ok sorozata mindegyiknek egy 32 bites címe van DD DDF D0 memóriacímek D... 60 0D C0 D... a memória tartalma

memória felépítése R lineáris memóriamodell egy lépésben kezelhető adatok byte 8 bit word 6 bit szó dword 32 bit duplaszó a memóriában byte-onként fordított sorrendben tárolódnak (little-endian) 0C7 0C7F 0C80 0C8... F 5 F 0C82 57... az 0C7 címen található duplaszó értéke: F5F 6 =426735706 0 az 0C8 címen található szó értéke: 57F 6 =22526 0

memória felépítése Regiszterek 7 az általános célú regiszterek D F4 0 0 0 0 0 0 0 0 0 0 0 3 30 29 28 27 26 25 24 23 22 2 20 9 8 7 6 5 4 3 2 0 9 8 7 6 5 4 3 2 0 eax ebx ecx edx esi edi a regiszter bitjei sorszámmal (vö. helyi érték) az általános célú regiszterek: eax, ebx, ecx, edx, esi, edi

memória felépítése Regiszterek az általános célú regiszterek 7 D F4 0 0 0 0 0 0 0 0 0 0 0 3 30 29 28 27 26 25 24 23 22 2 20 9 8 7 6 5 4 3 2 0 9 8 7 6 5 4 3 2 0 ax bx cx dx si di eax ebx ecx edx esi edi a regiszter bitjei sorszámmal (vö. helyi érték) az általános célú regiszterek: eax, ebx, ecx, edx, esi, edi 32 bitesek, egyes részeik külön névvel rendelkeznek

memória felépítése Regiszterek az általános célú regiszterek 7 D ah bh ch dh al bl cl dl F4 0 0 0 0 0 0 0 0 0 0 0 3 30 29 28 27 26 25 24 23 22 2 20 9 8 7 6 5 4 3 2 0 9 8 7 6 5 4 3 2 0 ax bx cx dx si di eax ebx ecx edx esi edi a regiszter bitjei sorszámmal (vö. helyi érték) az általános célú regiszterek: eax, ebx, ecx, edx, esi, edi 32 bitesek, egyes részeik külön névvel rendelkeznek

memória felépítése Regiszterek további 32 bites regiszterek jelzőbitek regisztere átviteli jelzőbit (carry) veremkezelő regiszterek: esp, ebp hasonlóak az általánosakhoz speciális céljuk van szegmensregiszterek ezekről nem lesz bővebben szó

fordítás menete agasszintű forráskód x.cpp y.adt z.hs Fordítóprogram g++ gnat ghc ssembly forráskód a.asm x.asm y.asm z.asm ssembler nasm g++ gas fasm Tárgykód a.o x.o y.o z.o

fordítás menete Tárgykód a.o x.o y.o z.o zerkesztő gcc Futtatható állomány a.out

z első program Programkód section.text ; a kódszegmens kezdete global main ; a program legyen elindítható main ; a program kezdetét jelző címke mov eax, 4 ; a rendszerszolgáltatás mov ebx, ; paramétereinek beállítása: mov ecx, szoveg ; szöveg kiírása a képernyőre mov edx, 6 ; a szoveg címkéről 6 hosszan int 0x80 ; rendszerszolgáltatás hívása mov eax, ; a kilépés paramétereinek mov ebx, 0 ; beállítása int 0x80 ; rendszerszolgáltatás hívása: kilépés section.data ; az adatszegmens kezdete szoveg db Hello, 0x ; a szöveg, végén egy újsorral

z első program Fordítás, futtatás fordítás és futtatás > nasm hellovilag.asm -f elf > gcc hellovilag.o -o hellovilag >./hellovilag Hello > hellovilag.o hellovilag

z első program memóriacím az utasítás kódja 00000000 00000005 0000000 0000000F 0000004 0000006 000000 00000020 a memóriában sorban megjelenő byte-ok 00000000 00000005 a generált byte-ok a paraméterek kódolt alakja 8 04000000 0000000 9 00000000 06000000 CD 80 8 0000000 00000000 CD 80 48 65 6C 6C 6F 0 az eredeti forrásszöveg section.text ; ez a 3 sor global main ; nem generál main ; kódot mov eax, 4 mov ebx, mov ecx, szoveg mov edx, 6 int 0x80 mov eax, mov ebx, 0 int 0x80 section.data szoveg db Hello db 0x ista