Any sources for learning assembly programming in Windows?

For a long time, the 'standard' tutorial beginners start with for Windows assembly programming is Iczelion's tutorial. Also for Windows assembler programming, the best forum (IMO) to get started is probably MASM32. It has a very active community which is very welcoming and helpful to newcomers and beginners. It sort of depends which particular flavour of assembler you want to learn but IMO, for Windows MASM32 has the best userbase (both in terms of community and resources around) for beginners.

You mention you want to learn RCE (reverse code engineering) also. A very common starting place for reversing on Windows is lena151's tutorials which potentially is also a nice start if you already know assembler conceptually from having done Linux assembler programming.


Most assembly language programming you would do, especially in a full-OS environment like Windows, will just be snippets anyway (as opposed to a 100% assembly program). The easiest way to get started is to write a C program as a test harness and have it call your assembly language functions. Here's a simple example:

asm.s:

  .text
  .globl _asm_add

_asm_add:
  mov %rdi, %rax
  add %rsi, %rax
  ret

example.c:

#include <stdio.h>

int asm_add(int, int);

int main(int argc, char **argv)
{
  int a = 12;
  int b = 6;

  int c = asm_add(a, b);

  printf("%d + %d = %d\n", a, b, c);

  return 0;
}

Build and run (on my Mac with clang; modify for your compiler on windows):

$ clang -o example example.c asm.s
$ ./example 
12 + 6 = 18

The most important thing to get is the Intel manuals (other manufacturers like AMD will also have their own, but the instructions are very similar):

http://www.intel.com/products/processor/manuals/

Those have all the instructions , costs and some guides to programming.

Tags:

Assembly