Tentamen PC-teknik 5 p Lösningar och kommentarer Program: Di2, Em3 Datum: 05-10-22 Tid: 09:00-14:00 Lokal E171 Hjälpmedel: Linjal, miniräknare, Instruktionsrepertoar för 8086 (utdelas), Lathund, Pacific C för MSDOS (utdelas). Bilagor: ASCII-tabell, Interrupt Examinator: Anders Arvidsson Telefon: 0707-76 28 86 Examinatorn besöker tentamen (efter ca halva skrivtiden). Uppgifterna redovisas direkt i frågebladet. Vid utrymmesbrist lämnas svar på separat ark, vilket då numreras och hänvisas till från uppgiftsbladet. Max poäng: 25 Betyg Poäng 3 10 4 15 5 20 1 (8)
Tentamensfrågor 1. Vad skrivs ut på skärmen då nedanstående program körs? #include <stdio.h> void main(void) { char tenta; int test; tenta = 251^247; test = 0x7FFF; test = test + 0b000000000000111; } printf("%d %d", (int)tenta, test); Svar: 12-32762 (2 p) 2. Vad kommer registren att innehålla för värde efter att nedanstående kod exekverats? Svara decimalt! Registervärdena betraktas som positiva heltal. (3 p) xor dx,dx mov al,#0ffh mov ah,#2 mov bx,ax shl bx,#1 mov cx,dx inc cx inc cx A: dec bx loop A add cx,#400 mul cx ax: 44656 (Låga 16 bit efter AX*CX) bx: 1532 (2FF vänsterskiftat ett steg (d v s en bit) - 2) cx: 400 (0 efter loop +400) dx: 4 (höga 16 bit efter AX*CX) 2 (8)
3. Skriv ett assemblerprogram som hjälper oss att göra en kryptering av text genom användning av Caesarkrypto. Programbeskrivning: Det som läses från tangentbordet skrivs ut på skärmen med en viss förskjutning (offset) i alfabetet. Vid programstart frågar programmet efter offset som sedan används för samtliga tecken. (D v s är offset = 3 och man trycker A så skrivs D ut.) Endast versaler och endast A Z krypteras, övriga tecken skrivs ut som de läses in. Blir tecknet efter tillägg av offset >Z börjar tecknen om från A. (D v s med offset = 3 blir ett Y till ett B.) Programmet avslutas vid tryck på Enter. Programmet ska demonstrera användning av blandad C och assembler genom att variabeldeklaration, utskrift av hjälptexten Ange offset: och inläsning av offset sker i C, medan resten (det som loopas tills Enter trycks) görs i assembler. Läs in offseten som en integer, men det inlästa talet får sedan konverteras till valfri typ (t ex vid kopiering till annan variabel eller register). Programmet ska delas upp i tydliga delar och kommenteras del för del så flödet enkelt går att följa. Komplettera med kommentering rad för rad om det krävs, vilket också ökar möjligheten till tröstpoäng om något syntaktisk fel gör koden felaktig. Interrupt och ASCII-tabell bifogas. Det kan vara smart att lösa uppgiften sist. (4 p) Lösningsförslag #include <stdio.h> int offset; void main(void) { printf("ange offset: \n"); scanf("%d", &offset); #asm ; Kopierar offset till dl (offset < 8 bit) mov dx,_offset ;dl innehåller offset ; Läser in tangent mloop: mov ah,#0 int #16H ;Vänta på och läs in tang ; Kollar om Enter för att avsluta cmp al,#13 ;Jfr med CR jz done ;Vagnretur hittad 3 (8)
; Kollar om tecken ska skrivas ut omodifierat cmp al,#'a' ;Compare tang med 'A' jb print ;If Below, skriv ut cmp al,#'z' ;Compare 'z' ja print ;If Above, skriv ut ; Lägger till offset på A - Z add al,dl ;Adderar offset cmp al,#'z' ;Kolla om vi hamnade utanför alfabetet jng print ;Skriv ut If Not Greater sub al,#'z'-'a'+1 ;Subtrahera annars hela alfabetet ; Förutsätter att offset < alfabetet ; Skriver ut tecken print: mov ah,#0eh ;Teletype mode mov bh,#0 ;Screenpage 0 mov bl,#1 ;Ger någon färg om grafikläge int #10H ;Skriv ut tecken (AL) jmp mloop done: #endasm } 4. Beskriv kortfattat kapslingstyperna QFP, PGA och BGA så att skillnaden mellan dem enkelt framgår och man inte riskerar förväxla dem med andra kapslar. (2 p) Plats för ev. skiss Samtliga är ungefär fyrkantiga. QFP är en kapsel för ytmontering där benen sitter i ytterkanten av alla fyra sidor. PGA har ben monterade under kapsel i flera rader med början från kapselns fyra ytterkanter och inåt. BGA har lödkulor fördelade över hela kapselns undersida. 4 (8)
5. Förklara hur en Heat Pipe fungerar, vad den används till och på vilket sätt den kan vara bättre än andra, mer traditionella, lösningar. (2 p) Plats för skiss: En Heat Pipe består av ett slutet rör med en mindre mängd vätska och vakuum. Det låga trycket gör att vätskan kokar vid en låg temperatur. När ena änden av röret blir varm förångas vätskan där för att sedan kondensera i andra änden under avgivande av värmen. Användningsområdet är effektiv värmetransport, t ex från processor till kylflänsar. Fördelen jämfört med att leda värmen genom t ex en kopparstav är att tekniken medger lägre termisk resistans vid samma vikt och volym. 6. Beskriv någon för- och nackdel med flyttal (float) jämfört med heltalsdatatyper (integer). Berätta också om någon risk som kan finnas med flyttal i t ex if-satser i C-kod. (2 p) Exempel på lösning: En fördel med float är att väldigt stora eller väldigt små tal kan lagras. En nackdel är att hanteringen tar längre tid. Vid if-satser måste man beakta att flyttal har en begränsad noggrannhet och att alla tal är ungefärliga, vilket gör att man måste ta med en viss felmarginal vid konstruktion av jämförelsesatser. 5 (8)
7. En AMD-processor kan t ex vara märkt 3800+. Vad innebär detta? (D v s vilken information kan vi utläsa?) Vad är orsaken till att AMD märker processorerna på detta sätt? (2 p) 3800+ innebär att processorn (enligt AMD) exekverar kod lika snabb som en (enligt AMD) motsvarande Pentium med klockfrekvensen 3800 MHz. Orsaken till att AMD inte skriver ut frekvensen är att många av deras processorer exekverar mer kod per klockcykel, vilket skulle det göra det svårt att jämföra prestanda genom att jämföra klockfrekvens. 8. Vad står förkortningarna SRAM och DRAM för och vad är den principiella skillnaden? (2 p) SRAM = Static Random Access Memory DRAM = Dynamic Random Access Memory Skillnaden är att SRAM håller minnet så länge spänningen är på, medan DRAM måste uppdateras med jämna mellanrum för att inte tappa innehållet. 9. Vad kallas de tre delar ett äldre chipset består av? (D v s före hub-arkitekturen.) Nämn också en uppgift respektive del tar hand om. (2 p) North Bridge; hanterar t ex RAM-minnet South Bridge; hanterar t ex ATA-gränssnittet Super I/O; hanterar t ex serie- och parallellport 10. Beskriv den principiella skillnaden mellan PCI och PCI Express (i sättet att överföra data till instickskorten). Beskriv också på vilka sätt i PCI Express uppträder i olika varianter beroende på bandbredd. (2 p) PCI överför data parallellt (32 eller 64 bitar) medan PCI Express överför data seriellt (genom ett differentiellt par). Genom att köra flera seriella kanaler parallellt kan man få snabbare versioner av PCI Express. T ex existerar 2x och 16x på många moderkort. 11. Två hårddiskar som ansluts till samma parallella ATA-kontakt måste konfigureras för master respektive slave (så de tar hand om rätt data). På vilka två fysiskt olika sätt är det som regel möjligt att göra denna konfigurering så att hårddiskarna vet om de är master eller slave? (2 p) Genom jumpers på hårddisken kan dessa konfigureras för master eller slave. Alternativt kan jumpern ställas i Cable Select, samtidigt som man använder en ATA-kabel där en tråd saknas till den ena hårddiskkontakten. Vilken som blir master eller slave beror då på i vilken kontakt respektive hårddisk sitter. 6 (8)
Bilagor Användbara interrupt INT 16H Function 00H Read Character from Keyboard. (Waits for keystroke) Register Call Value Return Value AH 00H Scan Code AL ASCII-Character Code (=0 if extended key) INT 10H Function 0EH Write Text in Teletype mode Writes an ASCII character to the display at the current cursor position, using the specified colour (if in graphics mode), then increments the cursor position. Register AH AL BH BL Call Value 0EH ASCII value screen page foreground color in graphics mode 7 (8)
8 (8)