PDA

Просмотр полной версии : Поиск четырех байтов



GM BIT
20.12.2009, 19:48
Считаем кол-во повторяющихся байт в блоке памяти (пример ПЗУ)

То, что я напридумывал:

;на входе:
;de - начало блока памяти
;bc - длина блока
;h,#80, 81- таблица младшего и старшего
;на выходе в #80, 81 посчитанное кол-во каждого байта

org #6500
ld de,0
ld bc,16383
ld h,#80
sled ld a,(de)
ld l,a ;Выбираем из таблицы
inc (hl) ;Увеличиваем
jr nz,$+5 ;Если младший переполнен
inc h
inc (hl) ;Увеличиваем старший
dec h
inc de ;Шагаем дальше
dec bc ;Проверяем на окончание
ld a,b
or c
jr nz,sled
ret

Помогите посчитать, четыре самых повторяющихся байта в уже готовой таблице #80, 81.

После проверки ПЗУ, судя по таблице это:
байт #cd - 701 раз повторился.
байт #00 - 659 раз.

Нужно програмное решение, желательно - среднее, между скоростью и размером памяти на процедуру.

Vitamin
20.12.2009, 21:36
У меня была подобная задача. Решал так:
http://abzac.retropc.ru/content?id=813

Смотреть начало процедуры MKFASTPUT и функцию FINDMX соответственно