Do You Want to Learn ARM Assembly?

Alasdair Allan
3 min readMay 31, 2017

The last time I sat down to write assembly code I was settling in front of a machine with a Zilog Z80A processor clocked at 4MHz.

The Sinclar ZX81, also known as the Timex Sinclair 1000. (📷: Dirk Haun)

Back in the day computer magazines, printed on on paper and bought in shops, used to publish tutorials on how to get started writing assembly.

Alongside those guides were source code listings, usually written in BASIC, for an assembler—the tool you needed to turn assembly language into binary 1’s and 0’s. Needless to say, that was some time ago.

However, with the arrival of the Internet of Things I think we’ve come back to the place I started. It’s time to sit down and learn assembly language again. But this time, it’s going to be ARM assembly.

The “Hello World” of assembly language programming. (Code credit: Roger Ferrer Ibáñez)

As computers became faster, processors became more complex. The amount of effort it took to write an assembly program that did something interesting expanded as 8-bit turned into 16-bit, and then 32-bit and 64-bit. As the x86 processor began to dominate the market, except for a few people building compilers for higher-level languages like C, writing assembly just wasn’t a necessary skill any more. Programming efficiently wasn’t really a necessary skill any more.

But more recently, the interest around Internet of Things has led to explosion in the number of resource limited devices around us. By necessity, the idea of writing efficient code is back in fashion.

Which is why I was rather interested to see Azeria announce a new tutorial series on ARM assembly basics.

“You might have already noticed that ARM processors are everywhere around you. When I look around me, I can count far more devices that feature an ARM processor in my house than Intel processors. This includes phones, routers, and not to forget the IoT devices that seem to explode in sales these days. That said, the ARM processor has become one of the most widespread CPU cores in the world.”Azeria

There are other places you can go to learn ARM assembly language, but Azeria’s new course is rather interesting. It’s aimed specifically at people interested in exploit writing on the ARM platform—security and infosec people in other words. It’s especially interesting as she’s intending to publish a followup tutorial series on ARM exploit development.

An assembly language tutorial. (📹: Derek Banas)

Apart from the ARM processor inside you phone, the most likely place to find one if you’re interested in getting started— assuming you’re a maker — is in the Raspberry Pi board you have on your desk. But if you don’t have one lying around, don’t worry because you can always emulate one inside QEMU and on your desktop.

While people argue that Moore’s Law means that processors will always get faster, and today’s resource limited devices will become so much less so in a few years, I’d argue the opposite.

We’re always going to spend as little money as possible on the bill of materials for an Internet connected device, because a few pennies shaved off the cost of an object that’s going to be duplicated hundreds, thousands, or even millions of times, adds up. The processor will always be the cheapest we can get away with, and with millions of ARM processors out there already, and millions more to come. It might well be worth figuring out how they work.