I don't see the math! 32 pins.
You are thinking about using (8xa pins +8ya pins)=(8xb Pins +8yb pins)=32 pins.
1) Your Idea using 32 pins.
10000000 Data to be displayed 10000000 Data to be displayed2
01000000 Data to be displayed 01000000 Data to be displayed2
00100000 Data to be displayed 00100000 Data to be displayed2
00010000 Data to be displayed 00010000 Data to be displayed2
00001000 Data to be displayed 00001000 Data to be displayed2
00000100 Data to be displayed 00000100 Data to be displayed2
00000010 Data to be displayed 00000010 Data to be displayed2
00000001 Data to be displayed 00000001 Data to be displayed2
2) Using 24 pins.
10000000 Data to be displayed Data to be displayed2
01000000 Data to be displayed Data to be displayed2
00100000 Data to be displayed Data to be displayed2
00010000 Data to be displayed Data to be displayed2
00001000 Data to be displayed Data to be displayed2
00000100 Data to be displayed Data to be displayed2
00000010 Data to be displayed Data to be displayed2
00000001 Data to be displayed Data to be displayed2
3) Use 3 pins on the PIC that drive a 3 to 8 decoder IC. The IC inputs a number 0 through 7 on three pins and drives 1 of 8 pins.
0 10000000 Data to be displayed Data to be displayed2
1 01000000 Data to be displayed Data to be displayed2
2 00100000 Data to be displayed Data to be displayed2
3 00010000 Data to be displayed Data to be displayed2
4 00001000 Data to be displayed Data to be displayed2
5 00000100 Data to be displayed Data to be displayed2
6 00000010 Data to be displayed Data to be displayed2
7 00000001 Data to be displayed Data to be displayed2
4) I have also used a ring counter to step through the columns. The counter has a reset pin that takes you to 10000000 and a clock pin that increments the count by 1. If I remember right CD4022 or a CD4017 for 10 outputs. Also see MC14022, MC14017.