An exploration of some ambiguities that signed numbers can introduce to your assembler, what your assembler will choose, and how you can choose anything you want.
A quickstart guide to making some boot sector games. This guide assumes you know some x86 basics. From there, you learn how to boot a skeleton with a stack, video memory, keyboard control, timing loops, colors, and random.
These are the slides (with slide notes) that I gave at Cactus Con in 2016. It's about my unrealized childhood dream of programming in machine code directly (unrealized as a child).
Abuse of the REP prefix for instructions that it doesn't apply to.
Not all registers can be scaled (multiplied by 1, 2, 4, & 8), read on for details of why this is a thing due to machine encoding.
Some insctructions have the operand of immediate 1 hardcoded, but you can still use 1 as an operand value for the variale immediate data.
Some abuse and redundancy discussion involving scaling by 2 and other edge cases with the SIB table.
LEA is encoded with the MODR/M byte, even though that would allow for some invalid encodings. Read on if you want to explore what happens when we do this.
A test instruction that is valid in assembly language, but has no machine encoding. The assembler uses something logically equivalent when encoded.
It is invalid assembly to BSWAP 16-bit registers, read on to find out what happens when we try to do it anyway.