The CPU loadis going to depend heavily on a player's projected maximum range, as well as the complexity of the operations that each tile performs. If it's just a question of finite versus infinite, you could just postpone that decision until you have some rough version of what each square does each turn, then make a program that measures the time taken by a calculation on 1k, 1M, 1bln etc. squares (that's cubes 10, 100, 1000 on a side*); you'll be able to find your feasible range that way, and determine for yourself whether that's something that you expect your player to reach. (also, note that it's probably fine to use a pretty streamlined version of AI for far-away squares, and possibly "frame-skip" on them or draw them every five turns or what-have-you).
* note that this doesn't mean you'll find a measure of the maximum side length, since it's, erhm, unlikely that your player will hit a billion squares in a single game, ever.
Stanford University has put three of their courses on programming on youtube, open to watch. There's one on java, another or C++, and a third one that broadly talks some generics and paradigms, but in the first lectures, also pops the hood and looks around what actually happens when you use std::vector (for example). Depending on how much you already know, particularly about pointers and dynamic memory use, you'll want the second or the third one. This is where they begin.
By the way, I know you asked about assembly, but from what I could gather about your intentions, I'd say you'll do better with one of these courses. Paradigms touches on assembly a bit, but you're probably more concerned with getting a feeling for the mechanics of C++.