Цитата Сообщение от 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