) skoky (nepodmínìné a podmínìné) þneproduktivníÿ operace. pomìrnì dlouhá



Podobné dokumenty
Ø... øadiè. AJ... aritm. jedn. HP... hlavní pam.

Struktura a architektura počítačů (BI-SAP) 7

Kubatova Y36SAP 8. Strojový kód Jazyk symbolických instrukcí asembler JSA pro ADOP a AVR Kubátová Y36SAP-strojový kód 1

Kubatova Y36SAP 9. Strojový kód ISA architektura souboru instrukcí střadačově, zásobníkově orientovaná, GPR Kubátová Y36SAP-ISA 1

Registry 32 bitové pro všeobecné použití: EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP.

poèáteèní nastavení vyhodnocení efektivní pøeru¹ení ¹íøka datové sbìrnice: 1 slovo

Popis instrukční sady procesoru ADOP

Procesor z pohledu programátora

Assembler - 2.část. poslední změna této stránky: Zpět

Programátorský model x86

Procesory, mikroprocesory, procesory na FPGA O. Novák, CIE 11 1

Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/YOS: Přednáška I / 21

ISU Cvičení 3. Marta Čudová

Struktura a architektura počítačů (BI-SAP) 8

8. Laboratoř: Aritmetika a řídicí struktury programu

Kubatova Y36SAP procesor - control unit obvodový a mikroprogramový řadič RISC Y36SAP-control unit 1

Úroveň strojového kódu procesor Intel Pentium Úvod

Operační systémy 2. Přednáška číslo 1. Úvod do OS

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

Předmluva 13 Použité konvence 14. KAPITOLA 1 Základní číselné soustavy a pojmy Číselné soustavy a převody 15 1.

x86 assembler and inline assembler in GCC

Michal Brandejs. Mikroprocesory Intel

Strojový kód. Instrukce počítače

Mikrořadiče řady 8051.

Strojový kód k d a asembler procesoru MIPS SPIM. MIPS - prostředí NMS NMS. 32 ks 32bitových registrů ( adresa registru = 5 bitů).

Pohled do nitra mikroprocesoru

Pohled do nitra mikroprocesoru Josef Horálek

a operačních systémů

Assembler RISC RISC MIPS. T.Mainzer, kiv.zcu.cz

A51 MACRO ASSEMBLER POKUSNY PROGRAM DATE 10/3/007 PAGE 1

MCP BIOS řídicí jednotky Kit386EXR

Program "Světla" pro mikropočítač PMI-80

ISU Cvičení 7. Marta Čudová

Assembler - 4.část. poslední změna této stránky: Zpět

Strojový kód, assembler, emulátor počítača

Struktura a architektura počítačů (BI-SAP) 9

Architektura počítačů

Semestrální práce z předmětu. Jan Bařtipán / A03043 bartipan@studentes.zcu.cz

RISC a CISC architektura

Mikroprocesor Intel 8051

Seznámení s mikropočítačem. Architektura mikropočítače. Instrukce. Paměť. Čítače. Porovnání s AT89C2051

Přednáška. Strojový kód a data. 4. Přednáška ISA J. Buček, R. Lórencz

Architektury počítačů a procesorů

Struktura a architektura počítačů (BI-SAP) 6

Architektura počítačů. Instrukce a návrh instrukční sady. Lubomír Bulej KDSS MFF UK

Úroveň strojového kódu 32-bitový procesor Intel Pentium

Princip funkce počítače


Y36SAP

CHARAKTERISTIKA PROCESORU PENTIUM První verze:

3/ %,1'(& 83'1 &( &3 )XQNFH. + ; ; ; ; / ; ; + ; EH]H]PuQ\

Úroveň strojového kódu procesor Intel Pentium. Adresovanie pamäte

Semestrální práce z předmětu ÚPA MIPS

B. Sčítání,odčítání adoplňkovýkód

Assembler DRUHÁ ČÁST OBSAH.

3.7.5 Znaménkové operátory Násobící operátory Rùzné operátory Základní objekty Konstanty Sig

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Informace o nových učebních textech

