Добавил:
@requali Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АбрамоваИванов0392_Пр5.pdf
Скачиваний:
4
Добавлен:
08.09.2024
Размер:
505 Кб
Скачать
☆

2.4. Реализация команды 8 драйвера

2.4.1.

Напишем программу для команды 8, которая будет осуществлять запись 5 байт в

буфер.

 

 

 

 

 

152

OUTPUT:

 

 

; 8 − Вывод

153

 

PUSH ES

; записываем в стек регистры

154

 

PUSH BX

 

 

155

 

 

 

 

156

 

MOV AX, ES: [BX].RH8_BUF_SEG ; получаем сегмент записываемого значения

157

 

MOV BX, ES: [BX].RH8_BUF_OFS ; получаем смещение записываемого значения

158

 

MOV ES, AX

 

159

 

MOV DL, ES:[BX]

; кладем в DL символ для записи

160

 

MOV DI, OFFSET BUFF

; записываем в буфер

161

 

ADD DI, COUNT ; смещение от начала на количество записанных символов

162

 

MOV [DI], DL

; пишем в буфер

163

 

INC COUNT

; инкрементируем счетчик.

164

 

 

 

 

165

 

POP BX

 

; Возвращаем регистры в исходное состояние

166

 

POP ES

 

 

167

 

JMP

SUCCESS_EXIT

 

 

 

 

 

 

 

 

 

 

 

А COUNT определим в области данных, изменив значение буфера для дальнейшей

проверки:

 

 

 

 

 

152

;*******************************************************************************

153

;

Область данных драйвера

154

;*******************************************************************************

155

 

RH_OFF

DW

?

156

 

RH_SEG

DW

?

157

 

MSG

DB

'THIS IS DOS−DRIVER'

158

 

 

DB

0DH,0AH,07H,'$'

159

 

BUFF

DB

0,0,0,0,0 ;Тестовый буфер

160

 

COUNT

Dw

0

 

 

 

 

 

 

 

 

 

 

21

2.4.2.

Дополним драйвер данной командой. Перекомпилировав, обнаружим, что адреса из-

менились (Рис. 2.20). Изменим соответствующим образом точки останова и запустим программу.

Рис. 2.20. Новые адреса.

Отследим изменение в окне m1 при вызове соответсвующий процедуры (8, см в окне m2 по аналогии с предыдущими пунктами), Рис. 2.21 - 2.25

Рис. 2.21. Запись 1.

22

Рис. 2.22. Запись 2.

Рис. 2.23. Запись 3.

23

Рис. 2.24. Запись 4.

Рис. 2.25. Запись 5.

24