MicroSD card SPI with ATmega32
However you intent to proceed from there, your first step is clear: You need to make a function that reads one block (512 bytes) of data from the SD card. To do that, you will need to issue SD (or MMC) commands to initialize and select the card. These involve commands such as GO TO IDLE STATE, GO TO NOT IDLE STATE, SEND OPERATING CONDITIONS. Then read the OCR register to see if it's a High Capacity card or not (these are addressed differently, for old card an address is a byte address; for HC card an address is a block number (LBA)), and set block length of 512 bytes. Then you can give the READ_BLOCK command to get actual disk data. This looks complicated (and is) but you can google with the command names to find lots of code that initializes SD cards.

First read the block 0 (first 512 bytes) from the SD card; it ends with 0x55aa. Then go on from there. I've been told that a library of code called fatfs can do the job of handling FAT disks quite well, but just for reading files, the code to find and read files from a FAT filesystem is not that complex. But do check out fatfs - I'm told that you just need to supply the read block + write block functions to it and it will take care of the rest.