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


         

push ax mov ax, dx


mov ax,0800h
call cs:[HMMEntry]
push ax mov ax, dx call Print_word
mov ah, 9h mov dx, OFFSET max_ext_block int 21h
pop ax call Print_word
; Получаем блок EMB
mov ah, 9h mov dx, OFFSET getEMBmsg int 21h
mov ax,0900h mov dx,1h
call cs:[HMMEntry] or ax, ax jnz getemb_ok jmp error
getemb_ok:
mov EMBHandle, dx
mov ah, 9h mov dx, OFFSET okmsg int 21h
; Копируем строку testmsg в блок EMB
mov ah, 9h mov dx, OFFSET copymsg int 21h
; Заполняем управляющую структуру
; Длина копируемого массива памяти
mov ax, word ptr len_testmsg mov word ptr movestr.@Length, ax
; Индекс основной памяти, должен быть = 0
mov ax, 0 mov word ptr movestr.SourceHandle, ax
; Задаем сегмент:смещение копируемого сообщения
mov ax, OFFSET testmsg mov word ptr [movestr.SourceOffset][0], ax mov ax, cs mov word ptr [movestr.SourceOffset][2], ax
; Задаем индекс EMB, в который будем копировать ; сообщение из основной памяти
mov ax, EMBHandle mov movestr.DestHandle, ax
; Копируем в начало EMB, поэтому ; смещение = 0
mov ax, 0 mov word ptr [movestr.DestOffset][0], ax mov word ptr [movestr.DestOffset][2], ax
; Загружаем адрес управляющей структуры в DS:SI
mov ax, cs mov ds, ax mov ax, OFFSET movestr mov si, ax mov ax,0B00h
; Вызываем функцию копирования
call cs:[HMMEntry] or ax, ax jnz moveemb_ok jmp error
moveemb_ok:
mov ah, 9h mov dx, OFFSET okmsg int 21h
; Копируем сообщение обратно из блока EMB ; в буфер testbuf, расположенный в основной ; памяти
mov ah, 9h mov dx, OFFSET copymsg1 int 21h
; Подготавливаем управляющую структуру
mov ax, word ptr len_testmsg mov word ptr movestr.@Length, ax
mov ax, 0 mov word ptr movestr.DestHandle, ax
mov ax, OFFSET testbuf mov word ptr [movestr.DestOffset][0], ax mov ax, cs mov word ptr [movestr.DestOffset][2], ax
mov ax, EMBHandle mov movestr.SourceHandle, ax
mov ax, 0 mov word ptr [movestr.SourceOffset][0], ax mov word ptr [movestr.SourceOffset][2], ax
; Выполняем копирование
mov ax, cs mov ds, ax mov ax, OFFSET movestr mov si, ax mov ax,0B00h

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