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

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

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

Operačný systém Úvodná prednáška

Segmentovanie a stránkovanie v procesoroch Intel Pentium

Aritmetické operácie v rôznych číselných sústavách. Ľudmila MACEKOVÁ, KEMT-FEI-TUKE, sep. 2017

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

ALGORITMY A PROGRAMOVANIE VO VÝVOJOVOM PROSTREDÍ LAZARUS. Vývojové prostredie Lazarus, prvý program

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

Základy algoritmizácie a programovania

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

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

IT právo2015. Nový Autorský zákon a zmluvnévzťahy Clouda právo Zodpovednosťza internetový obsah , Technopol, Bratislava

Konfigurácia IP Bell 02C Dverný vrátnik a FIBARO Home Center 2

Pozičné číselné sústavy. Dejiny. Číselná sústava je spôsob, akým sú zapisované čísla pomocou znakov (nazývaných cifry).

15. Príkazy vetvenia

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

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

Zvyškové triedy podľa modulu

PODPROGRAMY. Vyčlenenie podprogramu a jeho pomenovanie robíme v deklarácii programu a aktiváciu vykonáme volaním podprogramu.

Jednoduchá správa pamäte

Program a životní cyklus programu

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

Užívateľská príručka systému CEHZ. Základné zostavy Farmy podľa druhu činnosti

Úvod. Instrukce musí obsahovat: typ operace adresu operandu (operandů) typ operandů modifikátory adresy modifikátory operace POT POT

V 70. letech výzkumy četnosti výskytu instrukcí ukázaly, že programátoři a

Matematika test. 1. Doplň do štvorčeka číslo tak, aby platila rovnosť: (a) 9 + = (b) : 12 = 720. (c) = 151. (d) : 11 = 75 :

Programovanie.NET, C++ - najbližšie termíny:

Multiplexor a demultiplexor

Metóda vetiev a hraníc (Branch and Bound Method)

Programovanie v jazyku C - pole treba poorat...

Začínam so zadaním z NEPOUŽÍVAME ROZSAH POKIAĽ HO MUSÍME PRESKOČIŤ

Mgr. Stanislav Fila, psychológ CPPPaP Banská Bystrica Centrum pedagogicko-psychologického poradenstva a prevencie (bývalá KPPP) Banská Bystrica

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

7.CVIČENIE. Základy HTML

Stručný úvod do OS (2)

POSTUP GENEROVANIA ŽIADOSTI O KVALIFIKOVANÝ CERTIFIKÁT POMOCOU PROGRAMU COMFORTCHIP.

Obsah. Reprezentácia údajov v počítači. Digitalizácia číselnej informácie. Digitalizácia znakov a textovej informácie.

Príklad ponuky: Riešenie: vrch. hodnota 3 hodnota 2 hodnota 1

KOMISNÝ PREDAJ. Obr. 1

značky spájame spojnicami, šípka musí byť ak ...

Mgr. Stanislav Fila, psychológ CPPPaP Banská Bystrica Centrum pedagogicko-psychologického poradenstva a prevencie (bývalá KPPP) Banská Bystrica

Funkce, podmíněný příkaz if-else, příkaz cyklu for

Pat a Mat na výletě 3.4 Na hracím plánu jsou dvě takové dopravní

Návod k servisnému programu pre fiskálny modul FM2000. manuál. (c)varos

Microsoft Outlook. Stručný prehľad základných funkcií. Ing.Anna Grejtáková, SPP DFBERG

Automatické pohony na brány

Programovanie I. Úvod do programovania Mgr. Stanislav Horal, Katedra informatiky, FPV, UCM

DOBROPISY. Dobropisy je potrebné rozlišovať podľa základného rozlíšenia: 1. dodavateľské 2. odberateľské

Plánovanie procesov a vlákien

8. Relácia usporiadania

Organizácia počítačových systémov

Ako započítať daňovú licenciu

Funkcia - priradenie (predpis), ktoré každému prvku z množiny D priraďuje práve jeden prvok množiny H.

MAIS. Verejný portál - kalendárny rozvrh. Používateľská minipríručka pre používateľov systému MAIS. APZ Bratislava

Formuláre PowerPoint MGR. LUCIA BUDINSKÁ,

Princip funkce počítače

Univerzálne dia kové ovládanie TV SAT DVD AUX

Hromadná korešpondencia v programe Word Lektor: Ing. Jaroslav Mišovych

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

Verifikácia a falzifikácia

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Bitmapové a vektorové grafické editory. Grafické editory používame na kresbu, resp. editovanie obrázkov. Obrázky sa dajú kresliť dvoma spôsobmi.

OPAKOVANIE ZÁKLADNÉ POJMY Z INFORMATIKY

Téma : Špecifiká marketingu finančných služieb

PARKOVACÍ SYSTÉM s LCD-displejom a 4 senzormi H PS010. Užívateľský manuál

