Я пытаюсь изучить сборку (в частности, сорт nasm на ideone.com). Когда я перехожу к процедуре, я получаю код ошибки 11, а когда я просто вызываю процедуру, ошибки нет. Я пробовал его с и без «ret» в конце блока. Обратите внимание, что процедура _printOne вызывается только в том случае, если вход имеет длину 2, например, «[новая строка]». Вот мой кодКод ошибки при прыжке
global _start
section .data
sys_read equ 3
sys_write equ 4
max_line_len equ 10
stdin equ 0
oneStr db '1'
oneStrLen equ $ - oneStr
section .bss
line resb 10
segment .text
_start:
call _readLine ; stores value in line
cmp eax, dword 2 ; if input has length of 2, print out '1'
je _printOne ; No error if "call _printOne"!
mov eax, 01h ; exit()
xor ebx, ebx ; errno
int 80h
_readLine:
mov eax, sys_read ; syscall to read
mov ebx, stdin ; stdin
mov ecx, line ; put line into ecx
mov edx, max_line_len ; length to read
int 0x80
ret
_printOne:
mov eax, sys_write
mov ebx, stdout
mov ecx, oneStr
mov edx, oneStrLen
int 80h
ret
Большое спасибо за совет. Причина, по которой я использую ideone, состоит в том, что у нас есть конкурсы на работе, и мы должны предоставить идеальную ссылку на наше решение; также моя работа comp запускает окна, тогда как ideone nasm in in Linux – reggaeguitar