Такой вопрос. Вот надо подгрузить оверлей из основной программы, а когда оверлей закончит свое выполнение вернуть управление в программу из которой этот оверлей был вызван. Вот код основной программы | Код | model small .stack 80h .data adr_e2=11h ; адрес метки из map файла ovr_size= 530h;размер оверленого модуля ProgName db 'over1.exe', 0 ; имя файла содержащего оверлей epb dw seg for_ovr, seg for_ovr ; блок параметров msg1 db 'Good!!!' .code start: mov dx,@data mov ds,dx mov es,dx mov dx, offset ProgName mov bx, offset epb mov ax,4b03h int 21h ; загружаем оверлей jmp far ptr begin ; передаем управление оверлею ;выделяем место под оверлей for_ovr segment para assume cs:for_ovr ovr proc far db adr_e2 dup(?) begin db (ovr_size-adr_e2) dup(?) ovr endp for_ovr ends mov ah,09h mov dx,offset msg1 int 21h mov ax,4c00h int 21h end start
|
а вот код оверлейного модуля | Код |
model small .stack 80h .data warning db 'Неправильный вызов$' ok db 'Правильный вызов$' .code warning1: mov ax,@data mov ds,ax mov ah,09h mov dx, offset warning int 21h mov ax,4cffh int 21h public start start: mov ah,09h mov dx,@data mov ds,dx mov dx,offset ok int 21h ;mov ax, 4c00h ;int 21h end warning1
|
так вот вызов его происходит и даже печатает, что правильный вызов, но несколько раз и при том, потом ошибку выдает, если в коде оверлея, раскоментировать последние две строчки возврата управления досу, то все путем. Подскажите, где косяк плиз. Заранее спасибо
|