An ASM hack, in video game ROM hacking, is a modification made to the game's code, essentially reprogramming the game. The abbreviation "ASM" stands for "assembly", since ASM hacks are typically written in assembly language for the target system.
What it is
ASM hacking is often considered one of the most difficult types of hacking, due to the fact that it requires programming skills as well as detailed knowledge about the inner workings of the game. ASM is used for editing the game mechanics, such as adding Wall Jumping in HuFlungDu's WallJump patch, or fixing unused Pirahna Plants. Patches can also easily add music or GFX to the game, to make it simpler for new users.
Methods of Patching
Patching is generally done through a assembler such as Xkas or Asar. These assemble the code into hex and add it to "freespace" or predefined, empty spaces of the rom. After expansion, there should be a large amount of freespace available. Using Xkas, a batch file is recommended to patch files. However, a command line interface is also usable to patch. Asar has a command line interface, but also has a more GUI-like format. It can find the ROM for you instead of requiring the system path.
Other Tools that use ASM Hacks
In general, all tools edit and add code, but only some edit the mechanics. Lunar Magic applies several ASM hacks to make the process of hacking run smoother. Most notable of these is one that allows easier setting of in-game flags, to allow instant enabling of paths and saving in every level. LevelASM (along OWASM and uberASM) runs a hack every frame of a level (or the OW). This is useful for creating gimmicks. Spritetool uses this to fix several bugs. Addmusic inserts a hack to add music.