카테고리

asm (27) bootloader_x86_grub (1) C (92) compile (11) config (76) CPP (13) CSS (1) debugging (7) gimp (1) Go (1) html (1) Java (1) JavaScript (1) kernel (19) LibreOffice (3) Linux system progamming (21) MFC (1) opencv (4) OpenGL (1) PHP (1) Python (4) qemu (29) shell (3) socket (7) troubleshooting (2) ubuntu18.04 (2) windows (1)

2018/12/06

asm 32bit 시스템 인터럽트 0x80

;시스템 인터럽트 0x80
;systeam call tables 검색

SECTION .data

msg: db "Asembly is freakin cool",10,0
msgLen: db 26

; msg:다른 코드 참조 레이블
; db:바이트 정의
; 10은 개형 문자 \n
; 0은 null 바이트

SECTION .bss

SECTION .text
global main ;외부 사용 가능

main:
;주 라벨을 만들고 스택 생성
push ebp
mov ebp, esp

;코드 작성 영역
; 시스템 호출 작성
; 정의: write(fileDescriptor, char* msgAddr, bytes)

 mov ebx, 4
 mov ebx, 1 ;0=stdin 1=stdout 2=stderror
 mov ecx, msg
 mov edx, [msgLen]

 ;인터럽트 생성
 int 0x80

;스택 해재
mov esp, ebp
pop ebp
ret

;compile
;nasm -f elf32 -o asm.o systemCalls.asm
;gcc -m32 -o program asm.o

댓글 없음:

댓글 쓰기