The last asm code I wrote was not a complete app but a few subroutines that required high optimization using Altivec (PowerPC CPU) and SSE (Intel CPU) code. The goal was to have a fast scaler for video data in 4-2-2 YUV representation, for real-time display in a Mac OS X TV application. Apple's Quicktime had code for it, but its output looked bad when scaling down pictures with diagonals in it because it simply threw out entire lines. My code did instead average the input values of all input lines, making the resulting picture look much better antialised. Such area (SSE code) will always remain a domain of hand-optimization, I guess.
Another area where asm is needed is linkage code for compilers and their runtime environments. Not full apps, either, though.
And many years ago I actually wrote entire apps in Asm, e.g. a disassembler and debugger for 680x0 code, for Atari ST machines. Assembler was necessary there because there weren't many high-level languages around in those times, and even those that did exist had no support for accessing the CPU registers directly, which a debugger clearly needs.
Other apps I wrote that involved a lot of assembler coding were runtime libs for a Modula-2 development system, a virtual machine environment, drivers for MSDOS, CP/M and embedded systems.
These latter examples are all hardly requiring asm any more, other than a few subroutines to access special features of the CPUs.
So, if you really want to check off that "wrote an asm app" item, I suggest you look into programming on small embedded CPUs (even though most modern ones now even offer compilers for them), write an app that relies heavily on SSE code, or, as others suggested, code on those old platforms (C-64 etc.) where there were simply no high-level devents available for writing fast and efficient code.
Good luck :)