代码之家  ›  专栏  ›  技术社区  ›  Ale Morales

我的汇编程序似乎没有输出32位代码

  •  1
  • Ale Morales  · 技术社区  · 8 年前

    组装以下程序时:

    [BITS 32]
    
    mov eax, 0x1234
    

    nasm -f bin in.asm -o out.bin
    

    我得到以下二进制输出:

    B8 34 12 00 00
    

    B8 34 12 00 00 就像它是一个64位的值一样。

    我不知道这是否是NASM特有的问题,因为我还没有尝试过其他汇编程序。

    1 回复  |  直到 8 年前
        1
  •  2
  •   Elliott Frisch    8 年前

    你很困惑。您有4个字节。4字节是32位。不是64位。这将是8个字节。

    一对十六进制数字是一个字节,这就是为什么反汇编输出将事物分组为十六进制数字对。

    作为反例,

    [BITS 64]
    
    mov rax, 0xCAFEBABEDEADBEEF
    

    0000000 b848 beef dead babe cafe               
    000000a
    
    推荐文章