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


тема: Задачка от Axor'a #1



от: Vlad Sotnikov
кому: All
дата: 15 Sep 2003
Пpивет, All! Есть байт X, в нем нyжно обменять местами, напpимеp, 2-й и 0-й биты. Мой ваpиант таков: LD B,A BIT 0,A JR NZ,bit RES 0,B JR $+4 bit SET 0,B BIT 2,A JR NZ,bit2 RES 2,B JR $+4 bit2 SET 2,B LD A,B А как можно сделать коpоче и быстpее? Vega/ex-Style Group. <филфак-СПбГУ> FIDO: 2:5030/1512 ZXNET: 500:812/19 E-mail: vega56@mail.ru

от: Kirill Frolov
кому: Vlad Sotnikov
дата: 15 Sep 2003
Hемедленно нажми на RESET, Vlad Sotnikov! On Sun, 14 Sep 03 23:13:18 +0400, Vlad Sotnikov wrote: VS> Есть байт X, в нем нyжно обменять местами, напpимеp, 2-й и 0-й биты. VS> Мой ваpиант таков: VS> LD B,A VS> BIT 0,A VS> JR NZ,bit VS> RES 0,B VS> JR $+4 VS> bit SET 0,B VS> BIT 2,A VS> JR NZ,bit2 VS> RES 2,B VS> JR $+4 VS> bit2 SET 2,B VS> LD A,B VS> А как можно сделать коpоче и быстpее? Если сильно быстрей, то так: ld h, "таблица перекодировки" / 256 ld l, a ld a, (hl) Иначе через логические операции (AND, OR, XOR), будет чуть быстрей нежели в твоём варианте за счёт минимазации количества условных переходов.

от: Evgeny Goljakov
кому: Vlad Sotnikov
дата: 19 Sep 2003
Привет, Vlad. Пн 15 Сен 02 Vlad Sotnikov -> All: VS> Есть байт X, в нем нyжно обменять местами, напpимеp, 2-й и VS> 0-й биты. VS> А как можно сделать коpоче и быстpее? а на сколько тебе сделать короче? ты еще не посчитал сколько твой вариант, или это нам делать? Спасибо за внимание.

от: Aleksey Malov
кому: Vlad Sotnikov
дата: 27 Sep 2003
Hi, Vlad! Monday September 15 2003 at 00:13 Vlad Sotnikov wrote to All about Задачка от Axor'a #1 VS> Пpивет, All! VS> Есть байт X, в нем нyжно обменять местами, напpимеp, 2-й и 0-й биты. VS> Мой ваpиант таков: VS> LD B,A VS> BIT 0,A VS> JR NZ,bit VS> RES 0,B VS> JR $+4 VS> bit SET 0,B VS> BIT 2,A VS> JR NZ,bit2 VS> RES 2,B VS> JR $+4 VS> bit2 SET 2,B VS> LD A,B tmin = 64 tmax = 78 size = 23 VS> А как можно сделать коpоче и быстpее? ================== rrca ld b,a rrca ld c,a rrca ld d,a rl b rla rl c rla rl d rla time=60 size=15 ===================== ld c,a and 7 add a, tab ld l,a adc a,tab/256 sub l ld h,a ld a,c and #f8 or (hl) tab db 0, 4, 2, 6, 1, 5, 3, 7 time=55 size=21 ================================ Hу, это первое, что в голову пришло. А вообще, я забывать спектрумовский ассемблер стал... Bye, Vlad! Vivid / Brainwave Team http://www.bwteam.org ICQ: 164514413

от: Aleksey Malov
кому: Aleksey Malov
дата: 27 Sep 2003
Hi, Aleksey! Saturday September 27 2003 at 00:08 Aleksey Malov wrote to Vlad Sotnikov about Задачка от Axor'a #1 AM> ================== AM> rrca AM> ld b,a AM> rrca AM> ld c,a AM> rrca AM> ld d,a AM> rl b AM> rla AM> rl c AM> rla AM> rl d AM> rla AM> time=60 AM> size=15 AM> ===================== Блин. Торможу... ld b,a rrca rrca rrca ld c,a rr b rla rlca rl c rla time = 48 size = 12 AM> Hу, это первое, что в голову пришло. А вообще, я забывать AM> спектрумовский ассемблер стал... Вот именно. Склероз Bye, Aleksey! Vivid / Brainwave Team http://www.bwteam.org ICQ: 164514413

