1 / 19

PC PROGAMME IS HERPLAASBAAR STANDAARD STRUKTURE MAKROS ONTWERP EN PROGRAMMERING IS SOORTGELYK

PC PROGAMME IS HERPLAASBAAR STANDAARD STRUKTURE MAKROS ONTWERP EN PROGRAMMERING IS SOORTGELYK WENKE VIR DIE SKRYF VAN 'N PROGRAM VOORBEELDE. PC Programme is herplaasbaar ("relocatable").

nelson
Download Presentation

PC PROGAMME IS HERPLAASBAAR STANDAARD STRUKTURE MAKROS ONTWERP EN PROGRAMMERING IS SOORTGELYK

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PC PROGAMME IS HERPLAASBAAR • STANDAARD STRUKTURE • MAKROS • ONTWERP EN PROGRAMMERING IS SOORTGELYK • WENKE VIR DIE SKRYF VAN 'N PROGRAM • VOORBEELDE RS245-2003-Lesing 8

  2. PC Programme is herplaasbaar ("relocatable") * Data en prosedures word nie by absolute adresse geplaas wanneer ons die bronkode ("source code") skryf nie. In plaas van adresse word name gebruik. * As 'n program uit meer as een module bestaan, moet die objekkode modules geskakel word ("linked") om 'n .EXE lêer te skep. Hierdie lêer bevat ook nie absolute adresse nie, maar wel die nodige inligting sodat die bedryfstelsel adresse kan toeken wanneer die program in die geheue van die rekenaar gelaai word. 'n .EXE lêer is dus herplaasbaar ("relocatable") RS245-2003-Lesing 8

  3. STANDAARD STRUKTURE In die gestruktureerde tale (PLM, Pascal, Modula2, Oberon ens) is daar 'n aantal standaard strukture wat gebruik word. Die strukture het een ingang en een uitgang punt. IF-ELSE ENTRY ………... ………… cmp al,bl jz THEN ELSE: ……….. ……….. jmp EXIT THEN: ………. ………. EXIT: ……….. F IF test ELSE T THEN EXIT RS245-2003-Lesing 8

  4. do…while ENTRY do: ……….. ……….. cmp al,bl jz do ……….. ……….. do it T while test F EXIT RS245-2003-Lesing 8

  5. WHILE ENTRY WHILE:……. cmp bx,cx jnz EXIT DO: ……. ……. jmp WHILE EXIT: ……. T WHILE test Do it F EXIT RS245-2003-Lesing 8

  6. ENTRY switch case test case0 case1 case2 case3 ; Data segment Table: dw case0,case1,case2,case3 ; Code segment ………... mov di,ax shl di,1 jmp [Table][di] case0: ………… jmp EXIT case1: ………… jmp EXIT ………… etc EXIT: ………... EXIT Nota: Die tabel bevat die adresse van die instruksies met die etikette case0 tot case3. Die getal in ax word gebruik om die afset in die tabel te bereken. Die shl instruksie word gebruik om die getal in si met twee te vermenigvuldig aangesien twee grepe vir elke afset adres benodig word. RS245-2003-Lesing 8

  7. ENTRY for (k= a ; k < b; k++) {do it; } k=a mov ax,[a] mov [k],ax mov bx,[b] MORE: CMP [k],bx jae EXIT DO: ……. ……. inc [k] jmp MORE EXIT: ………. F k < b? EXIT T do it k=k+1 NOTA: Strukture mag verdere strukture bevat. Die "do" blok hierbo mag byvoorbeeld ook 'n struktuur wees - dit het slegs een ingang en een uitgang. Dit mag ook 'n funksie wees. RS245-2003-Lesing 8

  8. FUNKSIES Funksies moet soos strukture slegs een ingang en eenuitgang hê - dit verminder die moontlikhede vir foute. In die geval van samesteller programme maak dit ook sin aangesien die registers wat binne 'n funksie gebruik word (behalwe die registers waarin parameters oorgedra is) aan die begin van die funksie ge-"push" word en aan die einde weer ge-"pop" moet word. Bv: PROC1: push bp mov bp,sp push ax push bx …… …… …… EXIT: pop bx pop ax pop bp ret 2 RS245-2003-Lesing 8

  9. MAKROS Wanneer 'n prosedure geroep word, gaan tyd verlore aangesien die IP-register op die stapel geplaas moet word en dan gelaai moet word met die adres wat geroep word (en omgekeerd wanneer die ret instruksie uitgevoer word. Vir kort prosedures is die persentasie tyd wat verlore gaan taamlik groot en is die lonend om die instruksies bloot te herhaal. 'n Makrosamesteller laat jou toe om makros te definieer. Elke keer as die makro in die program gebruik word sal die samesteller in effek al die instruksies wat deel van die makro vorm saamstel en in die objekkode plaas. Ons kan klaarkom sonder makros en sal ook nie die hoëvlak semestellerinstruksies soos .IF gebruik nie. RS245-2003-Lesing 8

  10. Ontwerp en programmering is soortgelyk. Vir alle programme en ontwerpe benodig die programmeerder/ontwerper: 1 'n Spesifikasie van wat benodig word. 2 Kennis - daarsonder kan jy niks doen nie 3 Vermoë om oplossings te genereer (chaotiese denke + uitsoek van werkbare oplossings) RS245-2003-Lesing 8

  11. Wenke vir die skryf van 'n program 1 Maak seker dat jy weet wat verlang word. 2 Maak die inligting bymekaar Bv: Is daar beskikbare BIOS en DOS roepe? Inligting oor die randapparaat - adresse ens. Algoritmes, truuks en spesiale instuksies wat die taak kan vergemaklik. Hoe word parameters, resultate oorgedra? 3 Ontwerp die program: Teken 'n vloeidiagram of skryf minstens die program in psuedo-kode. 4 As dit 'n groot program is: kodeer en ontfout dit stukkie vir stukkie. "Macho"-programmering werk nie! 5 Moenie huiwer om van voor af te begin nie - ontwerp is 'n iteratiewe proses. 6 Dokumenteer die program goed. RS245-2003-Lesing 8

  12. As jy sukkel om algoritmes te ontwikkel: Dink hoe jy die taak sou uitvoer as jy beperk was tot die aksies wat 'n rekenaar kan uitvoer: Byvoorbeeld (Voorbeeld 1): Gestel jy het vyf getalle (A,B,C,D,E) en kan slegs twee-twee op 'n slag vergelyk: hoe kies jy die grootste een? Vergelyk getal A met B en kies die grootste een. As A groter is as B: Doen niks, anders laat A=B. Vergelyk A met C. As A groter is as C: Doen niks, anders laat A=C. Doen dieselfde met getalle D en E. Getal A is dus nou die grootste getal. BEGIN As die samesteller roetine uit 'n C-program geroep word, moet jy in ag neem hoe die vyf getalle oorgedra word en die antwoord teruggegee word. N A > B A=B J N A>C A=C J Ens. RS245-2003-Lesing 8

  13. 1 Bepaal die basiese inligting: Vyf bytes word aangegee in al,dl,bl,cl,stapel. Die grootste byte word teruggegee in al. 2 Teken die vloeidiagram: BEGIN Bewaar bp en kry laaste parameter vanaf stapel in ah N ahal al > ah VOORBEELD 1 T N blal al > bl Nota: Registers waarin resultate teruggegee word moenie herstel word nie. Moet dus nie ax aan die begin push en aan die einde pop nie! T Ens vir cl en dl Herstel bp TERUG RS245-2003-Lesing 8

  14. 3 Skryf die kode: public _maximum: push bp ; bewaar bp mov bp,sp mov ah,[bp][4] ; parameter, IP en BP op stapel, dus BP+4 wys na parameter cmp al,ah ; vergelyk twee parameters ja next1 ; behou al indien goter as ah mov al,ah ; ah > al, vervang al met ah next1: cmp al,bl ; vergelyk twee parameters ja next2 ; behou al indien goter as bl mov al,bl ; bl > al, vervang al met bl next2: cmp al,cl ens, ens . pop bp ; herstel bp ret 2 ; keer terug en pop parameter RS245-2003-Lesing 8

  15. VOORBEELD 2 Skryf 'n samestellerfunksie vir die volgende (sonder om BIOS of DOS roepe te gebruik. void setInt(char intNo, int seg, int offs); Die funksie plaas die segmentadres (seg) en die afsetadres (offs) in die onderbrekingstabel vir die verlangde onderbrekingstipe (intNo). 1 Bepaal die basiese inligting: Die intNo word in al, seg in dx en offs in bx aangegee. offs moet by 0000:(intNo*4) en seg moet by 0000:(intno*4+2) geskryf word. RS245-2003-Lesing 8

  16. 2 Teken die vloeidiagram BEGIN Bewaar alle registers wat gaan gebruik Stel die datasegment na zero en 'n indeksregister (si) na IntNo*4. Skryf Offs by ds:si Inkrementeer indeksregister met twee Skryf Seg by ds:si Herstel registers TERUG RS245-2003-Lesing 8

  17. 3 Skryf die kode public _setInt: push ds ;bewaar registers wat gaan gebruik push cx push si pushf cli ;keer onderbrekings xor cx,cx ;onderbrekingstabel segment = 0 mov ds,cx xor ah,ah ;maak seker ah =0 shl ax ;vermenigvuldig IntNo met 4 shl ax mov si,ax mov [si],bx ;stoor Offs in tabel inc si inc si mov [si],dx ;stoor Seg in tabel popf pop si ;herstel registers pop cx pop ds ret 0 RS245-2003-Lesing 8

  18. Dokumentasie Voorsien elke module van : 1 'n Kort beskrywing. 2 Die naam van die outeur. 3 'n Revisielys: Datum van Revisie + kort beskrywing van enige verandering. Elke funksie moet voorsien word van 'n kort beskrywing wat die volgende inligting bevat: 1 Wat doen die funksie. 2 Watter parameters word aan die funksie oorgedra en hoe (In watter registers en waar op die stapel - indien wel.) 3 Watter parameters word deur die funksie teruggegee en hoe. 4 Indien die funksie van globale veranderlikes gebruik maak, noem hulle. Voeg voldoende kommentaar by - verkieslik by elke instruksie van die funksie. RS245-2003-Lesing 8

  19. ALGEMENE FOUTE 1 Registers word in funksies gebruik, maar nie bewaar nie. 2 Die aantal "pushes" en "pops" stem nie ooreen nie. 3 JMP na 'n funksie met 'n RET aan die einde. 4 16 bis registers word gebruik, wanneer slegs die bisse in die mins belangrike greep geldig is. bv cmp ax,10H in plaas van cmp al,10H. As ah nie nul is nie veroorsaak dit probleme. 5 Registers word oorskryf - deurdat dieselfde register vir verskillende doeleindes gebruik word. Onhou dat ax verander as al of ah verander - dieselfde geld vir bx, cx en dx. 6 Tikfoute: Bv weglaat H by heksadesimale getalle. 7 Grootste bron van foute is slordige programmering. Samesteller programmering verg noukeurigheid en goeie dokumentasie. RS245-2003-Lesing 8

More Related