Struktura a architektura počítačů (BI-SAP) 1

Čísla, reprezentace, zjednodušené výpočty

Komerèní využití stavebních návodù je povoleno jen s písemným souhlasem autora a nakladatelství. Soubory na CD ROM mající pøímo vztah ke knize, které

Popis instrukční sady - procesory PIC Aritmetické a logické operace

Testování jednotky ALU a aplikace metody FMEA

Virtuální počítač. Uživatelský program Překladač programovacího jazyka Operační systém Interpret makroinstrukcí Procesor. PGS K.

Architektura počítače

Michal Brandejs. Mikroprocesory Intel Pentium

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_25 09

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Násobení. MI-AAK(Aritmetika a kódy)

MSP 430F1611. Jiří Kašpar. Charakteristika

Y36SAP - aritmetika. Osnova



Metody připojování periferií BI-MPP Přednáška 2

Překladač - Assembler, úloha SW_ UART

REbejs. 1. workshop (draft0)

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

:5$ =islv GDW V DOWHUQDFt QHMY\ããtKRELWX


MU-411/412 MU-811/812. 4x AIN (12 bitù), RS-485

Matematika I Ètvercové matice - determinanty



Jazyk symbolických adres

Základy digitální techniky

Architektura počítačů Logické obvody

Procesor. Procesor FPU ALU. Řadič mikrokód

Struktura a architektura počítačů (BI-SAP) 5

Základy informatiky. 2. Přednáška HW. Lenka Carr Motyčková. February 22, 2011 Základy informatiky 2

Adresní mody procesoru


Universita Pardubice Fakulta elektrotechniky a informatiky. Mikroprocesorová technika. Semestrální práce

Assembler x86. Studijní text pro předmět: Strojově orientované jazyky Petr Olivka. Katedra informatiky VŠB-TU Ostrava

Klasifikace. Vzhledem k neustálému technickému rozvoji si výrobce vyhrazuje právo mìnit dílèí parametry bez pøedchozího upozornìní.

Překladač - Assembler. kat. měření, ČVUT - FEL, Praha A3B38MMP, X38MIP Přednáška 3 - část. J. Fischer

Architektury VLIW M. Skrbek a I. Šimeček

Pojem architektura je převzat z jiného oboru lidské činnosti, než počítače.

NÁVOD K OBSLUZE MODULU VIDEO 64 ===============================

Koncepce DMA POT POT. Při vstupu nebo výstupu dat se opakují jednoduché činnosti. Jednotlivé kroky lze realizovat pomocí speciálního HW.

Transkript:

