Списки в оперативній пам'яті, операції над списками. Керування програмами. Керування таймером. Системні керуючі блоки. Управління пам’яттю: таблиця векторів переривань, страница 27

Элемент перемещения #3 : 0000:00A3

      Память : 055F:009F -> 8BE7FBB8  3C08  8EC02689

      Файл   :      1695 -> 8BE7FBB8  DD02  8EC02689

                           Разность = 055F

Элемент перемещения #4 : 0000:013D

      Память : 055F:0139 -> 009A0600  ED07  50900EE8

      Файл   :      1849 -> 009A0600  8E02  50900EE8

                           Разность = 055F

Элемент перемещения #5 : 028E:031E

      Память : 07ED:031A -> 019A6F21  5F05  83C40433

      Файл   :     12794 -> 019A6F21  0000  83C40433

                           Разность = 055F

Висновок: Було вивчено механізм завантаження програм у пам’ять настройку адрес, ознаймлено з таблицією завантаження файлу та таблицією переміщення.

Звіт з лабораторної роботи № 11.

“Дочірні програми”

Мета роботи: Оволодіти програмними засобами та прийомами для написання програм, які завантажують в пам’ять іншу та передають їй управління.

Текст програми на асемблері:


;=====================================

;Ця програма завантажує в якості дочірньої програму

; spo13.exe

 ;======================================

           .286

;--------------------------------------

sts        segment  stack 'stack'

           dw       128 dup (?)

sts        ends

;--------------------------------------

data       segment

env_doch   db       0

           db       0

path       db       'spo13.exe',0                                                                   cmd_line   db       0

epb_doch   label    word

env_seg    dw       seg env_doch

cmd_offs   dw       offset cmd_line

cmd_seg    dw       seg cmd_line

adr_fcb_1  dd       0

adr_fcb_2  dd       0

sp_prnt    dw       ?

ss_prnt    dw       ?

psp_prnt   dw       ?

adr_cvt    dw       2 dup(?)

mcb_1      dw       ?

mcb_prnt   dw       ?

mcb_M      dw       ?

mcb_Z      dw       ?

kol_mcb    dw       0

text_1     db 'Управління передано дочірному процесу'

           db  0dh,0ah,'$'

text_2     db 'Управління повернено дочірній програмі'

           db  0dh,0ah,'$'

text_3     db 'Програма вернула управління системі'

           db  0dh,0ah,'$'

err_msg    db ' ... з помилкою.', 0dh,0ah,'$'

soobsh     db 10,13,'    ( Натисніть будь-яку клавішу )',10,13,'$'

data       ends

;--------------------------------------

code       segment

           assume   cs:code,ss:sts,ds:data

  nach:

           mov      ax,data

           mov      ds,ax

           mov      psp_prnt,es   

           mov      ah,52h

           int      21h          

           mov      adr_cvt,bx   

           mov      adr_cvt+2,es 

           mov      bx,es:[bx-2] 

           mov      mcb_1,bx     

  adr_mcb:

           add      kol_mcb,1     

           mov      es,bx         

           mov      mcb_Z,bx

           mov      al,es:0

           cmp      al,'Z'

           jz       out_mcb

           mov      mcb_M,bx

           mov      ax,es:[3]

           add      ax,1

           add      bx,ax

           jmp      adr_mcb

  out_mcb:

           mov      ah,4ah        

           mov      es,psp_prnt   

           mov      bx,zseg

           sub      bx,psp_prnt   

           int      21h

           jc       err_4ah

           add      kol_mcb,1

           mov      ax,mcb_M

           mov      mcb_prnt,ax

           mov      ax,mcb_Z

           mov      mcb_M,ax

           mov      ax,zseg

           mov      mcb_Z,ax

           mov      ah,09h

           lea      dx,text_1

           int      21h

           mov      ah,4bh

           mov      al,0                          

           lea      dx,path                        

           push     ds

           pop      es    

           lea      bx,epb_doch

           mov      sp_prnt,sp

           mov      ss_prnt,ss

           int      21h

           jc       err_4bh

           mov      ah,09h

           lea      dx,text_2

           int      21h

           cli

           mov      sp,sp_prnt

           mov      ss,ss_prnt

           sti

           mov      ah,09h

           lea      dx,text_3

           int      21h

           jmp      quit

  err_4ah:

  err_4bh:

           mov      ah,09h

           lea      dx,err_msg