Transcript Slide 1
Datoru organizācija un asambleri Apakšprogrammas un parametru nodošana Ir trīs iespējas nodot parametrus apakšprogrammai. 1. Caur reģistriem. Mov Ax, X Ax Main 2. Caur steku. Push X Main Sub ... X ... Stack 5. laboratorijas darbs Darbs ar Ax Pop X Sub 1 1. slaids Datoru organizācija un asambleri 3. Iespēju (1) un (2) kombinēšana. Mov Ax, X Ax Main Push Y Darbs ar Ax Sub ... Pop Y Y ... Stack 5. laboratorijas darbs 2 2. slaids Datoru organizācija un asambleri Apakšprogrammas deklarēšana: FormVector ... FormVector Proc EndP Apakšprogrammas izsaukums: Call FormVector Atgriešanās no apakšprogrammas: Ret vai: Ret Size 5. laboratorijas darbs 3 3. slaids Datoru organizācija un asambleri Parametru nodošana galvenajā programmā: Lea Push Lea Push Mov Push Mov Push Ax, Ax Ax, Ax Ax, Ax Ax, Ax Vector ... N Matrix M M Matrix Vector N ... MAX Apakšprogrammas izsaukums: Call FormVector 5. laboratorijas darbs ;stekā saglabāts reģistrs IP 4 4. slaids Datoru organizācija un asambleri Apakšprogrammas sākums: FormVector Proc Push Bp Mov Bp, Sp ... FormVector EndP ... Bp Ip N M Parametru adresēšana: Matrix ;rindu daudzums Mov Cx, [Bp + 4] ;matricas adrese Mov Bx, [Bp + 8] ;vektora adrese Mov Di, [Bp + 10] Vector 5. laboratorijas darbs [Bp] [Bp+2] [Bp+4] [Bp+6] [Bp+8] [Bp+10] ... MAX 5 5. slaids Datoru organizācija un asambleri Izeja no apakšprogrammas: FormVector Proc ... ; Nolasīt no steka reģistru Ip Pop Bp ; Pārvietot steka rādītāju, “ignorējot” ; parametrus stekā Ret 2*4 FormVector EndP Piezīme: procedūrā Print ir divi parametri-vārdi. Tāpēc būs: Ret 2*2 5. laboratorijas darbs 6 6. slaids Datoru organizācija un asambleri Lokālo mainīgo deklarēšana: FormVector Proc Push Bp Mov Bp, Sp Local A:Word Sub Sp, 2 ... Mov A, Cx ; vai Mov [Bp - 2], Cx ... Mov Sp, Bp Pop Bp Ret 2*4 FormVector EndP ... A Bp Ip N M Matrix Vector [Bp-2] [Bp] [Bp+2] [Bp+4] [Bp+6] [Bp+8] [Bp+10] ... MAX 5. laboratorijas darbs 7 7. slaids