- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
sum proc ; ax=ax+bx
push dx
m1: mov dx, ax
xor ax, bx
and bx, dx
shl bx, 01h
cmp bx, 00h
jnz m1
pop dx
ret
sum endp
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+199
sum proc ; ax=ax+bx
push dx
m1: mov dx, ax
xor ax, bx
and bx, dx
shl bx, 01h
cmp bx, 00h
jnz m1
pop dx
ret
sum endp
Навеяно http://govnokod.ru/11311
bormand 28.06.2012 20:06 # +1
bormand 28.06.2012 20:35 # +4
UPD: или test bx, 0FFFFh
UPD2: или test bx, bx ;)
movaxbx 28.06.2012 21:32 # +2
TarasB 28.06.2012 22:19 # +3
Сразу видно рукотворный асмокод.
guest 20.10.2012 17:55 # 0
А то не очевидно? Ни один компилятор не будет делать для этого "ax=ax+bx" это.
bormand 29.06.2012 06:32 # +1
bormand 29.06.2012 06:43 # +1
Но тогда, если в bx после and осталось 0x8000, будет прокручена лишняя итерация...
eth0 28.06.2012 21:47 # +6
Самый кошерный вариант, он для того и придуман.