Preprava lítiových batérií. Začať

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

PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 10

Základná neodkladná resuscitácia & Automatizovaná externá defibrilácia

Manuál pripojenia sa k IP zariadeniu HikVision (videorekordéra, IP kamery, videoservera..) pomocou DDNS servera HikVision.

REŽIM PRENESENIA DAŇOVEJ POVINNOSTI

Predaj cez PC pokladňu

Textový editor WORD. Práca s obrázkami a automatickými tvarmi vo Worde

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

CENY DO VRECKA - DOMÁCNOSTI. keď sa nás spýtajú na ceny pre rok 2019

Lineárne nerovnice, lineárna optimalizácia

AKO PRIPRAVIŤ MONEY S4 / S5 NA NOVÝ ÚČTOVNÝ ROK

Matematika Postupnosti

Organizácia počítačových systémov

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

Elektronické odosielanie výplatných pások

Jako pomůcka jsou v pravém dolním rohu vypsány binární kódy čísel od 0 do 15 a binární kódy příkazů, které máme dispozici (obr.21). Obr.

Bezdrôtový systém registrácie teploty

Blokové a prúdové šifry

Limita funkcie. Čo rozumieme pod blížiť sa? y x. 2 lim 3

SKLADOVÁ INVENTÚRA 1 VYTVORENIE INVENTÚRY. 1.1 Nastavenie skladovej inventúry

Obr. 1 - názov podpísaného súboru/kontajnera v sivej lište

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

Adresní mody procesoru

Programovanie PLC a norma IEC

Architektury počítačů a procesorů

Zápis predmetov do AiSu na aktuálny akademický rok

Názov: Osmóza. Vek žiakov: Témy a kľúčové slová: osmóza, koncentrácia, zber dát a grafické znázornenie. Čas na realizáciu: 120 minút.

Súťaž MLADÝ ELEKTROTECHNIK 2010 Peter Kopecký 9.A, ZŠ Duklianska 1. Bánovce nad Bebravou Nastaviteľný zdroj

Prevody z pointfree tvaru na pointwise tvar

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

Návod na vkladanie záverečných prác do AIS

To bolo ľahké. Dokážete nakresliť kúsok od prvého stromčeka rovnaký? Asi áno, veď môžete použiť tie isté príkazy.

Školská sieť EDU. Rozdelenie škôl. Obsah: Deleba škôl podľa času zaradenia do projektu: Delba škôl podľa rýchlosti pripojenia:

Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT

Transkript:

Strojový kód, assembler, emulátor počítača Návrh architektúry hypotetického procesora Strojový kód Assemblerový jazyk Programovanie v assemblerovom jazyku: Lineárny program Vetvenie Cyklus Emulátor počítača Autor: Peter Tomcsányi, Niektoré práva vyhradené v zmysle licencie Creative Commons http://creativecommons.org/licenses/by-nc-sa/3.0/

Návrh architektúry hypotetického procesora Náš hypotetický procesor je 8-bitový. Má päť 8-bitových registrov Aj adresy do pamäte sú 8-bitové, pamäť môže mať teda maximálne 256 bajtov. Najnižší bit registra F sa nazýva bit Z, určuje, že porovnávané čísla boli rovnaké alebo že výsledok aritmetickej operácie bol nula. Ďalší bit registra F sa nazýva bit G, určuje, prvé z porovnávaných čísiel bolo väčšie než druhé. Ostatné bity registra F nemajú žiadny význam

Návrh strojového kódu Prvý Druhý Assemblerový bajt bajt zápis 00 NOP 01 n LDA n 02 n STA n 03 n ADD n 04 n SUB n 05 adr JMP adr Skoč na adresu adr Význam Neurob nič Prenes bajt z adresy n do registra A Prenes bajt z registra A na adresu n Pripočiítaj k A hodnotu z adresy n Nastav bit Z: keď je výsledok nula tak 1, inak 0 Odčítaj od A hodnotu z adresy n, Nastav bit Z: keď je výsledok nula tak 1, inak 0 Nastav bit G: keď je A neznamienkovo väčšie než obsah adresy n tak 1, inak 0 06 n CMP n Nastav bit Z: keď je A rovné obsahu adresy n tak 1, inak 0 07 08 FF adr adr JNE adr JG adr HALT Ak je bit Z v reg. F rovný 0, tak skoč na adresu adr Ak je bit G v reg. F rovný 1, tak skoč na adresu adr Zastav procesor x DATA x Pseudoinštrukcia - ulož do výsledného programu číslo x Prvý program v strojovom kóde Adresa Strojový kód Assemblerový zápis 00 01 05 LDA 5 02 03 06 ADD 6 04 FF HALT 05 02 DATA 2 06 03 DATA 3 Čo bude v registri A keď procesor zastaví? Symbolické vyjadrenie adries odbremení programátora od zisťovania ich číselnej hodnoty: HALT X: DATA 2 Y: DATA 3 Assemblerový jazyk sa nazýva aj Jazyk symbolických adries

