; Выделить сегмент памяти ####################################################
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
|