Реферат: Алгоритм сжатия "Unbuffered RLE"

// выхода из бесконечного цикла,

// если алгоритм должен работать

// не внутри аппаратного устройства

//

//-----------------------------//

//

in al, Number_of_InputPort // AL = следующий байт из входного потока

cmp al, ah // равен ли он предыдущему байту?

jnz Put_to_OutputStream // если нет, вывести его в выходной поток

//

cmp bl, 0 // повторы байта уже начались (BL <> 0)?

jnz Increment_Counter // если да, увеличить счетчик повторов на 1

out Number_of_OutputPort, al // записать байт в выходной поток

//

Increment_Counter: //------------------------

//

inc bl // BL = +1 одинаковый байт поступил

cmp bl, 255 // превышен лимит счетчика в 255 повторов?

jnz Get_from_InputStream // если нет, взять следующий байт

//

Put_Counter: //------------------------

//

dec bl // BL = сколько раз декодеру копировать байт

mov al, bl // передать счетчик в AL

out Number_of_OutputPort, al // и вывести его в выходной поток

mov bl, 0 // BL = очистить счетчик повторов

jmp Get_from_InputStream // взять из входного потока следующий байт

//

Put_to_OutputStream: //------------------------

К-во Просмотров: 245
Бесплатно скачать Реферат: Алгоритм сжатия "Unbuffered RLE"