Vykonávanie inštrukcií riadiacou jednotkou Konkretizácia pre navrhnutý procesor 1. Vyber inštrukciu z pamäti z adresy ktorá je v registri IP a umiestni ju do registra I. 2. Zvýš obsah registra IP o 1. 3. Ak inštrukcia potrebuje operand z pamäti (ako vstup alebo výstup), tak vyber jeho adresu z adresy ktorá je v registri IP, umiestni ju do registra Adr a zvýš register IP o 1. 4. Vykonaj inštrukciu. Pritom, ak treba, použi operand z adresy, ktorá je v registru Adr. 5. Ak inštrukcia ukladá výsledok do pamäti, tak ho ulož do pamäti na adresu, ktorá je v registri Adr. 6. Pokračuj znova krokom 1.

Úloha 1 Napíšte program v strojovom kóde, ktorý vypočíta 2*X+4*Y, kde X a Y sú uložené v bajtoch za programom. Program najprv zapíšte v assemblerovom zápise, potom ho preveďte do strojového kódu. ADD X HLT X: DATA 1 Y: DATA 2 00 : 01 0D 02 : 03 0D 04 : 03 0E 06 : 03 0E 08 : 03 0E 0A : 03 0E 0C : FF 0D : 01 0E : 02 Dá sa to naprogramovať na menej inštrukcií?

Úloha 2 Čo spraví tento program? Čo bude na jeho konci v X, Y a v registri A? CMP Y JG Koniec STA Pom LDA Y STA X LDA Pom STA Y Koniec: HALT X: DATA 3 Y: DATA 4 Pom: DATA 0 A = X if A > Y: pass else: Pom = A X = Y Y = Pom A = X A = X if A <= Y: Pom = A X = Y Y = Pom A = X

Úloha 3 Čo spraví tento program? STA N Cyklus: LDA Y ADD Vysl STA Vysl LDA N SUB Jedna STA N JNE Cyklus LDA Vysl HALT X: DATA 3 Y: DATA 4 Vysl: DATA 0 N: DATA 0 Jedna: DATA 1 Pre niektorú hodnotu X ale nebude fungovať správne. Opravte program.

Jednoduchý emulátor strojového kódu Emulátor je program, ktorý vykonáva inštrukcie strojového kódu konkrétneho (hypotetického alebo skutočného) procesora a simuluje prácu celého počítača. Náš jednoduchý emulátor slúži predovšetkým ako ukážka toho, čo sa deje vo vnútri procesora, teda aké úlohy plní riadiaca jednotka. Poslúži aj na vysvetlenie vzťahu strojového kódu a assemblerového jazyka. Naprogramoval som ho v Pythone. Niektoré vlastnosti Pythonu, ktoré som využil: čísla možno zapisovať aj v dvojkovej alebo aj v šestnástkovej sústave: x = 0b0101 y = 0xFE Python pozná logické operácie s číslami rovnako, ako C: print(x & y) print(x y)

Jednoduchý emulátor strojového kódu (2) Kompletný program nájdete na: http://edi.fmph.uniba.sk/~tomcsanyi/interpreterpython.zip def interpretuj(kod): pam = kod+[0]*(256-len(kod)) # doplnenie pamäte do 256 pc = 0; a = 0; f = 0 # počiatočné nastavenie while True: i = pam[pc]; pc = (pc+1)%256 if i == 0: # NOP neurob nič pass elif i == 1: # LDA adr = pam[pc]; pc = (pc+1)%256 a = pam[adr] elif i == 2: # STA adr = pam[pc]; pc = (pc+1)%256 pam[adr] = a elif i == 3: # ADD elif i == 7: # JNE adr = pam[pc]; pc = (pc+1)%256 if f & 1 == 0: pc = pam[pc] a =(a+pam[adr]) % 256 else: pc = (pc+1)%256 if a == 0: f = f 1 elif i == 8: # JG else: f = f & 0b11111110 elif i == 4: # SUB adr = pam[pc]; pc = (pc+1)%256 a =(a-pam[adr]) % 256 if a == 0: f = f 1 else: f = f & 0b11111110 elif i == 5: # JMP pc = pam[pc] elif i == 6: # CMP adr = pam[pc]; pc = (pc+1)%256 if a == pam[adr]: f = f 1 else: f = f & 0b11111110 if a > pam[adr]: f = f 2 else: f = f & 0b11111101 skúste: interpretuj([1,5,3,6,255,2,3]) if f & 2 == 1: pc = pam[pc] else: pc = (pc+1)%256 elif i == 255: break else: raise Exception('Neznáma inštrukcia'+ str(i)) return a