ВУЗ:
Составители:
145
mov cs:total,ax ; Кол-во перед. секторов
ret
save endp
; Процедура вычисления адреса памяти
; Вход: cs:start – начальный сектор
; cs:total – кол-во передаваемых секторов
; cs:disk – начальный адрес RAM-диска
; Возврат: ds – сегмент
; cs – число передаваемых данных
; SI=0
; Использует AX, CX, SI, DS
calc proc near
mov ax,cs:start ; Номер начального сектора
mov cl,5 ; Умножить на 32
shl ax,cl ; Номер начального параграфа
mov cx,cs:disk ; Нач. сегмент RAM-диска
add cx,ax ; Абс. нач. парараф (сегмент)
mov ds,cx ; DS = начальный сегмент
xor si,si ; SI = 0
mov ax,cs:total ; Количество передаваемых секторов
cmp ax,129 ; Должно быть не более 128
jc calc1 ; < 129 ( < 64 KB )
mov ax,128 ; Принудительно = 128 сект.
calc1: mov cx,512 ; Байтов в секторе
mul cx ; AX = число перед. байтов
mov cx,ax ; Пересылка в CX
ret
calc endp
; Включение звука (если надо)
bell1 proc near
test byte ptr bell,0ffh ; Звук нужен ?
jz nobell ; Не нужен
mov al,0b6h ; Управляющее слово
out 43h,al ; Посылка его в РУС
mov ax,400h ; Коэффициент деления
out 42h,al ; Мл. байт в канал 2
xchg al,ah
out 42h,al ; Ст. байт в канал 2
in al,61h ; Чтение порта динамика
or al,3 ; Включение динамика
out 61h,al
nobell: ret
bell1 endp
; Выключение звука (без проверки необходимости)
bell2 proc near
in al,61h ; Порт динамика
and al,0fch ; Выключение динамика
out 61h,al
ret
bell2 endp
145
mov cs:total,ax ; Кол-во перед. секторов
ret
save endp
; Процедура вычисления адреса памяти
; Вход: cs:start – начальный сектор
; cs:total – кол-во передаваемых секторов
; cs:disk – начальный адрес RAM-диска
; Возврат: ds – сегмент
; cs – число передаваемых данных
; SI=0
; Использует AX, CX, SI, DS
calc proc near
mov ax,cs:start ; Номер начального сектора
mov cl,5 ; Умножить на 32
shl ax,cl ; Номер начального параграфа
mov cx,cs:disk ; Нач. сегмент RAM-диска
add cx,ax ; Абс. нач. парараф (сегмент)
mov ds,cx ; DS = начальный сегмент
xor si,si ; SI = 0
mov ax,cs:total ; Количество передаваемых секторов
cmp ax,129 ; Должно быть не более 128
jc calc1 ; < 129 ( < 64 KB )
mov ax,128 ; Принудительно = 128 сект.
calc1: mov cx,512 ; Байтов в секторе
mul cx ; AX = число перед. байтов
mov cx,ax ; Пересылка в CX
ret
calc endp
; Включение звука (если надо)
bell1 proc near
test byte ptr bell,0ffh ; Звук нужен ?
jz nobell ; Не нужен
mov al,0b6h ; Управляющее слово
out 43h,al ; Посылка его в РУС
mov ax,400h ; Коэффициент деления
out 42h,al ; Мл. байт в канал 2
xchg al,ah
out 42h,al ; Ст. байт в канал 2
in al,61h ; Чтение порта динамика
or al,3 ; Включение динамика
out 61h,al
nobell: ret
bell1 endp
; Выключение звука (без проверки необходимости)
bell2 proc near
in al,61h ; Порт динамика
and al,0fch ; Выключение динамика
out 61h,al
ret
bell2 endp
Страницы
- « первая
- ‹ предыдущая
- …
- 143
- 144
- 145
- 146
- 147
- …
- следующая ›
- последняя »
