POST-программа
POST-программа является программой обработки прерывания. Она получает управление в состоянии с запрещенными прерываниями. Регистры ES:BX содержат адрес блока NCB, который использовался при выполнении команды.
В регистр AL записано значение из поля FinalCCode блока NCB.
Учтите, что, как и из любой другой программы обработки прерывания, из POST-программы не следует вызывать функции MS-DOS.
Требования к POST-программе во многом такие же, как и к ESR-программе, используемой протоколами IPX и SPX. Она должна позаботиться о сохранении изменяемых регистров, установить регистр DS на сегмент данных программы (для обеспечения доступа к переменным). POST-программа должна работать как можно быстрее. Лучше всего если она будет использоваться только для установки флага, сигнализирующего основной программе о завершении выполнения команды.
Перед завершением своей работы POST-программа должна восстановить содержимое всех регистров и выполнить команду возврата из прерывания IRET.
Если вы составляете POST-программу на языке программирования Си, вы можете воспользоваться ключевым словом interrupt:
void interrupt NETBIOS_Post_Routine(void);
Лучше всего составить POST-программу на языке ассемблера, например, так:
.286 .MODEL SMALL
.DATA
_completed_ncb_ptr dd 0
.CODE
PUBLIC _netbios_post PUBLIC _completed_ncb_ptr
_netbios_post PROC FAR
push ax push ds push es push si
mov ax, DGROUP mov ds, ax
mov word ptr _completed_ncb_ptr+2, es mov word ptr _completed_ncb_ptr, si
pop si pop es pop ds pop ax
iret _netbios_post ENDP
end