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



         

Примеры программ - часть 6


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




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