CodeNet / Языки программирования / Ассемблер / Пишем "многозадачную" ОС в "Real Mode"
CodeNet / Платформы / Пишем ОС / Пишем "многозадачную" ОС в "Real Mode"
CodeNet / Платформы / Пишем ОС / Пишем "многозадачную" ОС в "Real Mode"
Модуль memory.asm
; Выделить сегмент памяти #################################################### PROC GetMemory IFDEF GlukOS ;--- Для ГлюкОСы push es di si cx ax mov cx,0FFFFh mov dx,01000h lea di,[cs:MemoryTable] dec di gm1: inc cx inc di add dx,01000h cmp cx,8 je gmerror mov ah,[cs:di] or ah,ah jne gm1 mov ah,0FFh mov [cs:di],ah pop ax cx si di es ret ELSE ;--- Для ДОСа mov ah,048h mov bx,4096 int 21h jc gmerror mov dx,ax ret ENDIF ;--- GlukOS gmerror: xor dx,dx ret ENDP GetMemory ; Освободить память ########################################################## PROC FreeMemory IFDEF GlukOS ;--- Для ГлюкОСы shr dx,12 sub dx,2 lea di,[cs:MemoryTable] add di,dx mov [Byte Ptr cs:di],0 ret ELSE ;--- Для ДОСа mov es,dx mov ah,49h int 21h ret ENDIF ;--- GlukOS ENDP FreeMemory