Аппаратное обеспечение IBM PC


         

количество пересылаемых байтов SourceHandle dw


ExtMemMoveStruct struc
@Length dd ? ; количество пересылаемых байтов SourceHandle dw ? ; индекс исходного блока SourceOffset dd ? ; смещение в исходном блоке DestHandle dw ? ; индекс блока-назначения DestOffset dd ? ; смещение в блокe
ExtMemMoveStruct ends
.MODEL tiny
DOSSEG .STACK 100h
.DATA
movestr ExtMemMoveStruct <0,0,0,0,0>
msg DB 13,10,"Использование блоков EMB", 13, 10 DB "Copyright ©Frolov A.,1991",13,10,13,10 DB "$"
noHMM DB 13,10,"Драйвер HIMEM.SYS не установлен",13,10,"$" yesHMM DB 13,10,"Драйвер HIMEM.SYS установлен, ","$" errmsg DB 13,10,"Ошибка с кодом ", "$" okmsg DB 13,10,"Успех!!!", "$" free_ext_mem DB 13,10,"Всего расширенной памяти, Кбайт: ","$" max_ext_block DB 13,10,"Максимальный участок свободной" DB " расширенной памяти, Кбайт: ", "$" getEMBmsg DB 13,10,"Получаем блок EMB","$" freeEMBmsg DB 13,10,"Освобождаем блок EMB","$"
copymsg DB 13,10,"Копируем блок данных в область EMB","$" copymsg1 DB 13,10,"Копируем блок данных обратно","$"
testmsg DB 13,10,13,10,"Сообщение для копирования" DB " в область EMB","$"
len_testmsg DW $-testmsg
; Буфер для копирования сообщения
testbuf DB 512 dup(?)
HMMEntry dd ?
EMBHandle dw ?
.CODE .STARTUP
mov ah, 9h ; Выводим заголовок mov dx, OFFSET msg int 21h
; Проверяем, установлен ли драйвер HIMEM.SYS
mov ax, 4300h int 2fh cmp al, 80h je HMM_installed
; Если не установлен, выводим сообщение и завершаем ; работу программы
mov ah, 9h mov dx, OFFSET noHMM int 21h
jmp terminate
HMM_installed:
mov ah, 9h mov dx, OFFSET yesHMM int 21h
; Получаем адрес управляющей функции драйвера
mov ax, 4310h int 2fh mov word ptr cs:[HMMEntry][0], bx mov word ptr cs:[HMMEntry][2], es
; Определяем размер свободной расширенной памяти
mov ah, 9h mov dx, OFFSET free_ext_mem int 21h

Содержание  Назад  Вперед