1 / 48

Riistvarapõhine programmeerimine

Riistvarapõhine programmeerimine. Loeng 3 Arvuti programmeerija pilguga Mälu korradus. Arvuti programmeerija pilguga. Registrid Mälu korraldus Käsustik. Registrid. Üldregistrid Segmendiregistrid Eriregistrid. Üldregistrid I. Üldregistrid II. Ax accumulator Bx base register

illias
Télécharger la présentation

Riistvarapõhine programmeerimine

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. Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus

  2. Arvuti programmeerija pilguga • Registrid • Mälu korraldus • Käsustik ID218 Riistvaralähedane programmeerimine

  3. Registrid • Üldregistrid • Segmendiregistrid • Eriregistrid ID218 Riistvaralähedane programmeerimine

  4. Üldregistrid I ID218 Riistvaralähedane programmeerimine

  5. Üldregistrid II • Ax accumulator • Bx base register • Cx count register • Dx data register ID218 Riistvaralähedane programmeerimine

  6. Üldregistrid III • Si source index • Di destination index • Bp base pointer • Sp stack pointer ID218 Riistvaralähedane programmeerimine

  7. Segmendiregistrid • Cs code segment • Ds data segment • Ss stack segment • Es extra segment ID218 Riistvaralähedane programmeerimine

  8. Eriregistrid • IP instruction pointer • Flags register ID218 Riistvaralähedane programmeerimine

  9. Mälu korraldus • Segmendid • Adresseerimisviisid • Intel 8086 adresseerimine ID218 Riistvaralähedane programmeerimine

  10. Füüsiline segment ID218 Riistvaralähedane programmeerimine

  11. Loogiline segment • Andmete segment (Data segment) • Koodi segment (Code segment) • Pinu segment (Stack segment) • Lisasegment (Extra segment) ID218 Riistvaralähedane programmeerimine

  12. Mälu adresseerimisviisid • Otseadresseerimine • Vahetu adresseerimine • Kaudne adresseerimine ID218 Riistvaralähedane programmeerimine

  13. Op. Code Effective address Otseadresseerimine I Direct Mode ID218 Riistvaralähedane programmeerimine

  14. Op. Code Register Otseadresseerimine II • Effektiivaadress on registris • Kasutatakse kui aadress on muutuja Register Effective aaddress Register direct Mode ID218 Riistvaralähedane programmeerimine

  15. Op. Code Otseadresseerimine III Register Constant + Register aaddress Effective aaddress Base displacement Mode ID218 Riistvaralähedane programmeerimine

  16. Op. Code Otseadresseerimine IV Register Register Register aaddress Register aaddress + Effective aaddress Base displacement Mode ID218 Riistvaralähedane programmeerimine

  17. Op. Code Constant Vahetu adresseerimine I Immidiate Mode ID218 Riistvaralähedane programmeerimine

  18. Op. Code Register Vahetu adresseerimine II Register Operand Register addressing Mode ID218 Riistvaralähedane programmeerimine

  19. Op. Code Address Main memory Indirect addressing mode Effective address Kaudne adresseerimine I ID218 Riistvaralähedane programmeerimine

  20. Op. Code Address Main memory Register aaddress Register indirect addressing mode Effective address Kaud adresseerimine II ID218 Riistvaralähedane programmeerimine

  21. Käsuloenduriga adresseerimine Op. Code Offset PC aaddress + Effective aaddress PC relative addressing Mode ID218 Riistvaralähedane programmeerimine

  22. Intel 8086 mälu adresseerimisviisid • Register • Immediate • Direct memory • Indirect memory ID218 Riistvaralähedane programmeerimine

  23. Register OperandsI • 8- või 16-bit protsessori register • Andmed asuvad registris • Ei nõua mälupöördumist ID218 Riistvaralähedane programmeerimine

  24. Register Operands II Movbx, 10; Load constant to BX Addax, bx; Add BX to AX Jmpdi; Jump to the address in DI Mov[bx], dl ; Store DL in indirect memory operand inc     bx; Increment register operand Mov[bx], dl; Store DL in new indirect memory operand ID218 Riistvaralähedane programmeerimine

  25. Immediate Operands I • Operandi väärtus on käsukoodis • Operand on const • Määratakse kompileerimise ajal • Lubatud avaldis • Ei nõua mälupöördumist ID218 Riistvaralähedane programmeerimine

  26. Immediate Operands II Movcx, 20; Load constant to register Addvar, 1Fh; Add hex constant to variable        Subbx, 25 * 80; Subtract constant expression ID218 Riistvaralähedane programmeerimine

  27. Immediate Operands III • OFFSET Operator Movbx, OFFSET var; Load offset address • SEG Operator Movax, SEG farvar; Load segment address        Moves, ax ID218 Riistvaralähedane programmeerimine

  28. Direct Memory Operands I • Fikseeritud asukoht mälus • Aadress on käsukoodis • Tuleb defineerida operandi suurus • Lubatud avaldis • Nõuab mälupöördumist ID218 Riistvaralähedane programmeerimine

  29. Direct Memory Operands II .DATA; Segment for uninitialized data varBYTE?; Reserve one byte, labeled "var“ .CODE        .        .. Movvar, al; Copy AL to byte at var ID218 Riistvaralähedane programmeerimine

  30. Direct Memory Operands III [] = “+” Movax, array[2] ; [] = “+” Movax, array+2 Movax, array[-2] ; lubatud “-” Movax, array-2 Movax, var ; [] või ilma Movax, [var] ID218 Riistvaralähedane programmeerimine

  31. Direct Memory Operands IV ID218 Riistvaralähedane programmeerimine

  32. Indirect Memory Operands I • Arvutakse programmi täitmise käigus • Arvutamiseks kasutatakse registreid • Tuleb defineerida operandi suurus • Võimaldab dünaamilist ligipääsu • Lubatud avaldis ID218 Riistvaralähedane programmeerimine

  33. Indirect Memory Operands II Movax, WORD [bx] Movax, [bx+si] Movax, table[si] ID218 Riistvaralähedane programmeerimine

  34. Indirect Memory Operands III tableWORD100 DUP (0) ; õige .         .         . Movax, table[bx][di]+6 Movax, mem1[si] + mem2 ; vale ID218 Riistvaralähedane programmeerimine

  35. Indirect Memory Operands IV Movax, table[bx][di] Movax, table[di][bx] Movax, table[bx+di] Movax, [table+bx+di] Movax, [bx][di]+table ID218 Riistvaralähedane programmeerimine

  36. Indirect Memory Operands V • Base addressing mode – bx, bp • Indexed addressing mode – si, di • Base – reg:address, const:offset • Index – reg:offset, const:address • BP - > SS ID218 Riistvaralähedane programmeerimine

  37. Indirect Memory Operands VI ID218 Riistvaralähedane programmeerimine

  38. Indirect Memory Operands VII ID218 Riistvaralähedane programmeerimine

  39. Indirect Memory Operands VIII ID218 Riistvaralähedane programmeerimine

  40. Indirect Memory Operands IX ID218 Riistvaralähedane programmeerimine

  41. Indirect Memory Operands X ID218 Riistvaralähedane programmeerimine

  42. Indirect Memory Operands XI ID218 Riistvaralähedane programmeerimine

  43. Indirect Memory Operands XII ID218 Riistvaralähedane programmeerimine

  44. Indirect Memory Operands XIII ID218 Riistvaralähedane programmeerimine

  45. Indirect Memory Operands XIV ID218 Riistvaralähedane programmeerimine

  46. Kokkuvõtte I • Programmeerijale tähtis: • Registrid • Mälukorraldus • Käsustik ID218 Riistvaralähedane programmeerimine

  47. Kokkuvõtte II • Registrid: • Üldregistrid • Segmendiregistrid • Eriregistrid ID218 Riistvaralähedane programmeerimine

  48. Kokkuvõtte III • Mälukorraldus: • Vahetu adresseerimine • Otsene adresseerimine • Kaudne adresseerimine ID218 Riistvaralähedane programmeerimine

More Related