此问题已在此处有答案:
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。
1条答案
按热度按时间ct3nt3jp1#
一个进程的返回码只有8位。您的代码将得到2**18,即0x40000,因此低位字节为0。