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


         

в область HMA процедуру, которая


; Копируем в область HMA процедуру, которая ; будет там выполняться
cld lea si, begin_HMA_code mov di, 0010h
mov ax, cs mov ds, ax
mov ax, 0ffffh mov es, ax
mov cx, HMA_code_size rep movsb
; Вызываем процедуру, находящуюся в области HMA
call cs:[HMAStart]
; Закрываем линию A20
mov ah, 9h mov dx, OFFSET dsA20 int 21h
mov ax,0400h call cs:[HMMEntry] or ax, ax jnz dsA20_ok jmp error
dsA20_ok:
mov ah, 9h mov dx, OFFSET okmsg int 21h
; Освобождаем область HMA
mov ah, 9h mov dx, OFFSET hmarel int 21h
mov ax,0200h call cs:[HMMEntry] or ax, ax jz error
mov ah, 9h mov dx, OFFSET okmsg int 21h
jmp terminate
error:
push bx mov ah, 9h mov dx, OFFSET errmsg int 21h
pop ax call Print_word
terminate:
.EXIT 0
; Вывод на экран содержимого регистра AX
Print_word proc near ;-------------------- push ax push bx push dx ; push ax mov cl,8 rol ax,cl call Byte_to_hex mov bx,dx @@out_ch bh @@out_ch bl ; pop ax call Byte_to_hex mov bx,dx @@out_ch bh @@out_ch bl ; pop dx pop bx pop ax ret Print_word endp ; Byte_to_hex proc near ;-------------------- ; al - input byte ; dx - output hex ;-------------------- push ds push cx push bx ; lea bx,tabl mov dx,cs mov ds,dx ; push ax and al,0fh xlat mov dl,al ; pop ax mov cl,4 shr al,cl xlat mov dh,al ; pop bx pop cx pop ds ret ; tabl db '0123456789ABCDEF' Byte_to_hex endp
; Эта процедура предназначена для ; выполнения в области HMA. ; Она просто три раза генерирует ; звуковой сигнал.
begin_HMA_code:
BEEP BEEP BEEP retf
end_HMA_code:
; Здесь записана длина процедуры, ; предназначенной для выполнения в ; области HMA
HMA_code_size dw $-begin_HMA_code
END
В программе использована макрокоманда BEEP, описанная в файле sysp.inc:
; Макро для выдачи звукового сигнала
BEEP MACRO mov bx,0 mov ax, 0E07h int 10h ENDM
Следующая программа демонстрирует использование функции копирования. Сообщение копируется из области основной памяти в область расширенной памяти, а затем обратно в область основной памяти, но в другое место:
include sysp.inc

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