From Wikipedia, the free encyclopedia
Jump to: navigation, search

The Go Tools Assembler (GoASM) is an assembler for the Intel x86 architecture. It can be used to write 32-bit (IA-32) and 64-bit (x86-64) programs. It is free software and has several associated tools including an Assembler, a Resource Compiler, Linker and a Symbolic Debugger.


The assembler (GoAsm) produces COFF object files ready to be given to a linker to create the final executable. GoAsm also has some extensions for Windows program development. It supports the development of Unicode programs and can produce programs for both Win32 and Win64(x64) platforms.[1]

GoASM can be used to program a low level language (assembly) together with a very high level language (Windows API) with the linker.

GoASM can be integrated with several IDEs.

  • Easy Code for GoAsm.[2]
  • RadAsm Win32 Assembly IDE
  • NaGoa Visual Assembly (using GoRC only).

Examples Programs[edit]

Following is a simple source code to display 'Hello World (from GoAsm)' in a console window.

RCKEEP DD 0             ;temporary place to keep things
PUSH -11D               ;STD_OUTPUT_HANDLE
CALL GetStdHandle       ;get, in eax, handle to active screen buffer
PUSH 0,ADDR RCKEEP      ;RCKEEP receives output from API
PUSH 24D,'Hello World (from GoAsm)'    ;24=length of string
PUSH EAX                ;handle to active screen buffer
CALL WriteFile
XOR EAX,EAX             ;return zero


A free linker (GoLink), which takes COFF object files and a Res file and creates EXE or DLL executables that are able to run under Windows Win32 or Win64(x64). This is a full featured but "reduced baggage" linker which keeps files to a minimum. The programmer does not need Lib files to identify what functions reside in the DLLs, Instead GoLink looks inside the DLLs themselves. Used with GoAsm, this linker can report on redundant data and code in your programs. Has full but easy-to-use support for the Microsoft Layer for Unicode, and also allows use of Unicode filenames and labels.


GoBug is a free Win32 symbolic debugger for assembler programmers, together with "Testbug" its accompanying test program and comes with the assembler. It is itself written entirely in assembly, using GoAsm and GoLink.

See also[edit]