(For real fun, look up charlieplexing. Sadly, that doesn't work so well when individual led's are tied to common cathodes.)
First off, how many I/O lines do you actually have for this purpose? If it's 14 or more, you don't even have to multiplex.
Second, realize the sizing of resistors in the circuit needs to change with the duty cycle, except when the goal is to dim the display. If the duty cycle is low enough, you may not need resistors at all!
Third, while assembly is less portable than C, C is usually just as efficient when done right. Whether it's portable will depend more on the compatibility of assumptions you made about the hardware than anything else.
I did look at some videos on charlieplexing, but they all related to individual LEDs. I didn't see anything related to 7-segment displays.
With 7 + 2 I/O lines assigned to the display, I have one pin left over. It's a 20-pin MCU, with 16 I/O pins, but I also have a rotary encoder, a momentary switch, an LED, a buzzer, and an SSR trigger. So I don't have another 7 pins for the display.
I had forgotten that the resistors could be much lower value, and the current much higher, for brief periods of time. And the point here is not so much to save on power but rather to save on parts. So if it's not too blinky, this may actually work. I think it's at least worth writing some code to test it. But between the MSP430G2553 processor and the TDSR1350 digits, I'm still looking at something under 10ma. That's common anode, isn't it, not common cathode. Sorry, I misremembered that.
My comment on Arduino was just based on my experience with others who use them a lot. I don't see much bit-wise activity in their code, and it appears that a main focus of Arduino is to separate you as much as possible from the actual registers. Assembler, for me at least, is the opposite of that on both counts. In my code for this, there will be no MAIN other than to set up the interrupt, then go to sleep. Everything will happen in the interrupt service routine, and the processor will sleep in between. I don't see that kind of stuff in Arduino sketches. But of course that doesn't mean it can't be done.