ZXNet эхоконференция «code.zx»


тема: Глубоко задумался над процедурой...или обращение в Вселенскому Разуму



от: Alexandr Sinyakov
кому: All
дата: 13 Feb 2007
Hello, Orionsoft

Ori> правильно я раскомментил ?

Всё почти так и есть.
Только тут:
┌─- code ───

jr c,lab3 ; если Carry = 1 ( установлен ) то блок пропускается, иначе...

└── code ───

от: Alexandr Sinyakov
кому: All
дата: 13 Feb 2007
Hello, Orionsoft

А что делать, когда бит=1
Something like thizzz?
┌─- code ───

ld hl,OutPut
ld de,0
exx
ld hl,Input
ld b,35
lab1 ld a,(hl)
ld c,8
lab2 rla
exx
jr c,lab3
ld (hl),e
inc hl
ld (hl),d
inc hl
lab3 inc de
exx
dec c
jr nz,lab2
inc hl
djnz lab1
ret

└── code ───

от: Orionsoft
кому: All
дата: 13 Feb 2007
Hello, All

которая бы делала следующее:
на входе 35 байт (280 бит )
младший бит находится в 7 разряде первого (из 35) байта

необходимо процесс который :

последовательно переберёт 280 битную последовательность
если текущщий бит = 0 то записать номер (слово) этого бита в адрес выходных
данных

т.е. если в 280 битовой последовательности все биты в нуле то на выходе было б
280 слов от нулевого до 280-ого


:eek; :v2_jawdr:;

от: Orionsoft
кому: All
дата: 13 Feb 2007
Hello, Orionsoft

да , нужна и процедура которая делает из результата всё наоборот :v2_blink:

от: Orionsoft
кому: All
дата: 13 Feb 2007
Hello, Orionsoft

правильно я раскомментил ?
┌─- CODE ───
ld hl,OutPut
ld de,0 ; счётчик бит ( 0-260 )
exx
ld hl,Input
ld b,35 ; счётчик байт
lab1 ld a,(hl)
ld c,8 ; счётчик бит в байте
lab2 rla : 7 бит в Carry
exx
jr c,lab3 ; если Carry =0 ( установлен ) то
ld (hl),e ; иначе записывем текущий номер бита в результат
inc hl ; +1 адрес результата
ld (hl),d
inc hl ; +1 адрес результата

lab3 inc de ; увеличиваем счётчик бит
exx
dec c ; уменьшаем 8 битовый проход
jr nz,lab2 ; биты еще остались ?

inc hl ; перешли к следующему байту последовательности
djnz lab1

ret
└── CODE ───

от: Orionsoft
кому: All
дата: 13 Feb 2007
Hello, SAM style

" Этюды " - рулят ! :v2_clapp:

от: Orionsoft
кому: All
дата: 13 Feb 2007
Hello, SAM style

SAM> А что делать, когда бит=1
SAM> Something like thizzz?

если бит = 1 то ничего , а как пройдёт последовательность и все =1 записать
AAFF например

от: Orionsoft
кому: All
дата: 13 Feb 2007
Hello, Orionsoft

а процедура наоборот делающая ?
если не трудно :rolleyes:

от: Alexandr Sinyakov
кому: All
дата: 13 Feb 2007
Hello, Orionsoft

Вход - список номеров выключеных байт (словами, по 2 байта). Список
заканчивается словом #FFFF.
┌─- code ───

ld hl,Output ; сначала устанавливаем все биты
ld b,35
lab0 ld (hl),#FF
inc hl
djnz lab0
ld hl,Input
lab1 ld e,(hl) ; берём номер бита
inc hl
ld d,(hl)
inc hl
ld a,d ; если он #FFFF - выход
and e
inc a
ret z
push hl
ld a,e ; вычисляем маску для этого бита
and 7
ld c,#7F
jr z,lab3
lab2 rrc c
dec a
jr nz,lab2
lab3 ld a,d ; вычисляем адрес байта, в котором этот бит находится
rra
rr e
rra
rr e
rra
rr e
ld d,0
ld hl,OutPut
add hl,de
ld a,(hl) ; сбрасываем бит
and c
ld (hl),a
pop hl
jr lab1 ; переходим к следующему номеру

└── code ───
Можно ещё одну придумать, побыстрее, но только если список будет упорядоченым -
от меньшего к большему.

от: Orionsoft
кому: All
дата: 13 Feb 2007
Hello, SAM style

За что люблю спектрум - самая добрая платформа =)
SAMstyle :v2_cheer:




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Out Guest - У нас в гостях старый добрый Yerzmyey.
по музе псекозa - Музыку IRONMAN - теперь, или уже давно дает не за деньги, так что если что звените!
Защита - Проблемы защиты и взлома программ.
DIY - Схема анализатора состояния TTL вывода.
Реклама - Реклама и объявления.

В этот день...   28 марта