and 是将后边两个操作数按位求&,加l表示后边两个操作数是4个字节32bit的第一个$-16就是一个数-16,4字节int表示为0xfffffff0,第二个%esp是一个寄存器,里边存放的是栈指针所指向的内存地址(4个字节),该命令表示将寄存器里存的4字节地址与0xfffffff0按位就&,并将结果存在寄存器%esp中。作用应该是调整栈指针的地址