section .data
msg1 db "hello world %d", 10,0
section .text
extern printf
global main
main:
push ebp
mov ebp, esp
sub esp, 10
push DWORD 2014 //esp 로부터 8 ? 4?
push DWORD msg1 //esp 로부터 4 ? 0?
call printf //어쨌든 스택포인터로부터 가까운거부터 함수의 인자로 들어가는구나
mov esp, ebp
pop ebp
ret
---------------------------------------------------
nasm -f elf nasm_printf.asm
gcc -m32 -o nasm_printf nasm_printf.asm
./nasm_printf
hello world 2014
-------------------------------------------------------
section .data
msg1 db "hello world %d", 10,0
section .text
extern printf
global main
main:
push ebp
mov ebp, esp
//int main(int argc, char** argv)
push DWORD [ebp + 8] //argc
mov ebx, DWORD [ebp + 12] //argv
push DWORD [ebx]
call printf
mov esp, ebp
pop ebp
ret
------------------------
결과 : ./nasm_printf
첫번째 문자열에 %d 같은게 없으니 뭐 저렇게 나오는게 맞지
'컴퓨터 과학 & 영상처리 관련 > Assembly (시스템 소프트웨어)' 카테고리의 다른 글
[퍼옴]구글번역기로 어셈블리어, C언어 번역하는 법 (0) | 2014.04.27 |
---|---|
리눅스 어셈블리 즐겨찾기 (0) | 2014.04.06 |
NASM 32bit 소스를 64bit 리눅스 OS에서 컴파일 하려면 (0) | 2014.04.04 |
first.asm (0) | 2014.04.02 |
NASM system call int 명령어 (0) | 2014.03.29 |