Strojový kód instrukce = pøíkaz (zakódovaný jako þèísloÿ) Obsahuje (popø. mù¾e obsahovat) tyto informace: h1 co se má provést (jaká operace) h2 s èím se to má provést (operandy) a kam se má ulo¾it výsledek h3 kde se má pokraèovat (adr. násl. instr.) Tyto informace mohou být obsa¾eny : explicitnì v instrukci Pø.: poèítaè SAPO 5 adresové instrukce: h1... tzv. operaèní znak h2... 2+1 adresa h3... 2 adresy následující instrukce pøi záporném a nezáporném výsledku zèásti explicitnì v instrukci, zèásti urèeny implicitnì architekturou procesoru, ) napø.: h1... operaèní znak OZ instrukce h2... adresová èást instrukce h3... von Neumannova koncepce ) dal¹í instrukce na následující adrese architektura operaèní kód = soubor instrukcí: OZ operace Strojový kód 2 dále pøedpokl.: von Neumannova koncepce ) ) ový èítaè PC [Program Counter] obsahuje adresu následující instrukce ) skoky (nepodmínìné a podmínìné) þneproduktivníÿ operace ) krat¹í instrukce 3 adresová instrukce: OZ a 1 a 2 a 3 þnejpøirozenìj¹íÿ: 2 operandy + 1 výsledek napø.: ha 1 i,ha 2 i!a 3 pomìrnì dlouhá 2 adresová instrukce: OZ a 1 a 2 výsledek se ukládá na místo prvního operandu napø.: ha 1 i,ha 2 i!a 1 je tøeba zavést þneproduktivníÿ operaci pøesun: Pø.: hxi,hyi!z ( hxi! z ha 2 i!a 1 hzi,hyi!z UPS2 1 27.2.1996 c A. Pluháèek UPS2 2 27.2.1996 c A. Pluháèek Strojový kód 3 1 adresová instrukce: OZ a zvl. registr støadaè S [Accumulator] 1. operand a výsledek napø.: operace pøesunu: hai!s hsi,hai!s a hsi!a Pø.: hxi,hyi!z 8 < hxi! S hsi,hyi!s : hsi! z více støadaèù ) èíslo støadaèe 2 instrukce ) lze zavést operace mezi støadaèi Pø.: Motorola øada 68000 datové registry D 0,D 1,...,D 7 32 b odèítání 32 b: D n,! D n OZ: 9 n 0 B 9 instrukce: OZ adresa hd 3 i,h18 FF2018 FF23i!D 3 : 96B9 0018 FF20 UPS2 3 3.8.1999 c A. Pluháèek Zápis u strojový kód: strojové instrukce þèíslaÿ Pø.: Intel 8086 (zjednodu¹eno) AX støadaè 16 b A10401 h104105i!ax 2B060601 haxi,h106107i!ax A30201 haxi!102103 pracné ování i zmìny nepøehledný zápis vy¹¹í ovací jazyk (VPJ) (napø. Pascal) Pø.: a:=b, c omezení (zejm. pro þspeciálníÿ úèely) ménì efektivní (?) jazyk symbolických instrukcí (JSI): operaèní znak i adresy zapsány symbolicky Pø.: MOV AX,b SUB AX,c MOV a,ax UPS2 4 3.8.1999 c A. Pluháèek

Vytváøení ù ve strojovém kódu v JSI vstupní data # Ideové schéma technické platformy (IBM PC{kompatibilní osobní poèítaè) asembler # ve strojovém kódu výstupní data VPJ: analogicky místo asembleru jiný pøekladaè (kompilátor) nìkdy: v JSI ve VPJ )! pøekladaè! modul moduly! spojovací [linker]! stroj. kód UPS2 5 27.2.1996 c A. Pluháèek UPS2 6 3.8.1999 c M. norek Øada procesorù Intel 80x86 rok tranz. MIPS [tis.] pøi MHz dat. adr. 1971 *4004 2,3 0.06 0,108 4 10 1978 8086 29 0.33 5 16 20 1979 8088 29 0.33 5 8 20 1982 80286 134 1.2 8 16 24 1985 80386DX 275 6 16 32 32 1988 80386SX 275 2.5 16 16 24 1989 i486dx 1200 20 25 32 32 1993 Pentium 3100 112 66 64 32 1995 Pentium Pro 5500 300 133 64 36 1997 Pentium II 7500 300 64 36 1999 Pentium III 28000 733 64 36 Typy instrukcí X86 (=INSTRUKÈNÍ SOUBOR) pøesun dat (MOV,...,IN,OUT,...PUSH,POP,CLI,..) aritmetické i. (ADD,...,INC,..) logické i. (AND,...,XOR,...) posuvy (SHL,...,RCR,...) skoky (JMP,...,JC,JNC,...) cykly (LOOP,...,LOOPZ,...) pody (CALL,RET,...) pøeru¹ení (INT,IRET,...) instrukce pro práci s øetìzci 1981 IBM PC 1984 IBM PC-AT pseudoinstrukce (napø. deklarace promìnných DB,DW,..) makroinstrukce UPS2 7 25.2.2000 c H. Kubátová { A. Pluháèek UPS2 8 3.8.1999 c H. Kubátová

