카테고리

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

asm32 키보드 입력 처리

;키보드 입력 시스템 콜
;systeam call tables 검색

SECTION .data

msg: db "Please enter a str: ", 0
msgLen: db 21

; msg:다른 코드 참조 레이블
; db:바이트 정의
; 0은 null 바이트

SECTION .bss

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

main:
push ebp
mov ebp, esp

;코드 작성 영역
 push DWORD [mesLen]
 push msg
 call write

 ;콘솔 읽기
 mov eax, 3
 mov ebx, 0 ; 표준 입력 키보드
 mov ecx, msg
 mov edx, 15
 int 0x80

 push 15
 push msg
 call write

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

write:
push ebp
mov ebp, esp

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

 mov ebx, 4
 mov ebx, 1 ;0=stdin 1=stdout 2=stderror
 mov ecx, [ebp + 8]
 mov edx, [ebp + 12]

 ;인터럽트 생성
 int 0x80


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

댓글 없음:

댓글 쓰기