480 likes | 680 Views
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
E N D
Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus
Arvuti programmeerija pilguga • Registrid • Mälu korraldus • Käsustik ID218 Riistvaralähedane programmeerimine
Registrid • Üldregistrid • Segmendiregistrid • Eriregistrid ID218 Riistvaralähedane programmeerimine
Üldregistrid I ID218 Riistvaralähedane programmeerimine
Üldregistrid II • Ax accumulator • Bx base register • Cx count register • Dx data register ID218 Riistvaralähedane programmeerimine
Üldregistrid III • Si source index • Di destination index • Bp base pointer • Sp stack pointer ID218 Riistvaralähedane programmeerimine
Segmendiregistrid • Cs code segment • Ds data segment • Ss stack segment • Es extra segment ID218 Riistvaralähedane programmeerimine
Eriregistrid • IP instruction pointer • Flags register ID218 Riistvaralähedane programmeerimine
Mälu korraldus • Segmendid • Adresseerimisviisid • Intel 8086 adresseerimine ID218 Riistvaralähedane programmeerimine
Füüsiline segment ID218 Riistvaralähedane programmeerimine
Loogiline segment • Andmete segment (Data segment) • Koodi segment (Code segment) • Pinu segment (Stack segment) • Lisasegment (Extra segment) ID218 Riistvaralähedane programmeerimine
Mälu adresseerimisviisid • Otseadresseerimine • Vahetu adresseerimine • Kaudne adresseerimine ID218 Riistvaralähedane programmeerimine
Op. Code Effective address Otseadresseerimine I Direct Mode ID218 Riistvaralähedane programmeerimine
Op. Code Register Otseadresseerimine II • Effektiivaadress on registris • Kasutatakse kui aadress on muutuja Register Effective aaddress Register direct Mode ID218 Riistvaralähedane programmeerimine
Op. Code Otseadresseerimine III Register Constant + Register aaddress Effective aaddress Base displacement Mode ID218 Riistvaralähedane programmeerimine
Op. Code Otseadresseerimine IV Register Register Register aaddress Register aaddress + Effective aaddress Base displacement Mode ID218 Riistvaralähedane programmeerimine
Op. Code Constant Vahetu adresseerimine I Immidiate Mode ID218 Riistvaralähedane programmeerimine
Op. Code Register Vahetu adresseerimine II Register Operand Register addressing Mode ID218 Riistvaralähedane programmeerimine
Op. Code Address Main memory Indirect addressing mode Effective address Kaudne adresseerimine I ID218 Riistvaralähedane programmeerimine
Op. Code Address Main memory Register aaddress Register indirect addressing mode Effective address Kaud adresseerimine II ID218 Riistvaralähedane programmeerimine
Käsuloenduriga adresseerimine Op. Code Offset PC aaddress + Effective aaddress PC relative addressing Mode ID218 Riistvaralähedane programmeerimine
Intel 8086 mälu adresseerimisviisid • Register • Immediate • Direct memory • Indirect memory ID218 Riistvaralähedane programmeerimine
Register OperandsI • 8- või 16-bit protsessori register • Andmed asuvad registris • Ei nõua mälupöördumist ID218 Riistvaralähedane programmeerimine
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
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
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
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
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
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
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
Direct Memory Operands IV ID218 Riistvaralähedane programmeerimine
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
Indirect Memory Operands II Movax, WORD [bx] Movax, [bx+si] Movax, table[si] ID218 Riistvaralähedane programmeerimine
Indirect Memory Operands III tableWORD100 DUP (0) ; õige . . . Movax, table[bx][di]+6 Movax, mem1[si] + mem2 ; vale ID218 Riistvaralähedane programmeerimine
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
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
Indirect Memory Operands VI ID218 Riistvaralähedane programmeerimine
Indirect Memory Operands VII ID218 Riistvaralähedane programmeerimine
Indirect Memory Operands VIII ID218 Riistvaralähedane programmeerimine
Indirect Memory Operands IX ID218 Riistvaralähedane programmeerimine
Indirect Memory Operands X ID218 Riistvaralähedane programmeerimine
Indirect Memory Operands XI ID218 Riistvaralähedane programmeerimine
Indirect Memory Operands XII ID218 Riistvaralähedane programmeerimine
Indirect Memory Operands XIII ID218 Riistvaralähedane programmeerimine
Indirect Memory Operands XIV ID218 Riistvaralähedane programmeerimine
Kokkuvõtte I • Programmeerijale tähtis: • Registrid • Mälukorraldus • Käsustik ID218 Riistvaralähedane programmeerimine
Kokkuvõtte II • Registrid: • Üldregistrid • Segmendiregistrid • Eriregistrid ID218 Riistvaralähedane programmeerimine
Kokkuvõtte III • Mälukorraldus: • Vahetu adresseerimine • Otsene adresseerimine • Kaudne adresseerimine ID218 Riistvaralähedane programmeerimine