Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus Arvuti programmeerija pilguga Registrid Mälu korraldus Käsustik 12/07/2005 ID218 Riistvaralähedane programmeerimine Registrid Üldregistrid Segmendiregistrid Eriregistrid 12/07/2005 ID218 Riistvaralähedane programmeerimine Üldregistrid I 12/07/2005 ID218 Riistvaralähedane programmeerimine Üldregistrid II Ax accumulator Bx base register Cx count register Dx data register 12/07/2005 ID218 Riistvaralähedane programmeerimine Üldregistrid III Si source index Di destination index Bp base pointer Sp stack.
Download ReportTranscript Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus Arvuti programmeerija pilguga Registrid Mälu korraldus Käsustik 12/07/2005 ID218 Riistvaralähedane programmeerimine Registrid Üldregistrid Segmendiregistrid Eriregistrid 12/07/2005 ID218 Riistvaralähedane programmeerimine Üldregistrid I 12/07/2005 ID218 Riistvaralähedane programmeerimine Üldregistrid II Ax accumulator Bx base register Cx count register Dx data register 12/07/2005 ID218 Riistvaralähedane programmeerimine Üldregistrid III Si source index Di destination index Bp base pointer Sp stack.
Riistvarapõhine programmeerimine Loeng 3 Arvuti programmeerija pilguga Mälu korradus Arvuti programmeerija pilguga Registrid Mälu korraldus Käsustik 12/07/2005 ID218 Riistvaralähedane programmeerimine 2 Registrid Üldregistrid Segmendiregistrid Eriregistrid 12/07/2005 ID218 Riistvaralähedane programmeerimine 3 Üldregistrid I 12/07/2005 ID218 Riistvaralähedane programmeerimine 4 Üldregistrid II Ax accumulator Bx base register Cx count register Dx data register 12/07/2005 ID218 Riistvaralähedane programmeerimine 5 Üldregistrid III Si source index Di destination index Bp base pointer Sp stack pointer 12/07/2005 ID218 Riistvaralähedane programmeerimine 6 Segmendiregistrid Cs code segment Ds data segment Ss stack segment Es extra segment 12/07/2005 ID218 Riistvaralähedane programmeerimine 7 Eriregistrid IP Flags register 12/07/2005 instruction pointer ID218 Riistvaralähedane programmeerimine 8 Mälu korraldus Segmendid Adresseerimisviisid Intel 8086 adresseerimine 12/07/2005 ID218 Riistvaralähedane programmeerimine 9 Füüsiline segment 12/07/2005 ID218 Riistvaralähedane programmeerimine 10 Loogiline segment Andmete segment (Data segment) Koodi segment (Code segment) Pinu segment (Stack segment) Lisasegment (Extra segment) 12/07/2005 ID218 Riistvaralähedane programmeerimine 11 Mälu adresseerimisviisid Otseadresseerimine Vahetu adresseerimine Kaudne adresseerimine 12/07/2005 ID218 Riistvaralähedane programmeerimine 12 Otseadresseerimine I Op. Code Effective address Direct Mode 12/07/2005 ID218 Riistvaralähedane programmeerimine 13 Otseadresseerimine II Op. Code Register Register Effective aaddress Register direct Mode Effektiivaadress on registris Kasutatakse kui aadress on muutuja 12/07/2005 ID218 Riistvaralähedane programmeerimine 14 Otseadresseerimine III Op. Code Register Register aaddress Constant + Effective aaddress Base displacement Mode 12/07/2005 ID218 Riistvaralähedane programmeerimine 15 Otseadresseerimine IV Op. Code Register Register aaddress Register Register aaddress + Effective aaddress Base displacement Mode 12/07/2005 ID218 Riistvaralähedane programmeerimine 16 Vahetu adresseerimine I Op. Code Constant Immidiate Mode 12/07/2005 ID218 Riistvaralähedane programmeerimine 17 Vahetu adresseerimine II Op. Code Register Register Operand Register addressing Mode 12/07/2005 ID218 Riistvaralähedane programmeerimine 18 Kaudne adresseerimine I Op. Code Indirect addressing mode 12/07/2005 Address Main memory Effective address ID218 Riistvaralähedane programmeerimine 19 Kaud adresseerimine II Op. Code Register Register indirect addressing mode 12/07/2005 Address Main memory aaddress Effective address ID218 Riistvaralähedane programmeerimine 20 Käsuloenduriga adresseerimine Op. Code Offset PC aaddress + Effective aaddress PC relative addressing Mode 12/07/2005 ID218 Riistvaralähedane programmeerimine 21 Intel 8086 mälu adresseerimisviisid Register Immediate Direct memory Indirect memory 12/07/2005 ID218 Riistvaralähedane programmeerimine 22 Register Operands I 8- või 16-bit protsessori register Andmed asuvad registris Ei nõua mälupöördumist 12/07/2005 ID218 Riistvaralähedane programmeerimine 23 Register Operands II Mov bx, 10 Add ax, bx Jmp di ; Load constant to BX ; Add BX to AX ; Jump to the address in DI Mov [bx], dl inc bx Mov [bx], dl ; Store DL in indirect memory operand ; Increment register operand ; Store DL in new indirect memory operand 12/07/2005 ID218 Riistvaralähedane programmeerimine 24 Immediate Operands I Operandi väärtus on käsukoodis Operand on const Määratakse kompileerimise ajal Lubatud avaldis Ei nõua mälupöördumist 12/07/2005 ID218 Riistvaralähedane programmeerimine 25 Immediate Operands II Mov cx, 20 ; Load constant to register Add var, 1Fh ; Add hex constant to variable Sub bx, 25 * 80 ; Subtract constant expression 12/07/2005 ID218 Riistvaralähedane programmeerimine 26 Immediate Operands III OFFSET Operator Mov bx, OFFSET var ; Load offset address SEG Operator Mov ax, SEG farvar Mov es, ax 12/07/2005 ; Load segment address ID218 Riistvaralähedane programmeerimine 27 Direct Memory Operands I Fikseeritud asukoht mälus Aadress on käsukoodis Tuleb defineerida operandi suurus Lubatud avaldis Nõuab mälupöördumist 12/07/2005 ID218 Riistvaralähedane programmeerimine 28 Direct Memory Operands II var .DATA; Segment for uninitialized data BYTE ? ; Reserve one byte, labeled "var“ .CODE . . . Mov var, al 12/07/2005 ; Copy AL to byte at var ID218 Riistvaralähedane programmeerimine 29 Direct Memory Operands III [ ] = “+” Mov Mov Mov Mov Mov Mov 12/07/2005 ax, ax, ax, ax, ax, ax, array[2] array+2 array[-2] array-2 var [var] ; [ ] = “+” ; lubatud “-” ; [ ] või ilma ID218 Riistvaralähedane programmeerimine 30 Direct Memory Operands IV 12/07/2005 ID218 Riistvaralähedane programmeerimine 31 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 12/07/2005 ID218 Riistvaralähedane programmeerimine 32 Indirect Memory Operands II Mov ax, WORD [bx] Mov ax, [bx+si] Mov ax, table[si] 12/07/2005 ID218 Riistvaralähedane programmeerimine 33 Indirect Memory Operands III table WORD 100 DUP (0) ; õige . . . Mov ax, table[bx][di]+6 Mov ax, mem1[si] + mem2 12/07/2005 ; vale ID218 Riistvaralähedane programmeerimine 34 Indirect Memory Operands IV Mov ax, table[bx][di] Mov ax, table[di][bx] Mov ax, table[bx+di] Mov ax, [table+bx+di] Mov ax, [bx][di]+table 12/07/2005 ID218 Riistvaralähedane programmeerimine 35 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 12/07/2005 ID218 Riistvaralähedane programmeerimine 36 Indirect Memory Operands VI 12/07/2005 ID218 Riistvaralähedane programmeerimine 37 Indirect Memory Operands VII 12/07/2005 ID218 Riistvaralähedane programmeerimine 38 Indirect Memory Operands VIII 12/07/2005 ID218 Riistvaralähedane programmeerimine 39 Indirect Memory Operands IX 12/07/2005 ID218 Riistvaralähedane programmeerimine 40 Indirect Memory Operands X 12/07/2005 ID218 Riistvaralähedane programmeerimine 41 Indirect Memory Operands XI 12/07/2005 ID218 Riistvaralähedane programmeerimine 42 Indirect Memory Operands XII 12/07/2005 ID218 Riistvaralähedane programmeerimine 43 Indirect Memory Operands XIII 12/07/2005 ID218 Riistvaralähedane programmeerimine 44 Indirect Memory Operands XIV [Bx] [Si] disp [Bp] 12/07/2005 [Di] ID218 Riistvaralähedane programmeerimine 45 Kokkuvõtte I Programmeerijale tähtis: Registrid Mälukorraldus Käsustik 12/07/2005 ID218 Riistvaralähedane programmeerimine 46 Kokkuvõtte II Registrid: Üldregistrid Segmendiregistrid Eriregistrid 12/07/2005 ID218 Riistvaralähedane programmeerimine 47 Kokkuvõtte III Mälukorraldus: Vahetu adresseerimine Otsene adresseerimine Kaudne adresseerimine 12/07/2005 ID218 Riistvaralähedane programmeerimine 48