mov аl,00000110b ;остановим второй канал
out 0ah,al
jmp short $+2
pop ax
; установим направление передачи DMA no AL и сбросим указатель
; последовательности байт
out 0ch,al ;сбросим указатель
jmp short $ +2
out 0bh,al ;установим режим работы,
;переданный в AL
jmp short $+2
; вычислим адрес буфера
push cx ;запомним длину данных
mov ax,es ;адрес сегмента для
;сдвига
mov cl,4
rol ax,cl ;сдвинем
mov ch,al ;остаток от сдвига и
;данные
and al,0f0h ;сбросим остаток сдвига
add ax,di ;прибавим смещение
adc ch,0 ;добавим потерянную 1
;передадим адрес
out 4,al ;передать младшую часть
jmp short $ +2
mov al,ah ;старшая часть
out 4,al ;передать старшую часть
jmp short $ +2
mov al,ch ;старшие четыре бита
and al,0fh ;оставим только их
out 81h,al ;запишем регистр
;страницы
jmp short $ +2
;запишем длину данных
pop ax ;восстановим длину
dec ax ;для DMA должно быть
;минус 1
out 5,al ;младший байт длины
jmp short $ +2
mov al,ah ;перенесем старший байт
out 5,al ;старший байт длины
jmp short $ +2
; запустить канал 2 DMA
mov al,2 ;запустим второй канал
out 0ah,al
jmp short $+2
sti
pop cx ;восстановим регистры
pop ax
ret
SetDMA endp
Процедура преобразования двоичного числа
в печатную форму
Вход: AL - число в двоичном виде
Выход: AX - число в печатной форме
HexChaг proc
push bx
хог ah,ah
mov bl,16
div bl
add al,30h
cmp al,39h
jnа Hex1
add al,7
Hex1 :
add ah,30h
cmp ah,39h
jna Hex2
add ah,7
Hех2 :
pop bx
ret
HexChar endp
code ends
end main
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.