인텔 어셈블리어 공부하다가 리눅스 32비트에서 해보려니 잘 안되네요.
스택오버플로우에서 물어물어 해본 결과
어셈블과 링크하는 방법은 다음과 같습니다.
nasm -f elf file.asm gcc -m32 -nostdlib -o file file.o
SECTION .DATA hello: db 'Hello world!',10 helloLen: equ $-hello SECTION .TEXT GLOBAL _start _start: ; Write 'Hello world!' to the screen mov eax,4 ; 'write' system call mov ebx,1 ; file descriptor 1 = screen mov ecx,hello ; string to write mov edx,helloLen ; length of string to write int 80h ; call the kernel ; Terminate program mov eax,1 ; 'exit' system call mov ebx,0 ; exit with error code 0 int 80h ; call the kernel
아래는 'Hello world!' 출력하는 예제입니다.
64비트 환경에서 리눅스 어셈블리어 연습해보려고 별짓을 다 해봤는데 어셈블하고 링크하는 방법을 모르겠더군요. 그래서 그냥 VM Ware에 32비트 우분투를 설치하고 nasm으로 연습했습니다.
더 공부해보고 싶으신 분은 링크의 튜토리얼을 확인하세요(튜토리얼 링크: http://www.tutorialspoint.com/assembly_programming/)
'노트정리 > 어셈블리' 카테고리의 다른 글
error A2075: jump destination too far : by 103 byte(s) (0) | 2010.07.07 |
---|---|
Irvine32 라이브러리 SetTextColor (0) | 2010.06.12 |
Irvine32 라이브러리 프로시저를 이용한 문자열 입출력 (0) | 2010.06.07 |
어셈블리 피보나치 수열 5항까지 (0) | 2010.06.06 |
ZF, SF (0) | 2010.06.06 |
윈도우 에서 어셈블리 공부 환경 만들기 (0) | 2010.06.06 |
캐리 플래그 (0) | 2010.06.06 |
2의 보수 표기 (0) | 2010.05.15 |