November 7, 2011 AT 9:58 am

Assembly Evolution

Julien Oster is writing up an interesting series about the evolution of Assembly Language in Intel processors. The first piece is about memory access, and how it’s handled in early CPUs, including the 4004, 8008 and 8085. He writes:

While it has become far less relevant for non-system developers to write assembly than it was a few decades ago, by now CPUs have nevertheless made it much more comfortable to do so. Today we are used to a lot of things: fancy indirect addressing modes with scale, a galore of general purpose registers instead of an accumulator and maybe one or two crippled index registers, condition codes for nearly every instruction (on ARM)…

But also the basics themselves have evolved. Let’s take a look at what past programmers had to put up with in entirely simple, everyday things. We’ll start with the most trivial: writing to memory.

We’ll work backwards, from the present to the past, to explore the wonders of direct addressing in Intel CPUs. (One precautionary warning though: I only really tested the 4004 code in an emulator, and my habits are highly tainted by current Intel CPUs. So if I made some mistake somewhere, kindly point it out and I’ll fix it!)

Read more…

[via pagetable]

Check out all the Circuit Playground Episodes! Our new kid’s show and subscribe!

Have an amazing project to share? Join the SHOW-AND-TELL every Wednesday night at 7:30pm ET on Google+ Hangouts.

Join us every Wednesday night at 8pm ET for Ask an Engineer!

Learn resistor values with Mho’s Resistance or get the best electronics calculator for engineers “Circuit Playground”Adafruit’s Apps!

Maker Business — Alibaba to invest $15b in tech, set up research labs around the world

Wearables — Hand beading mimicry

Electronics — Trigger happy oscilloscope?

Biohacking — Biohacking: Visioneer – AI Glasses to Assist the Visually Impaired

Get the only spam-free daily newsletter about wearables, running a "maker business", electronic tips and more! Subscribe at AdafruitDaily.com !


  1. Ah the 8085… that was the cpu in the first computer I bought for myself, the venerable Tandy 102 laptop. I had a lot of fun playing around with that machine.

  2. The base x86 architecture support works across almost any platform you can throw at it (even your latest Intel desktop). Standardized base BIOS architecture ensures this. But the x86 architecture is sorely outdated, compare what it takes to do something compared with an ARM core (with MMU). Night and day. Newer architectures are much more efficient in terms of clock cycles. Steve Gibson compared these differences in one of his netcasts.

    But the problem with the likes of boards running the likes of an ARM architecture (IP), is that there is no "legacy" base that has been around for decades. So for every non x86 board, you typically need a Board Support Package (BSP, or similar) to deal with anything relatively close to the hardware.

    For quasi-embedded, what this means is that for every non x86 compatible processor you need a different tool-chain and libraries etc, (e.g., the Chumby board, hacked routers, Raspberry Pi, on-and-on). Plus if you’re running one of the Unices, forget the depth of compatible software that you get with an x86 compatible platform.

    Unfortunately, low-cost embedded x86 compatible boards are becoming scarce. The Atom boards are too big and power hungry. But there is still the venerable AMD Geode line. Alix is one source (not affiliated). Soekris used to be a contender, but prices are now through the roof IMO.

  3. I guess. On the other hand, there are all those lovely CISC CPUs of yesteryear (say, PDP11 and PDP10, for example) compared to modern RISC CPUs (“you want a fancy addressing mode? Do the math yourself!”)

Sorry, the comment form is closed at this time.