![]() Все для программиста |
Шаг 6 - Приостанавливаем задачу |
Вообще-то я наверное зря создал целый раздел ради такой простой вещи, ну ладно.
Приостановка задачи сводится к записи в ее id значения 254.
doStop3: call _di mov al,254 mov [cs:di],al mov dx,[cs:di+3] call _ei ret
Как вы помните, при переключении задач переход к следующей осуществляется следующим образом:
int201: push ax mov dx,515 mul dx add di,ax ; DI = Абсолютное смещение вершины ; стека в структуре TTASK pop ax cmp [Byte Ptr ds:di],255 je nexttask cmp [Byte Ptr ds:di],254 ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! je nexttask mov [ds:numtask],al mov ax,di
Таким образом если id содержит значаение 254, то задача при переключении пропускается.
<< Начало