CodeNet / Языки программирования / Ассемблер / Пишем "многозадачную" ОС в "Real Mode"
CodeNet / Платформы / Пишем ОС / Пишем "многозадачную" ОС в "Real Mode"
CodeNet / Платформы / Пишем ОС / Пишем "многозадачную" ОС в "Real Mode"
Модуль lastline.asm
PROC PrintLastLine
push ax si di ds es
lea si,[LastLine]
cmp [Byte Ptr cs:si],0
je PLLEnd1
mov di,3686
mov ax,0B800h
mov es,ax
mov al,"["
mov ah,[cs:Color]
mov [es:di],ax
add di,2
PLL1: mov al,[cs:si]
or al,al
je PLLEnd
mov ah,[cs:Color]
mov [es:di],ax
inc di
inc di
inc si
jmp PLL1
PLLEnd: mov al,"]"
mov ah,[cs:Color]
mov [es:di],ax
PLLEnd1: pop es ds di si ax
ret
ENDP PrintLastLine
; Задать сроку статуса #(DS:DI)###############################################
PROC SetLastLine
push ax si di cx
call MyLastLine
mov al,[cs:LastLineFlag]
cmp [cs:numtask],al
jne SLLEnd
lea si,[LastLine]
xor cx,cx
SLL1: mov al,[ds:di]
or al,al
je SLLEnd
mov [cs:si],al
inc si
inc di
inc cx
cmp cx,72
je SLLEnd
jmp SLL1
SLLEnd: mov [Byte Ptr cs:si],0
pop cx di si ax
ret
ENDP SetLastLine
; Очистить строку статуса ####################################################
PROC ClearLastLine
push ax
mov al,[cs:LastLineFlag]
cmp [cs:numtask],al
jne CLLEnd
mov [Byte Ptr cs:LastLine],0
CLLEnd: pop ax
ret
ENDP ClearLastLine
; Захапать строку статуса ####################################################
PROC MyLastLine
mov ax,0FFFFh
cmp [Byte cs:LastLineFlag],0
jne MLLEnd
mov al,[cs:numtask]
mov [Byte Ptr cs:LastLineFlag],al
xor ax,ax
MLLEnd: ret
ENDP MyLastLine
Оставить комментарий
Оставлять комментарии могут только зарегистрированные пользователи.
Если вы не являетесь зарегистрированным пользователем, то вам необходимо зарегистрироваться. Регистрация бесплатна. Если вы уже зарегистрированы на CodeNet, то вам необходимо ввести логин и пароль в верхней (Alt-U) части страницы.
