저는 실행 파일로 전달 된 파일 이름을 읽고 어셈블리를 사용하여 해당 파일에 쓰려고합니다. 오류없이 컴파일되지만 실행시 실패합니다. 내 코드가 정확히 무엇입니까?argv에서 x86 어셈블리를 통해 파일 이름 읽기
BITS 32
segment .data
text db "text"
segment .text
global main
main:
pop ebx
pop ebx
pop ebx ; pop pointer to filename into ebx
mov eax,0x5 ;syscall open
mov ecx,0x2 ;flag read/write
int 0x80 ;call kernel
mov ebx,eax ;save returned file descriptor
mov eax,0x4 ; write syscall
mov ecx,text ;mov pointer to text into ecx
mov edx,0x4 ;string length
int 0x80 ;exit syscall
mov eax,0x1
int 0x80
4 바이트 문자열 (문자열이 자동으로 어셈블리에서 0으로 종료되지 않음)에서 5 바이트를 쓰고 있습니다. – user786653
코드를 게시하기 전에 해당 비트를 변경하는 것을 잊었습니다. 내 텍스트 문자열을 변경했습니다. – evanjs
또 다른 것 : 파일 이름으로'argv [0]'에 해당하는 C를 사용하지 않습니까? – user786653