Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

UProcessorens hardware. 8080 Architecture Kernen i en processor er ALUen. Det er den som kan udfører simple regne operationer. De tal den arbejdermed.

Lignende præsentationer


Præsentationer af emnet: "UProcessorens hardware. 8080 Architecture Kernen i en processor er ALUen. Det er den som kan udfører simple regne operationer. De tal den arbejdermed."— Præsentationens transcript:

1 uProcessorens hardware

2 8080 Architecture Kernen i en processor er ALUen. Det er den som kan udfører simple regne operationer. De tal den arbejdermed gemmes i en række registre. Når et tal skal hentes eller gemmes i extern memory sker det vha adresse og data busserne. Den viste processor blev released i 1974. En 2MHz, 8 bits processor som max kan adresserer 64kB hukommelse. Ikke meget, men alligevel rigeligt til at styre en vaskemaskine, eller lignende.

3 Minimum system For at processoren kan arbejde skal der være noget ekstern hukommelse. I viste tilfælde har vi programhukommelse i ROM og arbejds hukommelse i RAM. ROM svarer til det i kender som BIOS fra jeres PCer.

4 Memorymap Når processoren skal læse eller skrive til hukommelsen er det de højeste bit i adressen som bestemmer hvilken kreds vi læser fra. Memorymappen viser hvilke dele af hukommelsen som ligger på de forskellige adresser. Her vist et system med 1 ROM og 3 RAM kredse hver på 16k byte. Det viste tilfælde dækker fra adresse 0000 til FFFF svarende til det som processoren kan adresseres med sine adresse 16 bit. Når RAM og ROM er på 16K betyder det at de har 14 adresseben hver. Det er derfor nødvendigt at lave et kredsløb som ud fra de to sidste holder styr på hvilken kreds der skal skrives til.

5 Kontakt til omverdenen Hvis processoren skal anvendes til at styrer noget elektronik eller andet, skal vi have en portkreds på. Eksemplet her viser en 8255 som har 3 bi-directionale porte hver på 8 bit. At porten er bi-directional betyder at den frit kan anvendes som input eller output. Porten har 2 adresseben (A0 og A1) hvilket giver 4 adresser. De tre laveste knyttes til hver sin port, medens den sidste forbindes til kontrol registeret. Ved at skrive til kontrol registeret kan vi bestemme om porten skal være input eller output. En portkreds indgår i systemets memorymap på lige fod med RAM og ROM, og skal altså have en fysisk adresse i memorymappen.

6 Instruction register 8080MnemonicMachine CodeOperation8080 Mnemon ic Machine CodeOperation Move Increment/Decrement MOVA,B78A <- BINRA3CA <- A + 1 MOVA,C79A <- CINRB4B <- B + 1 MOVA,H7CA <- HDCRA3DA <- A - 1 MOVA,L7DA <- LDCRB5B <- B - 1 MOVA,M7EA <- (HL)Rotate LDAXB0AA <- (BC)RLC7--- LDAXD1AA <- (DE)RRC0F--- LDAword3AwordA <- (word)RAL17--- ADDRAR ADDA87A <- A + A Logiske ADDB80A <- A + BANABA0A <- A AND B ADDM86A <- A + (HL)XRABA8A <- A XOR B ---DD86indexA <- A + (IX+index)ORABB0A <- A OR B ADIbyteC6byteA <- A + byteCMPBB8A - B Substract Branch SUBA97A <- A - AJMPaddressC3addressPC <- address SUBB90A <- A - BJNZaddressC2addressIf NZ, PC <- address SUBM96A <- A - (HL)JZaddressCAaddressIf Z, PC <- address ---DD96indexA <- A - (IX+index) Stack Operation Instructions SUIbyteD6byteA <- A - bytePUSHBC5(SP-2) <- C; (SP-1) <- B; SP <- SP - 2 PUSHDD5(SP-2) <- E; (SP-1) <- D; SP <- SP - 2 POPBC1B <- (SP+1); C <- (SP); SP <- SP + 2 POPDD1D <- (SP+1); E <- (SP); SP <- SP + 2 http://nemesis.lonestar.org/computers/tandy/software/apps/m4/qd/opcodes.html De operationer som processoren kan udfører er begrænset til nogle meget simple funktioner. Kort fortalt handler det om at flytte data fra et register til et andet eller til hukommelsen. Der ud over kan den addere og substraherer samt gang med 2,4,8 ved at lave shift left. Alle operationer er knyttet til en bestem HEX kode (Machine code)

7 Code example Her er et simpelt eksempel på maskinkode. Bemærk at det er programmøren selv der skal holde styr på hvor i memory koden skal lægge, og også hvor de forskellige variable ligger.

8 Assembler include "emu8086.inc" org 100h mov al, 25 ; set al to 25. mov bl, 10 ; set bl to 10. cmp al, bl ; compare al - bl. je equal ; jump if al = bl (zf = 1). putc 'n' ; if it gets here, then al <> bl, jmp stop ; so print 'n', and jump to stop. equal: ; if gets here, putc 'y' ; then al = bl, so print 'y'. stop: ret ; gets here no matter what. http://www.itipacinotti.it/pagine/sistemi2008/documentation_em ulator/asm_tutorial_01.html Assembler er en mere venlig måde at skrive maskikode på. Her er alle koderne erstattet af ord, og man har mulighed for at oprette variable navne m.m.

9 Ansi C #include "stm32f10x.h" // Device header #include #include "LED.h" // Keil::Board Support:MCBSTM32C:LED int main1 (void) { int32_t num = 0; //Anvendes til at angive hvilken LED der tændes/slukkes int32_t max_num = LED_Num() - 1; //LED_Num kommer fra LED.h og angiver antallet af LEDs int32_t i = 0; //En tæller til vores wait loop LED_Initialize();//Init LED kommer fra LED.h while (1){ //Kør evigt LED_On (num);//Tænd LED angivet af num for (i = 0; i < 1000000; i++){} //Vent LED_Off (num); //Sluk LED if (++num > max_num) num = 0; } return 0; } Med C bevæger vi os lidt længere væk fra maskinkoden, men hvis vi vil skrive til computerens hardware skal vi stadig have styr på hvilke adresser det ligger på. Heldigvis indeholder vores IDE en række biblioteker som hjælper med dette. I det viste eksempel skrives til nogle LEDs, men det er kun muligt fordi bibliotekerne kender adressen på de porte som hver LED er forbundet til.


Download ppt "UProcessorens hardware. 8080 Architecture Kernen i en processor er ALUen. Det er den som kan udfører simple regne operationer. De tal den arbejdermed."

Lignende præsentationer


Annoncer fra Google