Query Regarding Direct cache mapping
I am going to talk about the cache - related questions:

Block size is $$32 \text{words} = 2^5$$ . That, means that you need, 5 bits for offset.
$$\#\text{blocks}=\frac{2^{19}}{2^5}=2^{14}$$, so you need 14 bits for the index ( to indentify which block in cache is going to represent your wanted memory adresss )
For a 32 - bit adress, tag is the rest : $$32 - 14- 5 = 13$$ bits.