от: Evgeny Goljakov
кому: Aleksey Malov
дата: 29 Sep 2003
Привет, Aleksey. Сб 27 Сен 02 Aleksey Malov -> Aleksey Malov: AM> time = 48 AM> size = 12 Hаша Diamodns школа в лице Merlin'a предлoжила бы: ;==#Exchange any 2 bits ;c 2003 Merlin/ZX Diamond ; in: a ;out: a AND 5 ;(%00000101) JP PE,W XOR 5 ;(%00000101) W ... time 24 size 7 В отличие от сдвигов может менять любые 2 бита без изменения обьема кода. А если нужно не менять остальные биты А: ;#Exchange any 2 bits only ;c 2003 Merlin/ZX Diamond LD C,A AND 5 LD A,C JP PE,W XOR 5 W ... time 32 size 9 AM>> Hу, это первое, что в голову пришло. А вообще, я а мне первое что пришло, это повестка в воинКомат.. AM>> забывать спектрумовский ассемблер стал... Мерлин меня поразил, он думал 10 сек. над задачей, незря для Nicron'а мы его читалку выбрали ;))) Спасибо за внимание.

от: Ivan Roshin
кому: Vlad Sotnikov
дата: 03 Oct 2003
Hello, Vlad! 15 Sep 2003 you wrote: VS> Есть байт X, в нем нyжно обменять местами, напpимеp, 2-й и VS> 0-й биты. VS> Мой ваpиант таков: VS> LD B,A VS> BIT 0,A VS> JR NZ,bit VS> RES 0,B VS> JR $+4 VS> bit SET 0,B VS> BIT 2,A VS> JR NZ,bit2 VS> RES 2,B VS> JR $+4 VS> bit2 SET 2,B VS> LD A,B VS> А как можно сделать коpоче и быстpее? У меня Alex Xor тоже это спрашивал, я предложил ему такой вариант: Если оба бита равны, то ничего менять не надо. Если не равны, то меняем их значения на противоположные одним XOR'ом. LD B,A LD C,%00000101 ;Единицы в маске соответствуют ;обмениваемым битам. AND C JR Z,M1 ;Переход, если оба бита равны 0. CP C JR NZ,M2 ;Переход, если биты не равны. M1 LD C,0 ;Биты равны - обнуляем маску. M2 LD A,B XOR C С уважением, Иван Рощин.

от: Aleksey Malov
кому: Evgeny Goljakov
дата: 04 Oct 2003
*** Answer from area CARBON (Карбонка) Hi, Evgeny! Monday September 29 2003 at 03:55 Evgeny Goljakov wrote to Aleksey Malov about Задачка от Axor'a #1 EG> В отличие от сдвигов может менять любые 2 бита без EG> изменения обьема кода. EG> А если нужно не менять остальные биты А: EG> ;#Exchange any 2 bits only EG> ;c 2003 Merlin/ZX Diamond EG> LD C,A EG> AND 5 EG> LD A,C EG> JP PE,W EG> XOR 5 EG> W ... Круто!!! Hикогда не дружил (в смысле, ни разу ни юзал в своих прогах) с флагом четности... А надо было бы... AM>>> забывать спектрумовский ассемблер стал... EG> Мерлин меня поразил, он думал 10 сек. над задачей, EG> незря для Nicron'а мы его читалку выбрали ;))) Да, есть еще кодеры в спектрумовских селеньях... Bye, Evgeny! Vivid / Brainwave Team http://www.bwteam.org ICQ: 164514413




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

Похожие статьи:
WANTED - Розыск программ.
Scene News - Война в FATALITY!
штуки - на одной из старыХ дискет я обнарУжил.. штУкУ.)
Железо - подробное описание модемов.
Фантазия - фантастический роман "Возращаясь с Работа" Левенков Вячеслав.

В этот день...   8 мая