- 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
UPD: или test bx, 0FFFFh
UPD2: или test bx, bx ;)
Сразу видно рукотворный асмокод.
А то не очевидно? Ни один компилятор не будет делать для этого "ax=ax+bx" это.
Но тогда, если в bx после and осталось 0x8000, будет прокручена лишняя итерация...
Самый кошерный вариант, он для того и придуман.