assembly 程序集始终返回0 [重复]

vxbzzdmp  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(74)

此问题已在此处有答案

How to return a number larger than 8 bits from main()?(2个答案)
Exit codes bigger than 255 — possible?(3个答案)
上个月关门了。
这是我得到的指示:

global _start

_start:
    mov ecx, 0x12
    mov ebx, 0x2

label:
    add ebx, ebx
    dec ecx
    cmp ecx, 0
    jg label
    mov eax, 1
    int 0x80

我是一个新手,主要是想把两个数字相乘。我使用nasm -f elf 32./ex1.asm && ld -m elf_i386编译上述代码,运行输出二进制文件./a.out并使用echo $检查返回值。就在我跑完之后。/a.out.我得到0作为返回值,但是我希望得到存储在ebx中的返回值。此外,当我分别用0x 2和0x 3替换0x 12和0x 2时,我得到的返回值为12。我试着增加这个数字,直到某个点,我得到一些无关的值作为返回值,然后我只得到0。
此外,当我分别用0x 2和0x 3替换0x 12和0x 2时,我得到的返回值为12。我试着增加这个数字,直到某个点,我得到一些无关的值作为返回值,然后我只得到0。

ct3nt3jp

ct3nt3jp1#

一个进程的返回码只有8位。您的代码将得到2**18,即0x40000,因此低位字节为0。

相关问题