极简设计

asm

nasm+tcc

http://m.oschina.net/blog/368991

section .data
    hello db "hello world!", 0xa, 0

section .text

global main;  // 说明程序的入口点,这个可以随便取任意合法的标号,但要调用c语言的库函数还是要用main,否则链接的时候会提示找不到main

main:
    push dword hello  ;; //c语言中函数的参数的传递都是放在栈中的
    extern printf           
    call printf                 ; // 调用外部函数的作用

    add esp, byte 4      ;; // 事实上这是一个出栈动作,以让程序找到正确的地址进行返回
    ret

nasm -f elf hello.asm -o hello.o tcc hello.o -o hello.exe

section .data
    format db "%d", 0xa, 0;

section .text

    global main
    main:
        mov eax, 0
        mov ecx, 100

    l:
        add eax, ecx
        loop l
        ;mov eax, (1+100)*100/2;

        extern printf
        push dword eax;
        push dword format;   printf(const char*,...);
        call printf
        add esp, byte 8
        ret

nasm -f elf add.asm -o add.o tcc add.o -o add.exe

tcc只支持elf格式,gcc/vc的是coff格式

http://www.nasm.us/pub/nasm/releasebuilds/2.11.08/win32/nasm-2.11.08-win32.zip

STD_OUTPUT_HANDLE   equ -11
NULL                equ 0

global GobleyGook
extern ExitProcess, GetStdHandle, WriteConsoleA

section .data
msg                 db "Hello World!", 13, 10, 0
msg.len             equ $ - msg

section .bss
dummy               resd 1

section .text
GobleyGook:
    push    STD_OUTPUT_HANDLE
    call    GetStdHandle

    push    NULL
    push    dummy
    push    msg.len
    push    msg
    push    eax
    call    WriteConsoleA 

    push    NULL
    call    ExitProcess

GoLink.exe /console /entry GobleyGook hello.obj kernel32.dll nasm -f win32 hello.asm -o hello.obj

http://www.godevtool.com/Golink.zip

in asm with : asm