Registry procesorù øady 80x86 16 bitù = 2 8 bitù datové registry 0 AX 1 CX 2 DX 3 BX é 4 SP 5 BP 6 SI 7 DI segmentové registry 0 ES 1 CS 2 SS 3 DS IP 4 AH AL 0 5 CH CL 1 6 DH DL 2 7 BH BL 3 [Accumulator] [Counter] [Data] [Base] Ukazatel zásobníku [Stack Pointer] Bázový ) registr ( [Base Pointer] Indexregistry [Source Index] [Destination Index] zásobník data [Extra Segment] [Code Segment] [Stack Segment] [Data Segment] Programový èítaè [Instruction Pointer] Registry procesorù øady 80x86 2 registr pøíznakù FLAGS O D I T S Z A P C 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 C CF pøenos [Carry] 2 P PF parita [Parity] 4 A AF pomocný pøenos [Auxiliary carry] 6 Z ZF nula [Zero] 7 S SF znaménko [Sign] 8 T TF krokování [Trap] 9 I IF pøeru¹ení [Interrupt] 10 D DF smìr [Direction] 11 O OF pøeplnìní [Overow] IF, TF a DF : ovlivòují èinnost procesoru ostatní: nastavovány nìkterými instrukcemi informace o výsledku operace FLAGS Registr pøíznakù [Status Flags] UPS2 9 1.10.1997 c A. Pluháèek UPS2 10 3.8.1999 c A. Pluháèek vybrané instrukce 8086 (v JSI) pøesuny dat MOV kam,co... kam := co kam : segment. reg. co : segment. reg. konstanta nelze: segment. reg. : = konstanta : = Pø.: MOV AL,DH MOV DS,BX MOV SI,65 MOV prom,ax konstanta tzv. pøímý operand [immediate] rùzné zpùsoby zápisu hodnot: 65535 = 0FFFFH = 1111111111111111B 65 = 41H = 01000001B = 1000001B = 'A' 3142H = '1B' zápis èísla musí zaèínat desítkovou èíslicí: FFFFH ¹patnì 0FFFFH dobøe nutný souhlas délek platí i pro dal¹í instrukce!!! Pø.: MOV AX,BL ¹patnì (16 b versus 8 b) deklarace promìnných : vyhrazení místa v pamìti (pro data) pøidìlení symbolických jmen pøíp. jejich inicializace (poèáteèní hodnoty) tzv. pseudoinstrukce: DB [Dene Bytes] slabiky (1 B = 8 b) DW [Dene Words] slova (2 B = 16 b) DD [Dene Dwords] dvojitá slova (4 B = 32 b). Pøíklad: bm DB? ; poè. hodn. není denována psvz DB 5 ; poè. hodn. = 5 tab DB 0FH, 5, '=' ; nahrazuje 3 deklarace text DB 'UPS' ; místo 'U', 'P', 'S' pole DB 3 DUP (8,?) ; místo 8,?, 8,?, 8,? prom DW? DB 1011B adr DD bm, prg ; þadresyÿ prg:. MOV AL,psvz ; bm =? MOV bm,al ;bm = 5 UPS2 11 13.3.1996 c A. Pluháèek UPS2 12 25.2.2000 c A. Pluháèek

aritmetické operace Operandy a výsledek lze interpretovat jako: èísla v doplòkovém kódu, napø. (pro 1 B = 8 b): FF 16 (-1) 2h,128 10 ; 127 10 i nezáporná èísla, napø. (pro 1 B = 8 b): FF 16 FF 16 = 255 10 2h0; 255 10 i ADD,... := + : : konstanta nelze: : = + pøíznaky CF, OF,SFaZF: Pø.: ADD AL,BL nezáporná è. doplòkový kód pøíznaky AL BL AL+BL AL BL AL+BL CF OF SF ZF 7A 78 0 F2 7A 78 (-E) 0 1 1 0 7A FF 1 79 7A (-1) 79 1 0 0 0 pozn.: dále se nastavují pøíznaky PF a AF aritmetické operace 2 ADC,... := + + CF SUB,... :=, analogické ADD, a¾ na pøíznak CF: <() CF : = 1 (, nezáporná èísla) zde: CF... tzv. výpùjèka [borrow] SBB,... :=,, CF CMP,..., stejné jako SUB, ale neukládá se výsledek nastaví se v¹ak pøíznaky! NEG... :=0, =, (uva¾uje se doplòkový kód) Pø.: MOV AL,1... 00000001 NEG AL... 1111 1111 = 0FFH CF=1, ZF=0, SF=1, OF=0 INC... := + 1 nemìní se pøíznak CF DEC... :=, 1 nemìní se pøíznak CF UPS2 13 3.8.1999 c A. Pluháèek UPS2 14 3.3.1996 c A. Pluháèek logické operace AND,... := ^ logický souèin OR,... := _ logický souèet XOR,... := souèet modulo 2 pøíznaky: CF : = 0 SF... výsl. < 0 ZF... výsl. = 0 OF : = 0 0 1 0 1 0 0 1 1 AND 0 0 0 1 OR 0 1 1 1 XOR 0 1 1 0 TEST,... ^ stejné jako AND, ale neukládá se výsledek nastaví se v¹ak pøíznaky! NOT... := negace (0 =1;1=0) Pø.: MOV DH,13H... 0001 0011 XOR DH,86H... 1000 0110 1001 0101 = 95H ZF=0, SF=1 NOT DH... 0110 1010 = 6AH ZF=0, SF=0 UPS2 15 3.3.1996 c A. Pluháèek posuv posuv 8 >< posuvy logický SH [SHift] aritmetický SA [Shift Arithmetic] cyklický RO [ROtate] >: cyklický pøes C RC [Rotate through C] vlevo L [Left] vpravo R [Right] L SH C 0 - - C 0 - - C SA C - - C RO C - - C RC C SHL, o kolik o kolik = 1 CL analogicky: SHR, SAL,... RCL kromì pøíznaku C CF se mìní nìkteré dal¹í pøíznaky Pø.: MOV AX,1234H... AX = 1234H MOV CL,4 ROL AX,CL... AX = 2341H CF=1 UPS2 16 30.9.1996 c A. Pluháèek 0 R

nepodmínìný skok JMP náv skoky náv... návì¹tí instrukce (nejjednodu¹¹í varianta): Pø.: MOV AX,1 1 h JMP NAVESTI 2 h COSI: ADD BX,CX NAVESTI: RCR AX,1 3 h podmínìné skoky : JC náv... je-li C=1, skok na náv (jinak nic) JNC náv... je-li C=0, skok na náv (jinak nic) Pø.: analogicky: AX := max (BX,CX) nezáporná èísla: MOV AX,BX CMP CX,BX JC OK MOV AX,CX OK: JZ, JNZ, JS, JNS, JO, JNO, JP, JNP skoky 2 podmínìné skoky orientované na srovnání : doplòkový nezáporná relace kód èísla < JL JB JLE JBE = JE JE 6= JNE JNE JGE JAE > JG JA E... Equal L... Less G... Greater B... Bellow A... Above podmínka skoku ( pøíslu¹né pøíznaky, napø.: JB... CF = 1 =) JB JC JBE... CF_ZF=1 JL... SFOF = 1 JGE... SFOF = 0 atd. pozn.: v pøedch. pøíkl. lze JC nahradit JB Pø.: AX := max (BX,CX) doplòkový kód : øe¹ení: vpøedch. pøíkl. JC nahradit JL rozsah podm. skokù :,128 127 vùèi IP Pø.: JC OK MOV AX,CX IP "128" #127# þdel¹íÿ skoky: opaèný podm. skok + nepodm. skok UPS2 17 13.3.1996 c A. Pluháèek UPS2 18 13.3.1996 c A. Pluháèek cykly Pø.: MOV CX,300 CYKL:.ḊEC CX ; mìní pøíznaky JNZ CYKL LOOP náv CX := CX, 1; je-li CX 6= 0, skok na náv nemìní pøíznaky Pø.: MOV CX,300 CYKL:..LOOP CYKL ; nemìní pøíznaky LOOPE náv CX := CX, 1; je-li CX 6= 0 a ZF = 1, skok na náv LOOPNE náv CX := CX, 1; je-li CX 6= 0 a ZF = 0, skok na náv LOOPZ náv jako LOOPE náv LOOPNZ náv jako LOOPNE náv rozsah skoku stejný jako u podmínìných skokù UPS2 19 3.8.1999 c A. Pluháèek