深入理解计算机系统练习题3.22,不明白下面汇编代码的作用?

movl 8(%ebp) %edx
movl $0,%eax
testl %edx,%edx
je .L7
.L10:
xorl %edx,%eax
shrl %edx
jne .L10
.L7:
andl $1,%eax

不明白其中那一点还是全部都不会i?