조립 프로그램을 실행할 수 없습니다 : https://www.tutorialspoint.com/assembly_programming매우 강력한 도구처럼 보였지만, 그것을 배우기 시작 위치를 내가 알고하지 않았다, 그래서 그것을 봤이 발견 때문에 나는 오늘 어셈블리를 배우기로 결정
을컴파일과 링크를 위해 NASM과 MinGW를 설치하라고 말했기 때문에 다운로드하고 설치하여 두 파일이 모두 올바르게 작동하는지 확인했습니다.
나는 주어진 코드section .text
global _start ;must be declared for linker (ld)
_start: ;tells linker entry point
mov edx,len ;message length
mov ecx,msg ;message to write
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel
mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel
section .data
msg db 'Hello, world!', 0xa ;string to be printed
len equ $ - msg ;length of the string
을 복사
nasm -f elf hello.asm
(later nasm -f win32 hello.asm)
및
ld hello.o -o hello.exe
(later ld hello.obj -o hello.exe)
이후
를 작성하여 "hello.asm"라는 빈 문서에 붙여 넣기하고 컴파일 그것은 성공적으로 두 번. exe 파일을 만들었지 만, 그것을 실행하려고했을 때, 그것은 단지 바람을 열었습니다 ows 명령 프롬프트와 "hello.exe가 더 이상 작동하지 않는다."라는 새로운 창이 열립니다.아무 것도 출력하지 않지만 적어도 실행해서는 안된다는 것을 알고 있습니까?
내가 뭘 잘못 했니?
사용 :
- 윈도우 7 프로 64 비트
- AMD의 FX 4350
- NASM-2.12.02
- MinGW
이것은 리눅스의 튜토리얼입니다. 이것은 Windows에서는 작동하지 않습니다. – tkausl
어셈블리가 특이한가요? –
아니요, syscalls은 ('int 0x80')입니다. – tkausl