windows 下 nasm, tcc 编译的 helloworld

这段代码很早以前写过, 今天想起来来了,故再次写一下


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

在此输入图片描述

你可能感兴趣的:(windows 下 nasm, tcc 编译的 helloworld)