零基础学习nasm.(1)

[hello.asm]
[section .data]
    str1 db "hello,world!", 0x0a, 0x0d, 0
[section .text]
    extern printf
    global main
main:
    push str1
    call printf
    add esp, 4
    xor eax, eax
    ret
 
上面的代码是一个 hello world!输出.
编译过程: nasm -f elf hello.asm  然后执行: gcc -o hello hello.o  终端下执行: ./hello
看代码的第2行: str1 db "hello,world!", 0x0a, 0x0d, 0
db 代码为字节. 1个字节为8位, 一个六十进制代表半个字节, 所以一个字节可以用两个十六进制表示.
比如: 10  转换成二进制: 0000 0000 你可以按照 8421 的惯例来计算.  所以二级制就是: 0000 1010
 0000 1010 的二进制变成十六进制就是 0x0A, 这下你总算明白进制了吧.

你可能感兴趣的:(零基础学习nasm.(1))