Сообщение от
alone
Умножить на 85 (%1010101) и сдвинуть на 8 бит.
Теория правильная, но на практике, если этой программой 3 разделить на 3 получится 0.
Если аргумент меньше 128 то можно так (умножая на 86):
Код:
; аргумент А, результат H
rlca ;4 (98 тактов)
ld l,a ;4
ld h,0 ;7
rlca ;4
rlca ;4
rlca ;4
ld e,a ;4
and 7 ;7
ld d,a ;4
xor e ;4
ld e,a ;4
add hl,de ;11
ex de,hl ;4
add hl,de ;11
add hl,hl ;11
add hl,de ;11
Если аргумент меньше 255 то можно так (предварительный инкремент):
Код:
; аргумент А, результат H
inc a ;4 (107 тактов)
ld l,a ;4
ld h,0 ;7
rrca ;4
rrca ;4
rrca ;4
rrca ;4
ld e,a ;4
and 15 ;7
ld d,a ;4
xor e ;4
ld e,a ;4
add hl,de ;11
ld d,h ;4
ld e,l ;4
add hl,de ;11
add hl,hl ;11
add hl,de ;11